Игра для программистов
В статье не хватает ссылок на источники (см. также рекомендации по поиску). |
Игра для программистов — компьютерная игра, в которой человек не участвует напрямую в игре. Вместо этого он пишет управляющую программу, сражающуюся с себе подобными программами. Такие игры являются сложным и нетривиальным упражнением для программистов.
Классификация игр для программистовПравить
По языку программированияПравить
Программа может писаться на особом виде ассемблера, либо на языках высокого уровня. Чаще всего применяются интерпретируемые языки наподобие Python.
По цели игрыПравить
По цели игры такие игры делятся на:
- Бои в памяти. Задача программы — «завесить» программу противника.
- Настольные игры (например, на заре кибернетики были популярны шахматные турниры среди ЭВМ).
- Боевые роботы. Целью игры является создать управляющую программу для боевого робота или танка. В некоторых играх также можно изменять конфигурацию робота (тип мотора, брони, орудий и т. д.). Бои роботов довольно зрелищны для посторонних.
- Прочие игры. Управление гоночной машиной, колонией микробов, и т. д.
ИсторияПравить
В 1961 году в Bell Labs была разработана игра «Дарвин». В начала 1980-х годов под влиянием «Дарвина» была разработана игра «Бой в памяти». Ей суждено было стать популярной, она даже перешагнула железный занавес: в Переславле-Залесском была своя команда по «Бою в памяти».
В 1970 году прошёл первый шахматный турнир среди ЭВМ.
В 1985 году Томом Пойндекстером была разработана игра 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 появилась игра Ивана Гудкова «Солдат будущего». В игре могло участвовать 4 робота. Был режим командной игры 2×2. Роботы могли работать в паре, распознавать союзников. Модульное программирование. У игры был большой потенциал, но длина программы робота была искусственно ограничена и пространства для творчества было мало.
Ныне существует много игр для программистов, но лишь немногие из них действительно популярны.
Турниры по настольным играм среди ЭВМ малопопулярны, чаще проводятся шахматные турниры между людьми и компьютерами. Лучшие из шахматных программ для ПК (2006 год) играют на уровне гроссмейстера, программы для специализированных компьютеров уверенно обыгрывают даже чемпионов. На начало 2010-х годов основная настольная игра для компьютеров — го; компьютер играет в го на уровне хорошего любителя.
Наиболее известные игры для программистовПравить
Этот раздел нуждается в переработке. |
Бои в памятиПравить
- Дарвин — компьютерная игра для программистов, в которой сражались несколько ассемблерных программ до момента, пока одна из программ не захватит всю память.
- Бой в памяти — разновидность компьютерной игры «Дарвин», где программы написаны на язык Redcode и работают под управлением Memory Array Redcode Simulator.
Управление боевыми роботамиПравить
- C Robots
- Pascal Robots
- Robocode[1] — битва роботов-танков. Программы можно писать на Java или .NET.
- Robot Battle
- Robotwar
- Robot Warfare 1 — битва роботов на 2D поле.
- Scalatron — соревнование роботов на арене. Сражение роботов предусмотрено, но для победы сражаться не обязательно. Программы пишутся на Scala или Java.
- Grobots — игра-стратегия, в которой пишутся программы для управления командами роботов. Программы управления роботами пишутся на диалекте языка программирования Forth. Игра может быть использована для обучения и изучения Forth[2].
- Imperfect World Of Robots (IWOR) — моделирование мира, в котором роботы, управляемые программой, будут жить, работать, защищать свое «племя», производить потомство. Игра имеет важное и полезное отличие (с точки зрения обучения программированию на базе этой игры; проведения соревнований) от других игр — роботы, написанные для неё, используют для своего функционирования «сокеты» и «сообщения», поэтому они могут быть написаны практически в любых языках программирования и работать на машинах с различными операционными системами. Эта игра — серверного типа.
- B.O.T.S : BOts Tactical Simulation — концепция игры похожа на другие игры, такие как C Robots или JRobots.
- JRobots — клон C Robots в Java.
- General Game Playing — в этой игре человек программирует не робота, как во многих других играх, а правила игры, однако вполне возможно запрограммировать эту игру, как игру, управляющую боевыми роботами, действующими по запрограммированным игроками правилам игры (например, программирование «базовых» игровых правил может быть осуществлено организаторами соревнований, а игроки, на основе правил игры, разрабатывают правила для роботов). Эта игра реализует искусственный интеллект — вместо того, чтобы действовать на основе заранее заданных человеком «жестких правил поведения в типовых ситуациях», боевая машина в игре будет сама определять своё поведение и принимать решения — в соответствии с предоставленными ей игровыми правилами, являющимися ограничениями для возможных действий. Игра является одновременно и игрой и научно-исследовательским инструментом и инструментом обучения в области искусственного интеллекта.
- OpenNERO — игра является одновременно и игрой и научно-исследовательским инструментом и инструментом обучения в области искусственного интеллекта. Управление боевыми роботами в игре осуществляют компьютерные нейросети. Особенностью игры является её графика, она лучше, по сравнению с другими играми из настоящего списка, есть мультиплеер. OpenNERO была использована для реализации нескольких демонстраций и упражнений для учебника Рассела и Норвига «Искусственный интеллект: современный подход»: методов искусственного интеллекта, таких как полный перебор, эвристический поиск, сценарии, обучение с подкреплением и эволюционные вычисления, а также проблем искусственного интеллекта, таких как перемещение по лабиринтам, сбора предметов и «роботизированная битва». Методы и задачи учебника реализованы в нескольких различных средах (или «модами»). Neural networks research group имеет некоторые другие проекты, близкие по духу к описанной игре и которыми также можно пользоваться для игровой, научно-исследовательской и образовательной деятельности.
ПрочиеПравить
- Colobot — трёхмерная обучающая стратегическая игра, в которой можно запрограммировать роботов на встроенном языке.
- Ceebot — серия трёхмерных обучающих игр для детей, созданных на основе игры Colobot и ориентированных на использование в школах.
- Robot Auto Racing Simulator или RARS — трёхмерный симулятор гонок между запрограммированными гоночными автомобилями.
- TORCS — автосимулятор, основанный на RARS, и пригодный как для обычной езды, так и для соревнования между запрограммированными гоночными автомобилями.
- Snake Battle — «визуальное» программирование боевых змеек.
- Война вирусов — игра, имитирующая развитие двух колоний вирусов, которые развиваются сами и уничтожают друг друга.
- Захват флага — командные соревнования, целью которых является оценка умения участников атаковать и защищать компьютерные системы.
- CheckiO — изучение языка программирования Python. Возможность играть в различные игры путём программирования условий.
Open sourceПравить
ПримечанияПравить
- ↑ Применение двухэтапного генетического программирования для построения модели танка в игре «ROBOCODE» Архивная копия от 4 марта 2016 на Wayback Machine. — Статья. — журнал НИУ ИТМО.- март-апрель 2011
- ↑ Grobots (неопр.). Дата обращения: 30 июля 2016. Архивировано 27 июля 2016 года.
СсылкиПравить
- Константин Ветлугин, Денис Коновальчик. Аты-Боты // Компьютерра. — 6 апреля 1999. — № 14 (292).
- Программирование бота для игры в Марио на Java. In association with the IEEE Consumer Electronics Society. 2009-й год.
- Игры для программистов от IBM: Robocode и не только