Skip to content

Latest commit

 

History

History
137 lines (105 loc) · 8.12 KB

app.md

File metadata and controls

137 lines (105 loc) · 8.12 KB

Приложение для локального тестирования

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

При запуске приложения, вы увидите экран конфигурации. Тут вы можете выбирать игроков, участвующих в игре, и настроить некоторые опции игры. Если вы хотите протестировать свою стратегию, выберите игрока TCP, а затем запустите свою стратегию. По умолчанию используется порт 31001. После успешного подключения, вы сможете начать игру.

Также вы можете пересмотреть сыгранную ранее игру. Для этого нужно сохранить лог (см. управление, консольный режим).

Вы можете также сохранить конфигурацию в файл, после чего запустить приложение с опцией --config <file>, пропуская экран конфигурации. Полный список опций можно увидеть с помощью запуска с аргументом --help.

Если вы хотите поменять порт подключения, к примеру чтобы подключить несколько стратегий одновременно, при запуске клиента можно передать хост и порт для подключения. К примеру, python main.py localhost 31002.

После подключения всех игроков, помимо начала новой игры, есть также следующие опции:

  • Повтор.

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

    Чтобы запустить повтор из командной строки, используйте опцию --repeat <file>. Также в данном случае будет необходимо воспользоваться опцией --config (настройки сида/игры будут игнорированы).

Формат файла конфигурации

При использовании опции --config <file>, вы можете отредактировать файл конфигурации для более детальной настройки.

  • seed: число/null - сид для инициализации генератора случайных чисел игры

  • game: настройка игры.

    • Можно выбрать один из существующих пресетов:

      {
        "Create": "Round1"
      }
    • Можно полностью задать все параметры игры:

      {
        "Create": {
          "Custom": {
            "game_option_1": ...,
            "game_option_2": ...,
            ...
          }
        }
      }
    • Можно использовать существующий пресет, и изменить несколько параметров:

      {
        "Create": {
          "Override": {
            "preset": "Round1",
            "game_option_1": ...,
            "game_option_2": ...
          }
        }
      }
  • players: Список настроек игроков

TCP игрок

Опции настройки TCP игрока:

  • host: строка/null - хост для прослушивания подключения. По умолчанию localhost (127.0.0.1), можно поменять на 0.0.0.0 для подключения с удаленных машин

  • port: число, порт прослушивания подключения клиента

  • accept_timeout: число/null - если указано, время ожидания подключения в секундах

  • single_timeout: число/null - если указано, ограничение времени для операций работы по TCP (ограничение на 1 игровой тик)

  • total_time_limit: число/null - если указано, суммарное ограничение времени на получение приказов. При превышении времени соединение прерывается

  • token: строка/null - специальный токен (пароль) для подключения. Используется при тестировании на сервере

  • run: опциональный объект, при указании которого будет автоматически произведен запуск процесса клиента. Можно указать следующие поля:

    • working_directory - директория, в которой следует запускать процессы сборки/запуска
    • build_command - если указано, команда для сборки клиента, запускается перед началом прослушивания порта, и не учитывается в ограничении времени подключения
    • run_command - команда запуска (без аргументов хост/порт/токен). Хост/порт/токен из конфигурации автоматически добавляются к аргументам

    Команды сборки/запуска - список, первым элементом которого является программа, остальные - аргументы

Пример:

{
  "Tcp": {
    "port": 31001,
    "accept_timeout": 10,
    "single_timeout": 1,
    "total_time_limit": null,
    "run": {
      "working_directory": "client-cpp",
      "build_command": [
        "cmake",
        "--build",
        ".",
        "--config",
        "Release"
      ],
      "run_command": [
        ".\\Release\\client.exe"
      ]
    }
  }
}

Управление в приложении

  • Ctrl-S - сохранить текущую игру в файл (позже можно пересмотреть или повторить)
  • Пробел/P - пауза/продолжить
  • Влево/Вправо - потиковая перемотка времени (на паузе).
  • F2 - переключение режима быстрой скорости
  • F - переключение полноэкранного режима
  • Escape - выход / возврат к экрану конфигурации

Консольный режим

Приложение умеет работать в консольном режиме, то есть без визуализации. Для включения консольного режима используйте опцию --batch-mode.

В консольном режиме можно сохранить лог игры с помощью опции --save-replay <file>, а также сохранить результаты игры с помощью опции --save-results <file>.