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

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

Их стоит разделить на несколько категорий: первая — это обучающие игры, которые должны помочь детям или студентам понять основы программирования, составления алгоритмов, общие команды и принципы. Например популярный графический язык 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. Видео с передачей разбито на две части: