ccu что это в играх

Показатели эффективности игр: активные пользователи (DAU/WAU/MAU)

Как можно считать и по каким признакам сегментировать активных пользователей, а также какие бывают статистические аномалии при оценке аудитории, – рассказывает аналитик devtodev Вера Карпова.

Публикация выходит в рамках цикла материалов об игровых метриках от App2Top.ru и devtodev. Статьи делятся по сезонам, каждый из которых посвящен конкретной теме. Второй сезон называется «Пользователи». В нем мы рассказываем про те бизнес-метрики, которые отражают эффективность приложения в плане работы с аудиторией.

Ежедневно аудитория проекта пополняется новыми пользователями. Кто-то из них быстро теряет интерес, кто-то иногда вспоминает о приложении, а кто-то пользуется им регулярно. И наверняка каждый день в приложение заходят представители всех этих сегментов. Сегодня мы и поговорим о них – активных пользователях (Active users).

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

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

Стоит обратить внимание, что WAU за определенную неделю – это не сумма DAU за 7 дней, так как речь идет об уникальных пользователях. Например, один из них может зайти в приложение в понедельник и вторник, и он попадет и в DAU понедельника, и в DAU вторника. Но в рамках недели (с понедельника по воскресенье) он будет посчитан только 1 раз.
Аналогично и MAU не является суммой 4-х WAU и 30-ти DAU. С точки зрения расчета, эти показатели не связаны между собой и рассчитываются отдельно.

Чтобы получше разобраться с этими показателями, посчитаем их на примере.

Допустим, у нас есть данные о посещениях приложения различными пользователями за 2 недели. При этом не имеет значения, сколько раз в день заходил пользователь в проект, так как он все равно будет одним уникальным посетителем.

Синим отмечены дни, когда пользователи заходили в приложение.

Итак, сначала рассчитаем DAU для 1-го, 2-го, 5-го и 10-го дня. Для этого нужно знать, сколько уникальных пользователей заходили в приложение в эти дни:

Далее посчитаем WAU:

Можно выбрать и произвольную неделю, например, с 3-го по 9-й день, и тогда WAU будет равен 4.

Аналогично можно посчитать активных пользователей и за месяц, и за полгода, и за другие временные промежутки.

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

Кроме того Active users – это тот показатель, который имеет смысл отслеживать в реальном времени, потому что если что-то сломается в приложении или на сервере и пользователи не смогут воспользоваться продуктом, это сразу же скажется этой метрике. Для такого контроля группировать пользователей можно уже не по дням, а по часам или даже 10-ти минутным интервалам.

Кстати, активные пользователи, которые в текущий момент находятся в приложении – это отдельная метрика, которая имеет свое название. Чаще всего это Users online, но можно встретить и такие аббревиатуры, как CCU (сonсurrent users) – пользователи, находящиеся в приложении в определенный момент, и PCCU (peak concurrent users) – максимальное количество пользователей, одновременно находящихся в приложении.

Средний CCU хорошо отражает масштаб проекта, а PCCU очень важен при планировании нагрузки на сервера.

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

Вот несколько вариантов сегментации активной аудитории.

По сроку с момента установки:

По регулярности заходов:

А также можно делить по странам, по девайсам операционным системам, по кастомному событию (то есть, делить аудиторию на пользователей выполнивших и не выполнивших то или иное действия).

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

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

Вот какая ситуация может случиться:

Сначала начинает уменьшаться количество активных пользователей в России, в то же время увеличивается количество посетителей из Японии и они компенсируют падение в другой стране. Если мы смотрим только на общий график DAU, то вряд ли заметим какие-либо изменения динамики. И только потом, когда количество активных пользователей России упадет еще сильнее, мы увидим это на общем графике. А между тем, уже пройдет достаточно много времени, которое можно было бы использовать для поиска и устранения причины падения.

Читайте также:  республика казахстан с какого года

Еще одна статистическая аномалия подтверждает важность сегментации – это парадокс Симпсона. Ее проявление лучше всего рассмотреть на примере.

Возьмем 4 страны из предыдущего примера и предположим, что конверсия в покупку в них такая:

Далее посчитаем общую конверсию европейских и азиатских стран:

И вот что получается:

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

Кстати, иногда, глядя на график DAU, вы не всегда можете явно определить тенденцию, но группировка по неделям или месяцам (преобразование графика в WAU и MAU), делает ее более явной.

Сама по себе метрика Active users, безусловно, важна для проекта, но кроме этого она также связана с другими финансовыми и поведенческими метриками.

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

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

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

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

New users → Active users → Paying users

Кстати, важно, чтобы пользователь после совершения первого платежа оставался активен в продукте, потому что это увеличит шансы на то, что он совершит повторные покупки.
Таким образом, Active users прямо пропорционально влияет на доход:

Revenue = Active users * Paying share * ARPPU

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

Источник

Введение в многопользовательские игры с Unity и Photon

Узнайте, как создать собственную многопользовательскую игру на Unity с использованием библиотеки Photon Unity Networking (PUN).

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

По сравнению с этим многопользовательские игры, такие как Fortnite и PUBG, покорили мир. Эти игры, которые легко осваивать, но трудно создавать. Они становятся все более популярными среди рекордного числа людей.

Некоторые люди даже делают карьеру из этих игр в качестве стримеров Twitch, что очень трудно сделать в одиночных играх.

В этом руководстве вы узнаете, как создать собственную многопользовательскую игру на Unity с использованием библиотеки Photon Unity Networking (для краткости PUN).

В этом уроке, вы узнаете:

Photon или Unity — что выбрать?

Прежде чем приступить к обучению, давайте рассмотрим основные различия между Unity Networking и Photon Unity Networking.

Изучение архитектуры

Движок Unity, как и PUN имеют похожие низкоуровневые API. Но архитектура, необходимая для этих библиотек, чтобы использовать эти API, является ключевым дифференцирующим фактором между ними.

Можете ознакомиться с этим видео:

Приведенная выше диаграмма показывает, как сообщения передаются между узлами в сети в Unity и в PUN.

Unity Networking поддерживает архитектуру сервер / клиент.

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

Например, на основе приведенной выше схемы, сообщения передаются от клиента B к клиенту C по следующему пути: Клиент B ▸ Сервер ретрансляции ▸ Хост A Сервер ретрансляции ▸ Клиент C.

Как видите, сообщение от источника до места назначения занимает всего 4 шага. В дополнение к этому, если Хост отключается от сети, игра останавливается.

PUN имеет аналогичную архитектуру сервер / клиент, но также поддерживает одноранговую отправку сообщений.

Например, на основе приведенной выше схемы сообщения передаются от клиента B к клиенту C по следующему пути: клиент B сервер ретрансляции ▸ клиент C.

Это всего 2 шага по сравнению с 4 в Unity для одной и той же передачи сообщений между двумя узлами.

В дополнение к этому, PUN потенциально может полностью обойти сервер ретрансляции, и клиент B может напрямую связываться с клиентом C, тем самым уменьшая количество переходов до 1.

Исходя из этой информации, PUN быстрее, чем Unity.

Читайте также:  lime company что это такое

Другое ключевое отличие между Unity и PUN – модель стоимость.

Unity предлагает бесплатное количество параллельных пользователей (CCU) для каждой лицензии.

PUN также предоставляет до 20 CCU, 8000 ежемесячных активов и 500 сообщений на номер бесплатно. В дополнение к бесплатному плану, он предлагает очень хороший вариант однократной оплаты в размере $ 95 на 60 месяцев, который включает в себя 100 CCU, 40 000 ежемесячных активных и 500 сообщений на номер. Этот вариант отлично подходит для небольших независимых разработчиков, которые имеют ограниченный бюджет.

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

Купить или попробовать бесплатно можете по ссылке – https://www.photonengine.com/en-US/PUN/pricing

Начинаем работу

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

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

Как только вы все настроите, загрузите стартовый проект, и откройте Photon Starter с Unity.Project Overview

Посмотрите на структуру папок в окне проекта:

Вот что содержит каждая папка:

Откройте сцену запуска из Активов / RW / Сцены.

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

В этой сцене вы создадите лобби с использованием Photon Unity Networking. Вы создадите комнату с определенным именем, и тогда ваш друг сможет присоединиться к вашему лобби, введя то же имя комнаты в своем экземпляре игры.

Как только вы и ваш друг присоединились к одной комнате, лидер лобби может загрузить сцену MainArena, где вы оба можете играть в игру вместе.

Создаём аккаунт в Photon

Прежде чем приступить к созданию лобби, вам необходимо создать учетную запись на официальном сайте Photon Engine, перейдя по адресу https://dashboard.photonengine.com/en-us/account/SignUp.

Примечание: Библиотека Photon Unity Networking уже присутствует в начальном проекте, который вы загрузили в начале этого учебного пособия, но вы также можете использовать ее в своих существующих проектах, загрузив пакет Unity Pack из хранилища активов.

Продолжайте работу, вернувшись в Редактор Unity, откройте Мастер PUN, выбрав Окно ▸ Фотон Unity сети ▸ Мастер PUN.

В окне PUN Wizard нажмите Setup Project и введите AppId, который вы сохранили при настройке учетной записи движка Photom в предыдущем разделе. Нажмите кнопку «Настройка проекта».

Теперь, когда у вас есть Photon, давайте приступим к созданию лобби.

Создание Лобби

Вот обзор того, что делает скрипт Launcher.cs, по порядку:

Откройте скрипт Launcher.cs в Assets / RW / Scripts.

Добавьте следующие строки кода в Launcher.cs после комментария // Start Method.

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

Вот краткое объяснение кода.

Загрузка сцены MainArena

Чтобы получить входные данные из элементов пользовательского интерфейса TextField, вам нужен открытый метод для сохранения значения в TextField. Добавьте следующий код после комментария // Tutorial Methods:

Затем добавьте следующие методы после комментария // Tutorial Methods:

Вот как работает этот код:

Затем добавьте следующие строки кода:

Смотрите внимательно за каждой строкой кода:

Методы обратного вызова PUN

Теперь, когда вы добавили основные строительные блоки присоединения и создания комнаты, осталось только добавить методы обратного вызова PUN, которые позаботятся об обработке исключений.

Добавьте следующий код после комментария // Photon Methods:

Давайте посмотрим, что делает каждый фрагмент кода:

Сохраните сценарий Launcher.cs и вернитесь к сцене Launcher и нажмите «Play».

Как вы можете видеть, когда сцена запускается, вызывается ConnectToPhoton и в тексте интерфейса состояния соединения отображается «Connecting…». После успешного подключения текст меняется на «Connected», и видимость roomJoinUI GameObject устанавливается в значение true.

Затем пользователь может ввести свое имя и имя комнаты, которую он хочет создать или присоединиться, нажав кнопку «Присоединиться к комнате».

Наконец, если пользователь является первым клиентом, текст playerStatus имеет значение «Вы теперь являетесь лидером лобби!», И кнопка «Загрузить арену» будет активна. В противном случае отображается сообщение об успешном соединении в лобби.

На этом этапе вы можете протестировать шаг присоединение к комнате, создав исполняемый файл проекта для вашей операционной системы, выбрав ФайлПостроить и запустить. Вы должны быть в состоянии загрузить сцену MainArena, используя только что построенный исполняемый файл и редактор Unity, соединенные в одной комнате.

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

Читайте также:  manufacturing diagnostic mode что это

Использование компонента преобразования просмотра – Photon View

После того, как код комнаты объединен, следующая важная концепция Photon Unity Networking. Также важная функция, которую вам нужно знать, – это компонент Photon View.

PUN позволяет очень просто создать префаб, свойства которого (положение, вращение и т. д.) Должны синхронизироваться по сети во время многопользовательской игры с использованием компонента Photon View.

При использовании PUN важно понимать, что Prefab, который должен создаваться по сети, должен находиться внутри папки с именем Resources.

Важным побочным эффектом наличия Prefabs внутри папок Resources, является необходимость просмотра их имен. У вас не должно быть двух префабов под путями ресурсов ваших активов, названных одинаково, потому что Unity просто выберет первый, который найдет.

После этого давайте начнем создавать Game Manager.

Откройте сценарий GameManager.cs в разделе «Ресурсы / RW / Scripts».

Вот краткий обзор того, что собирается делать скрипт GameManager.cs:

Добавьте следующий код после комментария // Start Method:

Вот как это работает

Сохраните файл и вернитесь в редактор.

Теперь, когда у вас есть готовая логика для создания объектов Player и Ball GameObject, следующим шагом будет добавление необходимых компонентов, чтобы их можно было создать с помощью метода PhotonNetwork.Instantiate.

В окне «Project» дважды щелкните «Car prefab» в «Assets / RW / Prefabs», чтобы открыть его в режиме «Prefab Editing».

В Инспекторе вы должны увидеть, что некоторые базовые компоненты для Car GameObject (Rigidbody, Collider, Movements и т. д.) Уже являются частью префаба.

Поскольку по сети необходимо синхронизировать только свойства Transform объекта GameObject, добавьте компонент Photon Transform View в Car GameObject.

Вы заметите, что компонент Photon View также добавлен, так как компонент Photon Transform View уже наследует от него множество свойств.

В дополнение к синхронизации положения, поворота и масштаба GameObject, Photon Transform View дает вам много разных вариантов, чтобы синхронизированные значения выглядели гладкими, даже когда данные принимаются только пару раз в секунду.

В Инспекторе установите для параметра «Наблюдение» значение «Ненадежный» при изменении в компоненте Photon View. Это обеспечит плавный переход между значениями Car Transform.

Кроме того, добавьте префаб «Автомобиль» или «Car» в список «Наблюдаемые компоненты» в компоненте «Photon View», чтобы синхронизировать его выбранные свойства преобразования (которые отображаются как выбранные в компоненте «Photon View Component»).

Сохраните готовый префаб Car

Затем откройте префаб Ball из Assets / RW / Prefabs в режиме Prefab Editing и повторите вышеуказанные шаги:

Наконец, переместите префабы Car и Ball из папки Assets / RW / Prefabs в директорию Assets / RW / Resources, чтобы их можно было загрузить методом PhotonNetwork.Instantiate.

Время тестировать нашу игру!

Выберите FileBuild and Run, чтобы создать исполняемый файл для вашей операционной системы.

Вы должны увидеть, что сцена MainArena загружена двумя игроками (машинами) и мячом. Вы можете использовать кнопки WASD или клавиши со стрелками на клавиатуре, чтобы перемещать машину по арене.

Обратите внимание, что на обоих клиентах движется только 1 автомобиль (автомобиль, принадлежащий клиенту).

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

Вся работа выполняется с помощью компонента Photon Transform View, который вы добавили в префабы Car и Ball.

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

Добавление методов обратного вызова PUN

Добавьте следующий код в скрипт GameManager.cs после комментария // Update Method:

Это довольно просто.

В любой момент игры, если нажата кнопка Escape, будет вызвано событие Application.Quit.

Затем добавьте следующий код после комментария // Photon Methods:

OnPlayerLeftRoom является методом обратного вызова PUN, который вызывается всякий раз, когда игрок покидает комнату, либо закрывая клиента, либо отключается от сети.

Наконец, добавьте следующий код после комментария // Вспомогательные методы: // Helper Method

При нажатии на Canvas / Top Menu Panel / Quit Room Button будет вызван данный метод.

Теперь вам предстоит установить событие On Click () и кнопки Quit Room на GameManager.QuitRoom

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

Что делать дальше?

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

Вы можете узнать больше о библиотеке Photon Unity Networking на официальном сайте

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

Источник

Сказочный портал