Как я придумывал концепцию игры для программистов, и для чего я это делал

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

Для начала расскажу об аналогах, в которых я искал вдохновение и ответы на свои вопросы. Их можно разделить на две группы: замена кнопок действий на код типа “object.moveTo();” и игры, в которых необходимо прочитать тонны информации, прежде чем начать играть. В некоторых играх красивая графика, анимации, видно что над ней реально старались, но это не то. В итоге я понял, что сейчас то, что называют “Обучающими играми для программиста”, этим не является. Оба варианта мне не нравятся от слова совсем и я продолжил искать. Единственное что я почерпнул из этого - я не хочу делать так же!

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

Добавить постройки разных зданий на точках по типу “шахт”, “казарм” и “главного здания” для большей вариативности стратегии игрока и можно лить в прод.

На чем писать? Не осознавая масштабов, я думал, что лучше написать на javascript, с использованием библиотек для работы с canvas. Игра же простая как 5 копеек… Ага…

Забуксовал на создании карты, не стал пытаться дальше и ушел в Unity. Хорошо, что опыт был. После открытия редактора увидел сколько бы мне всего пришлось писать, прежде чем дойти до функциональности, которая существует в Unity “из коробки”. А там и идеи про выпуски на все платформы, и наивные мечты о миллионах установок. Со всеми же такое случалось, не правда ли?

На данный момент реализовано динамическое создание тайлов, действие при наведении на них мышкой, клики по тайлам и перемещение камеры - все что успел написать за пару дней.

Как я придумывал концепцию игры для программистов, и для чего я это делал Программирование, IT, Разработка, Обучение, Курсы программирования, Unity, Gamedev, Инди игра

Так а при чем тут вообще программисты? Сейчас объясню. Игра делится на две части: логика и алгоритмы. С помощью логики игрок описывает взаимодействие ваших точек, а с помощи алгоритмов улучшает их. Например, для захвата точки, необходимо написать алгоритм по поиску в матрице определенного паттерна, которых может быть несколько типов. Для “майнинга” валюты необходим алгоритм генерации уникальных чанков и так далее.

И самый главный вопрос: как обучать новичков и дать возможность провести хорошо время разработчикам. Сделать программирование дополнением к игре, а не ставить во главу угла. Хочешь лучше? Попробуй написать сам! Таким образом у игрока пробудится интерес к программированию и появится цель. Это и будет разновидность геймификации обучения.

А теперь, расскажу зачем я это все делаю. Игра - это не основной проект, а скорее дополнение и поиск лучшего метода обучения студентов. Основным проектом является курс по программированию PHP. Я все время в поисках крутых практик обучения, и вижу большой потенциал в обучении через игры. Толчком к созданию курса, а точнее сервиса по обучению, стал взгляд изнутри и снаружи на все “магазины на диване”, которые называют себя обучающей платформой. Моя цель сделать обучение доступным и обучить как можно больше людей. Постоянно улучшая программу курса, я ищу снова и снова крутые методики обучения и встраиваю их в программу. Мне нравится учить людей и нравится писать код. Почему бы не совместить это в один проект?