- Главная
- Дополнительно
- Производительность и тесты скорости MMO RPG (Performance tests / Benchmark)
Производительность и тесты скорости 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%
Игровые механики могут быть оптимизированы (например поиск пути), что может дать прирост с скорости, аналогично игровых механик может стать больше что скорость уменьшит
Ниже доступны ссылки на методики тесты производительности
Подкатегории в данном разделе