-
Notifications
You must be signed in to change notification settings - Fork 0
Поток сознания
- От общего к частному. Исследуем максимально обобщенную предметную область, пытаемся выделить максимально абстрактные концепции именно движка всех возможных игр. Затем при реализации каждой конкретной игры добавляем специфичные сущности, вероятно, расширяя способности движка.
- От частного к общему. Проектируем и реализуем каждую конкретную игру так, будто общего движка принципиально не существует. По ходу проектирования и разработки находим общие концепции и абстрагируем их, вынося общую функциональность в движок.
Суть движка в том, чтобы отделить взаимодействие игроков с игрой от механизма, обеспечивающего выполнение правил игры. В такой схеме игроки ничего не знают о правилах, их взаимодействие с игрой сводится к следующим операциям:
- присоединение к игре / выход из игры
- запрос состояния игры / других игроков (игровое поле, открытая информация о других игроках, текущая стадия игры, справочная информация и т.п.)
- чтение журнала событий игры
- запрос доступных действий / получение пушей с доступными действиями
- выбор действия из списка доступных, задание состояния для выбранного действия (например, если в ходе действия изменяется состояние планшета игрока, то нужно передать игре сводку этих изменений)
Движок обеспечивает взаимодействие Игроков с Игрой, а также Игры с Рефери (сущность, знающая правила игры и обеспечивающая их соблюдение) и с Секретарем (протоколирование действий Игры и Игроков, разные Секретари могут вести протоколы разных действий и в разном формате).
Исходя из пункта 1 Протокола все изменения состояния Игры могут быть представлены в виде последовательности Действий, подаваемых Игре на вход. Возможно, что конфигурация Игры (как минимум ее правила, т.е. Рефери и состав Игроков) задается точно таким же образом, каким регистрируются дальнейшие действия Игроков в ходе Игры.
Есть ощущение, что любое Действие
, подаваемое на вход Игре, должно проходить проверку доступности и возможности осуществления у Рефери.
Создание экземпляра Игры. Движку передаются Рефери и Секретарь, чтобы следить за правилами и регистрировать события.
- Рефери проводит инициализацию движка, как минимум устанавливает ограничения по числу игроков. Возможно, здесь же происходит передача нужных словарей в Игру.
- Секретарь по умолчанию просто подписывается на все события
Игроки могут свободно подключаться / отключаться, добавляться в наблюдатели. То есть, Игра каждому игроку в ответ на запрос допустимых действий возвращает набор из "Занять место", "Покинуть место", "Наблюдать", "Прекратить наблюдение".
По команде Рефери (аналог GM, Game Master), либо по достижении максимального числа игроков, Игра начинается, т.е. переходит в состояние "В процессе". Переходу предшествует ряд подготовительных действий (пока без определенного порядка, просто накидываю варианты)
- Игра определяет очередность Игроков (перемешивает их, либо устанавливает порядок по согласованию с Рефери)
- Игра запрашивает у Рефери исходное состояние досок, планшетов, рук и т.п.
- Игра отправляет событие "Состояние обновлено"
- Игра отправляет событие "Игра началась"
В главном цикле Игра постоянно генерит События для Игроков. Возможно, тут будут постоянно сменять друг друга состояния типа "Выбор действия" и "Ожидание ответа игроков", что-то такое.
Моделирование-ходов-и-раундов - попытка на конкретных примерах разработать нотацию и сформулировать требования к элементам структуры игры.