11-11-2016, 01:41 AM
BattleServer общается с клиентом игры посредством UDP протокола. Ниже опкоды клиентских пакетов:
Подробнее узнать о структуре пакетов можно из темы «Структура, крипт и декрипт Tcp и Udp пакетов».
Начинается всё с подключения клиента к бою – это первый пакет, приходящий на сервер от игрового клиента. В ответ необходимо отправить (пустой) пакет с опкодом 0x42.
После успешного подключения клиент присылает пакет с опкодом 0x03 в начале тела которого находится так называемый «подзаголовок» - SubHead который помогает определить к какой группе событий отнести эти данные.
Рассмотрим стандартную ситуацию. Вы поймали пакет 0x03 от клиента, в теле которого содержится следующая информация:
Первые пять байт - это информация о группе данных, первый байт (00) является тем самым подзаголовком, следующие два байта (00 00) слот игрока которого затронуло данное событие (в моём случае это первый игрок красной команды), последние два байта (15 00) общая длина данных включая эти пять байт.
Следующие четыре байта (04 00 00 00) являются маской флагов событий, я для примера взял пакет с одним событием PosRotation которое содержит координаты игрока, направление взгляда и локацию. Кстати, не лишним будет упомянуть, что координаты данного пакета в формате half float.
Короткая видео запись о том, как найти флаги событий Udp пакетов:
В ответ вам необходимо отправить пакет с опкодом 0x04 и слотом 0xFF (получателями являются все слоты) с обработанными данными которые вы получили от клиента всем игрокам на карте. Если вы отправите полученный PosRotation, то все игроки будут видеть перемещение друг друга.
В State 3 у вас нет ограничений. Например выдать нужное количество HP:
Или выдать необходимое оружие:
На пакет 0x43 отвечать не требуется, а на 0x61 отправляете то, что получили от клиента.
Будут вопросы, всегда рад помочь, но как всегда, готового ничего нет. kappa
- 0x03 – основной пакет с различными событиями на карте;
- 0x41 – подключения клиента к бою;
- 0x43 – отключение клиента от боя;
- 0x61 – предполагаю, что это так званый «Ping-Pong».
Подробнее узнать о структуре пакетов можно из темы «Структура, крипт и декрипт Tcp и Udp пакетов».
Цитата:Настройка подключения (State, IP, Port) к BattleServer находится в пакете PROTOCOL_BATTLE_PRESTARTBATTLE_ACK.
Начинается всё с подключения клиента к бою – это первый пакет, приходящий на сервер от игрового клиента. В ответ необходимо отправить (пустой) пакет с опкодом 0x42.
После успешного подключения клиент присылает пакет с опкодом 0x03 в начале тела которого находится так называемый «подзаголовок» - SubHead который помогает определить к какой группе событий отнести эти данные.
Рассмотрим стандартную ситуацию. Вы поймали пакет 0x03 от клиента, в теле которого содержится следующая информация:
Код:
00 // SubHead.User
00 00 // Slot 0
15 00 // Size
04 00 00 00 // Events.PosRotation
CA 47 // X
B6 00 // Y
FE 48 // Z
BA 4D // CamX
FB D4 // CamY
03 00 // Area
Первые пять байт - это информация о группе данных, первый байт (00) является тем самым подзаголовком, следующие два байта (00 00) слот игрока которого затронуло данное событие (в моём случае это первый игрок красной команды), последние два байта (15 00) общая длина данных включая эти пять байт.
Следующие четыре байта (04 00 00 00) являются маской флагов событий, я для примера взял пакет с одним событием PosRotation которое содержит координаты игрока, направление взгляда и локацию. Кстати, не лишним будет упомянуть, что координаты данного пакета в формате half float.
Короткая видео запись о том, как найти флаги событий Udp пакетов:
В ответ вам необходимо отправить пакет с опкодом 0x04 и слотом 0xFF (получателями являются все слоты) с обработанными данными которые вы получили от клиента всем игрокам на карте. Если вы отправите полученный PosRotation, то все игроки будут видеть перемещение друг друга.
В State 3 у вас нет ограничений. Например выдать нужное количество HP:
Код:
08 // SubHead.StageInfoChara
00 00 // Slot 0
0b 00 // Size
00 10 00 00 // Events.HpSync
00 1c // HP
Или выдать необходимое оружие:
Код:
00 // SubHead.User
00 00 // Slot 0
0f 00 // Size
40 00 00 00 // Events.WeaponSync
00 // Maybe extensions
DA 97 04 00 // WeaponId
На пакет 0x43 отвечать не требуется, а на 0x61 отправляете то, что получили от клиента.
Будут вопросы, всегда рад помочь, но как всегда, готового ничего нет. kappa