Skip to content

Elllias/FreeCity

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FreeCity

Введение:

Однажды я задался вопросом, как максимально развязать код в угоду шаблонам High Cohesion и Low Coupling. И вот, гуляя по парку мне пришла в голову идея использовать EventBus как точку связанности механик игры. Иначе говоря, положить EventBus в основу и всю связанность передать ему. Это чем-то похоже на логику WebSocket. К тому же на курсе от Otus, на котором я обучался, подошло время финальных проектов и я решил попробовать реализовать эту идею.

Реализация:

В версии 0.0.1 проекта в игре есть 2 сущности: игрок (Player) и враг (Enemy). Сущности являются контейнерами для механик и компонентов. Компоненты - это чистые данные с минимумом логики. Механики - это чистая логика, которая берет все нужные данные из компонентов. Механики взаимодействуют между собой через EventBus, подписываясь и создавая события и запросы. Заметили схожесть с ECS? Верно! Данная система оказалось очень похожа на логику работы ECS систем. Схему компоненты-механики-сущности я использую второй раз. Я думаю, это мой личная компиляция идей из разных направлений проектирования архитектуры. Это одновременно легко пишется, легко читается, легко масштабируется. Минусов не будет.

Логика игры:

Так как игра в основном личный эксперимент, то я не тратил время на придумывание интересного геймплея. Игровой цикл максимально прост - бегаем по карте, убиваем врага, получаем патроны и по новой.

Управление:

Передвижение - wasd. Управление камерой - мышь. Также работает в некоторой степени поддержка контроллера. Переключение между оружием по цифрам:

  1. Пистолет
  2. Автомат

Список реализованного:

Механики:

  1. Механика преследования игрока врагом
  2. Механика стрельбы
  3. Механика звука и визуала стрельбы
  4. Механика перезарядки
  5. Механика хранения патронов и учета для разных видов оружия
  6. Механика смены оружия
  7. Механика перемещения игрока и его звуки
  8. Механика спавна и распределения по карте врагов
  9. Механика хп и дамага

Анимации:

  1. Анимация врага в трех состояниях (ожидание, бег, удары)
  2. Анимация отдачи оружия

Визуал:

  1. Спец. эффекты оружия
  2. Постобработка
  3. UI хп
  4. UI запаса патронов
  5. Модельки города, оружия, врага были найдены и адаптированы

Аудио:

  1. Аудио глока в трех состояниях (выстрел, перезарядка, пустая обойма)
  2. Аудио М1 в трех состояниях (выстрел, перезарядка, пустая обойма)

Также:

  1. Использована система NavMeshAgent'a для перемещения игрока
  2. Какой никакой AI с памятью об игроке
  3. Система распределения врагов по карте
  4. Эффекты от попадания пуль в двух вариантах: враг и окружение

Демонстрация:

Movie_021.mp4

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published