Игра началась!

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

Именно здесь вступает в игру «Code Character», игровое мероприятие, нацеленное на то, чтобы натравить игроков друг на друга на основе заранее разработанного искусственного интеллекта. Часть мероприятий «Code It» для техно-управленческого фестиваля, организованного Pragyan, NIT Trichy, «Code Character» сочетает в себе кодирование и стратегические игры, напоминающие все время популярную франшизу «Age of Empires». После изучения встроенной документации и руководств, представленных на странице входа в систему, мы почувствовали себя достаточно уверенно, чтобы открыть панель управления и начать создание того, что, как мы надеялись, будет высококонкурентным ботом, чтобы бросить вызов другим игрокам в таблице лидеров. Код можно было легко ввести и отредактировать в окне редактора слева, а соответствующие ошибки можно было увидеть в окне отладки справа внизу. Справа вверху было окно рендеринга, в котором действие бот-бот разворачивалось во всей красе. Одним из главных преимуществ было то, что для игры требовались только базовые знания C ++. После того, как мы поигрались с интерфейсом и пережили головокружительные победы и несколько сокрушительных поражений, мы остались заинтригованы, и у нас возникло множество вопросов.

Во время интервью с Венкатраманом Шрикантхом и Аруном Рамачандраном, ведущими разработчиками Code Character, мы исследовали историю, лежащую в основе игры.

В: С чего начался этот поиск совмещения программирования и игр?

A: Четыре года назад Pragyan придумал «Code Character», задачу кодирования 1 на 1, предназначенную для соревнующихся игроков. В его первом выпуске игроки сражались в тесте на логическое мышление и способности, пытаясь маневрировать сусликом через сложную местность, кодируя в среде Javascript. В своей третьей версии в 2017 году «Code Character» включал три уникально сгенерированные карты с несколькими типами ландшафта, пехотой и зданиями. Поскольку цель основана на механике захвата флага, игра достигла беспрецедентного уровня глубины и предложила задачу программирования, подобную которой раньше не видели.

В: Как ни интригующе это звучит, мы уверены, что это был нелегкий путь. С какими трудностями вы столкнулись при воплощении «Code Character» в жизнь и что нового и отличного от предыдущего издания?

A: Каждая новинка сталкивается с трудностями. Одна из таких неожиданных проблем, с которыми мы столкнулись, заключалась в разработке механизма, с помощью которого измерялись ходы каждого игрока. Вплоть до выпуска 2017 года ход каждого игрока был рассчитан. То есть каждому игроку был дан определенный период, в течение которого должен был выполняться их код. Это приводило к резким различиям в результатах в зависимости от компьютера, на котором играла игра, по одной простой причине - не все компьютеры построены одинаково. Разные процессоры компилируются в разные периоды времени. Эти различия в мощности ЦП и архитектуре привели к недетерминированной оценке. То есть даже на одном компьютере результаты часто различались. Многие факторы, помимо фактического кода, определяют окончательное время работы; как и другие процессы, запущенные на машине, и кэширование.

Чтобы решить эту проблему, мы, команда разработчиков, придумали гениальное решение (немного подшутите над нами) этой проблемы. Идея заключалась в том, чтобы отказаться от самого понятия хронометрированной игры. Вместо времени измерялось количество инструкций, выполняемых кодом игрока за каждый ход. Поскольку машинный код зависит от оборудования, вместо него использовался промежуточный кроссплатформенный вывод компилятора. Затем был установлен верхний предел количества инструкций, которые игрок может выполнять за ход.

Таким образом, каждый ход игрока включал запуск кода, который они отправили, и разрешение серверу запускать его код только в том случае, если он придерживается установленного верхнего предела. Если при вычислении окончательных возвращаемых значений (которые представляют собой команды, которые игрок дает своим войскам) используется больше инструкций, чем установленный верхний предел, их ИИ объявляется недействительным, и победа присуждается другому игроку.

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

В: Чем лучше работает новая версия?

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

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

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

В: Можно ли сказать, что эта игра действительно для всех?

A: Да! Независимо от того, новичок вы или заядлый энтузиаст программирования, вы можете принять участие. Любой, кто хоть немного разбирается в программировании на C ++, может написать эффективный и конкурентоспособный ИИ.

Завершив разговор, мы получили более ясную картину того, что происходило за кулисами. Хотите узнать об игре? Перейдите на https://code.pragyan.org, запустите онлайн-редактор кода, наберите дюжину строк кода и посмотрите, как ваши стратегии оживают в окне рендеринга.