Основные замечания:
ET 6 имеет огромные изменения по сравнению с ET 5, и можно сказать, что Phoenix стал Yifei. В ET 6 есть следующие удивительные функции:
Разработка ET коммерческого MMO-проекта Thousand Ancient Wind Flow успешно завершена, 64 ядра, 128 ГБ памяти, один сервис, одна физическая машина, онлайн 1,5 Вт (фактическое планирование онлайн с учётом экологических ограничений для одного сервиса — 6000 человек онлайн одновременно, потребление ЦП для 6000 человек составляет около 30%). Чтобы увеличить количество строк, онлайн-запуск выполняется в версии Debug, если вы используете версию Release для включения оптимизации, производительность также может удвоиться, достигнув онлайн 3 Вт на одной физической машине! Онлайн уже 5 месяцев, очень стабильно. Thousand Ancient Wind Flow использует фреймворк ET, разработанный с нуля, на это ушло два года, эту скорость разработки можно назвать беспрецедентной. Успешный запуск Thousand Ancient Winds доказывает, что ET способен разрабатывать любые большие игры, скорость и эффективность разработки впечатляют! Клиент-серверные технологии, используемые в Thousand Ancient Winds and Currents:
// отправляем C2R_Ping и ожидаем ответное сообщение R2C_Ping
R2C_Ping pong = await session.Call(new C2R_Ping()) as R2R_Ping;
Log.Debug("Получили R2C_Ping");
// запрашиваем MongoDB игрока с id 1 и ожидаем возвращения
Player player = await Game.Scene.GetComponent<DBProxyComponent>().Query<Player>(1);
Log.Debug($"Печатаем имя игрока: {player.Name}");
Как видите, с async await все асинхронные операции между серверами становятся очень согласованными и не должны быть разделены на несколько логических частей. Это значительно упрощает разработку распределённого сервера.
Основным преимуществом языка Erlang является наличие прозрачного механизма обмена сообщениями, при котором пользователю не нужно заботиться о том, в каком объекте находится процесс. Достаточно получить идентификатор объекта, чтобы отправлять ему сообщения.
ET Framework также предоставляет механизм обмена сообщениями между акторами. Объекту сущности нужно только повесить компонент MailBoxComponent, и объект становится актором. Любому серверу нужно знать только идентификатор объекта сущности, чтобы отправить ему сообщение, независимо от того, на каком сервере или физической машине находится объект сущности. Принцип реализации этого механизма также очень прост. ET Framework предоставляет локационный сервер, и все установленные объекты сущности с компонентом MailBoxComponent регистрируются на локационном сервере со своими идентификаторами и местоположением. Другие серверы отправляют сообщения объекту сущности, если они не знают его местоположение, сначала обращаются к локационному серверу для запроса, а затем отправляют сообщение.
Hot — это незаменимая функция игрового сервера. Используя компонентный дизайн ET Framework, можно создать дизайн Watchtower, где компоненты имеют только членов, но не методы. Все методы сделаны для расширения методов в более DLL, которые можно перезагрузить во время выполнения, чтобы обновить всю логику.
Можно использовать csharp.lua или ILRuntime для клиентского горячего обновления с небольшими изменениями. Больше не нужно использовать shit lua. Клиент может реализовать горячее обновление всей логики, включая протокол, конфигурацию, пользовательский интерфейс и так далее.
Разработку можно вести без перезапуска клиента, модифицируя код клиентской логики. Это очень удобно.
Скачайте ET Framework и откройте проект на стороне сервера. Вы увидите, что серверная сторона ссылается на множество клиентских кодов. Благодаря этим ссылкам достигается двусторонний обмен общим кодом. Например, сетевые сообщения между клиентской и серверной сторонами полностью разделяют файл, и добавление сообщения требует модификации только один раз.
ET Framework поддерживает не только TCP, но и надёжные UDP-протоколы (ENET и KCP). ENet — это сетевая библиотека, используемая в League of Legends, которая характеризуется быстрой работой и хорошей производительностью в случае потери сетевых пакетов. Мы протестировали TCP в условиях потери пакетов 5%, и игра Moba стала невозможной. Однако с использованием ENet потеря 20% пакетов всё ещё не ощущается. Очень мощный. Framework также поддерживает использование протокола KCP, который также является надёжным UDP-протоколом, предположительно превосходящим ENET по производительности. Обратите внимание, что при использовании KCP необходимо добавить собственный механизм сердцебиения, иначе через 20 секунд без получения пакета сервер будет отключён. Переключение протоколов происходит бесшовно.
Unity может экспортировать данные сцены на сторону сервера для поиска пути с помощью Recast. Это удобно для MMO. Демонстрация демонстрирует функцию трёхмерного поиска пути на стороне сервера.
This can print out any data in the process, greatly simplifying the difficulty of finding problems on the server side, open the repl method, enter repl directly in the console to enter repl mode.
Provide client-side bot framework support. A few lines of code to create a robot to log into the game. Robot pressure testing is a breeze, the robot is exactly the same as the normal player, use the robot to do a good pressure test before going online, greatly reducing the chance of crashing online.
AI framework. ET's AI framework makes AI writing even easier than UI.
Test case framework. Unlike the test cases on the market, ET's test cases are a complete game environment, for the protocol level, no need to engage in a variety of interfaces to mock. Write up very quickly.
Перевод текста запроса на русский язык:
Это может распечатать любые данные в процессе, значительно упрощая сложность поиска проблем на стороне сервера, откройте метод repl, введите repl непосредственно в консоли, чтобы войти в режим repl.
Обеспечьте поддержку клиентского бота. Несколько строк кода создают робота для входа в игру. Тестирование давления робота — это просто, робот точно такой же, как обычный игрок, используйте робота, чтобы провести хорошее тестирование давления перед выходом в сеть, что значительно снижает вероятность сбоя в сети.
Фреймворк искусственного интеллекта. Фреймворк ET делает написание ИИ ещё проще, чем пользовательский интерфейс.
Фреймворк тестовых случаев. В отличие от тестовых примеров на рынке, тестовые примеры ET представляют собой полную игровую среду, для уровня протокола не нужно взаимодействовать с различными интерфейсами для имитации. Очень быстро записывайте. Версия-Хацуми, основная лекция
ET Руководство по запуску на Mac-L, основная лекция.
Пароли: l3e3.
Серия обучающих материалов по ET Framework — Smoky Rain, версия 6.0.
Ресурсы для игр на основе ядра .NET для совместного использования.
Различные коллекции проектов на основе .NET Core.
Обсуждение в QQ группе: 474643097.
Пожертвования через PayPal!
Используйте Alipay для пожертвований этому проекту.
Ссылки:
Box2DSharp — порт Box2D на C#, очень высокая производительность.
Xasset — обеспечивает простую и надёжную среду управления ресурсами для проектов Unity.
QFramework — ваша первая простая и эффективная среда разработки для Unity3d.
ET UI Framework — реализация алфавитного интерфейса, стиль ET, различные способы распространения событий.
ETCsharpToXLua — алфавит Брат использует csharp.lua для реализации горячего обновления клиента ET.
et-6-with-ilruntime — Смоки использует ILRuntime для реализации горячего обновления клиента ET.
Luban — решение для конфигурации игры для средних и крупных проектов.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )