Привет, меня зовут Мэтью Стенквист, я дизайнер продуктов / UX-инженер, а в прошлом профессиональный спортсмен занял 4-е место в рейтинге сноубордистов в США.

Ночью я независимый разработчик игр. В настоящее время я возглавляю отдел продуктов и разработки в стартапе в Швеции. Более того, с тех пор, как я себя помню, я приложил руку к технологиям и играм, много лет был профессиональным разработчиком / дизайнером, и я хотел поделиться некоторыми своими впечатлениями от F2P. Мой опыт варьируется от работы над играми с двойным рейтингом AA до работы над пятью с лишним мобильными играми на протяжении моей карьеры. Вместе с ними у них было более 5 миллионов загрузок в течение их жизни.

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

Однако не существует универсальной формулы для программирования игрового процесса, поскольку вы можете эффективно подойти к каждому аспекту с любого направления.

В программировании игрового процесса не существует формулы «один размер - подходит всем».

В играх вы можете делать все, что хотите. В программировании то же самое. Нет никакого плана, которому нужно следовать, а есть набор простых правил, которым нужно подчиняться. У вас есть переменные, константы, числа с плавающей запятой и так далее. Но когда дело доходит до программирования игр Free To Play, все может быть немного сложнее, и я хотел поделиться некоторыми мыслями о невзгодах и невзгодах, с которыми я столкнулся на своем пути как индивидуальный разработчик или иногда не один разработчик.

Приступим.

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

Данные, DevOps и проверка требуют тщательного тестирования. На настройку и настройку данных требуется некоторое время. Аналитика не всегда отправляет пинг на принимающий сервер мгновенно и может задерживать получение, независимо от того, было ли зарегистрировано ваше настраиваемое событие. А в худшем случае, если этого не произошло, выяснение причины может занять много времени и отладить его.

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

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

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

В-третьих, нам нужно будет настроить инфраструктуру DevOps. Это очень важно, если вы не являетесь разработчиком-одиночкой. Как индивидуальный разработчик, вы можете пойти на дикий запад в своей настройке и пропустить CI, A / B, Jira и весь блеск и джаз, которые приходят с DevOps. Но если вы хотите правильно сотрудничать с другими, наличие инфраструктуры DevOps имеет решающее значение для жизненного цикла разработки любой F2P-игры и ее производственной ценности.

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

Сохранение значений

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

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

Пользовательский интерфейс и код игрового процесса

Убедитесь, что ваша инфраструктура F2P напрямую не влияет на игровой код. Код пользовательского интерфейса прост, но может быть сложным. Построение виртуальной экономики, рандомизация и механика гача требуют большого количества тонкости и A / B-тестирования.

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

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

Четко укажите объем хранилища игрового кода.

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

И наконец, о науке о данных

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

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

Что касается меня, то я использую небольшое распространение этого вида программирования в своих играх. Это ваше базовое отслеживание событий для аналитики через Fabric и Firebase от Google. И это также мониторинг и настройка обработчиков событий, которые обрабатывают и записывают ключевые показатели эффективности, которые я назначаю.

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

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