
Начну с того, что я написал на Rust консольный клиент для WoW. В текущий момент он работает в режиме прослушки пакетов и может быть использован, как бот. В дальнейшем планируется усовершенствовать ручную отправку пакетов. Что именно на данный момент реализовано…
…вы можете узнать уже в этом абзаце. Вход на сервер, вход в мир, поддержка конфига, парсер UpdatePacket и MovementPacket, поддержка чата — это то, что работает на данный момент.
Рассказал — «что», теперь расскажу — «как». После подключения все приходящие с сервера пакеты считываются в очередь и отправляются специальным процессорам. Каждый процессор представляет собой группу обработчиков (handler), привязанных к определенным опкодам. Каждый опкод — это информация в заголовке пакета, которая определяет, что это за пакет, какое действие он выполняет. Результат обработки в процессоре затем отправляется в исходящую очередь и, далее — на сервер в виде ответа (на самом деле, результат может быть нескольких типов, но об этом можно будет узнать, более подробно ознакомившись с проектом, т.е. — не здесь).
По сути своей, отправка пакетов из процессоров — это автоматическая реакция на запросы с сервера. Но есть и второй способ отправки: реализация специального менеджера, который уже сам будет решать, какие пакеты отправлять и когда. Таким образом, можно написать поведения для бота (AI).
Если вы заинтересованы, вот мой проект на гитхабе: https://github.com/idewave/idewave-cli.
Проект будет полезен так же тем, кто изучает Rust.
ссылка на оригинал статьи https://habr.com/ru/post/677282/
Добавить комментарий