В целом, распределённый сервер запускает множество процессов. Как только процессов становится больше, пошаговая отладка становится очень сложной, что приводит к тому, что разработка сервера в основном зависит от журналов для поиска проблемы. В обычной разработке открыто много логических процессов игры, не только медленный запуск, но и поиск проблемы и неудобство проверки проблем в куче журналов. Это ощущение очень плохое, поэтому многие годы никто не может решить эту проблему.
ET framework использует компонентный дизайн, похожий на Watch Pioneer, и всё содержимое сервера разбирается на компоненты, а компоненты, которые необходимо установить в соответствии с типом сервера, запускаются. Это немного похоже на компьютер, где компьютерный модуль разделён на память, процессор, материнскую плату и т. д., и различные части могут быть собраны в разные компьютеры, такие как домашний настольный компьютер с процессором, материнской платой, памятью, графикой, дисплеем, жёстким диском. И компании, использующие серверы, не нуждаются в дисплее и видеокарте, интернет-кафе может не нуждаться в жёстком диске и т.д. Благодаря такому дизайну все компоненты сервера могут быть связаны в процессе сервера, процесс сервера имеет все функции сервера, один процесс может использоваться как целый набор распределённых серверов. Это также похоже на компьютер, который имеет все компьютерные компоненты и может использоваться в качестве корпоративного сервера или интернет-кафе.
Распределённый сервер для разработки различных типов серверных процессов, таких как сервер входа, сервер ворот, боевой сервер, чат-сервер, сервер друзей. Традиционный режим разработки должен заранее знать, какие функции должны быть размещены на сервере. Когда функций становится всё больше и больше, например, когда чат находится на центральном сервере, их нужно разделить на отдельный сервер. Это повлечёт за собой большое количество работы по миграции кода, которая утомительна.
ET framework действительно не нужно беспокоиться о том, какая функциональность будет размещена на сервере в текущей разработке, и использует только один процесс для его разработки, а функция разрабатывается в виде компонента. Удобно ли использовать конфигурацию нескольких процессов для публикации в нескольких процессах при публикации? Как разделить сервер? Вы можете разделить его с очень небольшими изменениями кода. Разные серверы вешают на него разные компоненты?
ET framework использует C# в качестве серверной стороны, и теперь C# полностью кроссплатформенен, установив .Netcore на Linux, вы можете обойтись без изменения какого-либо кода и запустить его. Производительность, производительность .Netcore сейчас очень высока, быстрее, чем Lua, Python, JS. Игровой сервер совсем не сложен. Обычно мы используем VS для отладки разработки на Windows и выпускаем её на Linux во время выпуска. ET framework также предоставляет ключевой инструмент синхронизации, откройте unity->tools->rsync synchronization, вы можете синхронизировать код с Linux.
./Run.sh Config/StartConfig/192.168.12.188.txt
Вы можете скомпилировать и запустить сервер.
C# естественным образом поддерживает асинхронный синтаксис переменных синхронно async и await, гораздо более мощный, чем Lua и Python, и новая версия языка Python и JavaScript даже копирует совместную грамматику C#. Нет асинхронного синтаксиса для поддержки удалённых вызовов между распределёнными серверами и большим количеством серверов, и разработка будет очень хлопотной. Поэтому Java не имеет асинхронного синтаксиса, выполнение одного сервиса нормально, не подходит для крупномасштабного распределённого игрового сервера. Например:
// Отправить C2R_Ping и дождаться ответного сообщения R2C_Ping
R2C_Ping pong = await session.Call<R2C_Ping>(new C2R_Ping());
Log.Debug("recv R2C_Ping");
// Запрос mongodb для ID игрока 1 и ожидание возврата
Player player = await
``` **Game.Scene.GetComponent<DBProxyComponent>().Query<Player>(1);**
Log.Debug($"print player name: {player.Name}");
Можно увидеть, что с async await асинхронные операции между всеми серверами станут очень согласованными, без разбиения на несколько логических разделов. Это значительно упрощает разработку распределённых серверов.
Одним из преимуществ языка Erlang является прозрачный механизм передачи сообщений. Пользователю не важно, в каком процессе находится объект, и когда вы получаете ID, вы можете отправить сообщение объекту. Фреймворк ET также предоставляет механизм сообщений актора, объекту сущности нужно только повесить компоненты ActorComponent, объект становится актором, любому серверу нужно знать только ID объекта, чтобы отправить ему сообщение, совершенно не заботясь о том, на каком сервере находится эта сущность, на какой физической машине. Этот принцип на самом деле очень прост, фреймворк ET предоставляет сервер местоположения, все установленные объекты ActorComoponet будут иметь ID с регистрацией местоположения на сервере местоположения, другой сервер при отправке сообщения объекту, если вы не знаете реальное положение объекта, обратится к серверу местоположения для запроса, запросит позицию для передачи.
Hotfix — это неотъемлемый компонент функции игрового сервера, дизайн с использованием фреймворка ET можно сделать так, чтобы следить за пионером, только членами компонентов, никак, весь путь в метод расширения в hotfix DLL, при перезагрузке DLL можно перезагрузить всю логику более быстро.
Из-за ограничений IOS предыдущее горячее обновление Unity обычно использовало Lua, что приводило разработчиков Unity3d к написанию двух видов кода, до смерти хлопотно. К счастью, появилась библиотека ILRuntime, используя библиотеку ILRuntime, Unity3d может использовать язык C# для загрузки динамической библиотеки горячего обновления для теплового обновления. Одним из недостатков ILRuntime является то, что он не поддерживает отладку VS во время разработки, что немного неудобно. Фреймворк ET использует предварительно скомпилированную инструкцию ILRuntime для бесшовного переключения. ILRuntime не используется при разработке, но используется Assembly.Load для загрузки динамической библиотеки hot update, так что её можно легко использовать для одношаговой отладки VS. Во время выпуска, определяя предварительно скомпилированные инструкции ILRuntime, можно легко переключиться на использование ILRuntime для загрузки динамической библиотеки горячего обновления. Так что это легко разрабатывать и удобно.
Скачайте фреймворк ET, откройте проект сервера, вы увидите, что сервер ссылается на множество клиентских кодов, через клиентский код достигается двусторонний общий код. Например, сетевое сообщение между клиентом и сервером может совместно использовать файл с обеих сторон, добавление сообщения требует только модификации.
Фреймворк ET не только поддерживает TCP, но и поддерживает надёжный протокол UDP, поддержка UDP представляет собой пакет библиотеки ENet, использующий библиотеки ENet и hero alliance network, его характеристика — скорость, а производительность в ситуации потери пакетов в сети также очень хорошая, мы протестировали TCP в потере пакетов 5%, MoBa игра не работает, но при использовании ENet потеря 20% пакетов всё ещё не ощущается. Очень мощный.
A. И его легко проверить на занятость процессора и проверку утечки памяти, vs поставляется с аналитическими инструментами, больше не нужно беспокоиться о проверке производительности и утечки памяти. B. Использует библиотеку NLog, хиты журнала и его удобство, при нормальной разработке можно ударить по всему журналу сервера в документ, также не нужно каждый раз искать журнал документа. C. Унифицированное использование сериализации Mongodb bson, все сообщения и файлы конфигурации являются bson или JSON, а позже используйте mongodb для создания базы данных, и больше не нужно форматировать преобразование. D. Предоставляет мощный инструмент дерева поведения AI. E. Предоставляет инструмент синхронизации. F. Предоставляет инструменты настройки командной строки, настройка распределения очень проста. Серверная часть ET. Фреймворк — это мощная и гибкая распределённая серверная архитектура, которая может полностью удовлетворить потребности большинства крупных игр. Используя этот фреймворк, разработчик-клиент может самостоятельно выполнить разработку с двух сторон, сэкономить много трудовых и материальных ресурсов, а также сократить время на коммуникацию.
Способ использования:
start-guide
component-design
network-design
Chinese Tencent QQ group: 474643097 email: egametang@qq.com
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )