SkillAgentSearch skills...

Muonline

No description available

Install / Use

/learn @bernatvadell/Muonline
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

MuOnline Clone

<div align="center">

.NET Version MonoGame License Build Status Ask DeepWiki

A cross-platform MuOnline client implementation built with .NET 10 and MonoGame framework.

FeaturesQuick StartBuildingArchitectureContributing

</div>

⚠️ Educational Purpose Disclaimer This project is created strictly for educational and research purposes to explore game client architecture, network protocols, and cross-platform development with .NET and MonoGame. This is a non-commercial, open-source learning project that demonstrates reverse engineering and game development concepts.


Demo

https://youtu.be/_ekXCQI2byE


🎮 Features

  • 🌐 Cross-Platform Support - Windows (OpenGL/DirectX), Linux, macOS, Android, and iOS
  • 🎨 Full 3D Rendering - MonoGame-based graphics engine with dynamic lighting and effects
  • 🎯 Dual Graphics Backends - Choose between OpenGL (compatibility) or DirectX 11 (performance)
  • 📦 Original Data Compatibility - Supports Season 20 (1.20.61) game data files
  • 🔌 Network Protocol - Season 6 (S6) protocol implementation
  • 🎯 Multiplayer Ready - Full networking stack with packet handling system
  • 🖼️ Custom UI System - Resolution-independent UI with virtual coordinates
  • 🗺️ Terrain Rendering - Heightmap-based terrain with walkability attributes
  • 🏃 Character Animation - BMD skeletal animation system
  • 💡 Real-Time Lighting - Dynamic lighting with shader support
  • ⚡ Performance Optimized - Multi-threaded packet processing with main thread scheduling

📋 Prerequisites

Required Software

| Component | Version | Download Link | |-----------|---------|---------------| | .NET SDK | 10.0+ | Download | | Git | Latest | Download | | MuOnline Data | Season 20 (1.20.61) | Download | | Data S6 Patch | Season 6 | Download |

Platform-Specific Requirements

<details> <summary><b>⊞ Windows</b></summary>
  • Windows 10/11 (64-bit)
  • Visual Studio 2022 (optional, for IDE support)

Graphics Backend Options:

  • OpenGL (MuWinGL) - Better hardware compatibility, works on older GPUs
  • DirectX 11 (MuWinDX) - Better performance on modern hardware, Windows-only

Recommended: Try DirectX first for best performance. Use OpenGL if you encounter graphics issues or have older hardware.

</details> <details> <summary><b>🐧 Linux</b></summary>
  • Compatible with most x64 distributions
  • Required packages: libgdiplus, libopenal-dev
# Ubuntu/Debian
sudo apt-get install libgdiplus libopenal-dev

# Fedora
sudo dnf install libgdiplus openal-soft-devel
</details> <details> <summary><b>🍎 macOS</b></summary>
  • macOS 11.0+ (Big Sur or later)
  • Xcode Command Line Tools
xcode-select --install
</details> <details> <summary><b>📱 Android</b></summary>
  • Android SDK (API Level 21+)
  • Java Development Kit (JDK) 11 or later
</details> <details> <summary><b>📱 iOS</b></summary>
  • macOS with Xcode installed
  • Valid Apple Developer account (for device deployment)
  • iOS 10.0+ target
</details>

🚀 Quick Start

1️⃣ Clone the Repository

git clone https://github.com/xulek/muonline.git
cd muonline

2️⃣ Download Game Data

This client requires Season 20 (1.20.61) client data files for assets (models, textures, maps) but communicates using Season 6 protocol.

  1. Download: MU Red 1.20.61 Full Data
  2. Extract the archive to a location on your system
  3. Note the path to the Data folder

3️⃣ Configure Data Path

Open Client.Main/Constants.cs and update line 25:

// Windows
public static string DataPath = @"C:\Games\MU_Red_1_20_61_Full\Data";

// Linux/macOS
public static string DataPath = "/home/user/Games/MU_Red_1_20_61_Full/Data";

4️⃣ Configure Server Settings

Edit Client.Main/appsettings.json:

{
  "MuOnlineSettings": {
    "ConnectServerHost": "localhost",
    "ConnectServerPort": 44405,
    "ProtocolVersion": "Season6",
    "ClientVersion": "1.04d",
    "ClientSerial": "0123456789ABCDEF"
  }
}

5️⃣ Set Up Server (Recommended: OpenMU)

This client is designed to work with OpenMU, an open-source MuOnline server implementation.

Quick Start with Docker:

# Download and run OpenMU server
curl -o docker-compose.yml https://raw.githubusercontent.com/MUnique/OpenMU/master/deploy/all-in-one/docker-compose.yml
docker-compose up -d

The server will be available at localhost:44405 (matches default client configuration).

Alternative: You can also connect to any Season 6 compatible MuOnline server.

6️⃣ Restore Tools & Build

# Restore .NET tools
dotnet tool restore

# Build the solution
dotnet build

7️⃣ Run the Client

# Windows (DirectX 11 - Recommended)
dotnet run --project ./MuWinDX/MuWinDX.csproj -f net10.0-windows -c Debug -p:MonoGameFramework=MonoGame.Framework.WindowsDX

# Windows (OpenGL - For compatibility)
dotnet run --project ./MuWinGL/MuWinGL.csproj -f net10.0-windows -c Debug -p:MonoGameFramework=MonoGame.Framework.DesktopGL

# Linux
dotnet run --project ./MuLinux/MuLinux.csproj -f net10.0 -c Debug

# macOS
dotnet run --project ./MuMac/MuMac.csproj -f net10.0 -c Debug

🔨 Building the Project

Project Structure

muonline/
├── Client.Data/           # Data file readers (BMD, ATT, MAP, OZB, etc.)
├── Client.Main/           # Core game engine, networking, UI, game logic
│   ├── Client.Main.Shared.props   # shared settings
│   ├── Client.Main.*.csproj      # platform variants: desktop/windows/android/ios
├── Client.Data/           # data processing (platform variants)
│   ├── Client.Data.Shared.props
│   ├── Client.Data.*.csproj
├── Client.Editor/         # Asset editor tool
├── MuWinGL/               # Windows OpenGL executable (MonoGame.Framework.DesktopGL)
├── MuWinDX/               # Windows DirectX 11 executable (MonoGame.Framework.WindowsDX)
├── MuAndroid/             # Android executable project
├── MuIos/                 # iOS executable project
├── MuLinux/               # Linux executable project
└── MuMac/                 # macOS executable project

Development Builds (per head)

For predictable restores and to avoid missing workloads, build/clean one head at a time.

# Windows DirectX (Recommended)
dotnet clean MuWinDX/MuWinDX.csproj && dotnet build MuWinDX/MuWinDX.csproj -c Debug -p:MonoGameFramework=MonoGame.Framework.WindowsDX

# Windows OpenGL
dotnet clean MuWinGL/MuWinGL.csproj && dotnet build MuWinGL/MuWinGL.csproj -c Debug -p:MonoGameFramework=MonoGame.Framework.DesktopGL

# Linux
dotnet clean MuLinux/MuLinux.csproj && dotnet build MuLinux/MuLinux.csproj -c Debug

# macOS
dotnet clean MuMac/MuMac.csproj && dotnet build MuMac/MuMac.csproj -c Debug

# Android (requires Android workload)
dotnet workload restore
dotnet clean MuAndroid/MuAndroid.csproj && dotnet build MuAndroid/MuAndroid.csproj -c Debug

# iOS (requires macOS + Xcode + iOS workload)
dotnet workload restore
dotnet clean MuIos/MuIos.csproj && dotnet build MuIos/MuIos.csproj -c Debug

Production Builds

Build outputs are placed in bin/Release/ directories.

Windows

# DirectX 11 (Recommended for modern hardware)
dotnet publish ./MuWinDX/MuWinDX.csproj -c Release -r win-x64 -o publish-dx -p:MonoGameFramework=MonoGame.Framework.WindowsDX

# OpenGL (Better hardware compatibility)
dotnet publish ./MuWinGL/MuWinGL.csproj -c Release -r win-x64 -o publish-gl -p:MonoGameFramework=MonoGame.Framework.DesktopGL

The GitHub Actions workflow automatically builds both Windows versions (OpenGL and DirectX) on every push to main and publishes them to GitHub Pages.

Linux

dotnet publish ./MuLinux/MuLinux.csproj -f net10.0 -c Release -r linux-x64 --self-contained

macOS

dotnet publish ./MuMac/MuMac.csproj -f net10.0 -c Release

Android

dotnet publish ./MuAndroid/MuAndroid.csproj -f net10.0-android -c Release \
  -p:AndroidSdkDirectory="<path-to-android-sdk>" \
  -p:JavaSdkDirectory="<path-to-jdk-11>" \
  -p:AcceptAndroidSdkLicenses=True

iOS

# Requires macOS with Xcode and valid signing certificates
dotnet publish ./MuIos/MuIos.csproj -f net10.0-ios -c Release

🏗️ Architecture Overview

High-Level Design

This project implements a layered architecture with clear separation of concerns:

┌─────────────────────────────────────────────────────────┐
│                    Platform Layer                       │
│  (MuWinGL/MuWinDX, MuLinux, MuMac, MuAndroid, MuIos)    │
└─────────────────────────────────────────────────────────┘
                           ↓
┌─────────────────────────────────────────────────────────┐
│                  Client.Main (Core)                     │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐   │
│  │    Scenes    │  │  Networking  │  │   Rendering  │   │
│  │ (Login/Game) │  │   (S6 Proto) │  │  (MonoGame)  │   │
│  └──────────────┘  └──────────────┘  └──────────────┘   │
│  ┌──────────────┐  
View on GitHub
GitHub Stars99
CategoryDevelopment
Updated5d ago
Forks93

Languages

C#

Security Score

75/100

Audited on Mar 22, 2026

No findings