Dated testing releases, gameplay improvements, fixes, and scripting changes, drawn from the ArcaneMP source history.
Latest testing release
Version 1.10.0
Scripted movement, custom spells, animal forms, and the Hogwarts Express, with Linux play through Proton and experimental PC Game Pass support.
The client runs on Linux through Proton. The launcher retries the library loads Wine refuses, so the game no longer stops at “Unable to load library steamclient64.dll”.
PC Game Pass support is experimental. The launcher looks for Steam first, then Epic, then the Game Pass copy.
Enemies come only from the server: camps, world events, and NPC.create. The game’s own spawners stay shut on every client, quest and mission fights included, so nobody fights an enemy the others can’t see.
A lock one player opens with a key or Alohomora opens for everyone, unless the server keeps unlocks per player. Scripts control portcullises, rune gates, goblin camp gates, and crawl grates, and can hold a padlocked door’s Alohomora level.
Scripts can walk players, NPCs, and beasts through the game’s own locomotion and creature AI, flying beasts included, or play a server-authored path that every client samples the same. Walks pause, resume, and report waypoints, and a hand-over between owners resumes at the next one.
Servers can define their own spells on an existing spell’s class, with no asset package, and their own spell lessons. PvP prices a custom spell from its definition, and the spellcraft sample includes four Expecto Patronum spells.
Players can take an animal form, such as a cat, kneazle, niffler, or phoenix; the animagus resource adds the game’s own morph clips. Character.create spawns ghosts, house-elves, goblins, centaurs, the Sorting Hat, and more of the game’s own classes.
World.hogwartsExpress runs the train from the server, the same for everyone, and the hogwarts-express sample replays the game’s own timetable.
Servers set where players load in and respawn, so joining players no longer start in the house dormitory. Scripts can revive a player where they lie, load any map, a mod’s included, switch off a player’s fast travel or refuse a pick, and make players block each other.
Gear can be made cosmetic, and an item’s rolled level, stats, and traits survive a rejoin. Looks carry facial hair and its colour, and the creator offers both.
Client scripts gain world shapes, a live avatar preview for web pages, exact seating on a point, per-resource jump and sprint holds, the player’s map waypoint, a mailRead event, and mouse-wheel key binds.
WorldObjects take animations, materials, motion, lifetimes, start and end effects, a stream range, and a draw distance. NPCs, characters, beasts, objects, effects, zones, and placed lootables can each be put in a virtual world and map.
Crashes fixed: an install path with characters like “Á”, closing the window at an uncapped frame rate, DLSS-G and FSR3 frame generation (the launcher now switches it off), and an npcDied handler that destroyed NPCs. A scaled-up boss no longer freezes its owner’s and observers’ clients.
Voices play in the correct ear, and remote players’ grunts come from a positional stand-in voice. Mesh and held props draw past about 20 m, a web UI page whose renderer died reloads, and leaving no-clip high up no longer kills on landing. Cancelling a spell lesson hands the player back.
Remote players’ hoods sync, a resized player stands on the floor, and a hidden rider’s broom, flight effects, and creature mount hide too. Dying while mounted no longer restarts the ride after respawning.
Mod sync: a mod CurseForge can’t install fails the join right away with the reason, and broken, skipped, or stale installs are reinstalled. Mod folder changes take effect on the next launch, hand-placed mods are parked in Phoenix/HogwartsMP-ParkedMods while a server’s mods are installed, and the join screen shows download progress.
Release clients no longer ship the dev tools: the dev menu, the F6/F7/F8 consoles, the crash and exit commands, and the map editor. The HUD and creator pages are locked to their origin, and other players’ spell paths load only as spell records.
API migration: LocalPlayer.stopPlayerInput and restorePlayerInput hold input per resource, so input stays stopped until every resource that stopped it restores it. Gear stats, door lock levels, and WorldObjects changed on the wire, so client and server must both be on 1.10.0. Built on Framework 37.0.4 and compatible with Foundations 0.10.0.
Source revision 0bfd6ebe
Testing release
Version 1.9.1
Fairer duels, synced shields and Disillusionment, and required mods that stay current.
Spells take their full cooldown in a fight. A replayed Incendio falls short where its cast did, and a replayed burn no longer hurts its victim.
Crosshair skill shots stop on hostile players, and modded spells are priced from the caster’s own spell data.
Other players’ shields and Disillusionment show on their characters. Timed spell effects on another player run on that player’s own timing and clear when they end.
The killing curse’s look fades properly on another player, and the curse talent’s mark stays off them.
Remote riders stand back up after dismounting, with their collision restored; a hidden rider’s collision stays off across mounts.
Required mods update to their latest CurseForge file when you join, and a rejected join names what failed.
Wand-link beams fade when the link ends. A disguised player’s voice follows their disguise, a held death stays in its ragdoll, and a resized body rebuilds its cloth at the new size.
Scripts are told about gear players change in game. The Room of Requirement’s castle door is revealed for everyone, with entry left to scripts.
Source revision 392d9136
Testing release
Version 1.9.0
Player versus player, Room of Requirement rooms, server-run camps, and NPC fights for the whole party.
PvP: server-owned rules, pairs, flags, and teams decide who can fight. Duels can end in a kneeling defeat, and two players’ beams can lock in the game’s own wand link.
The Room of Requirement holds player-owned rooms, loaded by id, with a shared door, in-place room swaps, and server-held room locks.
Beasts can be caught with the Nab-Sack. The server referees every catch and keeps the bag.
The server runs the Overland’s enemy camps and roaming world events, including progression-gated camps and night camps on the server clock. Camp enemies keep to their area and notice players as the game’s own do.
Several players can fight the same NPC. Hits, shield breaks, killing blows, status effects, and hit reactions are relayed; a hand-over keeps the fight, health, and raised shield in place. Bosses keep their health phases.
Hostile server NPCs die to lethal hits, with server-owned kill rewards and loot. Damage multipliers apply to hits given and taken, for players and NPCs.
Server WorldObjects move, simulate, and spawn Blueprint objects, enough to run a Quidditch pitch. Scripts gain zones with enter and exit events, client line traces, physics launch, and effects attached to entities with colour overrides.
Brooms take a server-set speed multiplier and upgrade tier. World.setMeal sets the Great Hall’s meals, and the Headmaster’s office staircase closes in place.
Remote players speak and caption as themselves, and ghosts look like ghosts on their own body. Relaunches and second clients skip the game’s full shader recompile.
API migration: Broom setMaxSpeed was removed in favour of the server-set speed multiplier. Stale declarations and internal builtins were dropped from @hogwartsmp/types.
Source revision b6c474e2
Testing release
Version 1.8.2
Mod-sync retries and startup fixes.
Failed mod installs are retried, and CurseForge errors are shown to the player.
Combat event watches are installed before the client reports that it is ready.
Another player climbing a ladder no longer resizes your own character’s collision.
Initial resource startup waits until network callbacks have finished.
Source revision 06746f3b
Testing release
Version 1.8.1
Mod-sync rejoin and appearance fixes.
After a mod-sync relaunch, the client rejoins the server picked in the menu. Downloaded mods are staged once rather than per download.
A remote character gets a default face when its own is unknown.
The walking lean stays on your own character’s body.
Source revision 1ec58475
Testing release
Version 1.8.0
Epic Games support, bigger servers, and server-owned loot.
Hogwarts Legacy on Epic Games is supported. The launcher starts the game through Steam, or through Epic when Steam doesn’t have it.
The server’s player hard cap rises from 5 to 128, with a default of 32.
Chests, moonstone deposits, and foragables can be owned by the server, which decides what each player finds and when it refills.
The server decides when a dead player respawns and can override a player’s maximum health. Players and NPCs gain full and visual scale modes, with nametags and spell aim placed from the body’s real size.
Remote players’ Lumos lights at the wand tip again, and remote riders’ House brooms are painted in their house colours.
World scripts can pin the Headmaster’s office, holiday decor, and the world clock without draining timed buffs. Field Guide pages can be held, and Minimap.state reports the floor and map level.
Scripts can drive the game’s spell lessons. Mod installs show on the join panel, and voice blocks only push-to-talk while a UI holds input.
Scripting declarations are published as @hogwartsmp/types.
Source revision 71a8dbaf
Testing release
Version 1.7.1
A broom mounting fix.
The broom seat call passes its mount type at the game’s native 32-bit width.
Source revision 17141bc7
Testing release
Version 1.7.0
Spell loadout checks, shader progress, and steadier HUD handling.
Spell loadout slots validate names against the spell table and reject non-spell entries.
The UI shows Hogwarts Legacy’s shader precompilation progress in the corner.
Held HUD groups resist reappearing during broom and mount dismounts.
Player location reports the game map region, including castle rooms.
Input queries are unified and resource-owned controls are released during cleanup.
Rendering is forced to Direct3D 12, with a log entry when the overlay cannot come up.
The internal character-selection resource is disabled by default for now.
Source revision 30d2e73f
Testing release
Version 1.6.0
House Cup standings, native creature care, and more control over your world.
House points are now server-owned, with shared standings reflected in the Reception Hall hourglasses.
Beasts use the game’s own creature records and species catalogue, with care through its native nurturing tools.
Server-held door states persist through double-door cascades instead of being undone by adjoining doors.
The menu shows connection progress and the reason a session ended. Joining clients receive the server’s build information.
Held props and ability channels replicate to other players. Disguises survive a newly spawned remote character.
Server scripts gain control over character scale, visibility, health, invulnerability, and held props. Mod items absent from the native catalog can be given, moved, and removed.
Appearance APIs use JSON looks and ID-based synchronization. The creator can import and export JSON; gear changes can be applied in batches.
Gold mission routes and walk-by-default roleplay locomotion are available to scripting. Normal, whisper, and shout voice ranges are configured by the server.
API migration: use Events instead of Core.Events. The public appearance-blob API, photoPose, and client fast-travel API were removed; some local-player methods are now development/QA-only.
Source revision 7644932f
Testing release
Version 1.5.1
Separate game worlds, cleaner spell rules, and loading fixes.
Players in different game maps replicate into separate worlds, avoiding incorrect cross-map appearances.
Quest-gated dungeon exits can be enabled for the multiplayer world, and world preparation runs during the loading curtain.
Named NPCs can be exempted from population suppression; suppressed ambient crowds no longer request extra population.
Every spell cast is reported through the spellCast event. Revoked spells are cleared from the quick-action bar.
Fast travel hands the streaming manager back correctly, and invalid or freed world objects are handled more carefully.
The 1.5.1 patch corrects the release client build configuration. This published release includes the preceding 1.5.0 source changes.
Source revision c47110b5
Testing release
Version 1.4.0
Safer world transitions and tighter control over mounts, gear, and spells.
Fresh multiplayer profiles skip the game’s first-time flow, and the multiplayer overlay stays off native loading screens.
FlyingMount and GroundMount client scripting objects are available. Mount inventory entries are held and moved more safely.
Cancelled ability channels are relayed so remote players and NPC copies stop held poses.
Protego obeys its spell lock. Talent levels cannot be set on unowned talents, and removing a talent clears its level.
API migration: LocalPlayer.giveGear was removed in favour of server inventory control. The native F5 creator toggle was removed.
Source revision 8fe24ae3
Testing release
Version 1.3.0
Replicated world state and a persistence API change.
World state is replicated through the world entity, simplifying how shared environmental state is delivered.
Floating player labels use the Nametags interface; the final renderer for this release uses ImGui.
The old key/value storage API was removed. Resource authors should review persistence dependencies before upgrading; replicated state is not durable database storage.
Per-packet and lifecycle log noise was reduced.
Source revision ba8aaf3e
Testing release
Version 1.2.3
Appearance reconstruction and first-boot fixes.
Character appearance data is reconstructed from its class rather than relying on an existing live instance.
The multiplayer menu refuses the game’s first-boot flow.
Windows release packaging runs its PowerShell steps in the intended environment.
Source revision 179279a0
Testing release
Version 1.2.2
Release pipeline and Framework hook fixes.
The Framework pin includes the structured-exception hook fix.
Windows builds use the runner’s local compiler cache; Linux release jobs remain on hosted runners.
Packaging changes improve the reliability of producing the release bundles.
Source revision dbb9d50a
Testing release
Version 1.2.1
HUD ownership, type layout, and packaged declarations.
HUD access goes through its owning controller, and the SDK corrects the UStruct layout and IsA checks.
Server scripting declarations are packaged consistently with other mods.
Linux server binaries are stripped before bundling, and the Framework dependency pin is updated.
Source revision 2deb8ea6
Testing release
Version 1.2.0
A multiplayer front page and versioned Linux server images.
A CEF multiplayer front page replaces the game’s own main menu.
Web views stay offscreen until the session has loaded, and the old connection/ping HUD overlay is removed.
Releases publish a versioned Linux dedicated-server image to GHCR.
The project adopts the Framework state bag and reorganizes feature bindings and generated scripting contracts.