Skip to main content

OblivionMP SDK 1.0.0-rc.2 released

· 3 min read
ReadyM Team
Creators of WukongMP and OblivionMP

1.0.0-rc.2 is out, one day after rc.1. We fixed some bugs present in rc.1, and cleaned up the SDK attribute syntax before API settles for 1.0.

This release breaks the SDK API. Mods built against 1.0.0-rc.1 have to be updated and rebuilt against the 1.0.0-rc.2 packages.

Fixes​

  • Player names on hover. Looking at another player showed "Player #0" instead of their nickname. It shows the nickname now.
  • NPC loot stays looted. An NPC whose inventory was emptied, for example by looting its body, could get a fresh set of items from the game, such as after a server restart. It now stays empty. NPCs emptied in a world saved by rc.1 are not covered.
  • NPC equipment. When an NPC's own game put an item back on, by a script or its AI, the item was taken off again over and over. It now stays on.
  • Server version. The server reports its full version to the server list, 1.0.0-rc.2 here. rc.1 showed up as 0.2.0.
  • Saves. Fixed an exception the server could hit while writing a save file.

SDK changes​

Attributes​

A mixin used to take up to three attributes to say whether and how it replicates. Now it is one:

// rc.1
[ArchetypeMixin]
[Extends(typeof(Player))]
[Replicated]
[Propagates(Propagation.ServerAuthoritative)]
public readonly partial struct Wallet { ... }

// rc.2
[ArchetypeMixin(Replication.ServerAuthoritative)]
[Extends(typeof(Player))]
public readonly partial struct Wallet { ... }
  • [ArchetypeMixin] takes a required Replication. Replication.None keeps the mixin local. Unreliable delivery is [ArchetypeMixin(Replication.X, Delivery = Delivery.Unreliable)].
  • [Archetype] is networked by default. [Archetype(replicated: false)] is now [Archetype(Networked = false)], and an archetype with fields of its own says [Archetype(Replication = Replication.X)].
  • The Propagation enum is renamed Replication and gains None. [Replicated] and [Propagates] are gone.

See Replication and authority and Shapes.

Everything else​

  • Key binds can be removed. IInput.RegisterKeyBind returns an IDisposable; dispose it to remove that one bind. See Removing a binding.
  • Computed properties reach other shapes. A public property with a body on a mixin now shows up on every archetype that includes the mixin or that it extends. That brings IsDead back on Vitals, so MainCharacter, Npc and ServerSummon have it again. See Computed properties.
  • Attribute mistakes fail the build. A second [Index] on a shape (READYM047), [Tag] on a mixin (READYM048) and [Extends] on an archetype (READYM049) are now clear errors, instead of being ignored or failing inside generated code.

Updating​

  • Servers. Downloads for both platforms are on the Installation page.
  • Mods. Bump ReadyM.SDK.Oblivion.Common, .Client and .Server to 1.0.0-rc.2, plus ReadyM.Oblivion.Chat.Client and .Server to 1.0.0-rc.3 and ReadyM.Oblivion.Quests.Server to 1.0.0-rc.2 if you use them, then fix what the build reports. Your first mod shows the new syntax.

Known issues is updated for this release. Anything not on it, report on the OblivionMP Discord.