Главная Юзердоски Каталог Трекер NSFW Настройки

Gamedev

Ответить в тред Ответить в тред
<<
Назад | Вниз | Каталог | Обновить | Автообновление | 30 10 6
Graph2D - Релизю свой двиг ( демо включено ) Аноним 24/09/26 Чтв 23:35:54 № 1109801 1
Screenshot 2026[...].png 6799Кб, 3305x1851
3305x1851
Посмотреть демо можно здесь: https://ubgamez.ru/graph2d/game.html (откроется в браузере)
Моя C++ либа для 2D-игр: scene graph, HTML-UI, свет и запеченный Spine
Короче, здорово, аноны. Давно собирался показать, какую хуйню я пилю в свободное время, когда не надо впахивать на галере. Это кастомная библиотека для 2D-игр на плюсах. Из фич: древовидный scene graph, рендер через один батч-конвейер, HTML-рендерер для UI (чтобы не ебаться с рантайм-версткой), нормальный свет и, сука, запеченные Spine-анимации. Код выкачу в ближайшее время под MIT — вместе с демкой, из которой надергал примеры ниже.
[SceneGraph]
Каждый объект — это CContainer. Внутри зашито всё: позиция, скейл, поворот, пивот, альфа, tint, скролл-бокс, твины и дочерние элементы. Трансформа наследуется по дереву, рендер хуярит строго в порядке детей, а z-order — это просто их индекс в массиве. Спрайт, лейбл, HTML-документ, партиклы, Spine, диалог — всё это ноды одного дерева с единым интерфейсом.
auto ptrHero = std::make_shared
ptrHero->addChild(ptrShadow);
ptrHero->addChild(ptrBody); // тень под телом
// z-order — просто порядок детей
ptrHero->swapChildren(ptrShadow, ptrBody);
ptrHero->bringChildToFront(ptrBody);
dialog->bringChildUnderForeground(ptrPanel);
// вспышка удара: твин тинта
ptrBody->addSelfTween(eTweenProp::BLACKEN, 1.f, 0.2f, 0.1f, Easing::linear);
ptrBody->addSelfTween(eTweenProp::BLACKEN, 0.f, 1.0f, 0.6f, Easing::outQuad, 0.1f);
Если надо, чтобы лейбл намертво привязался к спине персонажа и двигался вместе с ним — делаешь addChild() и вообще не паришь мозг, он будет кататься, крутиться и скейлиться за родителем. Из коробки завез каскадную упаковку детей с переносом строк и выравниванием, drag & drop и таймеры через тот же твинер, чтоб не городить велосипеды.
_ptrParticlesDemo->packChildrenCascade(maxCx, maxCy, 7.f, true);
btnsCont->alignChildren(eChildrenAlign::HORIZONTAL, 20.f, getDialogCx());
// drag & drop
ptrFace->setInteractive(true);
ptrFace->setDragable({}, [](CContainerPtr, float, float) { return true; });
ph->setInteractive(true);
ph->setOnDragDropAccept([](CContainerPtr dropped) { return true; });
ph->setOnDragDropped([](float x, float y, CContainerPtr dropped)
{
dropped->setPos(0, 0);
ph->addChild(dropped); // карта стала ребёнком слота
});
------------------------------
[Диалоговая_система]
BaseDialog — нода дерева со стеком модальных окон, стилями закрытия и жизненным циклом.
auto dlg = std::make_shared
dlg->setTitle("Настройки", ptrTitleSprite, 113, 113);
dlg->createCloseButton(ptrNormal, ptrPressed, ptrHover, ptrDisabled);
dlg->createFgLayer(ptrFg, 60, 60, 46, 46); // рамка поверх контента
// модально: захватывает ввод, скрывает предыдущее окно стека
dlg->open(this { refreshHud(); }); // колбэк после закрытия
Режимы жизни: open() — модальное окно со стеком; showAsPanel() — панель внутри родительского диалога, ввод не блокирует; закрытие по крестику, по колбэку или CLICK_ANYWHERE — когда кликаешь мимо окна. На коленке собран встроенный скролл: скроллбар, тени, физика флинга с «оттяжкой» за краем и возвратом обратно, колесо мыши и drag-скролл — работает сразу без допила напильником.
------------------------------
[HTML_внутри_сцены]
UI — это просто HTML-документ, который прикидывается нодой дерева. Таблицы, ссылки, чекбоксы, слайдеры, прогрессбары, комбобоксы с выпадашкой, nine/three-slice, картинки с дефолтными эффектами (glare, glitch, пикселизация…) и даже тег
_ptrAboutDemo->init(R"HTML(....)HTML", cx - 40, cy, shared_from_this());
// клик по ссылке копирует в буфер (через Emscripten)
auto* dom = HTMLDom::getInstance();
dom->setOnClick(dom->findNodeIdByAttr(0, "id", "tg_link"),
[](unsigned long long, float x, float y, int)
{
copyToClipboard("@ubgamez");
showCopyToast(x, y);
});
------------------------------
[Запеченный Spine: в десятки раз быстрее]
Если выкатить дефолтный Runtime-Spine на сотню юнитов, он просто трахнет CPU в кашу из-за костей, мешей и клатчинга. Поэтому анимации можно запечь оффлайн в компактный бинарник — позиции жмутся в int16, UV в uint16, альфа и blend — в один байт. В рантайме движок просто один раз проходится по статическому буферу с интерполяцией кадров:
ptrSpine->loadPackedAnimation(0, "BBB/barbarian_idle.panm", 1, true, ptrTex);
ptrSpine->setAnimationByTag(1);
Никакой тяжелой костной математики в кадре — можно спавнить десятки спинов на сцене, fps не просядет. При этом Runtime-режим никуда не делся: если нужны события анимации и хитбоксы — дергаешь обычный API. Оба режима спокойно уживаются вместе.
------------------------------
[Свет прибитый к Spine]
Движок держит до 204 источников в uniform-блоке на кадр, куллинг слоев идет прямо в шейдере. Но самая сочная фича — привязка света к самому скелету:
// аттачмент сам светит: фонарь из картинки фонаря
_ptrLamp->setLightAttachment("light", true);
_ptrLamp->setLightAttachment("lightspot", true);
// радиальный свет на кости
ptrHero->addRadialLight(300.f, "hand_bone", "torch_slot", 1.5f);
Для отмеченного аттачмента рендерер каждый кадр строит квад спрайта в экранных координатах и кидает в световую таблицу — фрагмент шейпится UV аттачмента, яркость умножается на альфу слота. Факел машет — пятно света гуляет по стенам ровно так, как его нарисовал аниматор. Светят и runtime-, и запеченные спины.
На том же конвейере крутятся bloom, виньетка, «капли на стекле», зерно, аберрация и fish-eye. Если интенсивность эффекта на нуле — ветка в шейдере полностью отключается, так что на слабом говне мамонта тяжелые постэффекты не будут жрать ресурсы.
Аноним 25/09/26 Птн 00:04:11 № 1109805 2
>>1109801 (OP)
сейчас привожу исходники в божеский вид.
скоро залию на гитхаб под MIT лицухой.
если чо спрашивайте.
Аноним 25/09/26 Птн 00:08:10 № 1109806 3
>>1109801 (OP)
и да, если есть возможность, гляньте с говна
минимальное требование - webgl 2
тестировал на хоноре 2016 ого года полет норм.
Аноним 25/09/26 Птн 01:39:18 № 1109814 4
Screenshot 2025[...].png 1296Кб, 1146x1257
1146x1257
ГДЕ БЛЯДЬ ВСЕ?
ВСЕХ ИИ ВЫЕБ?
ВЕРНУЛИСЬ НА ЗАВОД ?
Аноним 25/09/26 Птн 02:04:05 № 1109818 5
баттхёрт помощь.png 464Кб, 780x610
780x610
>>1109814
Анончик, я зашёл посмотрел

Непонятно вот что: что тут нового? В чём новизна?

Просто ещё один движок?

Хоть бы какую-нибудь проективную что ли реализовал

Я тоже пишу свой движок, 3D, с удобным управлением конвеером, для компоновки ежей с ужами бесшовной
Аноним 25/09/26 Птн 02:17:28 № 1109819 6
>>1109818

>Анончик, я зашёл посмотрел
две чаечки тебе, анонче
>Непонятно вот что: что тут нового? В чём новизна?
простота использования + скорость на слабых девайсах
граф и диалоговая система с поддержкой HTML рендера - 'это просто спасение для мобило, где тонны интерфейса.

Запеченные Spine анимашки - вообще отрыв башки, производительно буквально в 20 раз выше обычно спайна, там где спайн пукнет на 10 инстансах, тут можно наспавни сотни и оно будет работать приемлемо даже на слабом устройстве.
>проективную
каво?
>Я тоже пишу свой движок, 3D, с удобным управлением конвеером, для компоновки ежей с ужами бесшовной
@ьанкей потек походу
Аноним 25/09/26 Птн 03:11:02 № 1109822 7
>>1109819
>>Непонятно вот что: что тут нового? В чём новизна?
>простота использования + скорость на слабых девайсах

Простота имеет обратную сторону, а 2D любые "слабые" девайсы тянут сейчас (ебанись ты слабым называешь вращение текстуры, нихуя себе!)

>граф и диалоговая система с поддержкой HTML рендера - 'это просто спасение для мобило, где тонны интерфейса.

Тупик: всех HTML-ёбов порешает webasm. И опять см. ремарку про слабые девайсы

>Запеченные Spine анимашки - вообще отрыв башки, производительно буквально в 20 раз выше обычно спайна, там где спайн пукнет на 10 инстансах, тут можно наспавни сотни и оно будет работать приемлемо даже на слабом устройстве.

Чудеса, не верю. Откуда выигрыш? Я ковырял рендер сплайна в С++, даже багу там пофиксил - нету там принципиальных проблем сперформансом

>>проективную
>каво?

спроси у дипсика что такое "проективная геометрия", ёпта

>>Я тоже пишу свой движок, 3D, с удобным управлением конвеером, для компоновки ежей с ужами бесшовной
>@ьанкей потек походу

Не, но я не дам ссылок потому что дианон
Аноним 25/09/26 Птн 03:16:18 № 1109823 8
>>1109822
>ты слабым называешь вращение текстуры
купи себе нормальную нейронку уже.
>Тупик: всех HTML-ёбов порешает webasm
каво? HTML именно рендерится, понимаешь? нет ?
>не верю
верю, не верю, открывай демку да смотри, йопт. открывается прямо в браузере
Аноним 25/09/26 Птн 03:33:39 № 1109824 9
schulmeister-bl[...].jpg 86Кб, 1748x1003
1748x1003
Аноним 25/09/26 Птн 03:36:09 № 1109825 10
>>1109824
ну да, свой, я на нем релиз еще до гпт.
чего в этом необычного?
ты не можешь 2д двиг сделать без нейронки ?
Аноним 25/09/26 Птн 03:38:58 № 1109827 11
>>1109801 (OP)
АНАНАСИКИ, ЕСЛИ ВЫ ИЩИТЕ ПЕРФУ
ТУТ ОНА НА УРОВНЕ.
ОСОБЕННО ЭТО КАСАЕТСЯ ЗАПЕЧЕННОГО SPINE
ПОСМОТРЕТЬ МОЖНО В "ВОЗМОЖНОСТИ ДВИЖКА" пункт "Baked Spine"
Аноним 25/09/26 Птн 04:24:02 № 1109828 12
Зачем кому-то твой движок, особенно в эпоху LLM. Делай движок для себя. Делай игры для конкурсов на своем движке, например.
Если хочется поделиться, пости скриншоты в субшоте или движкосраче. Например, в духе "мои анимации spine в 10 раз быстрее годота!", чтобы годоти злились.
Аноним 25/09/26 Птн 04:39:17 № 1109829 13
Аноним 25/09/26 Птн 13:47:02 № 1109870 14
Дугин ты сволоч[...].mp4 1530Кб, 1280x720, 00:00:21
1280x720
>>1109823
>>ты слабым называешь вращение текстуры
>купи себе нормальную нейронку уже.
>>Тупик: всех HTML-ёбов порешает webasm
>каво? HTML именно рендерится, понимаешь? нет ?
>>не верю
>верю, не верю, открывай демку да смотри, йопт. открывается прямо в браузере

Тебе лет 20 что ли? будто детский сад

слабость железа имелась ввиду. слабая была NES, например - там плавучки не было
Аноним 25/09/26 Птн 14:12:35 № 1109871 15
>>1109801 (OP)
>Двиг
>Либа
Так что в конечном итоге? Либадвиг? Или больше двиголиба?
>>1109825
>я на нем релиз еще до гпт.
Покажи по брацки, хотябы видосик какой
>ОСОБЕННО ЭТО КАСАЕТСЯ ЗАПЕЧЕННОГО SPINE
ПОСМОТРЕТЬ МОЖНО В "ВОЗМОЖНОСТИ ДВИЖКА
Маловато. Хороший вопрос, много ли вообще анонов на борде которые спайн хотябы трогали
Аноним 25/09/26 Птн 14:38:41 № 1109873 16
tipidorsmall.webm 20532Кб, 1920x1080, 00:01:36
1920x1080
>>1109871
>Так что в конечном итоге?
ну скорее либа. от двигла ждут редактора, у меня его нет, но можно спайн использовать в качестве редактора.
>Покажи по брацки, хотябы видосик какой
Ну вот такую хуйню релизили на ок, заработали 89 рублей
Разработка шла в донейронные времена, поэтому потратили несколько лет (рисовка, анимации, код, 20+ героев)
Аноним 25/09/26 Птн 14:42:00 № 1109875 17
>>1109870
чел, я ваще не понимаю, какая нахуй плавучка, о чем ты вообще
у тебя соль кончилась ?
Аноним 25/09/26 Птн 14:53:35 № 1109876 18
Screenshot2026-[...].jpg 334Кб, 2712x1220
2712x1220
>>1109873
>Ну вот такую хуйню релизили на ок, заработали 89 рублей
>Разработка шла в донейронные времена, поэтому потратили несколько лет (рисовка, анимации, код, 20+ героев)
Пиздец
Аноним 25/09/26 Птн 14:56:43 № 1109877 19
178231304811003[...].webm 835Кб, 400x400, 00:00:17
400x400
Аноним 25/09/26 Птн 23:25:14 № 1109916 20
>>1109873
Ты тот... мясокубик?.. кубомясик?
Почему не дал ссылку на тред?
Вот же твой тред: >>1091333 (OP)

Молодец... что тут ещё скажешь.
Аноним 25/09/26 Птн 23:27:59 № 1109917 21
>>1109871
>много ли вообще анонов на борде которые спайн хотябы трогали
Как-то заинтересовался и хотел потрогать, но узнал, что он платный.

Почему весь софт для 2D анимаций либо платно, либо заброшенный?

Где Blender 2D?
Аноним 25/09/26 Птн 23:51:07 № 1109918 22
>>1109917
>Почему весь софт для 2D анимаций либо платно, либо заброшенный?
Ну мохнатый пиратится изично, да и в юнити и в годоте есть более менее приличный костевой аниматор
Аноним 26/09/26 Суб 00:01:08 № 1109921 23
>>1109918
>пиратится
Только если ты не планируешь никуда релизиться.

>в годоте есть более менее приличный костевой аниматор
Да... с ручным созданием всех внутренних треугольников...
Аноним 26/09/26 Суб 00:13:56 № 1109923 24
>>1109921
>Только если ты не планируешь никуда релизиться.
Я говорю за moho - он экспортит считай 3д модели с ригами. Там нечего детектить на пиратство
Аноним 26/09/26 Суб 00:22:19 № 1109924 25
>>1109916
>Ты тот... мясокубик?.. кубомясик?
да, ананасик, итс ми.
лень искать было

>Молодец... что тут ещё скажешь.

спасибо на добром слове.
Аноним 26/09/26 Суб 01:58:37 № 1109928 26
14772-134446-2c[...].jpg 40Кб, 217x500
217x500
>>1109875
>какая нахуй плавучка, о чем ты вообще
@
> Пишет графический движок
Аноним 26/09/26 Суб 02:00:33 № 1109929 27
rejrfjldlg.jpg 76Кб, 502x565
502x565
>>1109917
>но узнал, что он платный.

Библиотеки-плееры бесплатные и открытые

>Почему весь софт для 2D анимаций либо платно, либо заброшенный?

Потому что 2D это частный случай от 3D, которое сейчас прямо в шейдерах эту анимацию разворачивает и всё
Аноним 26/09/26 Суб 02:14:59 № 1109931 28
>>1109928
ты меня со своим ебырем перепутал.
я не из твоей гомотусовочки и ваш лгбт-френдли слэнг понимать не обязан. так что за забирай свою "плавучку" и не забудь завалить ебучку.
Аноним 26/09/26 Суб 11:14:33 № 1109949 29
>>1109928
Ананасик, реально хз про что ты.
Про флоты чтоль? Дак фпу дохуя где не было , не только на nes. Да и вообще не понятно почему ты про nes заговорил. У тебя точно все в порядке?
Аноним 26/09/26 Суб 20:30:28 № 1110021 30
>>1109949
>Да и вообще не понятно почему ты про nes заговорил. У тебя точно все в порядке?

да это фалько, местный шиз, не обращай внимание.
Настройки X
Ответить в тред X
15000
Добавить файл/ctrl-v
Стикеры X
Избранное / Топ тредов