Path: blob/development/docs/events/windtrace/README.md
3157 views
Hide and Seek!
Documentation on how the Hide and Seek game works.
Externally dubbed: Windtrace.
Map IDs
TODO: Document the map IDs of Windtrace.
TODO: Investigate ServerGlobalValueChangeNotify
Asking Players to Play in a Co-Op Game
The client will send
DraftOwnerStartInviteReqThe server will send
DraftOwnerInviteNotifyto all clients.The server will send
DraftOwnerStartInviteRsp
Matching in a Co-Op Game
World owner talks to Gygax and begins a Windtrace game.
The packet
DraftOwnerInviteNotifyis sent to clients.Clients will respond with
DraftGuestReplyInviteReq(client-side)The server will respond with
DraftGuestReplyInviteRspThe server will respond with
DraftInviteResultNotify
Starting Windtrace
If
DraftInviteResultNotifyis a success, the server will send a series of packets.A series of
SceneEntityAppearNotifypackets.NpcTalkStateNotifyPlayerEnterSceneNotifyMultistagePlayInfoNotify
The players are then teleported to the Windtrace map in their locations.
Server will send packets to clients. (this is server boilerplate)
The server sends another
MultistagePlayInfoNotifyto clients.
Changing Avatars - Others
The server will send a
AvatarEquipChangeNotifypacket to clients.The server will send a
SceneTeamUpdateNotifypacket to clients.The server will send a
HideAndSeekPlayerSetAvatarNotifypacket to clients.
Getting Ready
The client will send
HideAndSeekSetReadyReqto the server.The server will reply with
HideAndSeekPlayerReadyNotifyto clients.The server will send
MultistagePlayInfoNotifyto clients.The server will reply with
HideAndSeekSetReadyRspto the client.If all players are ready, the server will move on to start Windtrace.
Starting Windtrace
When all players are ready, the server will send a series of packets to players.
GalleryStartNotifySceneGalleryInfoNotifyMultistagePlayInfoNotifyMultistagePlayStageEndNotifyThis will only get sent at the
1.countdown.
Notes:
GuestReplyInviteRspis sent afterDraftInviteResultNotify.
DraftOwnerInviteNotify
invite_deadline_time- This is the time when the invite expires.draft_id- The value is always3001for Windtrace.
DraftOwnerStartInviteReq
draft_id- The value is always3001for Windtrace.
DraftOwnerStartInviteRsp
draft_id- The value is always3001for Windtrace.invite_fail_info_list- A list of players who weren't invited.retcode- The response code.wrong_uid- Always0. (undocumented)
DraftGuestReplyInviteReq
draft_id- The value is always3001for Windtrace.is_agree- A boolean value for whether the client accepts the invite.
DraftGuestReplyInviteRsp
draft_id- The value is always3001for Windtrace.retcode- Response code for the request.is_agree- A boolean value for whether the server acknowledges the client's invite acceptation.
DraftInviteResultNotify
draft_id- The value is always3001for Windtrace.is_all_agree- A boolean value for whether all clients accepted the invite.
NpcTalkStateNotify
is_ban- This value is always true when entering Windtrace.
PlayerEnterSceneNotify
pos- This is where the player will be teleported to.This value depends on if the player is a hunter or a runner.
This value is set by the server and must be hardcoded/read from a JSON file.
MultistagePlayStageEndNotify
play_index- Value picked by the server. (use 1)group_id- This value is always133002121for Windtrace.
MultistagePlayInfoNotify - Initial + PostEnterSceneReq
Image Reference:

info- MultistagePlayInfo data.group_id- The value is always133002121for Windtrace.play_index- Value picked by the server. (use 1)hide_and_seek_info- Information about Windtrace.hider_uid_list- A list of UIDs (ints) of the hiders.hunter_uid- The UID (int) of the hunter.map_id- The ID of the Windtrace map.stage_type- Windtrace state.This will be
HIDE_AND_SEEK_STAGE_TYPE_PREPARE.
battle_info_map- Contains a dictionary of UID ->HideAndSeekPlayerBattleInfoobjects.skill_list- Array of 3 values of skill IDs chosen by the player.avatar_id- The ID of the avatar the player wants to use.is_ready- The player's in-game ready state.costume_id- The costume the player's avatar is wearing.
MultistagePlayInfoNotify - Picking Avatars
Image Reference:

Note: This packet matches the initial structure and data.
info.hide_and_seek_info.stage_type- This will beHIDE_AND_SEEK_STAGE_TYPE_PICK.
MultistagePlayInfoNotify - Starting Windtrace
Image Reference:

Note: This packet matches the initial structure and data.
info.hide_and_seek_info.stage_type- This will beHIDE_AND_SEEK_STAGE_TYPE_HIDE.
MultistagePlayInfoNotify - Seeking Time
Image Reference:

Note: This packet matches the initial structure and data.
info.hide_and_seek_info.stage_type- This will beHIDE_AND_SEEK_STAGE_TYPE_SEEK.
MultistagePlayInfoNotify - Finish Windtrace
Image Reference:

Note: This packet matches the initial structure and data.
info.hide_and_seek_info.stage_type- This will beHIDE_AND_SEEK_STAGE_TYPE_SETTLE.
HideAndSeekPlayerSetAvatarNotify
avatar_id- The ID of the new avatar the player wants to use.uid- The UID of the player who changed their avatar.costume_id- The costume the player's avatar is wearing.
HideAndSeekSetReadyRsp
retcode- Response code for the request.
HideAndSeekPlayerReadyNotify
uid_list- A list of UIDs (ints) of the players who are ready.
GalleryStartNotify
gallery_id- TODO: Check if this value is always7056for Windtrace.start_time- This value is always2444for Windtrace.This value is
200when displaying game end statistics.
owner_uid- The UID of the player who started the Windtrace game.player_count- The number of players in the Windtrace game.end_time- This value is always the same asstart_time.
SceneGalleryInfoNotify - Starting Windtrace
gallery_info- SceneGalleryInfo data.end_time- This value is always the same asstart_time.start_time- This value is always2444for Windtrace.This value is
200when displaying game end statistics.
gallery_id- This value is always the same asgallery_idfromGalleryStartNotify.stage- The current stage of the gallery.This will be
GALLERY_STAGE_TYPE_START.
owner_uid- The UID of the player who started the Windtrace game.hide_and_seek_info- SceneGalleryHideAndSeekInfovisible_uid_list- List of UIDs (ints) of the players who were left alive.caught_uid_list- List of UIDs (ints) of the players who have been caught.
player_count- The amount of players in the Windtrace game.pre_start_end_time- This value is always0for Windtrace.
HideAndSeekSettleNotify
reason- The reason for the game ending.winner_list- A list of UIDs (ints) of the players who won the game.settle_info_list- HideAndSeekSettleInfo data.This is a list of players who participated in the game.
HideAndSeekSettleInfo
card_list- A collection ofExhibitionDisplayInfoIf unknown: hardcode the specified values.

These values are repeated during testing.
uid- The UID of the player who participated in the game.nickname- The player's nickname.head_image- This value is always0.online_id- This value is always blank.profile_picture-ProfilePictureobject.play_index- Value picked by the server. (use 1)stage_type- The stage type. (inconclusive; TODO)cost_time- The amount of time the player took to complete the game.score_list- A list of player scores.
ExhibitionDisplayInfo
id- The ID of the reward.param- The amount of the reward given.detail_param- This value is mostly 0.This value matches param when the reward is of the amount of time spent playing. (participation reward)