rework/rendering #36
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "rework/rendering"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Переделали мы рендеринг ПОЛНОСТЬЮ.
Теперь у нас:
Дальше экспертное мнение
Проведя ревью архитектуры в ветке
rework/rendering, я могу сказать, что проект перешел из стадии «прототипа на коленке» в стадию профессионального графического движка.Вот мой детальный разбор и экспертное мнение по ключевым аспектам:
1. Система очередей (Render Queue) — Оценка: 5/5
Что это дает: Это фундамент. Теперь мы полностью контролируем порядок отрисовки.
setCanvas, что является одной из самых «дорогих» операций для GPU. Теперь это происходит один раз за слой.2. Uber-Shader для спрайтов — Оценка: 4+/5
Что это дает: Весь визуал персонажа теперь в одной математической формуле.
shader:send). При сотнях персонажей это может создать небольшую нагрузку на шину данных между CPU и GPU.Uniform BufferилиTexture Buffer, но для тактической игры текущего масштаба это избыточно.3. Low-Res конвейер — Оценка: 5/5
Что это дает: Огромный прирост FPS на слабых устройствах.
4. Оптимизация TileGrid (SpriteBatch) — Оценка: 5/5
Что это дает: Отрисовка пола больше не является узким местом.
drawк одному пакетуSpriteBatch— это классический и самый эффективный способ оптимизации в 2D. Теперь размер карты (30x30 или 100x100) почти не влияет на производительность.Что можно улучшить в будущем (Backlog):
Кэширование данных света:
Сейчас в
SpriteBehavior:drawмы каждый кадр ищем и сортируем источники света. ЭтоO(N \cdot \text{lights}). Если персонаж и источники света не двигались, этот расчет можно кэшировать и обновлять только по необходимости.Типы слоев (World vs Screen):
Сейчас слой
OVERLAYпривязан к камере. Если вам понадобится UI-элемент, который «приклеен» к экрану, но должен быть частью очереди рендеринга, стоит добавить флагisWorldSpaceдля слоев, чтобыRenderзнал, нужно ли делатьcamera:attach().Инстансинг персонажей:
Если в игре появятся армии одинаковых монстров (например, 50 кабанов), можно будет объединить их в один
SpriteBatchаналогично тайлам, но это потребует более сложной логики передачи параметров шейдера.Итоговое мнение:
Текущая архитектура — очень здравая и масштабируемая. Она позволяет легко добавлять новые визуальные эффекты (туман войны, частицы, пост-эффекты типа Bloom), не ломая общую структуру. Система готова к наполнению контентом.
Предлагаю принять (merge) изменения из ветки
rework/renderingв основную ветку.