mirror of https://github.com/hykilpikonna/AquaDX
132 lines
4.9 KiB
Markdown
132 lines
4.9 KiB
Markdown
|
||
# maimai2 dev notes
|
||
|
||
## Item types
|
||
|
||
| ItemKind | Name |
|
||
|----------|-------------------------|
|
||
| 1 | Nameplate |
|
||
| 2 | Title |
|
||
| 3 | Icon |
|
||
| 5 | Music Unlock |
|
||
| 6 | Music Master Unlock |
|
||
| 7 | Music Re:Master Unlock |
|
||
| 8 | Music Strong Unlock (?) |
|
||
| 9 | Character |
|
||
| 10 | Partner |
|
||
| 11 | Frame |
|
||
| 12 | Tickets |
|
||
| 13 | Mile |
|
||
| 14 | Intimate Item |
|
||
| 15 | Kaleidx Scope Key |
|
||
|
||
## Multiplayer
|
||
|
||
### Party Host/Client/Member
|
||
|
||
Manager.Party.Party/**Host.cs** : Host :
|
||
* TCP **Listen** 50100 (Accept into Member)
|
||
* UDP Broadcast 50100
|
||
* Send: StartRecruit, FinishRecruit
|
||
|
||
PartyLink/**Party.cs** : Party.Host : Exact same as Host.cs
|
||
|
||
Manager.Party.Party/**Member.cs** : Member :
|
||
* TCP Connect 50100
|
||
* Send: JoinResult, Kick, StartPlay, StartClientState, PartyMember{Info/State}, PartyPlayInfo, RequestMeasure
|
||
* Recv: RequestJoin, ClientState, ClientPlayInfo, UpdateMechaInfo, ResponseMeasure, FinishNews
|
||
|
||
PartyLink/**Party.cs** : Party.Member : Exact same as Member.cs
|
||
|
||
Manager.Party.Party/**Client.cs** : Client :
|
||
* UDP **Listen** 50100
|
||
* Recv: StartRecruit, FinishRecruit
|
||
* TCP Connect 50100
|
||
* Recv: JoinResult, Kick, StartPlay, StartClientState,PartyMember{Info/State}, PartyPlayInfo, RequestMeasure
|
||
* Send: RequestJoin, ClientState, ClientPlayInfo, UpdateMechaInfo, ResponseMeasure, FinishNews
|
||
|
||
PartyLink/**Party.cs** : Party.Client : Exact same as Client.cs
|
||
|
||
**Enums**
|
||
* **ClientStateID**: {Setup, Wait, Connect, Request, Joined, FinishSetting, ToReady, BeginPlay, AllBeginPlay, Ready, Sync, Play, FinishPlay, News, NewsEnd, Result, Disconnected, Finish, Error}
|
||
* **JoinResult**: {Success, Full, NoRecruit, Disconnect, AlreadyJoined, DifferentGroup, DifferentMusic, DifferentEventMode}
|
||
|
||
**Models**
|
||
* **MechaInfo**: IsJoin (bool), IP Address, MusicID, Entries[2], UserIDs[2], Rating[2], ...
|
||
* **RecruitInfo**: MechaInfo, MusicID, GroupID, EventModeID, JoinNumber, PartyStance, Start time, Recv time
|
||
* **MemberPlayInfo**: IP Address, Rankings[2], Achieves[2], Combos[2], Miss[2], ...
|
||
* **ChainHistory**: PacketNo (int), Chain (int)
|
||
|
||
**Commands**
|
||
* **StartRecruit/FinishRecruit**: RecruitInfo
|
||
* **JoinResult**: JoinResult (enum)
|
||
* **RequestJoin**: MechaInfo, GroupID, EventModeID
|
||
* **UpdateMechaInfo**: MechaInfo
|
||
* **Kick**: RecruitInfo, KickBy {Cancel, Start, Disconnect}
|
||
* **RequestMeasure/ResponseMeasure**: {} - Sync delay
|
||
* **StartPlay**: MaxMeasure (long), MyMeasure (long) - Sync delay
|
||
* **StartClientState**: ClientStateID (enum)
|
||
* **ClientState**: ClientStateID (enum)
|
||
* **PartyMemberInfo**: MechaInfo[2]
|
||
* **PartyMemberState**: ClientStateID[2]
|
||
* **PartyPlayInfo**: MemberPlayInfo[2], ChainHistory[10], Chain (int), ChainMiss (int), MaxChain (int), IsFullChain (bool), CalcStatus (int)
|
||
* **ClientPlayInfo**: IP Address, Count, IsValids[2], Achieves[2], Combos[2], Miss[2], ...
|
||
* **FinishNews**: IP Address, IsValids[2], GaugeClears[2], GaugeStockNums[2]
|
||
|
||
### Setting Host/Client/Member
|
||
|
||
> This might be for synchronizing event settings across different cabs,
|
||
> I'm not sure if this is relevant for multiplayer.
|
||
|
||
PartyLink/**Setting.cs** : Setting.**Host** :
|
||
* TCP **Listen** 50101 (Accept into Setting.Member)
|
||
* UDP Broadcast 50101
|
||
* Send: SettingHostAddress
|
||
* UDP **Listen** 50101
|
||
* Recv: SettingHostAddress (Check duplicate host)
|
||
|
||
PartyLink/**Setting.cs** : Setting.**Client** :
|
||
* TCP Connect 50101
|
||
* Send: SettingRequest
|
||
* Recv: SettingResponse, HeartBeat{}
|
||
* UDP **Listen** 50101
|
||
* Recv: SettingHostAddress
|
||
|
||
PartyLink/**Setting.cs** : Setting.**Member** :
|
||
* TCP Connect 50101
|
||
* Recv: SettingRequest, HeartBeat{}
|
||
* Send: SettingResponse, HeartBeat{}
|
||
|
||
**Models**
|
||
* **SettingHostAddress**: IP Address (u32), Group (int)
|
||
* **SettingRequest**: Group (int)
|
||
* **SettingResponse**: Group (int), Data (isEventMode, eventModeMusicCount, memberNumber)
|
||
|
||
### Advertise
|
||
|
||
> For finding IP addresses of other cabs and checking their latency.
|
||
|
||
PartyLink/**Advertise.cs** : Advertise.Manager :
|
||
* UDP **Listen** 50102
|
||
* Recv: AdvertiseRequest, AdvertiseResponse, AdvertiseGo
|
||
* UDP Broadcast 50102
|
||
* Send: AdvertiseRequest, AdvertiseResponse, AdvertiseGo
|
||
|
||
**Models**
|
||
* **AdvertiseRequest**: IP Address (u32), Group (int), Kind (int)
|
||
* **AdvertiseResponse**: IP Address (u32), Group (int), Kind (int)
|
||
* **AdvertiseGo**: IP Address (u32), Group (int), Kind (int), MaxUsec (long), MyUsec (long)
|
||
|
||
!! sendTo is not necessarily broadcast !!
|
||
|
||
### DeliveryChecker
|
||
|
||
PartyLink/**DeliveryChecker** : DeliveryChecker.Manager :
|
||
* UDP **Listen** 50103
|
||
* Recv: AdvocateDelivery
|
||
* UDP Broadcast 50103
|
||
* Send: AdvocateDelivery
|
||
|
||
**Models**
|
||
* **AdvocateDelivery**: IP Address (u32)
|