@MrDickson

Как разработать игровой сервер wow/lineage и так далее?

Здравствуйте, товарищи!
Собственно вопрос: как создать игровой сервер wow/lineage?
Дело в том, что везде пинают изучать что-то, а что именно - сами не знают :)
Есть огромное желание, а направление - неизвестно.
Можете поэтапно написать приблизительно какие сферы надо изучить, чтобы разработать с нуля сервер? Я говорю именно о реверс-инжинеринге официальных серверов.
Знаю, что нужно разбираться в АСМ, чтобы найти всякие опкоды для пакетов и декрипты, уметь разбирать пакетные данные, понимать архитектуру официальных серверов...? а дальше то что?
Пытался понять на примере одной ММОРПГ, как обстоят дела с этим - проблематично, хотя понимаю что там к чему подключается и зачем эта библиотека нужна, но знаний все-таки недостаточно, чтобы написать с нуля своё.
Занимался одно время разработкой эмулятора Aion, довольно-таки неплохо выходило переписывать/дописывать/писать определенные моменты в поведении игрового сервера, но пакетный уровень и т.д. по нулям
  • Вопрос задан
  • 1644 просмотра
Решения вопроса 1
@asd111
1. Нужно уметь ловить пакеты с твоего компьютера на сервер и обратно. Для этого есть специальные программы - снифферы, или анализаторы пакетов сети, другими словами wireshark, tcpdump и т.п.
А с помощью дебагера(IDA pro) можно узнать какой код выполняется при нажатии например на кнопку "войти".
2. Нужно уметь дешифровывать пакет если он зашифрован.
3. Нужно знать какой пакет когда отправляется, т.е. что отправляется при логине, что отправляется во время игры и т.п.
4. На основе протокола, полученного из трёх предыдущих действий пишешь свой сервер, который посылает нужные пакеты.

Думаю по каждой известной игре уже есть готовые хотя бы наполовину протоколы серверов и т.п. и есть готовые хотя бы наполовину сервера и их разработчики - общайся побольше с ними, узнаешь много нового и сможешь им помочь.
Например вот исходники одного изв серверов WOW https://github.com/mangoszero/server
Вот немного о протоколе WOW dvlabs.tippingpoint.com/blog/2007/06/28/decoding-t...

Для реверс инжиниринга нужно уметь использовать IDA Pro и т.п. дебагеры-дизассемблеры
Вот пара статей как примерно пользоваться такими инструментами
https://habrahabr.ru/users/drmefisto/topics/
Фокус в том что можно поискать в исходниках клиента что происходит при нажатии на кнопку "войти" и т.п.
В статьях у DrMefisto есть про то как делать кейгены или быстро крякать - принцип тот же. Вот в этой статье довольно подходящий пример https://habrahabr.ru/post/255935/

Для начала попробуй повторить то что показывает DrMefisto - это даст тебе большее понимание что и как, затем возьми какую нибудь казульную игру, типа фермы какой нибудь, которая отправляет пакеты на свои сервера и попробуй получить все пакеты от клиента к серверу и наоборот с помощью wireshark.
Затем попробуй сделать свой сервер к которому можно подключить клиент.

Возможно есть способы слушать с помощью дебагера какие команды выполняет клиент(а значит узнать какие пакеты отправляет) при нажатии на ту или иную кнопку во время игры, но тут я не силен.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Начните с калькулятора. А то сами говорите, что знаний 0, а на проект замахиваетесь, который не каждый разработчик с большим опытом осилит.

Тогда начинайте с построения UML-диаграммы конечного автомата сервера. Какие пакеты может принять в определённом состоянии, какие побочные эффекты происходят, в какие состояния может перейти и т.д.

Например когда клиент находится на этапе выбора персонажа, сервер не может принять пакет с данными о перемещении, атаки, покупки и т.д. Вот это и нужно отразить на диаграмме. Тогда при разработке логики вам намного будет проще ориентироваться.
Ответ написан
AxisPod
@AxisPod
Подобный вопрос говорит о одном - рано вам о этом еще думать.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы