Pull to refresh

Comments 6

Что бы уменьшить количество гемороя можно еще взять готовые ECS библиотеки типа лео или морпеха. Там уже есть набор различных тулов для отладки (типа ворлд браузеров и интеграции с дебагерами), багов поменьше и перф почти наверняка получше чем у самопального велосипеда.

Это 100%. Я просто преследую цель, в том числе, научиться программировать, поэтому было интересно руками все собрать. А так, если бы я преследовал коммерческую цель, то, конечно, пилить все с нуля, это спорно

какие данные «состояния действия» вы в итоге храните в компонентах самого NPC, а какие выносите в отдельные сущности/буферы (например, для очередей запросов), и как это решение повлияло на порядок систем в TickableManager и отладку?

Например, для перемещения, я храню у агента (NPC) вот такой набор

private int[] currentCell;
private int[] targetCell;
private int[] prevCell;
private float[] speed;
private int[] pathStep;
private float[] stepProgress;
private byte[] active;

плюс для интерполяции (плавного перемещения), цепляю еще такие данные

private float[] interp;
private int[] lastCell;

тут прогресс интерполяции от 0 до 1 и предыдущая ячейка (у меня ячеестый грид и я все привязываю к ячейкам пока что. Пока не делаю перемещение внутри ячейки). И да, тут есть дублирование предыдущей ячейки, но я пока забил на него.

В отдельных сущностях хранятся данные самих действий и запросов типа статуса, способа перемещения, идентификатора задачи, целевой клетки.

На порядок систем это не повлияло. Тут же поменялась структура хранения данных, а не логика. Хотя я, поменял порядок одной из вспомогательных систем, но это не связано с переходом на ECS. Добавил возможность указать порядок при регистрации в менеджере. Сигнатура в итоге такая public void Register(ITickable tickable, TickPhase phase = TickPhase.Logic, int order = 1000000);

Не знаю, насколько ответил на вопрос)))


Теперь вопрос: а зачем? Чем плох коробочный ECS от самих Unity, который ставится в три клика в через менеджер пакетов?

Если бы я был профильным геймдев разработчиком (и знал бы, что такое ECS и как с ним работать), я бы 100% так поступил.
Но я самоучка, у меня вообще нет продакшн опыта, аббревиатуру ECS я увидел впервые 3 месяца назад, поэтому для меня этот проект во многом еще и про то, чтобы научиться и понять, как оно работает.

Это как с анализом данных - можно юзать фреймворки, даже не особо глубоко понимая статистику, но лучше (кмк), если ты понимаешь, как именно все эти функции работают и почему именно так
Хотя может кому-то проще учиться на фреймворках, я не спорю.

Sign up to leave a comment.

Articles