Skip to content

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

Notifications You must be signed in to change notification settings

xulek/muonline

ย 
ย 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

615 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

MuOnline Clone

.NET Version MonoGame License Build Status Ask DeepWiki

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

Features โ€ข Quick Start โ€ข Building โ€ข Architecture โ€ข Contributing


โš ๏ธ 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

Platform-Specific Requirements

โŠž Windows
  • 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.

๐Ÿง Linux
  • 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
๐ŸŽ macOS
  • macOS 11.0+ (Big Sur or later)
  • Xcode Command Line Tools
xcode-select --install
๐Ÿ“ฑ Android
  • Android SDK (API Level 21+)
  • Java Development Kit (JDK) 11 or later
๐Ÿ“ฑ iOS
  • macOS with Xcode installed
  • Valid Apple Developer account (for device deployment)
  • iOS 10.0+ target

๐Ÿš€ 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)  โ”‚   โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”‚
โ”‚  โ”‚ Game Objects โ”‚  โ”‚  UI System   โ”‚  โ”‚ World System โ”‚   โ”‚
โ”‚  โ”‚(Player/NPC)  โ”‚  โ”‚ (GameControl)โ”‚  โ”‚  (Terrain)   โ”‚   โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                           โ†“
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚              Client.Data (Data Readers)                 โ”‚
โ”‚      BMD โ€ข ATT โ€ข MAP โ€ข OZB โ€ข OZG โ€ข CWS โ€ข OBJS           โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Key Systems

๐ŸŽฌ Scene Management

  • Pattern: Finite State Machine
  • Implementation: BaseScene base class with LoginScene, LoadScene, GameScene
  • World Switching: Dynamic world loading via ChangeWorldAsync<T>()

๐ŸŒ Networking

  • Architecture: Service-Oriented with attribute-based routing
  • Protocol: Season 6 (C1/C3 packet structure)
  • Components:
    • PacketRouter - Dual-mode routing (ConnectServer/GameServer)
    • [PacketHandler] - Attribute-based handler registration
    • Service Layer - LoginService, CharacterService, ConnectServerService
  • Thread Safety: Async packet processing with main thread scheduling

๐ŸŽฎ Game Objects

  • Hierarchy: WorldObject โ†’ PlayerObject, MonsterObject, NPCObject, DroppedItemObject
  • Management: ScopeManager handles object visibility and lifecycle
  • Animation: BMD skeletal animation system

๐Ÿ–ผ๏ธ UI System

  • Pattern: Hierarchical component model
  • Base Class: GameControl with lifecycle methods
  • Scaling: Virtual resolution (1280x720) with UiScaler
  • Events: Click, Focus, Blur, SizeChanged

โšก Threading Model

  • Main Thread: MonoGame rendering and UI updates
  • Network Thread: Async packet processing
  • Marshalling: MuGame.ScheduleOnMainThread(Action) for thread safety
  • Task Scheduler: Priority-based queue with backpressure control

๐Ÿ“ File Format Support

Format Description Usage
BMD 3D models and skeletal animations Characters, monsters, items, NPCs
ATT Terrain walkability attributes Collision detection, pathfinding
MAP Terrain heightmap data 3D terrain rendering
OZB/OZG Compressed texture formats Textures for models and UI
CWS Camera walk/pan scripts Cinematic camera movements
OBJS Object placement data Map decorations and static objects

๐Ÿ”ง Configuration

Constants.cs (Client.Main/Constants.cs:25)

Debug vs Release builds have different configurations:

Debug Settings:

  • SHOW_DEBUG_PANEL: true - Shows FPS, position, network stats
  • UNLIMITED_FPS: true - Disables VSync for testing
  • DataPath - Absolute path to data files

Release Settings:

  • SHOW_DEBUG_PANEL: false
  • DataPath - Relative to executable location

Rendering Options:

  • RENDER_SCALE: 2.0 - Supersampling multiplier
  • ENABLE_DYNAMIC_LIGHTING_SHADER: true - GPU-based lighting
  • MSAA_ENABLED: false - Multi-sample anti-aliasing (performance impact)

appsettings.json (Client.Main/appsettings.json)

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Client.Main.Networking": "Trace"
    }
  },
  "MuOnlineSettings": {
    "ConnectServerHost": "localhost",
    "ConnectServerPort": 44405,
    "ProtocolVersion": "Season6",
    "ClientVersion": "1.04d",
    "ClientSerial": "0123456789ABCDEF",
    "Graphics": {
      "Width": 1280,
      "Height": 720,
      "IsFullScreen": false,
      "UiVirtualWidth": 1280,
      "UiVirtualHeight": 720
    }
  }
}

๐ŸŽจ Graphics Backend Comparison

Windows: OpenGL vs DirectX 11

Feature OpenGL (MuWinGL) DirectX 11 (MuWinDX)
Performance Good Excellent (modern GPUs)
Compatibility Excellent (older hardware) Windows 10/11 only
Shader Model 3.0 (vs_3_0/ps_3_0) 4.0 (vs_4_0/ps_4_0)
Visual Quality Identical Identical
Cross-Platform Yes (same as Linux/macOS) Windows-only
Stability Very stable Stable (fixed GPU sync issues)

When to Use OpenGL (MuWinGL)

  • โœ… Older GPUs or integrated graphics
  • โœ… Need exact same rendering as Linux/macOS
  • โœ… Experiencing graphics driver issues with DirectX
  • โœ… Better compatibility with virtualization/remote desktop

When to Use DirectX (MuWinDX)

  • โœ… Modern dedicated GPU (NVIDIA/AMD)
  • โœ… Want best performance on Windows
  • โœ… Latest graphics drivers installed
  • โœ… Windows 10/11 with DirectX 11 support

Technical Notes

Both versions produce identical visual results but use different rendering paths:

Shader Compatibility:

  • All shaders use conditional compilation (#if OPENGL) to support both backends
  • DirectX version includes fixes for GPU buffer synchronization
  • Explicit vertex declarations ensure correct memory layout

Known Fixed Issues (DirectX):

  • โœ… GPU/CPU race conditions in buffer pooling (now disabled for DirectX)
  • โœ… Vertex stride mismatches between C# and HLSL shaders
  • โœ… Async model loading deadlocks in UI rendering
  • โœ… Shadow rendering artifacts

๐Ÿ› Troubleshooting

โŒ "Data path not found" error

Solution: Ensure Client.Main/Constants.cs has the correct path to your MU data files.

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

Verify the path exists and contains files like Data/Player.bmd, Data/Item, etc.

โŒ Cannot connect to server

Solution: Check the following:

  1. Server is running (for OpenMU: docker ps should show running containers)
  2. appsettings.json has correct host/port
  3. Firewall isn't blocking port 44405
  4. Protocol version matches server (Season6)
โŒ Black screen / Graphics not loading

Solution:

  1. Verify data files are complete (re-extract if needed)
  2. Check Constants.cs shader settings:
    public const bool ENABLE_DYNAMIC_LIGHTING_SHADER = true;
  3. Update graphics drivers
  4. Try disabling MSAA in Constants.cs
  5. If using DirectX: Try the OpenGL version (MuWinGL) instead
โŒ DirectX: Graphics glitches, objects flickering or "exploding"

Solution: These issues have been fixed in the latest version. If you still experience them:

  1. Update to latest version from GitHub
  2. Clean build:
    dotnet clean ./MuWinDX/MuWinDX.csproj
    dotnet build ./MuWinDX/MuWinDX.csproj -p:MonoGameFramework=MonoGame.Framework.WindowsDX
  3. Try OpenGL version as fallback:
    dotnet run --project ./MuWinGL/MuWinGL.csproj -f net10.0-windows -c Debug -p:MonoGameFramework=MonoGame.Framework.DesktopGL

What was fixed:

  • GPU/CPU race conditions in dynamic buffer pooling
  • Vertex declaration mismatches in custom shaders
  • Async loading deadlocks in inventory rendering
โŒ DirectX: Client freezes when opening inventory

Solution: Fixed in latest version. The issue was caused by async model loading blocking the main thread.

If still experiencing freezes:

  1. Update to latest code
  2. Verify you're using the fixed BmdPreviewRenderer.cs (checks modelTask.IsCompleted)
  3. Switch to OpenGL version temporarily
โŒ Linux: "libopenal.so not found"

Solution:

# Ubuntu/Debian
sudo apt-get install libopenal-dev libgdiplus

# Fedora
sudo dnf install openal-soft-devel libgdiplus
โŒ Build errors on mobile platforms

Solution: For desktop development, disable mobile targets:

dotnet build /p:EnableMobileTargets=false

๐Ÿค Contributing

Contributions are welcome! This is an educational project, and we encourage learning and experimentation.

Guidelines

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Code Style

  • Follow existing code patterns and architecture
  • Use async/await for networking operations
  • Marshal UI updates to main thread via MuGame.ScheduleOnMainThread()
  • Add XML documentation for public APIs
  • Follow C# Coding Conventions

Reporting Issues

Found a bug or have a question? Open an issue on GitHub.

๐Ÿ“š Additional Resources

๐Ÿ“„ License

This project is created for educational and research purposes only.

Important Legal Notes

  • This is a non-commercial educational project demonstrating game client architecture
  • The code in this repository is provided as-is for learning purposes
  • Authors are not responsible for misuse of this software

Protocol Implementation: The Season 6 network protocol implementation is based on publicly available information and reverse engineering for educational purposes.

Recommended Use Cases:

  • Learning game client architecture
  • Studying network protocol design
  • Understanding cross-platform .NET development
  • Exploring MonoGame framework capabilities
  • Research and educational projects

Made with โค๏ธ for the game development community

โฌ† Back to Top

About

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

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C# 94.2%
  • HLSL 5.8%