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

    Должен признаться, что я плохой программист. Я не люблю настраивать Maven и писать конфигурации для Spring Framework. Я не знаю в деталях, как работает JVM (да и в общих чертах представляю это себе довольно смутно). Я плохо понимаю паттерны проектирования, а любая новая технология вводит меня в уныние. И тем не менее, я люблю программировать.

    Специально для таких как я (а может, и для каких-то других) существует небольшой класс игр, представляющих собой квинтэссенцию программирования. В них не нужно скрещивать ежа с ужом и беспокоиться о версиях библиотек. Лишь кристально чистое алгоритмическое программирование, обёрнутое в симпатичный интерфейс — вот моё маленькое счастье.

    Минуточку внимания.

    Я не стану говорить о Robot Battle и тому подобных вещах. Вот не стану и всё. Возможно, я странный человек, но мне не нравится иметь дело с чем-то, хоть отдалённо напоминающим реальную физику. Интересующиеся могут почитать об этой игре здесь, а статья немного о другом.


    SpaceChem


    Истинная жемчужина жанра, сочетание прекрасной идеи с прекрасной реализацией. Ваш лирический герой — инженер-нанотехнолог, занимающийся проектированием реакторов для сборки-разборки молекул.



    Игровой процесс напоминает программирование на языке Befunge: по игровому полю… простите, по реактору перемещаются два манипулятора, направляемые заранее расставленными стрелочками и выполняющие раскиданные по полю инструкции. Манипуляторы хватают поступающие в реактор молекулы, перемещают, поворачивают, расщепляют и собирают вновь, затем отправляют результат на выход. «Зачем всё это?» — спросите вы. Что ж, как раз для вас в игре присутствует неплохой sci-fi сюжет, и даже (sic!) элементы экшна.

    The Codex of Alchemical Engineering


    Более ранняя игра от того же разработчика, увековеченная во flash. Здесь на смену двум кружочкам-вальдо приходят многочисленные механические клешни а ля Бендер Родригес, а на смену атомам и молекулам — алхимические ингредиенты.



    Помимо сложности, игра может похвастаться необычной для флэшевых игр системой сохранений: для созданного вами решения генерируется некий текст, который можно невозбранно скопипастить, чтобы потом (к примеру, на другой машине) совершить обратное преобразование и восстановить решение из текста. Также у неё есть продолжение (или, скорее, левел-пак) — Magnum Opus Challenge, с ещё более суровыми уровнями для тех, кому создание философского камня показалось лёгкой разминкой.

    LightBot 1 & 2


    Две части флэшевой игры про маленького робота на клетчатом поле. Повинуясь нашим инструкциям, робот ходит, поворачивается, прыгает и в буквальном смысле зажигает, неся свет и добро в самые отдалённые уголки уровня.



    Обучающие игры такого плана в своё время были весьма популярны в школьной информатике. С отказом от идеологии «программирование — вторая грамотность» их, к сожалению, вытеснили Ворд и Эксель — впрочем, это уже совсем другая история. Так вот, LightBot отличается от тех игр жёстким ограничением на количество команд: 16 в основной программе, ещё по 8 в двух подпрограммах. Это не даёт программировать спинным мозгом и заставляет подключать головной.



    Во второй части, помимо улучшенного интерфейса, появились такие полезные фичи, как ветвление и рекурсия.

    Pragmatica


    Ещё одна управлялка роботами. Действие этой фриварной игры разворачивается в мрачноватом будущем, полном машин и… машин.



    В отличие от игр, перечисленных выше, здесь реализован событийный подход: программируется не поведение робота в целом, а его реакция на определённые раздражители. Кроме того, уникальной фичей является то, что одной и той же программой управляется сразу несколько роботов. Впрочем, на мой вкус игра скучновата, поэтому я и поместил её в самый конец статьи.

    P.S.


    Список не полон и не претендует на полноту. К примеру, только сегодня мне посоветовали нечто онлайновое под названием «RoboZZle Game ». По первому впечатлению это нечто мне нравится, но пока я не могу написать ничего определённого и, тем более, кому-то его рекомендовать. Но вы можете попробовать на свой страх и риск. Засим откланяюсь.

    Ссылки (по просьбам трудящихся)


    SpaceChem (игра платная, готовьте денежку)
    The Codex of Alchemical Engineering
    The Codex of Alchemical Engineering: Magnum Opus Challenge
    LightBot
    LightBot 2.0
    Pragmatica
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама
    Комментарии 88
    • +54
      >> Игры для программистов

      У вас заголовок никак не соответствует жизни. Я вращаюсь в кругах программистов и сам уже много лет как программист и все выше перечисленное меня даже не интересует и я в такое никогда не играл бы.

      На самом деле программисты весь день думают и как раз игры любят там где думать не нужно, то есть не напрягаться. Я бы выделил Quake, Counter strike.
      Второе направление это стратегии, здесь думать нужно чуть больше, но это не напрягает, а чувствуешь себя властелином мира. Сюда же входят товер дефенсе, строительство городов и тому подобное.
      • +3
        Тут можно поспорить… но, пожалуй, не стоит. А как по-вашему должен выглядеть заголовок?
        • +8
          Игры для грузчиков :)

          Пожалуй соглашусь, после рабочего дня любая игра, где не надо напрягать мозг, расслабляет, а следовательно доставляет удовольствие. Даже просмотр тупого сериала.
          • +7
            Видимо, у меня слишком тупая работа, либо слишком выносливый мозг, либо и то и другое вместе :)
            • +7
              Напрягает именно рутина.
              Когда попадаются интересные задачи, то само программирование становится игрой, и от этого не устаёшь, я бы сказал наоборот — повышается настроение, работоспособность. Но это бывает довольно редко.
              • +1
                Да, бывает, домой приходишь с работы — а мысленно всё еще «в игре», продолжает прокручивать все возможные варианты решений текущей задачи.
          • +1
            Игры с элементами программирования?
            Обучающие игры для программистов?
            С одной стороны, программисты играть в них могут и не захотеть. С другой, не-программисты просто ничего не поймут…
            Наверное, в заголовок надо вставить слово «эзотерический», только надо понять, куда. Тогда никто спорить не будет :)
          • 0
            игры в программистов
          • +1
            Видимо, автор не имел ввиду, что всем программистам должны нравится эти игры, он имел ввиду, что эти игры схожи с процессом программирования.
            • +2
              Автор имел в виду, что эти игры олицетворяют ту часть программирования, которая ему нравится. В моей повседневной работе редко встречаются именно алгоритмические задачи. Чаще приходится проводить часы, пытаясь понять, почему начиная с версии X библиотека А отказывается работать с фреймворком В, и как с этим бороться.
            • +5
              А по-моему название что надо. Игры для программистов отличаются от игр для всех, тем же чем и программисты отличаются от всех — процесс программирования.

              Квейк и Контра — игры для всех. Чтоб в них играть не обязательно быть программистом.

              А чтоб играть игры из этого поста — нужно программирование в том или ином виде, а это уже значит, что игрок — программист. Не в смысле профессии, а в смысле наличия навыков.
            • 0
              Весьма занимательно
              • +4
                По себе скажу — и автор статьи прав и Вы тоже. Всё зависит от ситуации. После долгого тяжелого дня лучшая игра — мультиплеер Half-life 1 на стимовских серверах. Но иной раз хочется именно подумать но программировать не хочется. Тогда я с радостью ломаю голову в SpaceChem.
                • +2
                  (Сморозил глупость...)
                  • +10
                    Я бы еще добавил Colobot. Потрясающие ощущения, когда первые несколько миссий пишешь и отстреливаешь врагов, а в оставшихся загружаешь нужные программы с небольшими изменениями и роботы сами начинают собирать ресурсы, защищать базу, перезаряжаться и прочее.
                    • +1
                      Играл как-то давным давно в него. Понравилось.
                      • 0
                        Обязательно попробую.
                        • +1
                          Colobot суперский. Жаль что нет продолжений.
                          • +1
                            Не все потеряно, все же разработчики расщедрились и отдали исходники в опенсорс. Подробнее о планах выпуска новых версий можно почитать на гитхабе
                            • 0
                              интересно, пасиб. Вот бы туда пайтон встроить… тогда можно было бы детей пайтону учить через игру %)
                              • 0
                                Лучше Erlang — он для роботов лучше подходит.
                            • 0
                              Поддерживаю, очень интересно было играть, если бы не одно «НО» — в сложных алгоритмах, реагирующих на множество условий и параметров, очень сильно были заметны:
                              — дискретность времени
                              — отсутствие точных данных о задержках при совершении действий
                              Из-за этого приходилось вручную подбирать интервалы упреждения.
                              Потом уже после курса САУ была мысль переписать кое-что через ПИД-регуляторы, но остановила эти самые ограничения — зачем стараться, если всё равно это будет нивелироваться округлением в игре.
                              Жаль, что моих скиллов в кодинге не хватит, чтобы участвовать в доработке игры в опенсорсе (грустный смайлик)
                              • 0
                                мне нравится событийная модель — когда идет обработка события «в тебя попали» или «обьект в радаре изменил положение» — так делаю в робопайкоде github.com/suguby/robopycode, но там пока все плоское. есть идея сделать обьемное через Blender но знаний и времени не хватат.
                                • 0
                                  Событийность это хорошо, но нужно знать, кот и как генерирует события.
                                  У радара должна быть характеристика вроде интервала опроса объектов, чтобы знать, что событие, которое к нам пришло, произошло в последние 100ms, например.
                                  Если мы будем знать предыдущие координаты и вектор скорости наблюдаемого объекта, то сможем определить, хватает ли нам точности радара, чтобы определить новое расположение объекта.
                                  Я понимаю, что прошу слишком многого, но хотелось бы как-то приблизиться к реальным системам авто-наведения на истребителях :)
                                  UPD: спасибо за робопайкод, очень интересный проект, добавил в закладки
                          • 0
                            Раз уж мнения разделились, не буду пока трогать название. После обеда посмотрю, что творится в комментах.
                            • +1
                              Не помешали бы ссылки на эти игры в статье.
                              • 0
                                Это не будет считаться рекламой? Сейчас запилю.
                            • 0
                              По заголовку подумал, что речь идет о чем-то таком.
                              • +1
                                О такой игре автор упомянул в самом начале и не стал про нее рассказывать)
                                Курсе на втором ездили на олимпиаду, там второй тур состоял как раз таки в написании AI, а победитель определялся, естественно, после N боев.
                              • +4
                                А была еще замечательная Snake Battle, она на мой вкус по интересней вышеперечисленных будет…
                                • 0
                                  О да, спасибо вам, что напомнили про неё.
                                • +3
                                  И еще раз: Colobot

                                • 0
                                  А вот еще в тему настольная игра Roborally. Правда в ней к «программированию» добавляется еще достаточно много элементов случайности.
                                  • +3
                                    Пользуясь случаем, спрошу. Есть ли игры типа тех, что были на «Google AI challenge» или «Russian AI cup» (пишем бота, засылаем его в «песочницу» с другими ботами, созерцаем кровавое месиво)? Есть ли такое, функционирующее на регулярной основе?
                                    • +1
                                      www.robotbattle.com/
                                      Автор упомянул о ней) Можно поискать на всяких-разных контестерах, я лично писал 2 разных бота для таких игрушек. Но они конечно попроще будут, чем по линку выше)
                                      Ах да, вспомнил. Есть соревнование с ништяками же, во: russianaicup.ru
                                      • 0
                                        robotbattle.com, похоже, мертв, судя по сайту…
                                      • +2
                                        Энтузиасты сделали сервер Tron, Ants и Planet Wars с возможностью игры по сети и даже устраивали свой мини-турнир. Сейчас, насколько я понял, сервер уже отключен, но весь код есть на Github и идет поиск возможностей запилить турнир на регулярной основе.

                                        Еще есть Capture the Flag, RoboPoker (игра по сети, пост на хабре), FinalBot (только дотнет — Покер и Шахматы), Scalatron (официального сервера нет, можно запустить свой турнир), ежегодный StarCraft AI Competition, ежегодный ICFP contest.
                                    • 0
                                      В такие игры желательно играть, когда кодил давно и кодить будешь ещё не скоро: мозг напрягается либо от одного, либо от другого, в зависимости от последовательности.

                                      Лучше поиграть во что-нибудь типа Quake, Unreal Tournament или Warsow, причем и до, и после кодинга. И пальцы будут писать код быстрее, и мозг отдохнет.
                                      • 0
                                        Ещё есть прекрасная Manufactoria — последние уровни отличаются сложностью и необходимостью оптимизации использования пространства.
                                          • 0
                                            ИМХО, можно в список добавить DRoD.
                                            Там правда совсем не программирование, но алгоритмичность действий точно нужна.
                                            • 0
                                              Мне когда-то давно понравился проект "Robot Tactics"
                                              — это игра на создание AI роботов, входящих в колонию. Между роботами организована система общения, позволяющая координировать совместные действия. Цель игры- уничтожить другую колонию, написанную другим программистом. На сайте проводятся регулярные соревнования, определяющие лучшую колонию. Необычная экономическая система делает игру интереснее. www.robotact.narod.ru/
                                              Жалко, что проект уже 7 лет не обновлялся и не перешел в онлайн.
                                              • +7
                                                Я, наверно, немного попиарюсь тут в комментариях…

                                                Пишу подобную игру «для программистов», к концу месяца надеюсь релизнуть.
                                                Игра называется Great Permutator.
                                                Посмотреть описание и скачать демо можно здесь.
                                                +Еще видео летсплея можно посмотреть тут.

                                                Игра писалась, собственно, под впечатлением от SpaceChem и LightBot.
                                                • 0
                                                  Ух ты, класс. Напоминает Manufactoria.
                                                  Жаль что только windows, под mac/linux сборки планируются?
                                                  • +1
                                                    Планируются. Но сначала хотя бы под Windows надо допилить)

                                                    На Manufactoria игра похожа только внешне, на самом деле игровая механика сильно различается.
                                                    Сходство случайно — о Manufactoria я узнал только когда уже сделал первую демку.
                                                    • 0
                                                      Да, я внешнее сходство и имел ввиду.
                                                      Будем ждать, обязательно напишите пост когда допилите)
                                                • 0
                                                  Если целый день отвлекают разные люди с разными вопросами то вечером сложно сосредоточиться на чем-то одном.
                                                  Логические игры (10-30мин) заставляют сконцентрироваться и сделать мышление целенаправленным.
                                                  Тогда можно начинать программировать без потери сосредоточенности.
                                                  Но думаю тратить много времени на игры не полезно.
                                                  • 0
                                                    Логические игры могут потребовать поддержки слишком большого конкста. И переключиться с него на контекст задачи может быть ещё сложнее, чем «после обеда».
                                                  • +1
                                                    Добавьте, пожалуйста, robozzle.com/, у них и для андроида замечательный клиент есть.

                                                    • 0
                                                      Я не могу добавить то, во что практически не играл. Думаю, через какое-то время я напишу продолжение этого псто)
                                                      • +1
                                                        Не сразу получилось встроить видео. Добавил.

                                                        • +2
                                                          Крайне приятно это слышать. :)
                                                          Разрешите представиться. Я — разработчик порта на Android
                                                          • 0
                                                            Спасибо, что ваша программа просит только адекватные разрешения, а не как большинство (и контакты, и местоположение, и прием push-сообщений).
                                                            • 0
                                                              Спасибо за порт, он и правда крайне удачный.
                                                              Разрешите представиться. Я — автор длинного верхнего поста в ветке robozzle.com/forums/thread.aspx?id=1932 (простите за опечатки в английском, текст писался на больничном с температурой за 38)
                                                              • 0
                                                                По поводу сообщения об ачивменте. Оно не привиделось. В игре есть ачивменты, но они запланированы на 0.4.+ и пока не отлажены и не имеют никакого интерфейса, кроме всплывающего окна, которое я попросту случайно смержил в ветку старой версии и поленился отключить. :)
                                                                • 0
                                                                  Жив ли ещё порт?

                                                                  Я на днях полностью дорешал все «Only popular» и остался наедине с гигантским списком всех остальных нерешённых паззлов, который очень долго и трудно листать и в котором почти нереально что-то найти снова уже на следующий день. Очень не хватает возможности создания хоть какого-нибудь кастомного фильтра в духе «100 самых простых из ещё не решённых» или «100 самых сложных из тех, что не используют краску» или «все паззлы от этого же автора» или «все паззлы, которые решило не больше 4 человек» или «все паззлы, которые я решил, но за неоптимальное число шагов».

                                                                  Вторая по важности хотелка — вместо ошибки «No solution to this puzzle stored locally» пытаться скачивать своё решение с сервера (полезно для тех, кто решает на разных устройствах).
                                                                  • 0
                                                                    Вчера раздумывал как бы это получше организовать, решил, что будет так:
                                                                    Когда добавлю ачивменты, у каждого ачивмента будет список паззлов, которые надо пройти, чтобы его получить.
                                                                    Надеюсь это решит проблему.
                                                                    Кстати, если отключить показ решённых паззлов, то первые 100 паззлов в списке и будут «100 самых простых из ещё не решённых».

                                                                    Единственное, я подумываю сделать ачивменты доступными только в платной версии. Может не все, но часть. А то так и не выпустил ничего самостоятельно, приносящее профит :)
                                                            • +3
                                                              Вы ещё вспомните про майнкрафт в майнкрафте)
                                                            • 0
                                                              Cargo-Bot для iOS — отличная штука.
                                                              • 0
                                                                А я играю в Civilization 5 в свободное время. По мне так отличная игра, и развлекает и заставляет думать.
                                                                • 0
                                                                  Про 0x10c с её DCPU-16 забыли, хоть ещё и не вышла.
                                                                  • 0
                                                                    Ну почему забыли? Помним-с, ждём-с. Только сказать пока нечего.
                                                                    • +1
                                                                      «Игрой для программистов» она была задолго до выхода. Я бы сказал, слишком задолго — мне она успела надоесть.
                                                                  • +2
                                                                    А тем, кто любит тематику космоса можно посоветовать еще Kerbal Space Program :) Может показаться весьма простенькой, но построить ракету-носитель для доставки, к примеру, компонентов лунной базы на, собственно, луну (Mun в местной терминологии) весьма не простое занятие :)
                                                                    К тому же можно создавать ракеты/самолеты/шаттлы путем проб и ошибок (собрал-запустил-взорвалась/развалилась/напутал_со_стадиями_ракеты/невзлетело/и_т.д. :) ), а можно уйти с головой в математику и все просчитывать перед испытанием, благо есть море плагинов для этого :)
                                                                    • +1
                                                                      Автор, пожалуйста, добавьте в конец статьи так же игры из комментариев.
                                                                      • +1
                                                                        Пардоньте, я всё же не стану ничего добавлять, не поиграв в это как следует. Вдруг там детская порнография?
                                                                      • +3
                                                                        SpaceChem замечателен, да :)
                                                                        • –2
                                                                          Я бы сказал, что это не столько для программистов игры, сколько в целом для людей, которые любят поломать мозги и имеют достаточное образование, чтобы не останавливаться на обычных головоломках.
                                                                          Я полагаю, в таком случае вам должна нравиться математика как факт? :) Чистые абстракции, языки, алгоритмы, ммм… ;) И никаких ужей с ежами.
                                                                          • 0
                                                                            Не знаю почему, но у меня рейтинг уже несколько часов колеблется где-то на ±1. Это какая-то особая магия?
                                                                            • 0
                                                                              По моим наблюдениям, он плавно рос от 250+ до почти 280, в соответствии с оценками за эту статью. Если бы что-то происходило месяц назад, то колебания можно было бы объяснить «приветом из прошлого», а так — комбинация изменения оценок и кармы, с какими-то коэффициентами. Никакой магии, не считая непредсказуемых действий читателей.
                                                                              Интереснее, когда карма меняется без изменения числа голосов за неё. При том, что я сам никому её в это время не меняю. Пока этот эффект для меня загадка.
                                                                              • 0
                                                                                Таки да, он дорос до 280 с копейками, я вышел на 19 место в рейтинге, а потом начала происходить вот эта непонятная фибрилляция. Если строить теории заговора, я бы предположил, что сработал некий триггер, поставленный хабраюзером, который чересчур озабочен сохранением своего места в рейтинге, и орды боевых виртуалов начали атаковать меня в репу. Если обойтись без паранойи… Может, вечером всем просто не до головоломок?
                                                                                • 0
                                                                                  Упс… а вы как раз на восемнадцатом месте)
                                                                                  • 0
                                                                                    А вчера вечером был около 550-го. Рейтинг — штука эфемерная, в отличие от кармы, удерживать его непросто и бессмысленно. Но, похоже, что на уровне плюс-минус 1 балла у машинки есть погрешности. Если следить за цифрами внимательно. Ведь величина «число_голосов_за_карму минус карма» не может уменьшиться? А я недавно увидел, как она из 52 превратилась в 50 :)
                                                                                    • +1
                                                                                      А единожды плюнув, допустим, кому-то в карму, нельзя потом изменить решение?

                                                                                      Что касается рейтинга — мой эксперимент, в принципе, окончен. В двадцатку вошёл, нотариально заверенный скриншот сделал. Единственно, здорово было бы за этот псто получить соточку — моя девушка тоже возжелала инвайт)
                                                                                      • 0
                                                                                        Нельзя, насколько я понимаю
                                                                                        • 0
                                                                                          Может, в каких-то особо экзотических случаях можно? Не верится мне в простую погрешность.
                                                                                        • +3
                                                                                          Насколько я знаю, карму можно менять с минуса на плюс и обратно любое количество раз. При этом растет счетчик проголосовавших.

                                                                                          PS. Договоритесь с кем ни будь на эксперимент.
                                                                                          • +1
                                                                                            Проверил. Действительно можно.
                                                                                • 0
                                                                                  SpaceChem просто обожаю. Даже распечатал плакат с расширенной таблицей Менделеева, собрал пирамидку-босса (small brother watches u 2 :), купил специальное коробочное издание на Кикстартере — в общем, фанатею от игры и поддержал Зача Барта как только мог. После SC понял, что он очень талантливый геймдизайнер, и учитывая, что Minecraft полностью вдохновлен Infiniminer'ом, Нотч мог бы поделиться частью своего стольника, который не знает, куда деть, со своим идейным вдохновителем.)
                                                                                  • 0
                                                                                    В первой версии Light Bot тоже была рекурсия.
                                                                                    • 0
                                                                                      Да, но, ЕМНИП, с её помощью невозможно было пройти уровень.
                                                                                    • +1
                                                                                      Вот еще интересная игра для программистов www.checkio.org/

                                                                                      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.