История с игрой Robocode
«Однажды в 2001 г. Никита Туккель пришел с обеда и сказал, что мне повезло, и он напишет автоматную программу на основе объектно-ориентированного программирования, а потом пояснил почему. Выяснилось, что появилась новая версия популярной среди любителей программирования игры Robocode, в которой систему управления танком необходимо было писать на объектно-ориентированном языке программирования Java. При использовании этого языка хочешь, не хочешь, а программу надо писать объектно.
Через несколько дней он снова пришел с обеда и сказал, что его танк еще не стреляет, но уже всех побеждает, умело уклоняясь от выстрелов противника. На это я ответил, что этот танк надо срочно выставлять на сайт игры. На это Никита ответил, что он выставит его сразу после того, как танк начнет стрелять. Я посчитал это неправильным, так как если побеждает стреляющий танк, то в этом нет ничего необычного, а на победу не стреляющего танка обратят внимание все. Так оно и случилось, и мы с танком Cynical вошли в историю (http://old.robowiki.net/robowiki?History) этой игры. Потом наш танк стал стрелять. Эту работу мы закончили, выпустив проектную документацию (https://is.ifmo.ru/projects/tanks/).
Реализация автоматов в указанной игре в дальнейшем была названа «оборачивание автоматов классами», а использованный стиль программирования – «объектно-ориентированное программирование с явным выделением состояний». Когда создание стреляющего танка было закончено, мы разработали и опубликовали в сети Интернет проектную документацию на его программное обеспечение. Как уже отмечалось, игра в то время была очень популярной, и поэтому об этом танке узнали многие, в том числе и наши студенты. Когда однажды на лекции я упомянул этот танк, несколько студентов третьего курса сильно удивились тому, что он был разработан нами.
Основное признание нашей работы наступило через год – в 2002 г., когда пятикурсник Денис Кузнецов (двукратный призер чемпионатов мира по программированию в составе команды Университета ИТМО с Георгием Корнеевым и Андреем Станкевичем) на моей лекции сказал, что он преподает программирование во Дворце творчества юных и выбрал игру Robocode для обучения старшеклассников объектно-ориентированному программированию.
При этом он отметил, что просмотрел более 30 танков и выбрал наш, так как только на него имеется проектная документация. Вот его курсовой проект на эту тему, выполненный в 2003 г.: http://is.ifmo.ru/projects/robocode2/.
Поэтому нашу программу легко понять и сделать ее рефакторинг с целью придания ей «большей объектности», причем автоматы в ходе преобразования программы не пришлось переделывать. А вот что было написано о нашей роли в игре Robocode в статье Озерова А. Четыре танкиста и компьютер // Магия ПК. 2002. № 11, c. 61-63: «После выхода программы за несколько дней с сайта IBM было скачано 1 000 000 копий. За несколько месяцев игра обрела большую популярность среди программистов всего мира. В Интернете достаточно много сайтов, посвященных реализации танков для этой игры. Однако наибольший интерес среди участников проекта вызвала российская реализация проекта с использованием SWITCH-технологии, предложенная сотрудниками Санкт-Петербургского государственного института точной механики и оптики Н.И. Туккелем и А.А. Шалыто. Наши ученые на основе теории автоматов предложили модель танка, который запросто обыгрывает любого чемпиона лиги роботов. Точная математическая модель и использование современных методик программирования позволили российскому танку занять достойное место среди призеров лиги Robocode». Статья по этой тематике была опубликована нами через год (Туккель Н.И., Шалыто А.А. Автоматы и танки // BYTE/Россия. 2003. № 2, c. 69-73).
И еще. В статье Robocode (https://habr.com/ru/post/59784/), опубликованной в 2009 г. (!), было написано: «Интересно подошли к написанию робота в Университете ИТМО. Танк был разработан с использованием SWITCH-технологий (смесь автоматного и объектно-ориентированного программирования). К проекту прилагается серьезная проектная документация. Вы можете скачать ее и исходные коды бесплатно на странице проекта: http://is.ifmo.ru/projects/tanks/». В обсуждении этой статьи участвовал и Никита Туккель: «Стоит вспомнить, что первая версия этого танка была некоторое время чемпионом мира в регулярных соревнованиях. На странице, посвященной истории игры (http://old.robowiki.net/robowiki?History), написано, что появление этого танка заставило разработчиков сменить правила. Танк назывался counterwallrobot.Cynical. Его автор – я :-). Давно дело было…». Это все, что я хотел рассказать о нашем участии в программировании этой игры.
Описанная история началась в 2001 г.».
Это фрагмент из моей книги «Мои счастливые годы жизни на кафедры «Компьютерные технологии» Университета ИТМО (к двадцатилетию кафедры). Она опубликована здесь:http://is.ifmo.ru/belletristic/Shalyto-moi-shastlivye-gody-na-CT.pdf
2003.
