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