Комментарии 98
Не могу не отметить одну замечательную восходяющую звезду игр для программистов: Turing Complete. В ней вы познакомитесь с "жанром" с NAND to X. Где вам предстоит последовательность задач с понимания работы простейших логических вентилей до компьютера со своим ассемблером. Успеете помучаться с программированием на опкодах. Очень круто прокачивает логику даже людям из не IT. Однако уточню: игра в раннем доступе и обновления(зачастую добавляющие/удаляющие элементы почти еждневно)
Сюда же можно отнести https://nandgame.com/ (бесплатно и в браузере) и https://www.nand2tetris.org/ (больше курс, чем игра).
спасибо, приобщусь.
спасибо за подборку
Opus Magnum и Shenzhen I/O
пробовал, классные
Мне у Opus Magnum дизайн очень зашел, как пример нормальной логики в «фентези»-сеттинге.
Прочитав заголовок, сразу вспомнил игру, с которой еще в школьные годы начиналось мое становление как разработчика - Colobot.
Сколько времени я там провел за экспериментами и программированием ботов на почти-С++, даже и не знаю.
С тех пор она еще и в open-source перешла.
Дополнительно замечу, что игры Tomorrow Corporation я скорее бы не рекомендовал в качестве игр для любителей логики и всего вот этого. Почему? Потому что они очень часто и совершенно намеренно используют максимально прямолинейный подход для оптимизации, и от этого производят совершенно дубовое впечатление. Например, как оптимально быстро решить задачу с циклами в Human Resource Machine? Написать её без циклов (т.е. тупо повторить шаги N раз) — и такое будет встречаться постоянно. Мне вот в HRM в конце концов надоело вручную "разворачивать" программу ради идеального по скорости выполнения.
А вот оптимизация выполнения алгоримтов в игрушках Zachtronics — наоборот, всегда хорошая и доставляющая много радости.
PS: Для джаваскриптизеров горячо рекомендую Bitburner: https://store.steampowered.com/app/1812820/Bitburner/
Zachtronics хитры тем, что они собирают данные по оптимизации со всех игроков и по нескольким параметрам. А Tomorrow Corporation, если я правильно поняла, из своей головы решили, что оптимально.
Конечно. И это было бы хорошим приемом, если б не повторялось постоянно. А в самой игре редактор к такому не очень располагает. Да, можно написать в блокноте — но если я буду писать в блокноте, то я тогда уж и игру не буду запускать, а напишу что-нибудь более полезное.
ЗЫ: ну и когда вы разворачиваете циклы (и любой другой синтаксический сахар) — вы не делаете этого вручную.
По JavaScript в который раз могу порекомендовать https://alexnisnevich.github.io/untrusted/
Она правда больше про нестандартные/неочевидные решения, а не оптимизацию и автоматизацию (хотя этого тоже есть немного).
Factorio — это все же не игра про алгоритмы, а игра где можно прикрутить алгоритмы почти ко всему. Но можно и не прикручивать.
Скорее придётся. Без нормальной автоматизации ракету сложно построить :)
И плюс постоянно возникает "так, почему у меня этого нет, ах, вон того не хватает, т.к. я теперь на вот это трачу", что довольно близко к программированию. Параллелизм, балансировка, кэш, дедлоки — всё на месте :)
А вот не надо! Если у вас задротство прокачано до уровня 80+, то в факторио можно неплохо строить turing-complete вещи. Во-первых, там есть зелёные и красные провода, а при наличии комбинаторов и умножителей там можно такое настроить, что мало не покажется.
Более того, вопрос был поднят на реддите и сразу-же отвечен.
https://www.reddit.com/r/factorio/comments/43giwy/i_made_a_programmable_turingcomplete_computer_in/
Пожалуйста.
Вот ещё пример:
https://www.youtube.com/watch?v=brYDcNxyU_0
Даже если факторио не учит алгоритмам напрямую, она заставляет думать в правильном ключе. Потому что factory must grow а что-бы вы не делали, меди всегда недостаточно.
www.youtube.com/watch?v=_VR_b9YwqH8 — PacMan в factorio
www.youtube.com/watch?v=0bAuP0gO5pc — raycasting(Doom) на конвеерах(в наиболее прямом смысле этого слова)
Из личных закромов:
MHRD (симулятор Verilog)
Prime Mover (преобразование входа в выход, похожа на Opus Magnum)
Robo Instructus (алгоритмы на JavaScript)
Silicon Zeroes (как nandgame, решение задач аппаратными средствами)
The Signal State (преобразование входа в выход)
MHRD - отличная игрушка, поддержу (эх, будет ли когда-то продолжение, намёк на которое, помнится, где-то там в титрах мелькал?) Печалит только, что некоторая часть заданий с последовательностной логикой подвержена хакам, основанным на несовершенстве тестов. Поэтому иногда "лучшие" результаты других игроков, в которые игра непременно ткнет носом после выполнения задания, на практике честным путём не могут быть достигнуты.
P.S. И Verilog'а там, кстати, нет - это чисто внутриигровой нарочито примитивный язык.
Мне кажется, неполнота тестов наоборот, добавляет разнообразия. Благодаря ей в большую часть заданий можно углубляться последовательно:
выполнять просто, чтобы работало;
оптимизировать честно, следуя спецификации;
оптимизировать под открытые тесты.
Каждый может остановиться там, где пожелает.
Впрочем, отдельный лидерборд для "честных" решений не помешал бы.
Только в robo instructus не жаваскрипт, а свой собственный, очень упрощённый язык. (Без объектов)
Вспомнилась ещё "while True: learn()" - головоломки, про изучение основ машинного обучения и нейронных сетей.
Игра, в которой нужно на примитивном ассемблере рисовать картинки на дисплее. Хотя, это скорее не развлекающая игра, а обучающая: хорошо и довольно точно показывает как на самом деле ЦП выполняет инструкции. Да и в целом наглядно показывается что такое инструкции и память.
просто оставлю это здесь: https://ohmygit.org/
Думаю Screeps будет достойна добавления
Практически с нуля (начиная с проводов и простейших бинарных блоков) строим процессор и программируем его. Вначале логические блоки, далее сумматоры-счетчики, потом компараторы, мультиплексоры-демультиплексоры, регистры, АЛУ… процессор… свой ассемблер и программируем его на решение простых задач. Визуально в теплом ламповом стиле 80-х (шины данных, бегающие по ним байты-биты и т.п.). Помимо собственно конструирования блоков и их программирования на некоторых задачах существуют ограничения на количество элементов или «площадь кристалла» для размещения схемы.
Мне кажется, что helltaker не совсем про алгоритмы. Или я по описанию не уловила геймплей?
Все правильно, это унылый однообразный сокобан.
Автор статьи, внесите пожалуйста сюда свой вклад, если не сложно
https://github.com/readyready15728/awesome-programming-games
не 100% программирование, но про логику и последующую оптимизацию логики: while True: learn()
Можно еще добавить:
Gladiabots - Программируете роботов и воюете. gladiabots.com
Screeps - ММО стратегия, где вы программируете поведение своих "юнитов" screeps.com
а где Factorio?
Могу ещё упомянуть факторио, хоть это не совсем про программирование, но про логику сполна. Вы появляется в открытом мире с ресурсами, мобами и всем таким, по сюжету вы упали туда из космоса. Затем, нужно добывать всякие ресы ради того, чтобы выбраться оттуда. Но т к пакету построить в ручную почти невозможно, приходиться создавать всякие механизмы, чтобы всё оптимизировать. И поверьте, затягивает очень скоро. Я знаю очень мало людей, которые начинали играть в факторио, и при этом не наигрывали сотни часов к запросу игры, и при этом почти никто при первой возможности не строит ракету, т к оптимизация процессов и механизмов слишком затягивает (как и с драконом в майне, победить его – типа цель игры, но на самом деле с возможностями песочницы Дракон нафиг никому не нужен).
Хотелось бы ещё отметить игру Screeps, отличная RTS в реальном времени, где нужно максимально оптимально писать код на JS, чтобы управлять всё большим количеством юнитов. Но она скорее, подойдёт для уже опытных программистов.
Не попадалась ли вам игра в духе Factorio, с двумерной графикой и в казуальном жанре - чтобы в неё можно было поиграть максимум полчаса?
В Mindustry есть программируемые блоки. Сам, правда, ещё не пробовал.
Del
Есть отличная игрушка - Заработало или Crazy Machines - конструктор Машины Голдберга. Для детей от 8 до 90 лет. Рабочие цепочки от шариков до электрических цепей. А так же пушки, магниты, взрывчатка и прочее. Вторая в жизни игра моего сына
Mindustrie - там есть программируемые блоки (процессор, память итд), с из помощью можно менять логику юнитов, например
на питоне программится Minecraft :)
Еще From the Depth, но я в нее не играл.
Еще была хардкорная игра про параллельное программирование. Где надо было завести параллельно исполняемый код в состояние ошибки. Только название вспомнить не могу.
ВСПОМНИЛ. The Deadlock Empire
github
И да, она реальнэ хардкор, только для «настоящих программистов»
В space engineers на одном сервере убрали лимит скорости, из-за этого на быстрых кораблях при выпускании ракет по курсу движения корабль иногда мог сразу догонять их (с печальным результатом), пришлось написать простой скрипт, чтобы автоматически выключал/включал ракетное вооружение, если прицел в определенном конусе курса движения при больших скоростях. Еще там же писал второй простой скрипт чтобы автоматические турели по нажатию кнопки переходили в ручной режим и целились ровно прямо (когда у противника есть приманки, что отвлекают автоматику турелей).
Раз уж такое дело, порекомендую игру Stationeers. Хардкорная выживач-песочница на других планетах (Марс, Луна и другие планеты), в которой ты пытаешься построить базу и выжить, обильно всё автоматизируя — слежение солнечных панелей за солнцем (в зависимости от планеты и её расположении относительно солнца нужны коррекции), смешивание газов в различных пропорциях и поддержание нужной температуры для выращивания растений и т.д.
Очень увлекательно, и испытываешь вплеск радости, когда у тебя НАКОНЕЦ-ТО что-то получилось сделать )
Stationeers - очень сложная и подробная песочница-выживалка в основном на планетах и космосе. Программирование на MIPS (ассемблерный язык). Можно играть и без него, но с ним можно настраивать циркуляцию атмосферы на базе, ее температуру, давление, объем, состав, работу конвееров/печей для создания сплавов, или ферм для выращивания всякого, вращение солнечных панелей, и т.д.
Hacker evolution обязательна к ознакомлению)
while True: learn() можно добавить, хотя это больше по Data Science. Даже статья тут была: Создатель игры while True: learn() о программировании в геймдеве, проблемах с VR и симуляции ML / Хабр (habr.com)
Думал что первой в списке будет GreyHack, а её даже в комментах нет...
https://store.steampowered.com/app/504210/SHENZHEN_IO/
А как же Grey Hack? или эта игра сюда не подходит?
подскажите из этого всего лучшую игру для 9-летнего ребенка для игрового обучения программированию?
Поколение Python. В процессе игры изучается настоящий язык Python! Можно играть прямо в браузере! А потом можно на работу устроиться питонистом и на работе играть всю жизнь, получать задания, решать головоломки, ещё и деньги получать за это!
Ух большое спасибо, наконец то нашел Else Heart.Break(). Знал про эту игру, но нигде не мог найти.
15 игр, которые прокачивают логику, алгоритмы, ассемблер и силу земли