RoboWar3D

RoboWar3D – приложение, предназначенное для проведения моделирования битвы роботов (эмуляция) и отображения этого процесса (3D визуализация).

 

Конфигурация RoboWar3D

При запуске RoboWar3D читает файлы конфигурации, содержащие параметры модели, визуализации и т.д. Основные файлы конфигурации: config.txt, game.txt, config3D.txt.

 

config.txt

Задает значения параметров модели (Environment). Представляет из себя последовательность  пар <Имя параметра> <Значение параметра>, при этом имена параметров аналогичны именам членов класса Environment.

Можно задавать значения всех параметров, кроме bases_count, field_width и field_height. Эти параметры задаются отдельно, с помощью файла game.txt.

 

game.txt

Содержит описание игры, которая будет запущена. В файле могут присутствовать следующие команды:

  • sbot <Имя команды> <Имя скрипта> – добавляет в игру команду роботов с указанным именем и связывает с ней указанный скрипт. Имя команды – строка символов без пробелов, не больше 8 символов. Имя скрипта – строка символов без пробелов произвольной длины. В директории Scripts должен находиться соответствующий скрипт робота в виде файла <Имя скрипта>.as.
  • bot <Имя команды> <Имя скрипта> – добавляет в игру команду роботов с указанным именем и связывает с ней встроенный скрипт. Имя робота – строка символов без пробелов, не больше 8 символов. Поддерживаются следующие имена встроенных скриптов: bot, smart, tbot, tbotv1, badbot, databot, dmbot, doombot, ras, svpro, yubot.
  • map <Имя карты> – задает игровое поле для игры.

Если имя карты имеет вид rndXxYxBC, то будет сгенерирована карта размерностью X*Y, с числом баз равным BC; расстановка баз будет произведена случайным образом, каждая команда роботов получит по одной базе на начало игры, остальные базы будут сделаны нейтральными. Параметры Y и BC могут быть опущены, в этом случае будет считаться X=Y, BC=(X+Y)/8 + 1. Примеры имен: rnd50x50x10, rnd80x80, rnd100.

В противном случае имя карты считается относительным/полным путем к файлу карты. Файл карты имеет следующий формат: <Количество баз> <Описание баз> <Количество роботов> <Описание роботов>. Описание баз – последовательность триплетов x y team, по одному на базу, где (x, y) - координаты базы, team – команда (-1 для нейтральной база). Если карта предусматривает наличие готовых роботов, то они задаются в описании роботов, аналогично заданию баз.

В game.txt может быть задано несколько команд роботов с одним и тем же скриптом (интеллектом). Должно быть больше одной команды роботов, чтобы игра состоялась. Максимальное число команд на одной карте – 10. Конструкция задания карты должна быть одна и находиться после описания команд.

 

config3D.txt

Содержит параметры 3D визуализатора, в виде последовательности пар <Имя параметра> <Значение параметра>. Возможные параметры:

Параметр Значение
show_minimap Режим отображения миникарты. 0 – не показывать, 1 – показывать без фона, 2 – показывать с фоном
show_score Режим отображения таблицы с информацией о командах. 0 – не показывать, 1 – показывать без фона, 2 – показывать с фоном
show_info Режим отображения вспомогательной информации. 0 – не показывать, 1 – показывать
frames_per_anim Число кадров для анимации. Чем больше, тем плавнее анимация
refresh_delay Задержка визуализации, в миллисекундах. Чем больше, тем медленнее будет идти визуализация
show_particles Режим отображения эффектов частиц. 0 – не показывать, 1 – показывать
enable_music Включить (1) или выключить (0) музыку

 

Значения всех этих параметров можно также изменять непосредственно в самом визуализаторе.

 

Утилита scheck.exe

Утилита scheck предназначена для проверки скриптов роботов.

Использование утилиты: scheck.exe <Имя скрипта>, при этом в директории Scripts должен находится файл скрипта с именем <Имя скрипта>.as. Если скрипт не содержит синтаксических ошибок, утилита сообщит об этом, в противном случае будет выведена информация об ошибках. Утилита проверяет только правильность текста скриптов, но не правильность их работы.

Можно проверять несколько скриптов сразу в виде: scheck.exe <Имя скрипта 1> <Имя скрипта 2> ... <Имя скрипта n>.