-
Mac users will want to view this guide.
This is a fork of the Magestorm repo @ https://github.com/Magestorm/Magestorm.
Includes a private server (C#/.NET 4.8), binary patcher, and portable game client builds for Windows and macOS.
Download spelinst.exe from the Internet Archive and place it in the repo root.
python build_content.py spelinst.exeThis extracts the game, patches game.dll for community server compatibility, and patches spell.bin with balance fixes. Everything goes into Content/.
Windows:
.\client\build_win.ps1 -Release
# Output: SpellBinder-win.zip — extract, double-click Play.exemacOS:
./client/build_mac.sh --release
# Output: SpellBinder-mac.zip — extract, double-click SpellBinder.app
# See docs/mac-setup.md for CrossOver setup (recommended for best rendering)Extract the zip, double-click the launcher, pick a server, done.
docker build -t spellbinder .
docker run -d --name spellbinder --network host \
-v ./Content:/app/Content -v spellbinder-data:/var/lib/mysql \
-v ./Logs:/app/Logs spellbinder.\setup.ps1
.\server.ps1 # kill/build/test/startHost networking is required so the server sees real client IPs (NAT'd container networking makes all clients appear as the same IP, breaking anti-cheat and IP bans). Ports 10601/udp and 10602/tcp and 10603/tcp bind directly on the host.
The Content/ volume mount is required — game data files. The entrypoint handles MariaDB setup, schema import, file case normalization, and account creation automatically.
On first run, credentials are generated and saved to /app/credentials.txt:
docker exec spellbinder cat /app/credentials.txt
--devflag:docker run ... spellbinder --devcreates accounts with simple passwords (password = username). Do not use in production.
client/ # Client build tooling
Play.cs # Windows launcher (C# WinForms)
build_win.ps1 # Build Windows client zip
build_mac.sh # Build macOS .app bundle
launch_mac.sh # macOS runtime launcher (CrossOver/Wine)
defaults/keyboard.dat # Default keybinds
dgVoodoo.conf # Windows display compatibility config
patches/ # Binary patches (no copyrighted code)
apply_patches.py # Generic binary patcher with MD5 verification
full_v202_discord.json # game.dll UDP fix (1 byte: JNZ→JZ)
spellbin_discord.json # spell.bin balance patch (debug spell)
tools/ # Extraction and RE tools
extract_game.py # Extract game files from spelinst.exe
docs/ # Setup guides
mac-setup.md # macOS client setup (CrossOver + Wine)
SpellServer/ # C# game server (.NET Framework 4.8)
SpellServer.Tests/ # NUnit tests
Helper/ # Shared library (grid, timing, networking)
Content/ # Extracted game data (not committed)
Build/Debug/ # Compiled server output
build_content.py # Extract + patch game content
server.ps1 # Kill/build/test/start server
./rebuild.sh# Edit code in SpellServer/
.\server.ps1 # kills, builds, tests, starts (headless)
.\server.ps1 -SkipTests # skip NUnit tests# Edit client/Play.cs
.\client\build_win.ps1 # compile + assemble
.\client\build_win.ps1 -Server "1.2.3.4" # custom server address
.\client\build_win.ps1 -Release # + create zip# Append to SpellServer.exe launch:
SpellServer.exe --headless --debug=ProjectileTracking
SpellServer.exe --headless --debug=ProjectileTracking,PlayerTracking,RuneTracking
# Valid: None, ProjectileTracking, PlayerTracking, RuneTracking, ThinTracking, OneDamageToPlayers| Setting | Value | Notes |
|---|---|---|
| DatabaseName | magestorm | Must match SQL database name |
| ServerVersion | 2.0.2 | Must match client version |
| ListenPort | 10602 | TCP game port |
| UDPPort | 10601 | UDP game port |
Server:
- Windows: .NET Framework 4.8 + VS Build Tools 2022 + MySQL 8.0
- Linux:
mono-devel+ MariaDB - Docker: just works
Client build:
- Windows: .NET Framework 4.8 (ships with Windows 10/11) + Python 3
- macOS: Python 3 + CrossOver (recommended) or Wine via Homebrew