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

Поделись знанием:
Перейти к: навигация, поиск
К:Википедия:Статьи без источников (тип: не указан)

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





Классификация игр для программистов

По языку программирования

Программа может писаться на особом виде ассемблера, либо на языках высокого уровня. Чаще всего применяются интерпретируемые языки наподобие 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 появилась игра Ивана Гудкова Soldier Of The Future. В игре могло участвовать 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].
  • [iwor.sourceforge.net/ Imperfect World Of Robots (IWOR)] — моделирование мира, в котором роботы, управляемые программой, будут жить, работать, защищать свое "племя", производить потомство. Игра имеет важное и полезное отличие (с точки зрения обучения программированию на базе этой игры; проведения соревнований) от других игр — роботы, написанные для неё, используют для своего функционирования "сокеты" и "сообщения", поэтому они могут быть написаны практически в любых языках программирования и работать на машинах с различными операционными системами. Эта игра — серверного типа.
  • [botsgame.sourceforge.net/ B.O.T.S : BOts Tactical Simulation] — концепция игры похожа на другие игры, такие как CRobots или JRobots.
  • [jrobots.sourceforge.net/index.shtml JRobots] — клон C Robots в Java.
  • [games.stanford.edu/index.php/what-is-ggp General Game Playing] — в этой игре человек программирует не робота, как во многих других играх, а правила игры, однако вполне возможно запрограммировать эту игру, как игру, управляющую боевыми роботами, действующими по запрограммированным игроками правилам игры (например, программирование "базовых" игровых правил может быть осуществлено организаторами соревнований, а игроки, на основе правил игры, разрабатывают правила для роботов). Эта игра реализует искусственный интеллект — вместо того, чтобы действовать на основе заранее заданных человеком "жестких правил поведения в типовых ситуациях", боевая машина в игре будет сама определять своё поведение и принимать решения — в соответствии с предоставленными ей игровыми правилами, являющимися ограничениями для возможных действий. Игра является одновременно и игрой и научно-исследовательским инструментом и инструментом обучения в области искусственного интеллекта.
  • [nn.cs.utexas.edu/?opennero OpenNERO] — игра является одновременно и игрой и научно-исследовательским инструментом и инструментом обучения в области искусственного интеллекта. Управление боевыми роботами в игре осуществляют компьютерные нейросети. Особенностью игры является её графика, она лучше, по сравнению с другими играми из настоящего списка, есть мультиплеер. [github.com/nnrg/opennero OpenNERO] была использована для реализации нескольких демонстраций и упражнений для учебника Рассела и Норвига "[aima.cs.berkeley.edu/ Искусственный интеллект: современный подход]": методов искусственного интеллекта , таких как полный перебор, эвристический поиск, сценарии, обучение с подкреплением и эволюционные вычисления, а также проблем искусственного интеллекта , таких как перемещение по лабиринтам, сбора предметов и "роботизированная битва". Методы и задачи учебника реализованы в нескольких различных средах (или "модами"). [nn.cs.utexas.edu/project-list.php Neural networks research group] имеет некоторые другие проекты, близкие по духу к описанной игре и которыми также можно пользоваться для игровой, научно-исследовательской и образовательной деятельности.

Прочие

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

Open source

  • [realtimebattle.sourceforge.net/ RealTimeBattle]

Напишите отзыв о статье "Игра для программистов"

Примечания

  1. [ntv.ifmo.ru/ru/article/263/primenenie_dvuhetapnogo_geneticheskogo_programmirovaniya_dlya_postroeniya_modeli_tanka_v_igre_«ROBOCODE».htm Применение двухэтапного генетического программирования для построения модели танка в игре «ROBOCODE»]. - Статья. - журнал НИУ ИТМО.- март-апрель 2011
  2. [grobots.sourceforge.net/ Grobots]

Ссылки

  • Константин Ветлугин, Денис Коновальчик [old.computerra.ru/offline/1999/292/3540/ Аты-Боты] // Компьютерра. — 6 апреля 1992. — № 14 (292).
  • [julian.togelius.com/mariocompetition2009/ Программирование бота для игры в Марио на Java. In association with the IEEE Consumer Electronics Society. 2009-ый год.]
  • [www.ibm.com/ru/software/info/students/downloads/ Игры для программистов от IBM: Robocode и не только]

Отрывок, характеризующий Игра для программистов

– Поход! Поход! Дать ему бутылку за такую новость. Ты как же сюда попал?
– Опять в полк выслали, за чорта, за Мака. Австрийской генерал пожаловался. Я его поздравил с приездом Мака…Ты что, Ростов, точно из бани?
– Тут, брат, у нас, такая каша второй день.
Вошел полковой адъютант и подтвердил известие, привезенное Жерковым. На завтра велено было выступать.
– Поход, господа!
– Ну, и слава Богу, засиделись.


Кутузов отступил к Вене, уничтожая за собой мосты на реках Инне (в Браунау) и Трауне (в Линце). 23 го октября .русские войска переходили реку Энс. Русские обозы, артиллерия и колонны войск в середине дня тянулись через город Энс, по сю и по ту сторону моста.
День был теплый, осенний и дождливый. Пространная перспектива, раскрывавшаяся с возвышения, где стояли русские батареи, защищавшие мост, то вдруг затягивалась кисейным занавесом косого дождя, то вдруг расширялась, и при свете солнца далеко и ясно становились видны предметы, точно покрытые лаком. Виднелся городок под ногами с своими белыми домами и красными крышами, собором и мостом, по обеим сторонам которого, толпясь, лилися массы русских войск. Виднелись на повороте Дуная суда, и остров, и замок с парком, окруженный водами впадения Энса в Дунай, виднелся левый скалистый и покрытый сосновым лесом берег Дуная с таинственною далью зеленых вершин и голубеющими ущельями. Виднелись башни монастыря, выдававшегося из за соснового, казавшегося нетронутым, дикого леса; далеко впереди на горе, по ту сторону Энса, виднелись разъезды неприятеля.
Между орудиями, на высоте, стояли спереди начальник ариергарда генерал с свитским офицером, рассматривая в трубу местность. Несколько позади сидел на хоботе орудия Несвицкий, посланный от главнокомандующего к ариергарду.
Казак, сопутствовавший Несвицкому, подал сумочку и фляжку, и Несвицкий угощал офицеров пирожками и настоящим доппелькюмелем. Офицеры радостно окружали его, кто на коленах, кто сидя по турецки на мокрой траве.
– Да, не дурак был этот австрийский князь, что тут замок выстроил. Славное место. Что же вы не едите, господа? – говорил Несвицкий.
– Покорно благодарю, князь, – отвечал один из офицеров, с удовольствием разговаривая с таким важным штабным чиновником. – Прекрасное место. Мы мимо самого парка проходили, двух оленей видели, и дом какой чудесный!
– Посмотрите, князь, – сказал другой, которому очень хотелось взять еще пирожок, но совестно было, и который поэтому притворялся, что он оглядывает местность, – посмотрите ка, уж забрались туда наши пехотные. Вон там, на лужку, за деревней, трое тащут что то. .Они проберут этот дворец, – сказал он с видимым одобрением.
– И то, и то, – сказал Несвицкий. – Нет, а чего бы я желал, – прибавил он, прожевывая пирожок в своем красивом влажном рте, – так это вон туда забраться.
Он указывал на монастырь с башнями, видневшийся на горе. Он улыбнулся, глаза его сузились и засветились.
– А ведь хорошо бы, господа!
Офицеры засмеялись.
– Хоть бы попугать этих монашенок. Итальянки, говорят, есть молоденькие. Право, пять лет жизни отдал бы!
– Им ведь и скучно, – смеясь, сказал офицер, который был посмелее.
Между тем свитский офицер, стоявший впереди, указывал что то генералу; генерал смотрел в зрительную трубку.
– Ну, так и есть, так и есть, – сердито сказал генерал, опуская трубку от глаз и пожимая плечами, – так и есть, станут бить по переправе. И что они там мешкают?
На той стороне простым глазом виден был неприятель и его батарея, из которой показался молочно белый дымок. Вслед за дымком раздался дальний выстрел, и видно было, как наши войска заспешили на переправе.
Несвицкий, отдуваясь, поднялся и, улыбаясь, подошел к генералу.
– Не угодно ли закусить вашему превосходительству? – сказал он.
– Нехорошо дело, – сказал генерал, не отвечая ему, – замешкались наши.
– Не съездить ли, ваше превосходительство? – сказал Несвицкий.
– Да, съездите, пожалуйста, – сказал генерал, повторяя то, что уже раз подробно было приказано, – и скажите гусарам, чтобы они последние перешли и зажгли мост, как я приказывал, да чтобы горючие материалы на мосту еще осмотреть.
– Очень хорошо, – отвечал Несвицкий.
Он кликнул казака с лошадью, велел убрать сумочку и фляжку и легко перекинул свое тяжелое тело на седло.
– Право, заеду к монашенкам, – сказал он офицерам, с улыбкою глядевшим на него, и поехал по вьющейся тропинке под гору.
– Нут ка, куда донесет, капитан, хватите ка! – сказал генерал, обращаясь к артиллеристу. – Позабавьтесь от скуки.
– Прислуга к орудиям! – скомандовал офицер.
И через минуту весело выбежали от костров артиллеристы и зарядили.
– Первое! – послышалась команда.
Бойко отскочил 1 й номер. Металлически, оглушая, зазвенело орудие, и через головы всех наших под горой, свистя, пролетела граната и, далеко не долетев до неприятеля, дымком показала место своего падения и лопнула.
Лица солдат и офицеров повеселели при этом звуке; все поднялись и занялись наблюдениями над видными, как на ладони, движениями внизу наших войск и впереди – движениями приближавшегося неприятеля. Солнце в ту же минуту совсем вышло из за туч, и этот красивый звук одинокого выстрела и блеск яркого солнца слились в одно бодрое и веселое впечатление.


Над мостом уже пролетели два неприятельские ядра, и на мосту была давка. В средине моста, слезши с лошади, прижатый своим толстым телом к перилам, стоял князь Несвицкий.
Он, смеючись, оглядывался назад на своего казака, который с двумя лошадьми в поводу стоял несколько шагов позади его.
Только что князь Несвицкий хотел двинуться вперед, как опять солдаты и повозки напирали на него и опять прижимали его к перилам, и ему ничего не оставалось, как улыбаться.
– Экой ты, братец, мой! – говорил казак фурштатскому солдату с повозкой, напиравшему на толпившуюся v самых колес и лошадей пехоту, – экой ты! Нет, чтобы подождать: видишь, генералу проехать.
Но фурштат, не обращая внимания на наименование генерала, кричал на солдат, запружавших ему дорогу: – Эй! землячки! держись влево, постой! – Но землячки, теснясь плечо с плечом, цепляясь штыками и не прерываясь, двигались по мосту одною сплошною массой. Поглядев за перила вниз, князь Несвицкий видел быстрые, шумные, невысокие волны Энса, которые, сливаясь, рябея и загибаясь около свай моста, перегоняли одна другую. Поглядев на мост, он видел столь же однообразные живые волны солдат, кутасы, кивера с чехлами, ранцы, штыки, длинные ружья и из под киверов лица с широкими скулами, ввалившимися щеками и беззаботно усталыми выражениями и движущиеся ноги по натасканной на доски моста липкой грязи. Иногда между однообразными волнами солдат, как взбрызг белой пены в волнах Энса, протискивался между солдатами офицер в плаще, с своею отличною от солдат физиономией; иногда, как щепка, вьющаяся по реке, уносился по мосту волнами пехоты пеший гусар, денщик или житель; иногда, как бревно, плывущее по реке, окруженная со всех сторон, проплывала по мосту ротная или офицерская, наложенная доверху и прикрытая кожами, повозка.
– Вишь, их, как плотину, прорвало, – безнадежно останавливаясь, говорил казак. – Много ль вас еще там?
– Мелион без одного! – подмигивая говорил близко проходивший в прорванной шинели веселый солдат и скрывался; за ним проходил другой, старый солдат.
– Как он (он – неприятель) таперича по мосту примется зажаривать, – говорил мрачно старый солдат, обращаясь к товарищу, – забудешь чесаться.
И солдат проходил. За ним другой солдат ехал на повозке.
– Куда, чорт, подвертки запихал? – говорил денщик, бегом следуя за повозкой и шаря в задке.
И этот проходил с повозкой. За этим шли веселые и, видимо, выпившие солдаты.
– Как он его, милый человек, полыхнет прикладом то в самые зубы… – радостно говорил один солдат в высоко подоткнутой шинели, широко размахивая рукой.
– То то оно, сладкая ветчина то. – отвечал другой с хохотом.
И они прошли, так что Несвицкий не узнал, кого ударили в зубы и к чему относилась ветчина.
– Эк торопятся, что он холодную пустил, так и думаешь, всех перебьют. – говорил унтер офицер сердито и укоризненно.
– Как оно пролетит мимо меня, дяденька, ядро то, – говорил, едва удерживаясь от смеха, с огромным ртом молодой солдат, – я так и обмер. Право, ей Богу, так испужался, беда! – говорил этот солдат, как будто хвастаясь тем, что он испугался. И этот проходил. За ним следовала повозка, непохожая на все проезжавшие до сих пор. Это был немецкий форшпан на паре, нагруженный, казалось, целым домом; за форшпаном, который вез немец, привязана была красивая, пестрая, с огромным вымем, корова. На перинах сидела женщина с грудным ребенком, старуха и молодая, багроворумяная, здоровая девушка немка. Видно, по особому разрешению были пропущены эти выселявшиеся жители. Глаза всех солдат обратились на женщин, и, пока проезжала повозка, двигаясь шаг за шагом, и, все замечания солдат относились только к двум женщинам. На всех лицах была почти одна и та же улыбка непристойных мыслей об этой женщине.
– Ишь, колбаса то, тоже убирается!
– Продай матушку, – ударяя на последнем слоге, говорил другой солдат, обращаясь к немцу, который, опустив глаза, сердито и испуганно шел широким шагом.
– Эк убралась как! То то черти!
– Вот бы тебе к ним стоять, Федотов.
– Видали, брат!
– Куда вы? – спрашивал пехотный офицер, евший яблоко, тоже полуулыбаясь и глядя на красивую девушку.
Немец, закрыв глаза, показывал, что не понимает.
– Хочешь, возьми себе, – говорил офицер, подавая девушке яблоко. Девушка улыбнулась и взяла. Несвицкий, как и все, бывшие на мосту, не спускал глаз с женщин, пока они не проехали. Когда они проехали, опять шли такие же солдаты, с такими же разговорами, и, наконец, все остановились. Как это часто бывает, на выезде моста замялись лошади в ротной повозке, и вся толпа должна была ждать.
– И что становятся? Порядку то нет! – говорили солдаты. – Куда прешь? Чорт! Нет того, чтобы подождать. Хуже того будет, как он мост подожжет. Вишь, и офицера то приперли, – говорили с разных сторон остановившиеся толпы, оглядывая друг друга, и всё жались вперед к выходу.
Оглянувшись под мост на воды Энса, Несвицкий вдруг услышал еще новый для него звук, быстро приближающегося… чего то большого и чего то шлепнувшегося в воду.
– Ишь ты, куда фатает! – строго сказал близко стоявший солдат, оглядываясь на звук.