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

На данной странице будут собраны тесты скорости продукта и различных функций. Зачёркнутыми являются функции от которых решено было отказаться. Красными - над которыми ведется работа по ускорению. В настоящее время все расчеты игровых механик и физики ведутся лишь на процессоре

Железо: 

  • CPU 2 ядра (2300 Mhz на ядро, 1 thread на ядро)
  • 4Gb Ram
  • PHP 8.1 
  • SSD
Помимо прочего влияние на показатели скорости получения пакетов любым сервером влияет показатель сетевой карты Frame Latency и обычно лежит в 20 000 - 150 000 получение небольших пакетов в секунду с одного потока thread  (процесса получения данных).
В зависимости от количество ядер процессора CPU которые смогут одновременно быть задействованы сервером (при условии что сам сервер может работать параллельно и обрабатывать одновременно разные запросы) этот показатель может быть кратно увеличен увеличивая общую пропускную способность.

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

В рамках одного такого процесса возможно разделить Websocket сервер и Игровой сервер и они будут работать в разных потоках (не путать с процессами) при наличии достаточного количества потоков (thread) у CPU (однако есть всего 1 CPU с 1 thread это бессмысленно) 

Тем самым количество запросов от игроков которых игровой сервер может обработать и дать ответ зависит от того отдельно ли он работает от Websocket сервера (что бы не тормозить друг друга в том числе во время приемки и отправки пакетов) на отдельном thread CPU, скорости работы самих игровых механик , пределом пропускной способности сетевой карты (которая закладывать границу скорости websocket сервер на прием и отправку пакетов) 

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

Резюмируя : после того как игрок отправил команду он должен получить ответ на нее как можно раньше (желательно на следующем видео кадре, но обычно PING скорости интернета не позволяет это сделать). В играх хорошим показателем  является в 60 FPS (кадров в секунду которые в среднем глаз человека способен воспринять)  пауза между кадрами равна 0.016 секунду (1 / 60) . Хороший игровой сервер даже при большом количестве игроков и обработки от них всех команд , отправки всем пакетов не должен задерживать игрока надолго (желательно не более 0.016 секунды , тк PING уже отнимет от этого времени большую часть, и чаще превысит)



Что нового?


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

Intro Image

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

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

В конце статьи будет приложена видео версия.

Читать далее

Кабинет

Игры