Тест от от 12.2023 при 100 FPS игрового сервера

Каждые 10мс запускается цикл обработки команд игроков и обновление npc.  
Используется трех процессорная архитектура: WebSocket сервер + Игровой Сервер + Сервер выполнения игровых механик), включено логирование всех действий (доп. время на запись логов). 2 ядра CPU

CPU (Процессор) 

  • WebSocket сервер (можно наблюдать онлайн в админ панели в разделе Сервера) -
    •  0.7% на запуск (нет активных действий на локации и игроков)
    •  3.5% 50 npc из Игрового сервера присылают пакеты смены координат (двигаются) и дополняют рассылаются 1 игроку
  • Игровой сервер (нагрузка создается от периодического сохранения в базу данных, зависит от частоты сохранений и размеров данных, можно посмотреть в разделе Игры
    • 3.2% на запуск
    • 4.5%  с просушиванием порта Сервера механик , прием пакетов изменений 50 npc и отправка в WebSocket для рассылки игрокам
    • 5% тоже при поступлении 1 пакета 250 байт (изменения на команду движения) и сохранение в базу данных во время ожидания данных от Сервера игровых механик
  • Сервер игровых механик (можно наблюдать в разделе Фреймворки, выбрав конкретный , после выбрав игру и процесс)
    • 3% на запуск
    • 25% 50 npc с распределенной на запуск в разных кадрах механики случайного движения и отправка пакета 250 байт назад в Игровой сервер каждый кадр
RAM (оперативная память) - 0.5 Мбайт на запуск 1 карты + размер пакетов объектов на карте (npc, игрок, объект) x2 (хранятся в Сервере механик и WebSocket копии - последний рассылает игрокам при входе, не запрашивая у Сервера механик)

Тест от от 11.2022 

 2 ядра CPU

CPU от 2 Ядер (чем больше тем быстрее смогут работать параллельно работающие программные сервера и производиться расчеты системой ):

  • Нагрузка в покое CPU ~ 0,07% (load average 1, 5 и 15 минут): 0.07, 0.02, 0.01 на процесс
  • Нагрузка 100 ходящий ботов (эмуляция игроков) CPU 4.7% 0.1, 0.09, 0.02

RAM  от 4ГБ, нужна в целом для работы служб “железа” , сам программный сервер потребляет доп мощности по следующей формуле:

  • 1 Мб на запуска 1 экземпляра программного сервера ( 1 карта = 1 сервер )
  • ~ 1 Мб данных на загрузку информации о где на карте ходить можно, где препятствия
  • + ~ 0.005 Мб на каждого монстра, объект, игрока (в зависимости насколько много данных из базы будет браться)
GPU (видеокарта) - в настоящее время сервер не поддерживает расчет на видео карте (речь идет про видео карту именно сервера, не игроков), однако прибавка в скорости гарантирована (за счет того что в видео карте в сотни раз больше процессоров)



Что нового?


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

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, шаблон проектирования
Создание сервера для онлайн ММО игр на PHP ч. 12 — Очереди и параллельное программирование на CPU
PHP, Анализ и проектирование систем, Разработка игр, Сетевые технологии, Параллельное программирование, php, go, онлайн-игры, очереди, очереди задач, очереди сообщений, очереди с приоритетом, websocket, unity, ммо

Кабинет

Игры