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

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

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

    Infinifactory


    image

    Ещё одна игра от автора великолепного SpaceChem, с обзора которого начинался мой предыдущий пост. Теперь (фанфары и визги школьниц) — в 3D! В принципе, наличие третьего измерения — наиболее существенное отличие от предыдущей игры. Суть геймплея не подверглась особым изменениям: нужно брать детальки со входа, делать из них другие детальки и отправлять их на выход. Однако нельзя сказать, что Infinifactory сугубо вторична. Наличие гравитации, способы манипуляции с деталями — всё это создаёт совершенно новые задачи, не вызывая ощущения дежавю.


    Отдельное удовольствие доставляет сюжет. Да, да, сюжет головоломки про создание конвейеров. Практически производственная драма… в космосе. Главного героя похитили могущественные, но довольно тупые инопланетяне, и теперь он работает для них за еду. Сюжет оказывает влияние на то, как именно называются и выглядят совокупности кубиков на входах и выходах конвейера. Думаю, вы никогда не сумеете изгладить из памяти миссию про изготовление китовых консервов. Ещё можно вспомнить прекрасный цинизм, с которым игра заставляет вас налаживать сборку камер-одиночек, полностью аналогичных той, в которой вы находитесь между миссиями. Впрочем, зачем я это пишу? Вы же наверняка уже бросили читать и пошли устанавливать игру.

    Кстати, интересный факт: сходство с Майнкрафтом не случайно. Создатель Infinifactory — также автор старой малоизвестной игры Infiniminer, одним из идейных клонов которой когда-то стал Minecraft.

    TIS-100




    Игра того же разработчика, о которой на Хабре уже есть отдельная статья, но я всё равно напишу о ней своими словами, потому что я люблю писать, а игра того заслуживает. Если коротко, это симулятор примитивного многопоточного ассемблера, на котором вам по сюжету приходится писать разнообразные хеллоуорлды. Возможности его бедны, а в каждую ноду помещается очень ограниченное число строк, из-за чего у программиста возникают трудности, которые (я надеюсь) вряд ли встретятся в реальной работе. А чтобы жизнь не показалась мёдом, общаются ноды между собой асинхронно. Из этих трудностей рождается суть игры: ни одна нода не может целиком реализовывать сколь-нибудь сложный алгоритм, потому приходится разделять его между нодами, иногда жестоким и противоестественным способом.


    Да, и там тоже присутствует сюжет. Сюжет игры про многопоточный ассемблер. Это звучит даже забавнее, чем старая шутка про Tetris: Story Mode. Суть его в том, что главному герою остаётся в наследство винтажный на вид девайс с очень странной архитектурой. Программируя его, герой восстанавливает данные из битых нод и постепенно узнаёт его историю — откуда он взялся, для чего он создан. И надо сказать, это не то знание, знакомство с которым проходит бесследно…

    Human Resource Machine


    image

    А вот ещё один ассемблер. Обманчиво простой, с мультяшной графикой и «программированием мышкой». Наверное, не один ребёнок, получив в подарок «детскую развивающую» игру, в ярости сломал об колено клавиатуру, пытаясь оптимизировать решение какой-нибудь дебильно простой задачи, чтобы оно выполнялось на два такта быстрее.


    На самом деле, если ребёнок не перфекционист, нацеленный на стопроцентное прохождание, то это действительно будет для него хорошей обучающей игрой. А, и ещё, если кому вдруг интересно, создатели Human Resource Machine — это те, кто сделал World of Goo.

    Кстати, раз уж мы заговорили про обучающие игры…

    MHRD


    image

    После таких низкоуровневых вещей, как ассемблер, почему бы не… опуститься на уровень ниже? MHRD — это игра про логические элементы, в которой игрок своими, можно сказать, руками, собирает из голых NAND полноценный процессор. Причём игра подводит его к этому плавно, без резких скачков сложности. На мой взгляд, прохождение этой игры нужно давать в качестве лабораторной работы к курсам типа «Архитектура компьютера».



    «Сюжет» игры незамысловат, как в старом добром немецком кино: игрока нанимает на работу корпорация MicroHard, которая хочет завоевать рынок процессоров, или что-то в этом роде. Соответственно, пока она будет завоёвывать рынок, игрок должен собрать сам процессор. Делается это с помощью своеобразного «языке программирования», на котором описываются элементы и их связи. Однажды собранный элемент можно переиспользовать в дальнейших схемах, не описывая его каждый раз заново.

    К сожалению, игре не хватило совсем немного, чтобы стать истинным бриллиантом. «IDE» подтормаживает, нет возможности интерактивно поиграть с собранными элементами. Игра не великолепна, но весьма хороша.

    Hack'n'Slash


    image

    Порой игроки хакают игры, чтобы упростить себе прохождение. Но что насчёт игры, в которой хаки необходимы для прохождения? Hack'n'Slash начинается с того, что главный герой (сходство которого с Линком из Legend of Zelda, разумеется, совершенно случайно) находит странный меч, оканчивающийся USB-штекером. Тыкая этим мечом в разнообразные игровые объекты, он может изменять их свойства — например, самое банальное, установить свойству «здоровье» монстра значение «0».


    В дальнейшем герой находит новые артефакты, делающие другие полезные вещи — например, показывающие collision boxes всех объектов на экране. А для победы над финальным боссом необходимо модифицировать скрипты самой игры, написанные, кстати, на языке Lua. Честно говоря, графика меня немного вымораживает, но с геймплейной точки зрения игра весьма любопытна.

    И раз уж мы заговорили о графике…

    Untrusted —or— the Continuing Adventures of Dr. Eval


    image

    Раз уж мы заговорили о графике, то у Hack'n'Slash есть брат близнец, который приятнее мне по трём причинам. Во-первых, он бесплатный и опенсорсный. Во-вторых, он в ASCII-графике, что согревает моё сердце как человека, прошедшего оригинальный Dungeon Crawl. И в-третьих, у него под капотом JS, а не Lua — тут, конечно, дело привычки, но первый для меня уже роднее русского, а со вторым я имел дело лишь при написании мелких модов к Don't Starve.



    Игровой процесс похож на то, что происходит в самом конце Hack'n'Slash: игрок получает доступ к самому коду игры и может модифицировать отдельные его участки, что необходимо для прохождения. Игра остроумна и прекрасна; единственный недостаток её в том, что она слишком короткая.

    Что ж, пожалуй, на этом всё. До встречи в третьей части, ещё через четыре с половиной года.

    P.S. Предвижу, что в комментариях упомянут Shenzen IO. Мне известно о её существовании, но, к сожалению, я не успел ещё в неё поиграть, а потому не стал писать о том, чего толком не знаю.
    Поделиться публикацией
    Реклама помогает поддерживать и развивать наши сервисы

    Подробнее
    Реклама
    Комментарии 72
    • +3
      Помню, играл в Human Resource Machine и много друзей подсадил, даже тех которые не увлекались программированием. Сидели на парах, на листках составляли код и потом обсуждали его. Игра дает хорошее представление о низкоуровневом программировании. Узнаешь как на самом деле устроены циклы и ветвления.
      • +1
        А потом эти люди устроятся си-решёточниками и будут из управляющих конструкций признавать только if и goto =)
        Добавил смайлик, чтобы было понятно, что это шутка.
        • 0
          Хе-хе. Вы не поверите, какой я код пишу на C# (исключительно для себя, ничьи глаза не плачут от вида той лапши) :)
          Я не программист, поэтому не знаю, как без goto и стека сделать нормальный (и производительный) поиск с возвратом.
      • +1
        В HRM редактор неудобный, хорошо что экспорт\импорт в текст есть. Задания на мой вкус простоваты (ага, написано от 3 до 6 лет, а я за две недели собрал). Большой плюс — арт от Kyle Gabler, саундтрек теперь у меня в фонотеке вместе с World of Goo и Little Inferno.
        • +1
          Именно что на Ваш вкус. Большинство игроков — не программисты, высшую математику тоже вряд ли знают. Обычно — ещё в школе учатся.
          Ну и да, задачи решить легко. Сложнее перевести в алгоритм и реализовать его. А чтобы оптимизировать его и выполнить достижения — вот тут уже ад начинается.
          • 0
            Да претензия даже не к простоте, а к их, заданий, шаблонности. А в копилку игр вот ещё bug brain. Жаль только заброшена.
            • 0
              А в чём шаблонность? Для меня там прослеживается прогресс от простого к сложному с применением уже выученных методик.
              Сначала туториальные задания, обучающие новым командам, а потом их комбинирование. Ну и их так мало, поэтому ими можно решить малый круг задач и не умереть от старости, пока пишешь код мышкой\пальцем.
              • 0
                Для меня довольно быстро процесс создания решения стал подкорково — подгоночным. Но моё мнение тут не показатель, если начинающим нравится, то это очень хорошо, я сам считаю, что ранний опыт (квази)ассемблера чрезвычайно полезен программисту.
                • +1
                  Мне с точки зрения оптимизации понравилась задача про разложение на простые множители. Если в более простых задачах оптимизация зачастую сводилась к угадыванию одного-единственного авторского решения, то тут был простор для фантазии. В итоге лучше всего оказалось следующее решение: сначала вручную составил таблицу простых до девятнадцати включительно. Потом каждое входящее число проверялось на равенство простым числам от 11 до 19, в случае равенства — сразу же отправлялось на выход. Если этот трюк не срабатывал, то уже стандартная факторизация с заранее вычисленными простыми.
                  • 0
                    А почему угадывание? Скорее, там просто авторы задачи нашли какое-то своё решение, показавшееся им наиболее оптимальным и включили его результаты в достижения. И какое удовольствие найти решение, которое лучше, чем в условиях.
                  • 0
                    Тут любое мнение показатель. Особенно для новичков, которым есть куда стремиться и на кого равняться.
        • 0
          Спасибо за обзор!
          А можете посоветовать игры «для программистов» под iOS/Android? Может быть какие-то из уже упомянутых есть под мобильники?
          • 0
            К сожалению, не могу, с мобильным геймингом у меня отношения как-то не сложились. Но есть вероятность, что на запах свежего кода в комментарии забредёт человек, способный вам помочь.
            • +1
              Под андроид есть SpaceChem из первого поста.
              • 0
                Hacked
                • +1

                  SpaceChem есть под Android, насколько я помню.

                  • +1
                    Да, я прошел Human Resource Machine как раз на мобильнике.
                    • 0
                      На iOS есть Swift Playgrounds. Как ни трудно догадаться для изучения Swift.
                    • +3
                      Если «для», а не «про» программистов, то Factorio тоже стоит упомянуть!
                      • 0

                        Кстати, там тоже моды на Lua.

                      • +2
                        Вспомнил, какой игры ещё не хватает в списке (уже не первый раз про неё пишу в комментариях к подобным статьям): Great Permutator.
                        Сам автор даже писал о ней на Хабре.
                        И даже в комментариях к первой части :)
                        • 0
                          Вот никак до неё не доберусь, не иначе как из-за диавольских ухищрений.
                        • +4
                          почему бы не… опуститься на уровень ниже?

                          Да, давайте: http://www.zachtronics.com/kohctpyktop-engineer-of-the-people/
                          Ну и Robot Odyssey заодно.

                          • +1
                            Ну и Robot Odyssey заодно.

                            Пресвятой Ктулху, какая аццкая жесть о_О
                            Кажется, я знаю, чем скоротать долгие осенние вечера.
                          • +3

                            А как же Factorio? Это номер 1 должна быть. Может автор про неё не знает?

                            • +1
                              Автор абстрактно знает, но не играл.
                              • 0
                                Я рекомендую, очень грамотная игра
                                • +1
                                  У меня просто аллергия на Early Access'ы.
                                  • +1
                                    Никакой она не Early Access.
                                    Она уже пару лет как полноценная игра.
                                    • 0
                                      Она уже давно в очень хорошем и играбельном состоянии. А ее разработчики каждую неделю пишут «Пятничные факты» и охотно отвечают на вопросы пользователей реддита.
                                    • 0

                                      Игра интересная, пока проходятся миссии, а стандартная игра очень уж однообразная — вторая половина игры сводится к часам простоя, когда игроку по сути нечего делать, кроме как ждать и обустраивать новые и новые поля по сбору ресурсов (и километры фабрик по производству электронных плат). 1-2 раза можно сыграть, пока не знаешь, что там за странные технологии дальше, и разок в death world запилить (ну и по желанию ачивки полачить).

                                      • 0

                                        Если вам приходится чего-то ждать кроме как в самом начале игры — значит, вы недостаточно автоматизировали производственные процессы. :-)

                                        • 0

                                          Ждать технологии, и в конце ракету. Может быть, я еще не умею правильно строить, но какой-нибудь Kovarex Enrichment Process стоит очень дорого и ждать его долго. Сейчас хочу взять сразу 4 ачивки про "Lazy bastard", "Steam all the way", "Raining bullets", "Logistic network embargo", поэтому всюду транспортные ленты крутятся — грусть-тоска (хорошо, что можно игру пустить на заднем плане и оно продолжает работать).

                                          • 0

                                            Сколько у вас лабораторий технологии двигают? Я обычно 12 строю и технологии исследуются очень быстро.


                                            Ракету тоже можно быстро построить если сборщиков достаточно. С 20 сборщиками у меня первая цепочка ресурсов собралась пока я третью достраивал.


                                            И да, дронов я использую только для строительства — они слишком медленные, конвейеры быстрее работают.


                                            По поводу Kovarex Enrichment Process согласен — накопление урана-235 ускорить трудно. Но тут помогает заняться чем-нибудь еще.

                                            • 0

                                              у меня 10. Проблема их прокормить старшими науками — нужно много красных и синих "плат", которое в свою очередь выжирает огромное количество зеленых, которое в свою очередь требует огромного количества как железа, так и меди.

                                              • 0

                                                Ну, вот и занятие на то время пока технология открывается — развивать мощности по производству "плат" :-)

                                • 0

                                  Space Engineers позволяют писать скрипты на С# для управления станцией/кораблем и их модулями, кораблями со связью и т.д. Достаточно интересно с 3D графикой, физикой, и т.д. программировать поведение дронов добытчиков или разведчиков. Внимание, игра в бете уже давно, сырая и проблем у неё хватает.

                                  • 0
                                    А она вообще стремится релизнуться, или там всё постепенно глохнет?
                                    • 0
                                      Не особо, разрабы пошли по пути бесконечного расширения возможностей, вместо реализации полноценного игрового продукта. Но игра все равно шикарна если вы любите космос, астрономию, физику и программирование. Могу порекомендовать ютуб-канал о решении разного рода астрономических задач, создании автоматических роботов и вообще разных экспериментах в игре. Заодно может заинтересует еще одна игра с программированием — From The Depth, конечно если не слышали.
                                  • +1
                                    Между infinifactory и TES проходит грань, как мне кажется. infinifactory — игра, TES — какая-то мрачная часть работы, когда зарываешься в strace'ы по самые уши. Infinifactory — восторг, а TES я сдал обратно, ибо на игру это не похоже.
                                    • +1
                                      Тут зависит от того, какая работа. Если клепаешь формочки, то на досуги можно и стектрейсами обмазаться.
                                      • 0
                                        Зато можно играть в рабочее время и начальство не заметит. Будет думать — код пишешь и отлаживаешь.
                                      • +1
                                        Еще есть царица и богиня игр — Factorio и вечные третьи геройцы
                                        • +1
                                          Если обратить взор на WEB, то можно упомянуть:
                                          Creeps — screeps.com
                                          MMO RTS с добыванием ресурсов, настраиваемыми специализируемыми юнитами и написанием скриптов к ним на языке похожим на JavaScript.

                                          CodeCombat — codecombat.com
                                          Образовательный проект в стилистике RPG. Поддерживается несколько языков. Лично я выбирал Python. Сделано в виде: локация — задача. От простого понимания линейной последовательности выполнения до сложных алгоритмов, сочетающих ветвления, выборки, циклы и т.д. Лично я дошёл до математических формул для рисования фигур. В комплекте РПГ`шные фичи, как прокачка персонажа. Есть «арены», где игроки стравливают своих персонажей и соревнуются у кого код круче.
                                          • 0
                                            А можно поподробнее про CodeCombat? Конкретно — про то, что даёт подписка, а что без неё недоступно. Не доверяю я этим фримиумам.
                                            • 0
                                              Лично я увидел только то, что в подписке больше локаций => больше задач и есть выбор персов, не только бесплатный «воин», но и «маг» или «лучник». Других различий не видел.
                                            • +2
                                              В Screeps язык не «похож» на JavaScript, а является самым настоящим полноценным JavaScript. Runtime-серверы крутятся на Node.js и запускают скрипты игроков в виртуальной машине.

                                              Дисклеймер: я автор игры. Если захотите написать про нее обзор, могу выдать бесплатно ключик на Стим и 30 дней подписки :)
                                            • +3
                                              Посмотрите еще такие игры: SHENZHEN I/O и Screeps, но это совсем не killer-time игры. Заставляют напрячься =)
                                              • +1
                                                Список игр шикарный, открыл Untrusted —or— the Continuing Adventures of Dr. Eval и просидел пару часов после работы. Огромное спасибо за статью.
                                                • 0
                                                  Для фанатов PLC и FPGA на ведре есть таймкиллер Circuit Scramble
                                                  • 0

                                                    Искал на Стиме Hack'n'Slash наткнулся на Hack Run с командной строкой:



                                                    Кто-нибудь в него играл?

                                                    • 0
                                                      Проходил. Забавно, но совершенно из другой оперы. Игры в статье (то, что я называю «игры для программистов») — про конструирование либо изменение сложных систем. А Hack RUN — это длинная череда подборов паролей на основании тех или иных подсказок.
                                                    • 0
                                                      Удивляет отсутствие Dwarf Fortress. По сложности с ней мало что сравнится.

                                                      www.amazon.com/Getting-Started-Dwarf-Fortress-complex/dp/1449314945
                                                      • 0
                                                        Так не в сложности дело, а в элементах кодинга.
                                                        • 0
                                                          Ну, так-то кодить можно и в DF. Насколько я читал, механизмы там тьюринг-полны.
                                                      • +1
                                                        Colobot!
                                                        • +2
                                                          Пошел искать Hack'n'Slash в стиме… Оказалось, что уже куплен.
                                                          Иногда плохо иметь большую библиотеку игр и не иметь времени или возможности ее полноценно освоить.
                                                          • 0
                                                            Кажется, Hack'n'Slash выдавался нахаляву владельцам какой-то другой игры. Таким образом получить его можно было незаметно для себя.
                                                            • 0
                                                              Он был именно куплен году так в 2015м.
                                                          • 0
                                                            По-моему именно для программистов будет интересна игра на checkio.org. Что бы двигаться вперед вам нужно писать программы на Python и теперь еще и на JS. Вам предлагаются заковыристые задачки разной сложности. Для прохождения уровня нужно набрать определенное количество очков. Для этого вы можете решить несколько простых задач или меньшее количество сложных. После этого вы можете открыть задачи на соседних островах-уровнях. Прелесть в том, что задачи предлагаются разными людьми и они очень разные.
                                                            • 0
                                                              Fortresscraft evolved похожа на infinifactory.
                                                              • 0
                                                                Нехорошие у неё отзывы в последнее время, отчего так?
                                                                • 0
                                                                  Возможно, потому, что если пытаться пройти её полностью, на каких-то этапах всё становится очень муторно и единообразно. Ну и надо признать, что мягко говоря, до совершенства её не доводили, много идей реализовали, но чтобы в это было приятно играть долгое время, не позаботились.
                                                                  • 0
                                                                    Только не 'не позаботились'. Разработчик — всего один человек. Которой довольно цинично в своих стримах объяснял про соотношение время на разработку/увеличение продаж. А еще он время от времени вытаскивает на свет отзывы про игру 'дурная игра, играть скучно, делать нечего, контента нет, быстро надоедает'. И этов все от человека, наигравшего 1000+ часов. Да и дешевая она. Своих денег точно стоит.
                                                              • 0
                                                                del.
                                                                • 0
                                                                  Интересно, TIS-100 и Мультиклет знают друг о друге?
                                                                  • 0
                                                                    Многое из этого не видел, в основном знаком с играми только из первого поста. Из новья еще могу подсказать Gladiabots — игра с программированием логики роботов и драк на арене за ресурсы против AI либо других игроков. Знакомился с этим проектом на андроиде на стадии альфы.
                                                                    • 0
                                                                      Вот что нужно внедрять на уроках информатики.
                                                                      • +1
                                                                        Вот, кстати, не уверен. По моему опыту, люди делятся на два типа. Одним интересно и голый паскаль ковырять, а другим программирование даже в самой-пресамой игровой форме неинтересно. Не знаю, существует ли промежуточный тип.
                                                                        • +1
                                                                          Люди делятся на 10 типов: те, кому нравится программирование и те, кому нет.

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