diff --git a/docs/network diagram.jpg b/docs/network diagram.jpg new file mode 100644 index 00000000..ad187d09 Binary files /dev/null and b/docs/network diagram.jpg differ diff --git a/docs/network diagram.md b/docs/network diagram.md new file mode 100644 index 00000000..3f21d4ff --- /dev/null +++ b/docs/network diagram.md @@ -0,0 +1,155 @@ +```mermaid +flowchart LR + %% Diagram arranged specifically so output generates no terrible crossing lines. + %% AP Server + AS{Archipelago Server} + + %% CommonClient.py + CC[CommonClient.py] + AS <-- WebSockets --> CC + + %% ChecksFinder + subgraph ChecksFinder + CFC[ChecksFinderClient] + CF[ChecksFinder] + CFC <--> CF + end + CC <-- Integrated --> CFC + + %% A Link to the Past + subgraph A Link to the Past + LTTP[SNES] + end + SNI <-- Various, depending on SNES device --> LTTP + + %% Final Fantasy + subgraph Final Fantasy 1 + FF1[FF1Client] + FFLUA[Lua Connector] + BZFF[BizHawk with Final Fantasy Loaded] + FF1 <-- LuaSockets --> FFLUA + FFLUA <--> BZFF + end + CC <-- Integrated --> FF1 + + %% Ocarina of Time + subgraph Ocarina of Time + OC[OoTClient] + LC[Lua Connector] + OCB[BizHawk with Ocarina of Time Loaded] + OC <-- LuaSockets --> LC + LC <--> OCB + end + CC <-- Integrated --> OC + + %% SNI Connectors + SC[SNIClient] + SNI["Super Nintendo Interface (SNI)"] + CC <-- Integrated --> SC + SC <-- WebSockets --> SNI + + %% Super Metroid + subgraph Super Metroid + SM[SNES] + end + SNI <-- Various, depending on SNES device --> SM + + %% Super Metroid/A Link to the Past Combo Randomizer + subgraph "SMZ3" + SMZ[SNES] + end + SNI <-- Various, depending on SNES device --> SMZ + + %% Native Clients or Games + %% Games or clients which compile to native or which the client is integrated in the game. + subgraph "Native" + APCLIENTPP[Game using apclientpp Client Library] + APCPP[Game using Apcpp Client Library] + subgraph Secret of Evermore + SOE[ap-soeclient] + end + SM64[Super Mario 64 Ex] + V6[VVVVVV] + MT[Meritous] + + APCLIENTPP <--> SOE + APCLIENTPP <--> MT + APCPP <--> SM64 + APCPP <--> V6 + end + SOE <--> SNI <-- Various, depending on SNES device --> SOESNES + AS <-- WebSockets --> APCLIENTPP + AS <-- WebSockets --> APCPP + + %% Java Based Games + subgraph Java + JM[Mod with Archipelago.MultiClient.Java] + STS[Slay the Spire] + JM <-- Mod the Spire --> STS + subgraph Minecraft + MCS[Minecraft Forge Server] + JMC[Any Java Minecraft Clients] + MCS <-- TCP --> JMC + end + JM <-- Forge Mod Loader --> MCS + end + AS <-- WebSockets --> JM + + %% .NET Based Games + subgraph .NET + NM[Mod with Archipelago.MultiClient.Net] + subgraph FNA/XNA + TS[Timespinner] + RL[Rogue Legacy] + end + NM <-- TsRandomizer --> TS + NM <-- RogueLegacyRandomizer --> RL + subgraph Unity + ROR[Risk of Rain 2] + SN[Subnautica] + HK[Hollow Knight] + R[Raft] + end + NM <-- BepInEx --> ROR + NM <-- "QModLoader (BepInEx)" --> SN + NM <-- HK Modding API --> HK + NM <--> R + end + AS <-- WebSockets --> NM + + %% Archipelago WebHost + subgraph "WebHost (archipelago.gg)" + WHNOTE(["Configurable (waitress, gunicorn, flask)"]) + AH[AutoHoster] + PDB[(PonyORM DB)] + WH[WebHost] + FWC[Flask WebContent] + AG[AutoGenerator] + + AH <-- SQL --> PDB + WH -- Subprocesses --> AH + FWC <-- SQL --> PDB + WH --> FWC + AG -- Deposit Generated Worlds --> PDB + PDB -- Provide Generation Instructions --> AG + WH -- Subprocesses --> AG + end + AH -- Subprocesses --> AS + + %% Special subgraph for SoE for its SNES connection + subgraph Secret of Evermore + SOESNES[SNES] + end + + %% Factorio + subgraph Factorio + FC[FactorioClient] <-- RCON --> FS[Factorio Server] + FS <-- UDP --> FG[Factorio Games] + FMOD[Factorio Mod Generated by AP] + FMAPI[Factorio Modding API] + FMAPI <--> FS + FMAPI <--> FG + FMOD <--> FMAPI + end + CC <-- Integrated --> FC +``` \ No newline at end of file diff --git a/docs/network diagram.svg b/docs/network diagram.svg new file mode 100644 index 00000000..e7bbd2cf --- /dev/null +++ b/docs/network diagram.svg @@ -0,0 +1 @@ +FactorioSecret of EvermoreWebHost (archipelago.gg).NETJavaNativeSMZ3Super MetroidOcarina of TimeFinal Fantasy 1A Link to the PastChecksFinderFNA/XNAUnityMinecraftSecret of EvermoreWebSocketsIntegratedVarious, depending on SNES deviceLuaSocketsIntegratedLuaSocketsIntegratedIntegratedWebSocketsVarious, depending on SNES deviceVarious, depending on SNES deviceVarious, depending on SNES deviceWebSocketsWebSocketsMod the SpireTCPForge Mod LoaderWebSocketsTsRandomizerRogueLegacyRandomizerBepInExQModLoader (BepInEx)HK Modding APIWebSocketsSQLSubprocessesSQLDeposit Generated WorldsProvide Generation InstructionsSubprocessesSubprocessesRCONUDPIntegratedFactorio ServerFactorioClientFactorio GamesFactorio Mod Generated by APFactorio Modding APISNESConfigurable (waitress, gunicorn, flask)AutoHosterPonyORM DBWebHostFlask WebContentAutoGeneratorMod with Archipelago.MultiClient.NetRisk of Rain 2SubnauticaHollow KnightRaftTimespinnerRogue LegacyMod with Archipelago.MultiClient.JavaSlay the SpireMinecraft Forge ServerAny Java Minecraft ClientsGame using apclientpp Client LibraryGame using Apcpp Client LibrarySuper Mario 64 ExVVVVVVMeritousap-soeclientSNESSNESOoTClientLua ConnectorBizHawk with Ocarina of Time LoadedFF1ClientLua ConnectorBizHawk with Final Fantasy LoadedSNESChecksFinderClientChecksFinderArchipelago ServerCommonClient.pySuper Nintendo Interface (SNI)SNIClient \ No newline at end of file diff --git a/docs/network.graphml b/docs/network.graphml deleted file mode 100644 index 12624842..00000000 --- a/docs/network.graphml +++ /dev/null @@ -1,1004 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - Archipelago Server - - - - - - - - - - - - - - - Factorio - - - - - - - - - - Folder 1 - - - - - - - - - - - - - - - - - FactorioClient - - - - - - - - - - - - Factorio Server - - - - - - - - - - - - Factorio Games - - - - - - - - - - - - Generated AP Factorio Mod - - - - - - - - - - - - - - - - - WebHost (archipelago.gg) - - - - - - - - - Folder 3 - - - - - - - - - - - - - - - - - WebHost - - - - - - - - - - - - Flask WebContent - - - - - - - - - - - - AutoHoster - - - - - - - - - - - - PonyORM DB - - - - - - - - - - - - - - - - .Net - - - - - - - - - - Folder 5 - - - - - - - - - - - - - - - - - Mod with Archipelago.MultiClient.Net - - - - - - - - - - - - - - - Unity - - - - - - - - - - Folder 4 - - - - - - - - - - - - - - - - - Risk of Rain 2 - - - - - - - - - - - - Subnautica - - - - - - - - - - - - - - - - - FNA - - - - - - - - - - Folder 4 - - - - - - - - - - - - - - - - - Timespinner - - - - - - - - - - - - - - - - - - Java - - - - - - - - - - Folder 6 - - - - - - - - - - - - - - - - - - - - Minecraft - - - - - - - - - - Folder 4 - - - - - - - - - - - - - - - - - Minecraft Forge Server - - - - - - - - - - - - Any Java Minecraft Clients - - - - - - - - - - - - - - Mod with Archipelago.MultiClient.Java - - - - - - - - - - - - Slay the Spire - - - - - - - - - - - - - - CommonClient.py - - - - - - - - - - - - - - - A Link to the Past - - - - - - - - - - Folder 2 - - - - - - - - - - - - - - - - - Z3Client - - - - - - - - - - - - SNI - - - - - - - - - - - - SNES - - - - - - - - - - - - LttPClient - - - - - - - - - - - - - - - - Ocarina of Time - - - - - - - - - - 1 - - - - - - - - - - - - - - - - - Z5Client - - - - - - - - - - - - Lua Connector - - - - - - - - - - - - BizHawk with Ocarina of Time loaded - - - - - - - - - - - - - - - - RCON - - - - - - - - - - - - - - - - - - - - - - - UDP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Configurable (waitress, gunicorn, flask) - - - - - - - - - - - - Subprocess - - - - - - - - - - - - SQL - - - - - - - - - - - - - - - - - - - - - - - SQL - - - - - - - - - - - - - - - - - - - - - - QModLoader (BepInEx) - BepInEx - TsRandomizer - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - TCP - - - - - - - - - - - Mod the Spire - - - - - - - - - - - Forge Mod Loader - - - - - - - - - - - - - - - - - - - - - - - gRPC - - - - - - - - - - - - - - - - - - - - - - - Various, depends on SNES device type - - - - - - - - - - - WebSocket - - - - - - - - - - - LuaSockets - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - WebSocket - - - - - - - - - - - - Subprocesses - - - - - - - - - - - WebSocket - - - - - - - - - - - WebSocket - - - - - - - - - - - WebSocket - - - - - - - - - - - Integrated - - - - - - - - - - - Integrated - - - - - - - - - - - WebSocket - - - - - - - - - diff --git a/docs/network.png b/docs/network.png deleted file mode 100644 index 86691d2f..00000000 Binary files a/docs/network.png and /dev/null differ