Screenshot 2026-09-24 231502.png6,6 Мб, 3305x1851
Graph2D - Релизю свой двиг ( демо включено ) 1109801 В конец треда | Веб
Посмотреть демо можно здесь: 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. Если интенсивность эффекта на нуле — ветка в шейдере полностью отключается, так что на слабом говне мамонта тяжелые постэффекты не будут жрать ресурсы.
2 1109805
>>09801 (OP)
сейчас привожу исходники в божеский вид.
скоро залию на гитхаб под MIT лицухой.
если чо спрашивайте.
3 1109806
>>09801 (OP)
и да, если есть возможность, гляньте с говна
минимальное требование - webgl 2
тестировал на хоноре 2016 ого года полет норм.
Screenshot 2025-07-31 135602.png1,3 Мб, 1146x1257
4 1109814
ГДЕ БЛЯДЬ ВСЕ?
ВСЕХ ИИ ВЫЕБ?
ВЕРНУЛИСЬ НА ЗАВОД ?
баттхёрт помощь.png464 Кб, 780x610
5 1109818
>>09814
Анончик, я зашёл посмотрел

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

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

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

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

>Анончик, я зашёл посмотрел


две чаечки тебе, анонче

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


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

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

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


каво?

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


@ьанкей потек походу
7 1109822
>>09819

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


>простота использования + скорость на слабых девайсах



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

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



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

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



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

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


>каво?



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

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


>@ьанкей потек походу



Не, но я не дам ссылок потому что дианон
8 1109823
>>09822

>ты слабым называешь вращение текстуры


купи себе нормальную нейронку уже.

>Тупик: всех HTML-ёбов порешает webasm


каво? HTML именно рендерится, понимаешь? нет ?

>не верю


верю, не верю, открывай демку да смотри, йопт. открывается прямо в браузере
schulmeister-blog-chat-gpt-3271888083.jpg86 Кб, 1748x1003
9 1109824
>>09801 (OP)

>свой двиг


>свой

10 1109825
>>09824
ну да, свой, я на нем релиз еще до гпт.
чего в этом необычного?
ты не можешь 2д двиг сделать без нейронки ?
11 1109827
>>09801 (OP)
АНАНАСИКИ, ЕСЛИ ВЫ ИЩИТЕ ПЕРФУ
ТУТ ОНА НА УРОВНЕ.
ОСОБЕННО ЭТО КАСАЕТСЯ ЗАПЕЧЕННОГО SPINE
ПОСМОТРЕТЬ МОЖНО В "ВОЗМОЖНОСТИ ДВИЖКА" пункт "Baked Spine"
12 1109828
Зачем кому-то твой движок, особенно в эпоху LLM. Делай движок для себя. Делай игры для конкурсов на своем движке, например.
Если хочется поделиться, пости скриншоты в субшоте или движкосраче. Например, в духе "мои анимации spine в 10 раз быстрее годота!", чтобы годоти злились.
Дугин ты сволочь и идиот.mp41,5 Мб, mp4,
1280x720, 0:21
14 1109870
>>09823

>>ты слабым называешь вращение текстуры


>купи себе нормальную нейронку уже.


>>Тупик: всех HTML-ёбов порешает webasm


>каво? HTML именно рендерится, понимаешь? нет ?


>>не верю


>верю, не верю, открывай демку да смотри, йопт. открывается прямо в браузере



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

слабость железа имелась ввиду. слабая была NES, например - там плавучки не было
15 1109871
>>09801 (OP)

>Двиг


>Либа


Так что в конечном итоге? Либадвиг? Или больше двиголиба?
>>09825

>я на нем релиз еще до гпт.


Покажи по брацки, хотябы видосик какой

>ОСОБЕННО ЭТО КАСАЕТСЯ ЗАПЕЧЕННОГО SPINE


ПОСМОТРЕТЬ МОЖНО В "ВОЗМОЖНОСТИ ДВИЖКА
Маловато. Хороший вопрос, много ли вообще анонов на борде которые спайн хотябы трогали
tipidorsmall.webm20,1 Мб, webm,
1920x1080, 1:36
16 1109873
>>09871

>Так что в конечном итоге?


ну скорее либа. от двигла ждут редактора, у меня его нет, но можно спайн использовать в качестве редактора.

>Покажи по брацки, хотябы видосик какой


Ну вот такую хуйню релизили на ок, заработали 89 рублей
Разработка шла в донейронные времена, поэтому потратили несколько лет (рисовка, анимации, код, 20+ героев)
17 1109875
>>09870
чел, я ваще не понимаю, какая нахуй плавучка, о чем ты вообще
у тебя соль кончилась ?
Screenshot2026-09-14-08-50-59-713app.revanced.android.youtube.jpg334 Кб, 2712x1220
18 1109876
>>09873

>Ну вот такую хуйню релизили на ок, заработали 89 рублей


>Разработка шла в донейронные времена, поэтому потратили несколько лет (рисовка, анимации, код, 20+ героев)


Пиздец
17823130481100397105.webm835 Кб, webm,
400x400, 0:17
19 1109877
>>09876

>Пиздец


угу
20 1109916
>>09873
Ты тот... мясокубик?.. кубомясик?
Почему не дал ссылку на тред?
Вот же твой тред: >>1091333 (OP)

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

>много ли вообще анонов на борде которые спайн хотябы трогали


Как-то заинтересовался и хотел потрогать, но узнал, что он платный.

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

Где Blender 2D?
22 1109918
>>09917

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


Ну мохнатый пиратится изично, да и в юнити и в годоте есть более менее приличный костевой аниматор
23 1109921
>>09918

>пиратится


Только если ты не планируешь никуда релизиться.

>в годоте есть более менее приличный костевой аниматор


Да... с ручным созданием всех внутренних треугольников...
24 1109923
>>09921

>Только если ты не планируешь никуда релизиться.


Я говорю за moho - он экспортит считай 3д модели с ригами. Там нечего детектить на пиратство
25 1109924
>>09916

>Ты тот... мясокубик?.. кубомясик?


да, ананасик, итс ми.
лень искать было

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



спасибо на добром слове.
14772-134446-2c24ccf2f28a69c04e7464260c67cb8e.jpg40 Кб, 217x500
26 1109928
>>09875

>какая нахуй плавучка, о чем ты вообще


@

> Пишет графический движок

rejrfjldlg.jpg76 Кб, 502x565
27 1109929
>>09917

>но узнал, что он платный.



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

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



Потому что 2D это частный случай от 3D, которое сейчас прямо в шейдерах эту анимацию разворачивает и всё
28 1109931
>>09928
ты меня со своим ебырем перепутал.
я не из твоей гомотусовочки и ваш лгбт-френдли слэнг понимать не обязан. так что за забирай свою "плавучку" и не забудь завалить ебучку.
29 1109949
>>09928
Ананасик, реально хз про что ты.
Про флоты чтоль? Дак фпу дохуя где не было , не только на nes. Да и вообще не понятно почему ты про nes заговорил. У тебя точно все в порядке?
30 1110021
>>09949

>Да и вообще не понятно почему ты про nes заговорил. У тебя точно все в порядке?



да это фалько, местный шиз, не обращай внимание.
Обновить тред
« /gd/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски

Скачать тред только с превьюс превью и прикрепленными файлами

Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах.Подробнее