1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/ondaly-ET

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Китайский

QQ группа для обсуждения: 474643097

email: egametang@qq.com

ET форум

Магазин ET

Онлайн видеоурок по ET 6.0 (https://edu.uwa4d.com/course-intro/1/375)

Руководство по запуску (https://github.com/egametang/ET/blob/master/Book/1.1RunGuide.md)

Основные замечания:

  1. Исправления с помощью HotfixView — это чистая логика, не должны иметь полей в классе, иначе исправление будет потеряно.
  2. ETTask и либо вызов Coroutine, либо await, открытие окна списка ошибок в VS, не используйте эти два метода, они будут отмечены как проблема, хотя ни await, ни Coroutine не вызовут проблем при компиляции, но вы потеряете исключения, что очень опасно.
  3. Не используйте виртуальные функции, используйте логическое распределение вместо них.
  4. Пожалуйста, не используйте наследование, за исключением наследования сущностей, используйте компоненты вместо этого.

ET 6 имеет огромные изменения по сравнению с ET 5, и можно сказать, что Phoenix стал Yifei. В ET 6 есть следующие удивительные функции:

  1. Полное горячее обновление клиентского логического кода (на основе ILRuntime) на iOS, нет частей, которые нельзя было бы изменить.
  2. Клиент и сервер могут быть перезагружены «на горячую», разработка без перезапуска клиента и сервера позволяет изменять логический код, разработка чрезвычайно удобна.
  3. Роботизированная платформа, разделение логики и производительности клиента ET 6, программа робота напрямую использует код уровня клиентской логики для нагрузочного тестирования, требуется лишь небольшое количество кода для создания робота, легко тестировать сервер под нагрузкой.
  4. Платформа тестовых случаев, использование кода уровня клиентской логики для написания модульных тестов, каждый модульный тест представляет собой полную игровую среду, без всевозможных неприятных макетов.
  5. AI-фреймворк, более удобный, чем дерево поведения, писать AI проще, чем UI.
  6. Новая архитектура сервера, чрезвычайно красивая.
  7. Интранет и экстранет KCP-сеть, высокая производительность, с модулем мягкой маршрутизации, может предотвратить все виды сетевых атак.

Разработка 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:

  1. Динамические копии и сублинии, выделение по требованию, переработка после использования.
  2. Разделение линий, объединение линий, разделение линий при меньшем количестве людей объединяет несколько линий. Функция объединения линий редко встречается в других MMO-играх.
  3. Бесшовное переключение сцен между клиентом и сервером, то есть технология бесшовного мира.
  4. Копии между службами, поле боя между службами.
  5. Интеграция фронтэнда и бэкэнда, использование клиентского кода для разработки робота для нагрузочных испытаний сервера, четыре 24-ядерные машины легко имитируют 1W человек для выполнения задачи.
  6. Разнообразный дизайн AI, использование новой разработки AI-фреймворка ET, так что разработка AI так же проста, как написание UI.
  7. Платформа тестовых примеров, большинство важных систем Thousand Ancient Wind Flow имеют написанные тестовые примеры, в отличие от тестовых примеров на рынке, каждый тестовый пример Thousand Ancient Wind Flow представляет собой полноценную игровую среду, для уровня протокола не нужно заниматься различными интерфейсами для имитации. Пишется очень быстро.
  8. Реализация Aoi девятиугольной сетки, динамическая настройка игроков для снижения нагрузки на сервер. Большое количество серверов без поддержки асинхронного синтаксиса сильно затруднит разработку. Так, в Java нет асинхронного синтаксиса, и разработка одного сервиса подходит для небольших проектов, но не для больших распределённых игровых серверов. Например:
// отправляем 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 все асинхронные операции между серверами становятся очень согласованными и не должны быть разделены на несколько логических частей. Это значительно упрощает разработку распределённого сервера.

5. Предоставить механизм сообщений, подобный акторам Erlang

Основным преимуществом языка Erlang является наличие прозрачного механизма обмена сообщениями, при котором пользователю не нужно заботиться о том, в каком объекте находится процесс. Достаточно получить идентификатор объекта, чтобы отправлять ему сообщения.

ET Framework также предоставляет механизм обмена сообщениями между акторами. Объекту сущности нужно только повесить компонент MailBoxComponent, и объект становится актором. Любому серверу нужно знать только идентификатор объекта сущности, чтобы отправить ему сообщение, независимо от того, на каком сервере или физической машине находится объект сущности. Принцип реализации этого механизма также очень прост. ET Framework предоставляет локационный сервер, и все установленные объекты сущности с компонентом MailBoxComponent регистрируются на локационном сервере со своими идентификаторами и местоположением. Другие серверы отправляют сообщения объекту сущности, если они не знают его местоположение, сначала обращаются к локационному серверу для запроса, а затем отправляют сообщение.

6. Обеспечить непрерывную динамическую логику обновления сервера

Hot — это незаменимая функция игрового сервера. Используя компонентный дизайн ET Framework, можно создать дизайн Watchtower, где компоненты имеют только членов, но не методы. Все методы сделаны для расширения методов в более DLL, которые можно перезагрузить во время выполнения, чтобы обновить всю логику.

7. Клиент использует C# для горячего обновления, переключение одним ключом

Можно использовать csharp.lua или ILRuntime для клиентского горячего обновления с небольшими изменениями. Больше не нужно использовать shit lua. Клиент может реализовать горячее обновление всей логики, включая протокол, конфигурацию, пользовательский интерфейс и так далее.

8. Горячая перезагрузка на стороне клиента

Разработку можно вести без перезапуска клиента, модифицируя код клиентской логики. Это очень удобно.

9. Клиентская и серверная стороны используют один язык и общий код

Скачайте ET Framework и откройте проект на стороне сервера. Вы увидите, что серверная сторона ссылается на множество клиентских кодов. Благодаря этим ссылкам достигается двусторонний обмен общим кодом. Например, сетевые сообщения между клиентской и серверной сторонами полностью разделяют файл, и добавление сообщения требует модификации только один раз.

10. Бесшовное переключение протоколов KCP ENET TCP Websocket

ET Framework поддерживает не только TCP, но и надёжные UDP-протоколы (ENET и KCP). ENet — это сетевая библиотека, используемая в League of Legends, которая характеризуется быстрой работой и хорошей производительностью в случае потери сетевых пакетов. Мы протестировали TCP в условиях потери пакетов 5%, и игра Moba стала невозможной. Однако с использованием ENet потеря 20% пакетов всё ещё не ощущается. Очень мощный. Framework также поддерживает использование протокола KCP, который также является надёжным UDP-протоколом, предположительно превосходящим ENET по производительности. Обратите внимание, что при использовании KCP необходимо добавить собственный механизм сердцебиения, иначе через 20 секунд без получения пакета сервер будет отключён. Переключение протоколов происходит бесшовно.

11. Функция трёхмерного поиска пути Recast

Unity может экспортировать данные сцены на сторону сервера для поиска пути с помощью Recast. Это удобно для MMO. Демонстрация демонстрирует функцию трёхмерного поиска пути на стороне сервера.

12. Поддержка repl на стороне сервера, также можно динамически выполнять новое Текст запроса:

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.

  1. 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.

  2. AI framework. ET's AI framework makes AI writing even easier than UI.

  3. 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.

  1. Обеспечьте поддержку клиентского бота. Несколько строк кода создают робота для входа в игру. Тестирование давления робота — это просто, робот точно такой же, как обычный игрок, используйте робота, чтобы провести хорошее тестирование давления перед выходом в сеть, что значительно снижает вероятность сбоя в сети.

  2. Фреймворк искусственного интеллекта. Фреймворк ET делает написание ИИ ещё проще, чем пользовательский интерфейс.

  3. Фреймворк тестовых случаев. В отличие от тестовых примеров на рынке, тестовые примеры 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 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/ondaly-ET.git
git@api.gitlife.ru:oschina-mirror/ondaly-ET.git
oschina-mirror
ondaly-ET
ondaly-ET
release6.0