OblivionMP SDK 1.0.0-rc.1 released
1.0.0-rc.1 is out. It is the first release candidate of the OblivionMP SDK 1.0, and the first time the server is a public download, for Windows and Linux. The Docker image will be available later.
1.0 is a rework of the SDK rather than an update to 0.2. Everything we planned for 1.0 is in, so the API should not move much from here. It is still a release candidate, though: expect rough edges, and tell us when you hit one.
OblivionMP is also open to everyone now. Until today it was a closed alpha for a group of modders from our Discord community, and Launcher 0.33.1 unlocks it for every ReadyM account.
Mod authors: mods written for 0.2 need porting. The 0.2.0 docs stay in the version menu.
Writing mods
The point of the rework was to get the plumbing out of your way. You declare your data and your messages, and the SDK's source generator writes the rest.
- Archetypes and mixins. Data on an entity is a
partial structwithpartialproperties.[Extends(typeof(Player))]adds your fields to a shape you do not own, and both halves of the mod then readplayer.Balancedirectly. See Shapes. - Typed RPC. Every message is declared once in a contracts class, marked
[ClientToServer],[ServerToClient]or[ClientToClients]. Each half gets a generatedSendXmethod and implements apartial void OnXhandler. See RPC. - Services. A
[Service]class is created for you, asks for what it needs in its constructor (IEntities,IPlayers,IServerEventsand so on) and getsStart,UpdateandStopcalls. See Services and Server events. - Mistakes fail the build. Analyzers check your shapes and contracts while you compile. A
READYMorSRPCerror names the class and says what to change, and each docs page lists the diagnostics it covers. - NuGet packages. A mod is three projects, each referencing one package:
ReadyM.SDK.Oblivion.Common,ReadyM.SDK.Oblivion.ClientorReadyM.SDK.Oblivion.Server. Chat and quests have their own packages too:ReadyM.Oblivion.Chat.ClientandReadyM.Oblivion.Chat.Serverlet your mod add slash commands of its own, andReadyM.Oblivion.Quests.Serverlets it write quests with journal stages, objectives and dialogue topics. See Using another mod. - llms.txt. If you mod with an LLM, point it at docs.ready.mp/oblivion-mp/llms.txt. It indexes the guides and the API reference, and links a full-text version of each.
What syncs
Almost all of the game is shared now. Some examples:
- NPCs. Each one is simulated by one player's game and everyone else sees that same NPC. The server can give it orders through the game's own AI packages: walk somewhere, wander, sleep, eat, flee.
- Items. Inventories and containers stay in sync, and an item dropped on the ground is there for everyone. The server checks every move, so two players can never take the same item.
- The world. Chests, plants and furniture are entities, so every player sees the same chest emptied and the same plant picked. A seeded cell respawns 72 game hours after it was last filled.
- Characters. Health, magicka, fatigue, level, appearance, skills, active effects, bounty and fame, plus states like sneaking, swimming and having a weapon drawn.
- Summons and spawns. A summoned creature is an entity every player sees. Once a mod sets the session's level scaling, the server rolls each spawner's leveled list itself, so every player meets the same creatures.
- Potions and spells players make. Every other player's game makes its own copy, so a brewed potion or custom spell is not stuck in one game.
- Time and session. Each area has one time of day. The server sets the difficulty and the level leveled lists roll at, for the whole session.
The server download comes with chat, name tags over other players, quests, and a seed loader that fills a fresh world with the game's furniture, containers and items.
Getting started
- Play. Create a ReadyM account, update the launcher to 0.33.1 or newer, and join a server from the list.
- Run a server. Downloads for both platforms are on the Installation page. You need the .NET 10 runtime. The Docker image will follow later.
- Write a mod. Your first mod takes you from the template to a mod running on your own server.
- Check what is broken. Known issues lists what we already know about, and the SDK features planned for a patch soon after release, such as mouse input in web UI and a broadcast send.
Anything not on that list, report on the OblivionMP Discord.
