Jump to content
Sign in to follow this  
nyarum

Noterius - проект эмулятора сервера

Recommended Posts

Noterius - это проект игрового эмулятора, который будет являться НЕ точной копией официального сервера.
Почему "НЕ точной"? Потому что нет объективного смысла делать полное подобие PKO, TOP, Piratia и XHDW. Остальное будет на усмотрение других разработчиков, делаете форки и разрабатываете эмулятор под себя, там будут все удобства для этого.

На правах рекламы и развития опен-сорса - https://github.com/Nyarum/noterius
Канал в телеграме - t.me/noterius
Скоро будет полное README по запуску и текущему прогрессу в виде issue.

Из предисловия, что было раньше (Хоть это и называлось new generation architecture):
- Хреновая работа с базой данных
- Ниочемная работа с логикой и смешивание это с парсером пакетов
- Никакого заложенного будущего расширения эмулятора
- Множество багов связанных с обработкой пакетов
- Производительность страдающая из-за самой основы

Что уже есть сейчас:
- Полностью акторная модель, построенная при помощи protoactor в Go
- Все главные сетевые элементы в виде акторов (ConnectReader, PacketReader, PacketSender) умеют обрабатывать себя и данные в 5 конкурентных потоков, если того потребует нагрузка.
- Правильная обработка пакетов
- Использование интерфейсов везде, где их можно внедрить для удобного unit тестирования
- Работа с базой данных построенная на обычном query билдере
- Правильное пробрасывание всех корневых элементов, без использования лишних аллокаций в коде

Какие акторы существуют уже сейчас:

  1. ConnectReader - принимает на себя чистые байты, проводит их по network пекеджу для разбора пакетов и отправляет девственный пакет с разобранными филдами в PacketReader
  2. PacketReader - принимает на себя чистые структуры, свитчит по ним и в зависимости от структуры делает дальнейшие действия. Минимум логики - больше роутинга в главные акторы.
  3. PacketSender - пушилка пакетов в коннект, с процедурой маршалинга структуры в байтики.
  4. Player - вся логическая обработка игрового аккаунта и персонажа.
  5. World - обработка самого мира, как следует из названия, будет так же следить за всеми передвижениями игроков, от чего в будущем он может делать различные действия на свое усмотрение.
     

Welcome to the new world, guys :3

Edited by nyarum
  • Like 3

Share this post


Link to post
Share on other sites

Привет, @nyarum

 

Если не трудно, пиши проще. Не все знают что такое акторная модель, конкурентные потоки, юнит-тесты, аллокации и т.д., какие приемы и технологии ты используешь при разработке. Будет классно, если ты коротко и просто расскажешь обо всем этом.

И как всегда - удачи с разработкой, держи нас в курсе событий. 

 

Я видел ты в Discord узнавал про серверы с выключенным шифрованием для того, чтобы отсниффать пакеты. В принципе в этом нет необходимости, можно посмотреть структуру пакетов в исходниках сервера и клиента, которые мы выложили год назад:

 

  • Like 1

Share this post


Link to post
Share on other sites
5 hours ago, V3ct0r said:

Привет, @nyarum

 

Если не трудно, пиши проще. Не все знают что такое акторная модель, конкурентные потоки, юнит-тесты, аллокации и т.д., какие приемы и технологии ты используешь при разработке. Будет классно, если ты коротко и просто расскажешь обо всем этом.

И как всегда - удачи с разработкой, держи нас в курсе событий. 

 

Я видел ты в Discord узнавал про серверы с выключенным шифрованием для того, чтобы отсниффать пакеты. В принципе в этом нет необходимости, можно посмотреть структуру пакетов в исходниках сервера и клиента, которые мы выложили год назад:

 

 

По ходу разработки, обязательно :)
Сорсы - это хорошо, с ними намного стало проще. Но реальные данные с сервера для сравнения мало, что заменит.

Share this post


Link to post
Share on other sites

Сейчас встал важный вопрос на пути эмулятора
Я описал его тут - https://github.com/Nyarum/noterius/issues/5 и желательно обсуждать его там же.

В переводе сюда, эмулятор может использовать LUA для скриптов, но тогда мы
- Получим низкую производительность самой логики
- Ошибки со скриптами только при их исполнении

В плюсах только то, что
- Если изменили скрипты, то сам сервер не потребует перекомпиляции
- Знакомый скриптовой язык

Но так же можно не внедрять LUA и описывать логику на самом Go, плюсы и минусы соответственно меняются между собой.
Кто что думает?

Share this post


Link to post
Share on other sites
On 8/10/2017 at 10:22 AM, BETEP/macs509 said:

Чем сложнее, тем меньше людей будут использовать

 

Предполагаю, что сам по себе эмулятор, в рабочем виде и с покрытой документацией будет иметь интерес для людей.
Остается лишь вопрос в том, чтобы получить респонс, чего больше люди хотят увидеть на основе плюсов/минусов того или иного подхода, ибо написание скриптов по сложности не будет выше, чем на LUA в официальном сервере, API доступный из скриптов будет максимально понятный для управления игровым миром.

И так как из мира уберутся такие слабодоступные услуги, как защита сервера. Сейчас в процессе стараюсь писать так, чтобы не было вариантов обойти ту или иную сетевую систему, даже с такой популярной проблемой, как дюп или множественный дос пакетами.

Edited by nyarum

Share this post


Link to post
Share on other sites

Потихоньку и полегоньку развиваем эмулятор, описал 2 вики страницы для уточнений по новому виду issue
https://github.com/Nyarum/noterius/wiki/Error-enums
https://github.com/Nyarum/noterius/wiki/Network-package

И одно issue на покрытие пакета "Создание персонажа" - https://github.com/Nyarum/noterius/issues/7
Если кто-то будет браться за помощь, пишите мне в дискорде по любому вопросу. Сейчас пока что есть 1 парень из англоязычного сегмента, который пожелал этим заниматься.

Чтобы начать работу, форкаете эмулятор к себе в репозиторий и начинаете описывать.
После создаете пулл реквест в основном репозитории с вашего форка, я проверяю и мержу.

Все issues и вики страницы я буду описывать только на английском, для того, чтобы сохранить понимание между всеми участниками гитхаба.

Edited by nyarum

Share this post


Link to post
Share on other sites

Обновил ридми, теперь каждый может установить эмулятор к себе свободно.
Релизы в бинарниках будут не раньше, чем через месяц. Сейчас их выпускать смысла особого нету.

Вместе с этим покрыл полностью пакеты связанные с этапом персонажей, входа в мир пока нету.

  • Like 2

Share this post


Link to post
Share on other sites

Ребят, кто заинтересован в проекте. Сейчас пишу эмулятор на стадии разбора бинарей клиента, ибо структура каждого не совсем точно понятна.

Отпишите тут, если кто-то хочет помочь и потом соберем телеграмм группу / дискорд.

  • Like 1

Share this post


Link to post
Share on other sites
В 02.10.2017 в 02:32, nyarum сказал:

Ребят, кто заинтересован в проекте. Сейчас пишу эмулятор на стадии разбора бинарей клиента, ибо структура каждого не совсем точно понятна.

Отпишите тут, если кто-то хочет помочь и потом соберем телеграмм группу / дискорд.

Братан добавляй меня.

Share this post


Link to post
Share on other sites

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

Заходите, кто желает набраться опыта или увидеть в свете играбельный эмулятор - https://discord.gg/PqbdtUf
Никого не съем.

Share this post


Link to post
Share on other sites

Привет всем, не буду давать дальнейшие ложные надежды на данный эмулятор.

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

Репозиторий провисит еще неделю и потом я его удалю, делайте форки, если кому-то он останется нужным.

Edited by nyarum

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×