Производительность и тесты скорости MMO RPG (Performance tests / Benchmark)





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

Для замеров производительности используется единица времени миллисекунда (мс.) . В одной секунде 1000 мс. 

Игровой кадр сервера с 60 FPS (кадров в секунду) игры должен отработать не медленнее чем за 16 мс. (1000/60), 30 FPS не более 33 мс. (1000/30).

Ниже приведены расчеты дли одной локации демонстрационной игры Игорь 

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

В замерах используются показатели сервера физики (расчеты ИИ NPC, такие как поиск пути, дебафы и команд игрока) и Websocket сервера (который принимает и отправляем пакеты от игрока и сервера физики)


Железо 2 CPU, 2GB RAM, Linux, в Германия
Размер карты (тратит RAM и CPU при "поиске пути") 135х140 клеток (40% в препятствиях)
Оперативная память выделенная 80 Мбайт (суммарно для сервера физики websocket)
Количество "живых" NPC на локации (тратят CPU + RAM + время кадра) 50 шт.
Алгоритм ИИ у NPC блуждать, искать оппонента, стрелять, преследовать
Потребление CPU серверами 30% CPU одного ядра 
Размер пакета мира целиком 1800 байт/при входе в игру (после сжатия)
Скорость отправки мира целиком игрокам 0.5 мс./игрок (200 Мбит/c пропускная у сервера, 20 Мбит/c у игрока в РФ)
Размер пакета обновлений мира 200 байт/кадр (после сжатия)
Скорость отправки обновления игрокам+0.05 мс./игрок в России
Формат пакетов JSON (текст)
Степень сжатия пакетов 90%
Размер пакета команды игрока 30 байт/команда (без сжатия)
Overhead на обмен пакетов Websocket (команды игроков) <-> сервер физики (обновления)+2 мс./кадр макс
Время на выполнение вычислений сервера физики+6 мс./кадр
При включенном логировании +2 мс./кадр (~90 лог записей)
Overhead работы WebSocket сервера+1 мс./кадр
При включенном логировании +1 мс./кадр (~20 лог записей)

Итого

При указанных выше вводных локация с 50 NPC с ИИ время кадра будет от 111 FPS
формула: (1000/ (6мс + 1мс+2мс)), при потреблении до 30% CPU из таблицы

Если на локации будет 50 NPC + 50 игроков из России то по аналогии от 54 FPS потребляя уже 60% CPU одного ядра 
формула: (1000/ ((6мс + 1мс + 2мс) + (6мс + 1мс + 0.05мс*50))), потребления CPU: 30%+30% 

Т.к. для обработки 50 существ из таблицы выше приходится 30% от ядра CPU , то на машине с 2 CPU и максимальное количество на карте будет не менее 350 (NPC или игроков)
формула: (2CPU*100%/30%)*50шт

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

При включенной отладке (логировании) показатели выше будут ниже на -25%


Игровые механики могут быть оптимизированы (например поиск пути), что может дать прирост с скорости, аналогично игровых механик может стать больше что скорость уменьшит



Ниже доступны ссылки на методики тесты производительности






Подкатегории в данном разделе


Что нового?


Статьи про разработку продукта

PHP, Разработка игр, Unity, Unreal Engine, Облачные сервисы, php, unity, mmo, mmorpg, сервер для игры

С 2021 года я начал делать свою MMO игру обнаружив что нет готовых сервисов ни в России, ни за рубежом. Но сделать игру я мечтал со времен «Бойцовского клуба» и текстового «Амулета дракона», вдобавок уже был неплохим программистом.

Так и родилась идея написать свое решение Авторитарного сервера для 2D Mmo RPG игр и, как говорил Илон Маск, «Батут работает».

Читать далее
ч.15 Игровой авторитарный сервер на процессах и его архитектура в картинках — Создание сервера для онлайн ММО игр на PHP
PHP, Программирование, Разработка игр, Unity, Unreal Engine, php, игровой сервер, разработка сервисов, онлайн-игры, разработка онлайн-игр
Создание сервера для онлайн ММО игр на PHP ч.14 — Сетевая карта и задержка кадра (Latency frame) по RFC 2544 (1242)
PHP, Проектирование и рефакторинг, Разработка игр, Сетевые технологии, Параллельное программирование, php, go, c#, онлан игры
Создание сервера для онлайн ММО игр на PHP ч.13 — Event-driven паттерн, JSON-RPC и почему не сервисная (SOA) архитектура
PHP, Программирование, Проектирование и рефакторинг, Разработка игр, Алгоритмы, php, event-driven, разработка игр, mmo, mmorpg, шаблон проектирования

Кабинет

Игры