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


(всё это и еще больше мы рассказываем в видео-версии, которую можно найти в конце статьи; в ней можно посмотреть геймплей игр и другие материалы по теме)

Их стоит разделить на несколько категорий: первая — это обучающие игры, которые должны помочь детям или студентам понять основы программирования, составления алгоритмов, общие команды и принципы. Например популярный графический язык Scratch, которым можно пользоваться прямо из броузера. Или российская система ПиктоМир. Даже столь известный язык как BASIC при своём создании в начале 60-х задумывался как упрощённый вариант с синтаксисом, понятным непрограммистам.


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

И наконец, алгоритмические игры, где программирование является малозаметной и органичной частью игрового процесса.


Совсем не обязательно, чтобы написание алгоритма было представлено в виде текстовых команд: например, существует серия The Incredible Machine, головоломка, где из элементов нужно строить сложные механизмы для выполнения каких-то простых задач. Лопнуть все воздушные шарики на экране, проводить мышей к сыру, запустить ракету и тому подобное — уровней море. У неё есть и более современный аналог, Crazy Machines, и даже римейк от тех же авторов. Для решения вам даётся набор блоков: планки, мячи, розетки для электрических приборов, но не все строительные блоки являются статичными: в некоторых можно выставить таймер, или сделать так, что они начинают работать после включения или срабатывают на каждый второй раз, или выполняют сортировку. Огромный простор для алгоритмического творчества.


Ну, а если смотреть на совсем популярные игры, то например в Dragon Age: Origins можно детально, пошагово регулировать поведение ваших сопартийцев в бою. С новыми уровнями у них даже открываются новые опции. Можно было выбирать кого атаковать сначала, когда применять скиллы или магию, при каких условиях переключаться на других врагов и тому подобные вещи. Чем не алгоритм?


Но перейдём к истокам зарождения вопроса: когда же всё-таки программисты стали играть со своими коллегами? А это произошло в далёком 61-м году, на заре компьютерной эры, когда группа разработчиков из американской компании Bell Labs: Виктор Высоцкий (сын русских эмигрантов), Малькольм Дуглас МакЭлрой и Роберт Моррис соорудили первую игру, если так можно её назвать. Изображений или кода не сохранилась, но концепт был позже описан и опубликован. Эта игра, Darwin, представляла из себя «битву программ», т.е. используя три доступные функции — probe, kill и claim, надо было составить такую программу, которая бы перезаписала вражеский код, не давая им размножаться. И самое интересное, что битвы происходили прямо в памяти реального мейнфрейма IBM 7090 без какой-то виртуализации — неправильный ход, и синий экран, вернее, тревожные огоньки на консоли оператора! Это было сделано для повышения быстродействия, чтобы не писать интерпретатор. Игра просуществовала недолго — всего несколько недель, пока не была придумана «ультимативная» программа-убийца, которая не оставляла шансов для соперника.


Но наследие Дарвина не было забыто, и однажды другой автор, Александр Дьюдни, тоже учёный, популяризатор науки, автор научно-фантастических романов и сборников поэзии, описал в деталях схожую концепцию с рядом доработок. Он, разумеется, основал идею на Darwin. Игра называлась Core War и подробная статья о ней появилась в журнале «В мире науки» в 1984-м году. В ней уже полем битвы служила не память реального компьютера, а виртуальная среда воображаемого компьютера MARS. Код противоборствующих программ напоминал язык ассемблера. Хотя автор не представил исходных кодов, разные энтузиасты создали свои версии, которые оказались столь популярны, что по этой игре стали проводиться конкурсы на лучшую программу, появился свод правил и стандарты ещё в конце 80-х (вот оно, зарождение киберспорта!), затем и множество более поздних реализаций, и в результате соревнования проводятся по сей день. И, наверняка, собирают больше зрителей, чем стримы Старкрафта.


Следующая игра, Robot War 1981-го года была гораздо более user-friendly и приближена к традиционным компьютерным играм. Её автором был Сайлас Уорнер, известный по своей другой игре, Castle Wolfenstein, той самой, что вдохновила id Software на римейк и долгоиграющую серию. Кроме того, Castle Wolfenstein считают первой стелс-игрой, но не о ней сейчас речь.


Прототип Robot War был создан (или подсмотрен) автором во время работы с системой PLATO еще в 70-е. PLATO была уникальным инкубатором идей, где впервые появились многие вещи, привычные нам сегодня: форумы, электронная почта, веб-приложения, ролевые игры, многопользовательские танковые шутеры и многое другое. В этой игре предлагалось самостоятельно разрабатывать AI роботизированного танка. Размер кода был ограничен 256-ю строками, что не так мало. Ну, а после тестирования можно вести своего железного друга на арену, для выяснения отношений с другими жестянками, что показывалось уже графически и все действия были видны в реальном времени. Игра выходила для компьютера Apple II и ознакомиться с ней можно через эмулятор. Вообще, сражения множества AI стали популярной темой таких игр.


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


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

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


Но игровой процесс не обязательно должен быть столь жёстко-беспощадным и примером тому может быть игра Tower of Babel, трёхмерный паззл 89-го года для Atari ST. Здесь мы управляем одним из трёх роботов, которые имеют уникальные способности, но программирование не нужно осуществлять постоянно, а лишь когда в этом всплывает необходимость, и нужно координировать их действия, когда выполнить задачу одному не под силу. Не правда ли, напоминает о The Lost Vikings?


Алгоритмические игры были и в России. Например, увлекательная игра Штурман для компьютера MSX. Этот компьютер использовался в советских и российских школах со второй половины 80-х. Сама игра появилась в 89-м или 90-м году. Она носила образовательный характер и в ней надо было прокладывать маршрут для навигационного компьютера планетарного корабля, с тем чтобы поселения колонистов получали нужные им грузы. «Язык» написания алгоритма был довольно простым — чтобы не переутомлять учащихся.


Другая отечественная игра называлась Snake Battle и была сделана компанией Gamos, известной прежде всего по Цветным Линиям и квесте о Братьях Пилотах. Но именно эта игра была рассчитана явно на иную аудиторию. Основной принцип взят из классических игр а-ля Змейка, т.е. по экрану ползает змея, ест точки и становится длиннее и так далее. Но здесь в качестве пищи должны использоваться другие змеи, управляемые, как вы догадываетесь, искусственным интеллектом. Несмотря на то, что игра получилась оригинальной и в чём-то новаторской, особого распространения, признания и денег своим создателем не принесла.


И как ни странно, столь сложный и специфический жанр добрался и до приставок. Серия Carnage Heart впервые появилась на Playstation в 95-м году и с тех пор вышло несколько продолжений, в том числе на PSP. Удивительный факт, учитывая что игра действительно непростая. В ней речь идёт тоже о поединках металлических истуканов, программируемых нами. Для написания инструкций используются графические схемы, из довольно обширного списка, почти каждую из которых можно как-то настроить. Всё усложнялось тем, что встроенного руководства здесь нет, а видео с обучением находилось на втором диске.


И напоследок TIS-100 – одна из самых последних игр на эту тему, и далеко не самая простая. В центре сюжета — таинственный компьютер, который пылился в гараже у вашего дяди. Увы, дядя скоропостижно скончался и TIS-100 достаётся вам. Сведений об этой модели найти трудно, некоторые блоки памяти закрыты для доступа, хотя дядя долго бился над тем, чтобы разгадать тайну его происхождения и назначения. Ну а сейчас этот динозавр даже не хочет загружаться — не может выполнить простейший тест диагностики.

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


Но сравнить TIS-100 с какой-нибудь Cut the Rope было бы не совсем корректно. Ведь это по факту симулятор транспьютеро-подобной системы, которые были популярны в 80-е. Система программируется на упрощенном языке ассемблера. Каждый процессор, или узел, а их здесь 12, имеет ограничение на количество строк программы. Вместе с тем, количество узлов даёт большую свободу в способах решения заданий. Задачи довольно разнообразны, но обычно они имеют следующий вид: взять исходные данные, провести над ними какие-то действия (сортировку, арифметические операции или что-то другое) и вывести их в нужный порт.

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

И на этом мы закончим экскурс в мир игр. Если вам понравилось, то посмотрите и наши видео на эту тему — там есть игры и факты, не затронутые в этой статье.

Спасибо за внимание!

//Virgil, Dimouse, true-grue.

P.S. Видео с передачей разбито на две части:
Поделиться с друзьями
-->

Комментарии (63)


  1. argz
    29.05.2016 21:25
    +11

    Очень советую еще обратить внимание на Factorio.


    1. tmin10
      29.05.2016 21:57
      +3

      Поддержу, в неё особенно классно играть с друзьями с голосовым чатом и не в обычную версию (которая изучается полностью всего часов за 20), а с модами, например сейчас играем в bob's mod, где куча новых ресурсов, руд и технологий.


      1. argz
        29.05.2016 23:17

        Спасибо за наводку на моды :-)


      1. tiumencev
        02.06.2016 17:54

        Я бы посоветовал DyTech, он интереснее Bob's модов. В Dytech мы играли гораздо дольше, а с Bobs интерес пропал очень быстро.


    1. proudmore
      30.05.2016 07:21

      Вы только что убили невероятное количество моего времени, огромное спасибо вам за это! :)


    1. RiseOfDeath
      30.05.2016 09:22

      Я бы ее не отнес к играм для программистов. Все-таки алгоритмизации там минимум, а встроеные в игру логические элементы пока настолько бесполезны, что фактически их там нет.


      1. am_devcorp
        30.05.2016 11:49

        Можно сказать, что это не игра про алгоритмизацию/программирование, а именно игра, "которая понравится людям с техническим складом ума, например программистам". Там же больше оптимизации, чем алгоритмизации (построить фабрику так, что бы ее было легко расширять, оптимизировать затраты на топливо для электростанций, заменив их полем солнечных батарей, построить фабрику петролеума так, что бы оставалось меньше побочных продуктов, а то, что всё же останется, можно было тут же и переработать во что-нибудь полезное и так далее)


    1. DeLuxis
      02.06.2016 17:54

      Уже и тетрис там сделали ))


    1. krestic
      02.06.2016 22:29

      Это нечто потрясающее


  1. zuborg
    29.05.2016 21:40

    Добавлю в копилку:

    http://vindinium.org/ — пошаговая битва четырех ботов в стиле roguelike, бот контролируется через HTTP-API — можно использовать любой язык.
    https://github.com/thirdside/berlin-ai/wiki/Berlin — ещё одна пошаговая стратегия

    http://www.robozzle.com/ — логическая игра-головоломка, нужно составить программу чтобы бот собрал все звездочки и не вышел за пределы игрового поля, есть очень нетривиальные задачи )


  1. doobrik
    29.05.2016 22:20
    +2

    Подскажите как в Тис-100 сделать Signal Comparator за минимальное число команд.
    У меня есть вариант на 223/6/29 (самый быстрый) и есть на 292/6/18 (самый компактный).
    Реально сделать за 364/6/15. Никак не могу понять как сделать за 15 команд.

    SIGNAL MULTIPLEXER Делают за 298/6/14 и за 148/9/54 а ещё в 5-и нодах делают.
    У меня 203/7/21 и 187/11/72. Как сделать за 14 команд, или за 148 циклов? Что-то нереальное.


  1. Sadler
    29.05.2016 22:22

    Ну, а если смотреть на совсем популярные игры, то например в Dragon Age: Origins можно детально, пошагово регулировать поведение ваших сопартийцев в бою. С новыми уровнями у них даже открываются новые опции.
    Не сыпьте соль на рану. Первая часть была такой классной и продуманной… За что ж они так с серией-то?


    1. herr_kaizer
      30.05.2016 08:59

      За деньги :)


    1. GreyhoundWeltall
      30.05.2016 11:06

      Иногда создается ощущение, что мне одному понравились обе части (и даже немножечко — третья).
      Везде читаю, что, мол, убили серию, оказуалили и тд. Зато во 2 части был классный сюжет и можно было реально поиграть в мир…


      1. Sadler
        30.05.2016 14:05

        Поиграть в мир, где 10 раз ходишь в одну и ту же пещеру с переставленными в некоторых местах стенками и закликиваешь мобов. Интересный мир и механика были в первой части, вторая — её бледная тень, уступающая первой как по технологичности, так и в плане сюжета. Складывается впечатление, что на вторую часть потратили на порядок меньше средств и(или) времени.


  1. artemonster
    29.05.2016 22:24

    screeps?


    1. AxisPod
      30.05.2016 11:31

      О да.


  1. Sadler
    29.05.2016 22:28
    +1

    Ещё о Human Resource Machine не упомянули. Основы асма в игровой форме, как бы дико это ни звучало. Весьма красиво, правда лично мне интереснее было наблюдать на ютубе, как непрограммеры её проходят, чем за 5 минут прокликать самому.


    1. Labunsky
      30.05.2016 02:39

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


    1. taumag
      02.06.2016 17:54

      Фиг ты её за 5 минут прокликаешь. Особенно если стараться уложиться в минимальное число команд.


    1. krestic
      02.06.2016 22:23

      Когда я полез на хабр/гиктаймс за советами по прохождению, очень удивился, что никто не написал по этому поводу статейку. По-моему гениальная игрушка, в которую даже ваша жена сможет поигнрать(ну, первые несколько уровней):)


  1. fireSparrow
    29.05.2016 23:08
    +4

    Удивлён, что в статье не упомянута Space Chem.
    В неё, конечно, нет программирования в явном виде. Но по сути — есть. И циклы с выходом по счётчику или по условию, и условные переходы, и взаимодействие между параллельно выполняющимися процессами.


    1. AllexIn
      30.05.2016 00:05

      Вы имеете ввиду, что там нет программирования текстом.
      Там программирование графическое, но от этого не менее программистское.


    1. ColdPhoenix
      30.05.2016 02:49

      добавлю от них же игру:
      Infinifactory


    1. asaq
      30.05.2016 02:49

      У Zachtronics десяток игр. Например KOHCTPYKTOP: ENGINEER OF THE PEOPLE (Flash).


    1. Psychopompe
      30.05.2016 05:43

      Чертовски сложная


  1. themtrx
    29.05.2016 23:13

    Как же забыли http://fightcodegame.com? По-моему, даже статья здесь была об этом проекте от его автора.


  1. Randl
    30.05.2016 00:13
    +2

    На Coding Horror была недавно статья на эту тему.
    Ну и классика — Core War


  1. BubaVV
    30.05.2016 00:53


    А вот такое кто помнит?


    1. Ohar
      30.05.2016 01:51

      Очень похожую штуку сейчас делаю, но про роботов, которые копают астероид.


    1. drobzik
      30.05.2016 12:07
      +2

      Я помню:) В свое время попалась на каком-то сборнике игр. Разобраться в ней была та еще эпопея…


      1. BubaVV
        30.05.2016 12:23

        Я так и не осилил, потому что доки на японском


  1. ivan386
    30.05.2016 01:22

    В slither.io змейкой можно управлять меняя переменные. Да и другие змеи и еда там в виде массивов. Так что можно змейку научить убегать от других змеи и собирать еду. Подрезать змей ещё не пробовал научить. Всё делается в косоли.


  1. Cutegirl
    30.05.2016 02:49
    +2

    Игры для программистов, говорите? Т.е. программист 8 часов в день говнокодит, потом приходит домой, и ради отдыха говнокодит в игрульке — так, что ли? :)
    Про Дрэгон Эйдж мало расписали, хотя система автоматизации ИИ там прямо-таки отличная. Можно играть и без неё, часто нажимая паузу, но если есть тяга к подобным штукам — можно абсолютно полностью автоматизировать свою партию. Ну то есть совсем полностью, бой начался — уходишь чай пить, без тебя справятся.


    1. oleg0xff
      30.05.2016 12:27
      +1

      «Т.е. программист 8 часов в день говнокодит, потом приходит домой, и ради отдыха говнокодит в игрульке — так, что ли? :)» Ну а чем еще заняться дома?


      1. Wesha
        30.05.2016 16:28

        Я просто оставлю это здесь: https://s-media-cache-ak0.pinimg.com/736x/d5/35/b7/d535b7e2dc5d8d9661f05fe4837e883e.jpg


    1. Mingun
      30.05.2016 20:43

      Вот вы прямо описали систему гамбитов в Final Fantasy XII :)


  1. antkatcin
    30.05.2016 02:49
    +1

    Также накину от себя — SpaceChem, создание алгоритма сборки молекул. Увлекательно, есть демка в стиме. store.steampowered.com/app/92800


    1. Darthman
      30.05.2016 13:07

      Её создали ребята, сделавшие TIS-100. У них это не единственная такая игра, кстати.


  1. Yura881
    30.05.2016 02:49

    А Space Engineers? С встроенным редактором скриптов на основе C#.


    1. ColdPhoenix
      30.05.2016 03:19

      там не основа, а он самый и есть


    1. Alex_ME
      30.05.2016 07:32

      Ну тогда еще игр-песочниц, где программирование не является основой геймплея, а просто доп. бонус:


      • Garry's Mod, мод WireMod (Expression 2) и дополнительно Expression Advanced 2 (куда более прокаченная, но менее популярная версия). Программирование неких "чипов" на Lua-подобном языке, которые могут иметь IO для связи с другими деталями Wire Mod'а (двигатели, датчики итп) или же непосредственное воздействие на любые объекты в игре (приложение силы, момента, поиск чего угодно)
      • Minecraft с модом Computer Craft, вроде еще есть аналоги. Очень серьезные вещи можно писать — была здесь статья, как какие-то товарищи написали графическую оболочку.


  1. bill876
    30.05.2016 02:49
    +1

    Еще можно посмотреть на Spacechem, концепт довольно понятный, мне игра очень понравилась.


  1. Nervovred
    30.05.2016 02:50
    +1

    SpaceChem — затянула на целые выходные. Поначалу всё просто, ближе к концу реально сложные цепочки получаются.


  1. ZaMaZaN4iK
    30.05.2016 02:50
    +2

    Хотелось бы упомянуть крайне интересную игру Untrusted: alexnisnevich.github.io/untrusted

    Залип на пару вечеров.


  1. urandon
    30.05.2016 02:50
    +2

    Вставлю ещё пять копеек:
    alexnisnevich.github.io/untrusted — приключенческая игра, где нужно изменять код уровня, написанного на JavaScript-like языке.


  1. Wesha
    30.05.2016 04:36
    +1

    Я просто оставлю это здесь: https://ru.wikipedia.org/wiki/Colobot


    1. Kitmouse
      02.06.2016 17:54

      Вторая картинка из статьи, кстати, оттуда.


    1. ColdPhoenix
      05.06.2016 19:32

      добавлю кстати и сам Ceebot, он конечно чуть в сторону ушел, но все равно интересен.
      (+ там ты помоему можешь только флаги ставить, прямого контроля в принципе нет)
      единственно не помню какая версия самая полная.


  1. EugeneButrik
    30.05.2016 07:39
    +4

    Даже не упомянули. Видимо, эпоха редстоуна ушла :)


  1. LoadRunner
    30.05.2016 09:55

    Из того, что не упоминали (извините, не умею в ссылки):
    Great Permutator — http://store.steampowered.com/app/319270/
    Mu complex — http://store.steampowered.com/app/383690/ (а пару лет назад это была бесплатная флэш-игра).


  1. Mercury13
    30.05.2016 11:58

    А где здесь Pascal Robots? В своё время интересовался игрой, робот «Doomer» перебил всех, которые служили примерами, а робот «Trike» (полное имя Light Attack Trike) — и Думера тоже. Жаль, не с кем соревноваться было. А когда появился интернет, узнал о дисбалансе экипировки: щит, лёгкая броня и большой бак рулят!

    http://corewar.co.uk/probots/


  1. Darthman
    30.05.2016 13:08

    Вот только на igdc закончили конкурс по разработке игрушек на тему автоматизации (программистских): ссылка


  1. Pauloondra
    30.05.2016 16:04
    +1

    Еще на Спектруме была крутая игра, где надо было программировать боевого робота, а заодно покупать ему память, оружие, ЦПУ и так далее. Задаешь программу и запускаешь бой — там уже никакого контроля над роботом нет. Называлась игрушка Soldier of the future.

    Картинкама
    Процесс боя (на 4 робота):
    image
    Процесс програмирования:
    image


    1. Valery4
      01.06.2016 20:34

      Я её искал как раз. Нашёл сюда запостить, а тут уже есть.
      Может кто захочет поиграть
      И описание.


  1. Chillz
    31.05.2016 18:24

    codecombat.com — RPG, в которой для управления героем используются языки программирования.


  1. KissiKi
    31.05.2016 18:24

    Hack 'n' Slash еще никто не упоминал? store.steampowered.com/app/246070


  1. xshaksx
    31.05.2016 18:24

    Когда-то вдохновившись Untrusted даже попробовал написать что-то подобное. programmeradventure.github.io, так до конца и не сделал, но играбельно.


  1. izzholtik
    31.05.2016 18:24

    Жаль, что rawbots не взлетел…
    rawbots.wikia.com/wiki/Rawbots_Wiki


  1. Primus_IP
    31.05.2016 18:24

    Опять же элементы программирования есть в Hack'n'Slash
    store.steampowered.com/app/246070


  1. aquamakc
    31.05.2016 18:24

    На спектруме Soldier of future.


  1. cdmlex
    31.05.2016 18:24

    На igdc как раз недавно закончился конкурс на тему таких игр:
    igdc.ru/igdc_top.php?konkurs=134


  1. Coercer
    02.06.2016 17:53

    microcorruption.com

    Интересный симулятор, в основном про взлом программ защиты