Example

Для формализации своих идей о том как надо делать код, а так же в качестве наглядного примера правильно выполненного Unity-проекта с чистым кодом, я, помимо основной работы, сделал небольшой проект, в котором собрал все свои наработки наиболее качественного кода для создания проектов на Unity.

Что под капотом?

  1. 100% свой собственный код, никаких посторонних библиотек, кроме Stateless. Никаких third-party элементов кода.
  2. Развитая система анимаций, прозрачно микширующая все анимации персонажей из отдельных блоков.
  3. Система анимации управляет персонажем. Добавление нового функционала в большинстве случаев возможно без создания новых анимаций и нового кода под него. Игра делается без кода — я просто собираю «детали лего».
  4. Поведение персонажа определяется смешиванием поведений (по тем же принципам что и в анимациях).
  5. Развитая система инвентаря прозрачна и сделана в Unity way. Любой объект есть объект — всё как в реальной жизни, что сильно облегчает понимание и управление. Это же делает систему прозрачной с точки зрения сериализации и сохранения — мы просто выгружаем JSON со списком объектов.
  6. Развитый ИИ, построенный на конечных автоматах, PID и системах нечёткой логики. Противники умеют общаться между собой, обмениваться информацией об игроке, пугаться и действовать сообща. ИИ управляет как действиями противников, так и игрока, персонаж игрока также обладает интеллектом — сам понимает куда и когда наводить оружие, куда смотреть, что делать и так далее.
  7. Мощная система взаимодействий, унифицирующая все взаимодействия в игре.
  8. Нулевая связность кода. Поведения выполняют команды, транслируемые в игре. Они не знают друг о друге (и им это не надо).

Что дальше?

  1. Реализация нейросетевого ИИ на основе UnityML.
  2. Реализация генетических алгоритмов (новые поколения противников должны приспосабливаться к поведению игрока и вырабатывать оптимальную стратегию на уровне эволюции).
  3. Ну и конечно же, новые модельки спецэффекты и прочее — стоковые, всё же, унылые.

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