Неделя 26 (апрель 1): Новая учебная комната и интеграция аналитики.

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

Собственно от интерфейса крафта учебная комната отличается только порядком выбора рецепта. Все-таки в какой-нибудь Кухне доступные рецепты сразу видны, ведь они зависят от самой кухни. А в учебной комнате набор рецептов зависит не только от комнаты, но и от выбранного персонажа. В результате игрок попадает в пустое меню с которым не очень понятно что делать. Я бы на месте игрока испугался.

На видео механизм работы обновленной учебной комнаты и связь обучения с расходникам.

Зато с точки зрения кода все получилось намного лучше и удобнее. Хотя не без танцев с бубном.

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

Во-вторых, сделать отображение только нужных рецептов. Само по себе это не сложно… если по-буддитстки откинуть все лишнее. Я же чуть не впал в депрессию (будто у меня поводов мало) от того, что сам список рецептов будет выглядеть не так как в условной Кухне. Будущие, но еще не доступные рецепты улучшения скилов персонажа я отображать не будут. Пока по крайней мере.

Новый интерфейс не только удобнее и надежнее, но позволяет проверить одну очень интересную вещь: возможность обучать нескольким разным скилам в одной постройке. Конечно в будущем у меня будут специализированные школы, но все же. Меня изначально очень беспокоил вопрос возможности существования нескольких одновременно доступных рецептов улучшения персонажей. Теперь этот вопрос снят.

Суть проблемы заключается вот в чем. Есть у меня дерево скилов связанное с например с каким-нибудь военным делом. Изначально персонажу доступно только улучшения скила атаки. Но потом, на 15м уровне скила атаки становятся доступны скилы стрельбы из лука, верховой езды и лидерства. Логически они относятся к той же школе, и определенно должны быть доступны персонажу одновременно. Да и скил атаки на этом не заканчивается.

По-хорошему, это дерево должно быть оформлено как дерево. И я с радостью это сделаю когда у меня появится художник, например. А пока будет так.

***

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

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

А я занялся интеграцией аналитики.

Не то чтобы это было очень сложно. Просто это хоть что-то по сравнению с тем ступором в который я впадаю от мысли что надо будет заниматься тем самым из списка «можно будет». Да и тут я умудрился споткнуться.

Но начнем с того, зачем мне все это. Логическая цепь примерно такая:

  • Мне тяжело редактировать конфиги через гуглотаблицы. Я испытываю от этого физическую боль.
  • А тут разработчики моего любимого Одина, выкатили довольно большое обновление с значительно расширенными возможностями по созданию собственных юнитевых интерфейсов, помимо элементов инспектора объектов. Ну и заодно среди примеров вроде нашлось место такому, по которому я понял как сделать интерфейс редактора конфиков. То есть теоретически я могу вернуться обратно к формату хранения конфигов в виде json’ов. Будто мне совсем заняться нечем.
  • Чтобы хоть как-то обосновать это дело, я вспомнил о существовании различных сервисов, которые позволяют казуально обустроить игровой сервер. Такие сервисы объединяют в себе статистику, платежку, пуши и возможность в окне браузера вбить код, который будет как-то хитрожопо обрабатывать запросы от игрового клиента. И это очень удобно. Прям очень-очень. Хоть говорят и дорого. Но на моем уровне развития все равно бесплатно. А пока я выберусь за пределы своего уровня развития… либо ишак, либо падишах.
  • Фишка тут заключается в том, что нельзя навертеть обе системы на одну версию игры — к какой из систем игра будет обращаться к серверной обработке?
  • Соответственно надо привести игру в какое-то готовое для интеграции состояние. А для этого нужно интегрировать в игру какую-то модельную систему хотя бы статистики, которая с одной стороны не будет мешать системам, которые я хочу изучить, а с другой стороны позволит привести все в порядок. В качестве модельной у меня идет родная юнитевая аналитика. Из который я предыдущие две недели скриншоты постил.

Отчет за неделю может выглядеть по-разному

Итак я занялся интеграцией аналитики.

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

Поэтому мой подход к аналитике довольно простой. Есть набор событий которые можн регистрировать. Зачем? Возможно пригодятся. В конце концов чтобы нализировать какие-то данные, их надо сначала собрать. На данном этапе набор не очень большой:

  • Покупка в магазине построек или ресурсов.
  • Начисление/списание предметов.
  • Запуск рецептов, покупка окончания рецептов.
  • Выполнение заказа.

Но для начала и этого набора более чем достаточно. Проблема оказалась в том, что мой код в целом оказался не очень готов к каким-то объединяющим действиям. Начисление предметов имеет ряд источников и сам процесс проходит довольно запутанную цепочку функций, среди которых не всегда можно определить финальную. С рецептами та же фигня: куча источников и не видать конца.

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

Оглавление