WorldLink maimai DX Online C2C Multiplayer Mod

Warning
This mod is in public testing, please report any bugs you find.
- Install MelonLoader
- Download WorldLink.dll, put it in Mods
- Download WorldLink.toml
- Edit
WorldLink.toml
to select a lobby server- LobbyUrl: Required. Choose from
{asia, euro, usw, use, cn}.link.aquadx.net
- RelayUrl: Optional. Custom relay server URL (e.g.,
"myrelay.example.com:20101"
). If not specified, uses relay info from lobby server
- LobbyUrl: Required. Choose from
- Start the game
- Go to launcher settings in the top right
- Click on the "mods" tab
- Scroll down to find WorldLink, enable it
- Fill in the WorldLink URL
- Start the game
- You and your friend both connect to the same lobby
- One person select a song and difficulty, scroll to the left, and click recruit
- The other person join in the song-select menu
If you want to self-host a server to play with your friends, read the Self Host Guide.
This project consists of two main components:
- Server (Kotlin/Ktor) - Handles multiplayer functionality
- Client Mod (C#) - DLL for the MAI2 game
- Java 17+ for building the server
- .NET Framework 4.7.2 for building the client mod
- MAI2 game DLLs (see below)
The server is a Kotlin application using Ktor framework.
# Build the server (excluding tests)
./gradlew build -x test
# The JAR file will be created at:
# build/libs/worldlinkd.jar
The client mod requires game-specific DLLs that are not included in the repository.
You need to obtain these DLLs from your MAI2 installation:
mod/Libs/Assembly-CSharp.dll
- Main game assemblymod/Libs/Assembly-CSharp-firstpass.dll
- Game assembly (first pass)mod/Libs/AMDaemon.NET.dll
- AMDaemon library
# Navigate to the mod directory
cd mod
# Build the mod
dotnet build
# The DLL will be created at:
# bin/Debug/net472/WorldLink.dll
Copy the built WorldLink.dll
to your MAI2 game's Mods
folder.
-
Server Development:
- Modify server code in
src/main/kotlin/
- Run
./gradlew build -x test
to rebuild - Test with
java -jar build/libs/worldlinkd.jar
- Modify server code in
-
Client Mod Development:
- Modify mod code in
mod/WorldLink/
- Run
dotnet build
from themod/
directory - Copy the new DLL to your game's Mods folder
- Restart the game to test changes
- Modify mod code in
worldlinkd/
├── src/main/kotlin/ # Server source code
│ ├── Application.kt # Main server application
│ ├── FutariLobby.kt # Lobby server logic
│ ├── FutariRelay.kt # Relay server logic
│ └── FutariTypes.kt # Data structures
├── mod/ # Client mod source code
│ ├── WorldLink/ # Main mod code
│ │ ├── FutariPatch.cs # Main patch logic
│ │ ├── FutariClient.cs # Client communication
│ │ ├── FutariExt.cs # Utility extensions
│ │ └── FutariTypes.cs # Data structures
│ ├── Libs/ # Game DLLs (not included)
│ └── WorldLink.csproj # Mod project file
└── build.gradle.kts # Server build configuration
- Missing DLLs: Ensure all required game DLLs are in
mod/Libs/
- Java version: Make sure you're using Java 17 or higher
- .NET Framework: Ensure .NET Framework 4.7.2 is installed
- Server won't start: Check if port 20100 is available
- Mod not loading: Verify the DLL is in the correct Mods folder and do not use dirty packs(脏脏包)
- Connection issues: Check firewall settings and server configuration
For more detailed information about the modding process, see the Self Host Guide.