Принцип работы серверной части авторитарного ММО 2D РПГ сервера





  1. Матрица локации (массива доступных клеток перемещения без визуала) должна быть на сервере для понимания куда может пройти игрок и как ходит npc – для этого создано приложение Карты 
  2. У всех существ есть базовые свойства (такие как координаты, тип, анимация, ид) и неограниченного множество дополнительных свойств добавляемых в админ панели (вида: строка, число, массив)
  3. Каждый кадр запускается цикл перебора игроков и существ рядом с игроками (либо существ с положительным "радиусом жизни") и в каждом запускается цикл обработки навешанных на существо механик (в порядке определённом в админ панели) - если закончилось время ее паузы код применятся к существу
  4. Каждая механика должна выполнять лишь одно определенное действие с существом и его окружением, но может вешать другую механику на него или других существ
  5. Сервер авторитарный - если вызываемая игроком механика  предусматривает отправку доп. параметров подделка пакета не должна давать игроку каких-либо преимуществ (например: не отправлять новую координату, в которую перемещать игрока - отправлять направление движения. где сервер сам посчитает можно ли перейти в нее вернув координату)
  6. Т.к. сервер поддерживает открытый мир в любом из перечисленных кодов при запросе существ будут и существа с соседней локации (им можно вешать команды и менять свойства, изменения появятся, когда их родной сервер получит запрос и вернет аналогичный ответ)
  7. Настраивать какие пакеты куда и когда слать ненужно - просто меняйте существам данные, в конце кадра все разошлется автоматически игрокам и смежным локациям (если таковые есть)
  8. Вы можете добавлять в админ панели через WEB IDE (в тч и в SAAS версии) свой код сервера (это и то как ведет себя ИИ у NPC и какие команды может вызвать с клиента игрок) в следующих разделах:
    • В начале каждого кадра можно указать запускаемый перед обработкой существ код который может сформировать окружение в данном цикле (динамические переменные, например в зависимости от дня суток или других условий) или добавить событий существам
    • При инициализации локации можно добавить код, который выполнится перед первым вызовом обработки существ, но уже после их добавления  
    • Код игровых механик (это и команды игроков, и те механики которых из вне вызвать нельзя) – в нем можно добавлять новых существ, вешать другие свойства, менять доп. Свойства (но только существа, на котором выполняется код механики)
    • Паузы между вызовами механик. В случае с движением (отличить от телепорта можно исходя из анимации, пришедшей с пакетом координат) - пакет сразу содержит новую координату, необходимо плавно анимировать передвижение к ней с текущей в течении времени этой паузы
    • код изменения дополнительных свойств существ
      • сработает при смене значения (например, менять анимацию существа при изменении его жизней) 
      • он же запускается ДО добавления на сцену существа, но в нем нельзя менять другие компоненты (во избежание зацикливания, но можно повесить событие, которое в следующем кадре сменить)
    • У каждого типа существ (игрок, враг, нейтрал, объект) есть дополнительный код, запускаемый при:
      • добавлении на сцену (не может содержать добавление новых существ во избежание зацикливания)
      • удалении с нее, где можно автоматический добавить дефолтные события (не указывая их при создании существа, например сохранение или выход по бездействию игрока, воскрешение и регенерация существ и т.д.)
  9. Указанное выше поведение можно полностью переделать изменив код во Фреймворке (или написать свой собственный) - это можно сделать так же через личный кабинет (требуется платная подписка или покупка коробочной версии)


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







Что нового?


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

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, шаблон проектирования

Кабинет

Игры