mirror of
https://github.com/ProgramSnail/rts_game_backend.git
synced 2025-12-07 02:08:43 +00:00
Channged README structure
This commit is contained in:
parent
a92cbabf82
commit
27a0a8d4c5
2 changed files with 88 additions and 83 deletions
88
README.md
Executable file → Normal file
88
README.md
Executable file → Normal file
|
|
@ -1,83 +1,5 @@
|
||||||
# Описание игры
|
## Игра
|
||||||
|
RTS в консоли с абстрактной расширяемой системой юнитов.
|
||||||
## Общее
|
Подробное описание - см. STRUCTURE.md
|
||||||
|
## Установка
|
||||||
1. Жанр - RTS
|
cmake . && make
|
||||||
|
|
||||||
2. Графика - ncurses
|
|
||||||
|
|
||||||
3. Язык - c++
|
|
||||||
|
|
||||||
4. Сборка - cmake . && make
|
|
||||||
|
|
||||||
## Описание
|
|
||||||
|
|
||||||
Игра - попытка сделать RTS в консоли с расширяемыми и конфигурируемыми абстрактными юнитами. Т.е. все более-менее сложные объекты в игре являются классом Unit с определённым набором модулей дополнения. Модули задают свойства (кроме основных характеристик) и способности объекта.
|
|
||||||
|
|
||||||
Управление - стрелочки для "курсора", которым можно что-то делать в мире, выбор в меню с помощью привязанных клавиш. Хотелось бы ещё довавить привязки клавиш к группам юнитов и позициям (дополнительно).
|
|
||||||
|
|
||||||
Игра может быть будет против AI, ещё менее вероятно получится / успею сделать игру для 2 игроков с одного компьютера (дополнительно) и по p2p соединению (дополнительно)
|
|
||||||
|
|
||||||
Дополнительно - значит "было бы хорошо сделать, но скорее всего не успею"
|
|
||||||
|
|
||||||
## Классы
|
|
||||||
|
|
||||||
1. App - главный класс, отвечает за инициализацию приложения
|
|
||||||
|
|
||||||
2. Game - класс, отвечающий за игру
|
|
||||||
|
|
||||||
3. Menu - класс, отвечающий за меню вне игры
|
|
||||||
|
|
||||||
4. Draw - "фасад" библиотеки отрисовки, низкоуровневое рисование
|
|
||||||
|
|
||||||
5. MenuDraw - "фасад", высокоуровневое рисование для Menu (элементы вне игры)
|
|
||||||
|
|
||||||
Рисует меню по массиву строк, реализует выделение активного пункта
|
|
||||||
|
|
||||||
6. GameDraw - "фасад", высокоуровневое рисование для Game
|
|
||||||
|
|
||||||
Принимает указатели на GameMap, GameMenu, PlayerData
|
|
||||||
|
|
||||||
Рисует интерфейс: меню из пунктов + клавиш активации пунктов, карт, рисует миникарту по карте (дополнительная цель)
|
|
||||||
|
|
||||||
7. Input - обработка ввода для игрока / buhjrjd
|
|
||||||
|
|
||||||
8. GameController - Для каждого игрока / AI преобразует команды в события в GameEvents
|
|
||||||
|
|
||||||
9. GameEvents - центр событий, передаётся как аргумент в разные классы, имеет функцию, ставящую функцию для прослушивания события и функцию для активации события
|
|
||||||
|
|
||||||
10. PlayerData - текущие данные для игрока (позиция "курсора" и тп)
|
|
||||||
|
|
||||||
11. GameMap - класс карты
|
|
||||||
|
|
||||||
Карта состоит из Cell
|
|
||||||
|
|
||||||
На карте есть Action-элементы - простейшие элементы, как-то меняющие мир при update (например, атака)
|
|
||||||
|
|
||||||
На карте есть UnitObj - объекты юнитов (Unit) на карте
|
|
||||||
|
|
||||||
12. Cell - клетка поля, содержит тип, привязанный Unit (если есть) и привязанный Action (если есть)
|
|
||||||
|
|
||||||
13. UnitObj - набор клеток, привязан к Unit и отображает его на карте
|
|
||||||
|
|
||||||
14. GameMenu - класс, создающий и обовляющий состояние меню (в зависимости от активного объекта и тп)
|
|
||||||
|
|
||||||
15. Unit - основной класс юнита, состоит из базовых карактеристик, привязки к Map, PlayerData, GameMenu..., массива Memory - памяти, использующейся для совершения действий, массива Module - модулей, позволяющих юниту совершать действия и тп
|
|
||||||
|
|
||||||
16. UnitBuilder - конструктор Unit из файла / функциями
|
|
||||||
|
|
||||||
Конфигурируется набор модулей, некоторый характеристика, размер Memory
|
|
||||||
|
|
||||||
17. Action - может реагировать на события, может что-то делать на update(), на прохожение через клетку (в зависимости от типа), на столкновение с UnitObj
|
|
||||||
|
|
||||||
18. Attack - простейшая атака, мгновенно двигается до цели и наносит повреждения, потомок Action
|
|
||||||
|
|
||||||
19. Module - модуль Unit, может что-то делать с Memory, привязанными к Unit классами (например, Map). Номера Memory ячеек для функций конфигурируются в ModuleBuilder
|
|
||||||
|
|
||||||
От Module наследуются различные осн. модули (двагатель, пушка...), логические для элементов Memory (while i move j -> k, if i copy j -> k ...) (дополнительно), простейшие (таймер, подвинутся. создать опр. Action...) (дополнительно)
|
|
||||||
|
|
||||||
20. ModuleBuilder - конструктор Module из файла / функциями
|
|
||||||
|
|
||||||
Конфигурируются все используемые Memory-поля, некоторые характеристики
|
|
||||||
|
|
||||||
21. Memory - простая ячейка памяти (пока), умеет get/set (может быть стоит заменить просто на int)
|
|
||||||
|
|
|
||||||
83
STRUCTURE.md
Executable file
83
STRUCTURE.md
Executable file
|
|
@ -0,0 +1,83 @@
|
||||||
|
# Описание игры
|
||||||
|
|
||||||
|
## Общее
|
||||||
|
|
||||||
|
1. Жанр - RTS
|
||||||
|
|
||||||
|
2. Графика - ncurses
|
||||||
|
|
||||||
|
3. Язык - c++
|
||||||
|
|
||||||
|
4. Сборка - cmake . && make
|
||||||
|
|
||||||
|
## Описание
|
||||||
|
|
||||||
|
Игра - попытка сделать RTS в консоли с расширяемыми и конфигурируемыми абстрактными юнитами. Т.е. все более-менее сложные объекты в игре являются классом Unit с определённым набором модулей дополнения. Модули задают свойства (кроме основных характеристик) и способности объекта.
|
||||||
|
|
||||||
|
Управление - стрелочки для "курсора", которым можно что-то делать в мире, выбор в меню с помощью привязанных клавиш. Хотелось бы ещё довавить привязки клавиш к группам юнитов и позициям (дополнительно).
|
||||||
|
|
||||||
|
Игра может быть будет против AI, ещё менее вероятно получится / успею сделать игру для 2 игроков с одного компьютера (дополнительно) и по p2p соединению (дополнительно)
|
||||||
|
|
||||||
|
Дополнительно - значит "было бы хорошо сделать, но скорее всего не успею"
|
||||||
|
|
||||||
|
## Классы
|
||||||
|
|
||||||
|
1. App - главный класс, отвечает за инициализацию приложения
|
||||||
|
|
||||||
|
2. Game - класс, отвечающий за игру
|
||||||
|
|
||||||
|
3. Menu - класс, отвечающий за меню вне игры
|
||||||
|
|
||||||
|
4. Draw - "фасад" библиотеки отрисовки, низкоуровневое рисование
|
||||||
|
|
||||||
|
5. MenuDraw - "фасад", высокоуровневое рисование для Menu (элементы вне игры)
|
||||||
|
|
||||||
|
Рисует меню по массиву строк, реализует выделение активного пункта
|
||||||
|
|
||||||
|
6. GameDraw - "фасад", высокоуровневое рисование для Game
|
||||||
|
|
||||||
|
Принимает указатели на GameMap, GameMenu, PlayerData
|
||||||
|
|
||||||
|
Рисует интерфейс: меню из пунктов + клавиш активации пунктов, карт, рисует миникарту по карте (дополнительная цель)
|
||||||
|
|
||||||
|
7. Input - обработка ввода для игрока / buhjrjd
|
||||||
|
|
||||||
|
8. GameController - Для каждого игрока / AI преобразует команды в события в GameEvents
|
||||||
|
|
||||||
|
9. GameEvents - центр событий, передаётся как аргумент в разные классы, имеет функцию, ставящую функцию для прослушивания события и функцию для активации события
|
||||||
|
|
||||||
|
10. PlayerData - текущие данные для игрока (позиция "курсора" и тп)
|
||||||
|
|
||||||
|
11. GameMap - класс карты
|
||||||
|
|
||||||
|
Карта состоит из Cell
|
||||||
|
|
||||||
|
На карте есть Action-элементы - простейшие элементы, как-то меняющие мир при update (например, атака)
|
||||||
|
|
||||||
|
На карте есть UnitObj - объекты юнитов (Unit) на карте
|
||||||
|
|
||||||
|
12. Cell - клетка поля, содержит тип, привязанный Unit (если есть) и привязанный Action (если есть)
|
||||||
|
|
||||||
|
13. UnitObj - набор клеток, привязан к Unit и отображает его на карте
|
||||||
|
|
||||||
|
14. GameMenu - класс, создающий и обовляющий состояние меню (в зависимости от активного объекта и тп)
|
||||||
|
|
||||||
|
15. Unit - основной класс юнита, состоит из базовых карактеристик, привязки к Map, PlayerData, GameMenu..., массива Memory - памяти, использующейся для совершения действий, массива Module - модулей, позволяющих юниту совершать действия и тп
|
||||||
|
|
||||||
|
16. UnitBuilder - конструктор Unit из файла / функциями
|
||||||
|
|
||||||
|
Конфигурируется набор модулей, некоторый характеристика, размер Memory
|
||||||
|
|
||||||
|
17. Action - может реагировать на события, может что-то делать на update(), на прохожение через клетку (в зависимости от типа), на столкновение с UnitObj
|
||||||
|
|
||||||
|
18. Attack - простейшая атака, мгновенно двигается до цели и наносит повреждения, потомок Action
|
||||||
|
|
||||||
|
19. Module - модуль Unit, может что-то делать с Memory, привязанными к Unit классами (например, Map). Номера Memory ячеек для функций конфигурируются в ModuleBuilder
|
||||||
|
|
||||||
|
От Module наследуются различные осн. модули (двагатель, пушка...), логические для элементов Memory (while i move j -> k, if i copy j -> k ...) (дополнительно), простейшие (таймер, подвинутся. создать опр. Action...) (дополнительно)
|
||||||
|
|
||||||
|
20. ModuleBuilder - конструктор Module из файла / функциями
|
||||||
|
|
||||||
|
Конфигурируются все используемые Memory-поля, некоторые характеристики
|
||||||
|
|
||||||
|
21. Memory - простая ячейка памяти (пока), умеет get/set (может быть стоит заменить просто на int)
|
||||||
Loading…
Add table
Add a link
Reference in a new issue