Screeps: самая сложная и интересная игра по обучению программированию на JavaScript

Комментарий эксперта

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

Илья Курылев, эксперт в области геймификации, CEO студии Gamification Now!

Screeps массовая многопользовательская стратегия для программистов. Выпущена в свет в 2016 году.

Проект можно посетить здесь.

Задачи

  • Предложить возможность творчески и играючи изучать программирование 
  • Сделать и продать игру фанатам программирования
  • Сделать тренировку сложных аспектов программирования в формате увлекательной игры
Если понравится кейс, можем сделать для вас геймификацию не хуже. От сбора требований и написания ТЗ до разработки решения и загрузки на наши или ваши сервера.
Назначить встречу

Комментарий эксперта

Решение

Screeps — игра с открытым исходным кодом, в которой нужно управлять своей колонией с помощью написания на JavaScript автоматических программ для разных типов роботов. Большая часть игрового процесса – это написание кода и изучение документации, изредка – ручное управление армией юнитов для захвата новых территорий (хотя и этот процесс можно автоматизировать). Задача игрока: запрограммировать свои юниты таким образом, чтобы игра работала без его присутствия, чтобы даже в отсутствии игрока юниты продолжали защищать свои территории, добывать ресурсы и захватывать новые территории. Здесь нет единой универсальной схемы, каждый игрок будет решать задачу своим плюс-минус уникальным способом, так как у него нет доступа к кодам других игроков и он может только визуально подсмотреть их алгоритм.

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

профиль пользователя

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

Screeps: World в Steam

Игроку необходимо запрограммировать реакцию юнитов на события, используя язык программирования JavaScript. Время в игре течёт по тикам — ходам, во время которых каждый раз выполняется код игроков, без возможности приостановки. Игрок может разделить свои скрипты на модули с помощью синтаксиса Node.js, чтобы сделать игру более удобной. В Screeps юниты могут реагировать на события без участия игрока - при условии, что игрок их правильно запрограммировал. Так, в Screeps не обязательно заходить постоянно, достаточно лишь время от времени заглядывать в игру, чтобы проверить, все ли идет хорошо.

Крипы

Игрок собирает и программирует свою армию роботов (крипов), которые выполняют заданные им задачи. Крипы могут быть разных типов. Например, воины, добытчики ресурсов и тд. Крипы, соответсвенно, могут добывать ресурсы, носить предметы, воевать и передвигаться по миру. Чтобы заставить крипа двигаться, нужно написать ему сценарий. У каждого крипа, который добывает ресурсы, есть максимальная возможность по хранению добытых ресурсов. Добытые ресурсы, превышающие это максимальное количество, не будут собираться, они будут падать на землю. Написанный сценарий также должен это учитывать. Крипы не вечные, они умирают через определенное количество времени.

Список задач, которые игроку предстоит запрограммировать

  • Добыча энергии внутри комнаты (для спауна новых юнитов, постройки новых строений и особенно для прокачки своего уровня GCL)
  • Защита от внешней агрессии (постройка и ремонт стен и укреплений, использование башен и боевых юнитов)
  • Добыча энергии и других ресурсов из соседних комнат, с учётом злобных NPC ... и умных соседей
  • Торговля ресурсами: продажа излишков, покупка недостающих ресурсов за внутриигровую валюту у других игроков
  • Производство ценных минералов из добытого или купленного сырья
  • Прокачка своих юнитов с помощью редких минералов (секрет непобедимой армии)
  • Создание атомного оружия и защита от него
  • Захват новых территорий (если это допускает уровень игрока)

Особенности игры

  • Основная работа совершается юнитами, когда игрок находится в офлайне. Персонажи будут добывать, строить, защищать и завоевывать не зависимо от присутствия игрока в игре.
  • Чем лучше написаны сценарии для юнитов, тем большего прогресса может добиться игрок независимо от времени игры. Игрок должен заранее предусмотреть различные сценарии, чтобы работа его колонии не останавливалась даже если закончилось место на складе, закончились ресурсы или на колонию напал враг.
  • Юниты всех игроков сосуществуют в одном огромном постоянном мире в реальном времени и подчиняются одним и тем же правилам.
  • Множество видов юнитов, строительство баз, добыча ресурсов, контроль территории, экономика, производство, транспортировка, логистика, торговля - все атрибуты настоящей стратегической игры, которые нужно запрограммировать самостоятельно.
  • Есть возможность создать свой собственный сервер, изменить правила игры и играть с друзьями по локальной сети или через Интернет. Сервер является проектом с открытым исходным кодом.
  • Игра идет в медленном темпе (от 2 секунд до 5 секунд на игровой тик в зависимости от осколка мира, на котором игрок начинает играть), так как позволяет отлаживать свои скрипты в реальном времени. Например, чтобы прокачать первую комнату с 5 до 6 уровня и получить возможность построить торговый терминал, уйдёт больше суток. В это время игрок может лишь наблюдать за работой своих юнитов и параллельно читать документацию/форум/чат и писать новый код (для автоматизации торговли, для лечения боевых юнитов и т.п.)
  • Для разработки и тестирования можно использовать частный сервер с быстрым темпом (до 10 игровых тиков в секунду).
  • Игровой мир Screeps совсем не дружелюбный, а у новичков мало привилегий. Скорее всего соседи разрушат первую базу игрока раньше, чем он успеет написать хороший код для защиты. Даже если игроку повезло с соседями - на него могут напасть крупные игроки после снятия "защиты для новичков" с его сектора.
  • Код игрока может устареть. Разработчики постоянно развивают игру и она становится лучше. Обратная сторона этих улучшений - изменения в игровом балансе. После очередного обновления игры, код может морально устареть (стать неэффективным) или даже перестать работать: часть модулей придётся переписать. Разработчики заранее предупреждают об официальных изменениях, но могут внезапно изменить любую недокументированную (но привычную) особенность игрового мира для настройки игрового баланса.
  • Screeps – англоязычный сервер. На нем мало русскоязычных игроков: при вступлении в какой-либо клан нужно быть готовым к общению на английском.
виды игровых ресурсов

Источники:

На официальном сервере Screeps круглосуточно исполняется код ~2000 игроков

Результаты

Результаты

Используемые механики

Похожие кейсы