Первый людум со своим движком

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

Сделал инструмент для рисования интерфейса

Написал скромный интерфейс на React с меню, панелью с очками здоровья, индикатором перезарядки оружия и тд. Весь интерфейс лежит отдельно от игры и загружается динамически при старте сцены если ей нужен какой-то UI.

Игровой интерфейс

Большинство игр имеют различные внутриигровые интерфейсы вроде индикатора здоровья игрока, мини-карты, инвентаря, журналов заданий, меню с настройками и прочего. К счастью веб что называется «из коробки» имеет широкий набор инструментов для создания подобных интерфейсов.

Искусственный интеллект

Чтобы игровой объект обзавёлся мозгом, я добавил специальный компонент, где указывается название стратегии, которая будет определять поведение объекта. Система, отвечающая за работу ИИ, создаёт экземпляры этих стратегий по одной на игрока и далее в рамках game loop-а следит за их обновлением.

Добавляем стрельбу

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

Про обнаружение коллизий

Хоть персонаж и научился бегать, сейчас это всего лишь движущаяся по экрану картинка. Он ничего не знает о том, висит ли он в воздухе или стоит на твердой поверхности. Для того чтобы это исправить, нужно добавить в игру алгоритм обнаружения коллизий.

Система передвижения

Настало время научиться ходить. Казалось бы, ничего сложного, но я умудрился накосячить: изначально для хранения информации о координатах игровых объектов я использовал дополнительную сущность – карту сцены.

Добавляем анимацию

Рисовать картинки в браузере я научился, но хотелось как-то оживить все это дело. Среди наработок с людума у меня сохранились не только статичные картинки, но и раскадровки различных состояний игрового персонажа.