Оглавление “Книги кейсов”

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

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

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

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

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

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

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

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

Задачи

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

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

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

Решение

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

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

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

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

Screeps: World в Steam

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

Крипы

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

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

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

виды игровых ресурсов

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

Результат

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

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

Обучающая мини-игра
Игровые тренажеры для отработки навыков и закрепления знаний
Накопление баллов
Отображение прогресса пользователя через накопление баллов или других игровых элементов.
Открытый мир
Предоставление широкого выбора контента и аквностей, оформленного в виде открытого игрового мира
Прокачка уровней
Делаем прогресс пользователя измеримым и наглядным
Игровой персонаж
Персонаж, который общается с пользователем эмоционально, заменяя сообщения от "бездушной" системы
Квест с заданиями
Конкретные шаги для достижения конкретной цели
Игровая валюта
Использование виртуальной валюты, чтобы вознаграждать или влиять на выбор пользователя
Профиль пользователя
Место, где отображаются все достижения и игровые параметры пользователя
Свидетельство канарейки» пока не надо. Хабр описал ...

Источники: habr.com, store.steampowered.com

В продолжение темы: