From cb039df33e1201ffdf4d9bd2f33082b2bc6d1b2c Mon Sep 17 00:00:00 2001 From: Azalea <22280294+hykilpikonna@users.noreply.github.com> Date: Fri, 21 Mar 2025 16:47:19 -0400 Subject: [PATCH] [+] Devnotes --- docs/dev/ongeki_dev_notes.md | 26 +++++++++ docs/dev/sinmai_dev_notes.md | 109 +++++++++++++++++++++++++++++++++++ 2 files changed, 135 insertions(+) create mode 100644 docs/dev/ongeki_dev_notes.md diff --git a/docs/dev/ongeki_dev_notes.md b/docs/dev/ongeki_dev_notes.md new file mode 100644 index 00000000..eb0d6ad0 --- /dev/null +++ b/docs/dev/ongeki_dev_notes.md @@ -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 | diff --git a/docs/dev/sinmai_dev_notes.md b/docs/dev/sinmai_dev_notes.md index a5c84083..63c41ef6 100644 --- a/docs/dev/sinmai_dev_notes.md +++ b/docs/dev/sinmai_dev_notes.md @@ -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, 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)