Игра для программистов

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

Игра для программистов — компьютерная игра, в которой человек не участвует напрямую в игре. Вместо этого он пишет управляющую программу, сражающуюся с себе подобными программами. Такие игры являются сложным и нетривиальным упражнением для программистов.

Классификация игр для программистов[править | править исходный текст]

По языку программирования[править | править исходный текст]

Программа может писаться на особом виде ассемблера, либо на языках высокого уровня. Чаще всего применяются интерпретируемые языки наподобие Python.

По цели игры[править | править исходный текст]

По цели игры такие игры делятся на:

  • Бои в памяти. Задача программы — «завесить» программу противника.
  • Настольные игры (например, на заре кибернетики были популярны шахматные турниры среди ЭВМ).
  • Боевые роботы. Целью игры является создать управляющую программу для боевого робота или танка. В некоторых играх также можно изменять конфигурацию робота (тип мотора, брони, орудий и т. д.). Бои роботов довольно зрелищны для посторонних.
  • Прочие игры. Управление гоночной машиной, колонией микробов, и т. д.

История[править | править исходный текст]

В 1961 году в Bell Labs была разработана игра «Дарвин». В начала 1980-х годов под влиянием «Дарвина» была разработана игра «Бой в памяти». Ей суждено было стать популярной, она даже перешагнула железный занавес: в Переславле-Залесском была своя команда по «Бою в памяти».

В 1970 году прошёл первый шахматный турнир среди ЭВМ.

В начале 90-х годов Томом Пойндекстером была разработана игра C Robots — первая программистская игра, в которой надо было управлять боевым роботом. Боевой робот — тележка, снабжённая радаром и миномётом. Для сканирования местности надо было указать, на какой угол повернуть радар, и остроту диаграммы направленности. Чем шире диаграмма, тем больше шансов, что вражеский робот попадёт в сектор обзора, но и точность сканирования, соответственно, меньше. Миномёт стреляет осколочным снарядом, для выстрела надо задать направление и расстояние, на котором должен приземлиться снаряд. У этой игры было много недостатков: интерпретатор был достаточно неудачным; робот, который стрелял много, обычно побеждал робота, который стрелял метко.

Игра C Robots была усовершенсовована Дэвидом Мальмбергом и переведена на язык Паскаль, она получила название Pascal Robots (или P-Robots). В игру был добавлен расход топлива; если робот оставался без топлива, ему оставалось только ждать, пока кто-то не прикончит его. Появились препятствия и командная игра. Добавлена возможность конфигурировать робота: можно выбрать одну из трёх пушек, один из пяти моторов, один из пяти топливных баков, один из трёх вариантов брони, а также дополнительное оборудование: защитное поле, дистанционные бомбы, ремонтный комплект и маскировку. Впрочем, баланс между оборудованием не был проработан, и был написан робот Now, эксплуатирующий этот дисбаланс. Now не имел никакого интеллекта; фактически он являлся огромным топливным баком, снабжённым лёгким мотором, лёгкой бронёй и защитным полем. Пользуясь тем, что у роботов с лёгкой бронёй защитное поле расходует очень мало топлива, Now легко выигрывал и в массовой перестрелке, и один на один. Также после того, как были опубликованы исходные тексты Pascal Robots, обнаружилось несколько несоответствий поведения игры заявленному в документации: например, в документации сказано, что дистанционная бомба поражает всех роботов независимо от того, включен ли щит; в реальности защитное поле спасает от бомбы.

Пожалуй, самая известная игра о боевых роботах — Robocode, разработанная в IBM. Эта игра сильно отличается от Pascal Robots. Если в Pascal Robots программист задаёт роботу, в какую сторону ехать, и он автоматически выйдет на этот курс, то в Robocode надо задавать, на какой угол повернуть руль и с какой скоростью ехать. Все роботы экипированы одинаково. Также снаряды поражают не осколками, а прямым попаданием.

Игра Robocode также в некоторой степени решила «проблему арбитра». Если в Pascal Robots, чтобы не допустить утечки кода, нужна была нейтральная сторона, проводящая соревнования (арбитр), то в Robocode можно просто выложить для свободной скачки class-файл своего робота. Обфускация достаточно надёжно защищает робота от декомпиляции.

В 1995 году прошли первые заезды в автосимуляторе RARS (Robot Auto Racing Simulator). В 1997 году был начат проект TORCS, позволявший ездить как людям, так и роботам.

В 1996 году на платформе ZX Spectrum появилась игра Ивана Гудкова Soldier Of The Future. В игре могло участвовать 4 робота. Был режим командной игры 2х2. Роботы могли работать в паре, распознавать союзников. Модульное программирование. У игры был большой потенциал, но длина программы робота была искусственно ограничена и пространства для творчества было мало.

Ныне существует много игр для программистов, но лишь немногие из них действительно популярны.

Турниры по настольным играм среди ЭВМ малопопулярны, чаще проводятся шахматные турниры между людьми и компьютерами. Лучшие из шахматных программ для ПК (2006 год) играют на уровне гроссмейстера, программы для специализированных компьютеров уверенно обыгрывают даже чемпионов. На начало 2010-х годов основная настольная игра для компьютеров — го; компьютер играет в го на уровне хорошего любителя.

Наиболее известные игры для программистов[править | править исходный текст]

Бои в памяти[править | править исходный текст]

  • Дарвин — компьютерная игра для программистов, в которой сражались несколько ассемблерных программ до момента пока одна из программ не захватит всю память.
  • Бой в памяти — разновидность компьютерной игры «Дарвин», где программы написаны на язык Redcode и работают под управлением Memory Array Redcode Simulator.

Управление боевыми роботами[править | править исходный текст]

  • C Robots
  • Pascal Robots
  • Robocode — битва роботов-танков. Программы можно писать на Java или .NET.
  • Robot Battle
  • Robotwar
  • Robot Warfare 1 - битва роботов на 2D поле. http://robots.chat.ru
  • Scalatron — соревнование роботов на арене. Сражение роботов предусмотрено, но для победы сражаться не обязательно. Программы можно писать на Scala или Java.

Прочие[править | править исходный текст]

  • Colobot — трёхмерная обучающая стратегическая игра, в которой можно запрограммировать роботов на встроенном языке.
  • Ceebot — серия трёхмерных обучающих игр для детей, созданных на основе игры Colobot и ориентированных на использование в школах.
  • Robot Auto Racing Simulator или RARS — трёхмерный симулятор гонок между запрограммированными гоночными автомобилями.
  • TORCS — автосимулятор, основанный на RARS, и пригодный как для обычной езды, так и для соревнования между запрограммированными гоночными автомобилями.
  • Snake Battle — «визуальное» программирование боевых змеек.
  • Война вирусов — игра, имитирующая развитие двух колоний вирусов, которые развиваются сами и уничтожают друг друга.
  • Захват флага — командные соревнования, целью которых является оценка умения участников атаковать и защищать компьютерные системы.

Open source[править | править исходный текст]

Ссылки[править | править исходный текст]