[+] Devnotes

pull/132/head
Azalea 2025-03-21 16:47:19 -04:00
parent da648190db
commit cb039df33e
2 changed files with 135 additions and 0 deletions

View File

@ -0,0 +1,26 @@
# Ongeki dev notes
## Item types
| ItemKind | Name |
|----------|----------------|
| 1 | Card |
| 2 | NamePlate |
| 3 | Trophy |
| 4 | LimitBreakItem |
| 5 | AlmightyJewel |
| 6 | Money |
| 7 | Music |
| 8 | ProfileVoice |
| 9 | Present |
| 10 | ChapterJewel |
| 11 | GachaTicket |
| 12 | KaikaItem |
| 13 | ExpUpItem |
| 14 | IntimateUpItem |
| 15 | BookItem |
| 16 | SystemVoice |
| 17 | Costume |
| 18 | Medal |
| 19 | Attachment |
| 20 | UnlockItem |

View File

@ -20,3 +20,112 @@
| 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, StartClientStatePartyMember{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)