Введение

Жанр видеоигры

Программирующая игра — это видеоигра, в которой используются элементы компьютерного программирования, позволяющие игроку управлять автономными юнитами в игре, заставляя их выполнять команды на специализированном языке программирования, который часто представлен в виде визуального языка для упрощения концепции программирования. Программирующие игры обычно делятся на две категории: одиночные игры, где элементы программирования являются частью или основой головоломки, и многопользовательские игры, где автоматизированная программа игрока соревнуется с программами других игроков.

Как головоломки

Ранние игры в жанре включают System 15000 и Hacker, выпущенные в 1984 и 1985 годах соответственно. Игры, основанные на программировании, используются как часть головоломок, предлагая игроку достичь конкретного результата после запуска программы. Примером такой игры является SpaceChem, где игрок должен использовать визуальный язык для управления двумя вальдо с целью разборки и сборки химических молекул. В таких играх игроки могут тестировать и отлаживать свою программу столько раз, сколько необходимо, пока не найдут рабочее решение. Многие из этих игр стимулируют игрока к поиску наиболее эффективной программы, измеряемой количеством тактов или требуемых команд. Другие подобные игры включают Human Resource Machine, Infinifactory и TIS 100. Zachtronics – компания, разрабатывающая видеоигры, известная своими головоломками, ориентированными на программирование. Другие игры включают элементы программирования в качестве частей головоломок в более широком игровом контексте. Например, в Hack 'n' Slash реализована метафора доступа к внутренним программам и переменным объектов, представленных в игровом мире, с приостановкой остальной игры при использовании этого интерфейса программирования, позволяющая изменять программу объекта для дальнейшего продвижения; это может включать изменение состояния объекта с неуязвимого на уязвимый. Другие подобные игры с подобным подходом к программированию включают Transistor, else Heart. Break, Glitchspace и Pony Island. Другой подход, используемый в некоторых графических играх с элементами программирования, заключается в предоставлении игроку интерфейса командной строки для выдачи команд через доменно-специфический язык для управления объектами в игре, позволяя игроку повторно выдавать команды по мере изменения ситуации, вместо создания заранее подготовленной программы. В играх, таких как Quadrilateral Cowboy и Duskers, пользователь управляет несколькими небольшими роботами одновременно посредством языка программирования для достижения определенной цели.

Как соревновательные игры

Многие игры по программированию включают в себя управление такими сущностями, как роботы, танки или бактерии, которые стремятся уничтожить друг друга. Такие игры можно рассматривать как среды обитания цифровых организмов, связанные с симуляциями искусственной жизни. Ранним примером является Core War (1984), где программы, написанные на стандартизированном языке, близком к ассемблеру, сражаются за место в ограниченной памяти (виртуальных магнитных ядрах). Игрокам предоставляются инструменты для разработки и тестирования своих программ в среде, специфичной для данной игры, прежде чем отправлять программу на центральный сервер. Сервер затем запускает программу в соревновании с другими и сообщает игроку результаты, на основе которых он может вносить изменения или улучшения в программу. Существуют различные турниры и лиги для игр по программированию, где программы могут соревноваться друг с другом. Обычно скрипт оптимизируется под конкретную стратегию. Подобные подходы используются и в более традиционных играх; например, Мировой компьютерный шахматный чемпионат состоит из матчей между программами, написанными для абстрактной стратегической игры в шахматы. Концепция соревновательного программирования также нашла применение в различных настольных играх, таких как RoboRally или Robot Turtles, где программа реализуется в виде готовой колоды карт, которые разыгрываются последовательно для выполнения кода. Исследователи представили RoboCode как платформу для обучения программированию, основанную на решении задач.

Связанные области

Игры с открытым миром, позволяющие игрокам строить окружение из множества строительных блоков, часто используются продвинутыми игроками для создания логических схем и сложных программ из базовых элементов. Minecraft – один из таких примеров: несмотря на ограниченный набор блоков, имитирующих переключатели и электрические цепи, пользователи смогли создать в виртуальном мире базовые рабочие компьютеры, а как минимум одна модификация предназначена для обучения детей программированию на этом виртуальном компьютере с использованием упрощенного языка. Несколько сайтов, например Codecademy, помогают изучать языки программирования в реальном мире посредством геймификации, используя принципы видеоигр для мотивации пользователей.