Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
# Generated files
.docusaurus
.cache-loader
scripts/docfx/api
scripts/*/api

# Misc
.DS_Store
Expand Down
2 changes: 1 addition & 1 deletion blog/2026-04-10-sdk-010.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
title: WukongMP SDK 0.1.0
title: WukongMP SDK 0.1.0 released
description: Initial stable release of the WukongMP SDK.
slug: wukongmp-sdk-010
authors: readym
Expand Down
2 changes: 1 addition & 1 deletion blog/2026-04-27-sdk-020.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
title: WukongMP SDK 0.2.0
title: WukongMP SDK 0.2.0 released
description: PvP mode updates and foundations for server-side mod support
slug: wukongmp-sdk-020
authors: readym
Expand Down
2 changes: 1 addition & 1 deletion blog/2026-05-06-sdk-021.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
title: WukongMP SDK 0.2.1
title: WukongMP SDK 0.2.1 released
description: Public alpha & bug fixes
slug: wukongmp-sdk-021
authors: readym
Expand Down
2 changes: 1 addition & 1 deletion blog/2026-05-14-sdk-022.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
title: WukongMP SDK 0.2.2
title: WukongMP SDK 0.2.2 released
description: Mod caching and .pak file support
slug: wukongmp-sdk-022
authors: readym
Expand Down
2 changes: 1 addition & 1 deletion blog/2026-06-23-sdk-023.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
title: WukongMP SDK 0.2.3
title: WukongMP SDK 0.2.3 released
description: Public server list
slug: wukongmp-sdk-023
authors: readym
Expand Down
2 changes: 1 addition & 1 deletion blog/2026-07-08-sdk-024.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
title: WukongMP SDK 0.2.4
title: WukongMP SDK 0.2.4 released
description: Server passwords, whitelist, admin panel improvements and a new join flow
slug: wukongmp-sdk-024
authors: readym
Expand Down
50 changes: 50 additions & 0 deletions blog/2026-07-24-oblivion-010.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
---
title: OblivionMP SDK 0.1.0 released
description: Initial release of the OblivionMP SDK.
slug: oblivionmp-sdk-010
authors: readym
tags: [oblivionmp]
hide_table_of_contents: false
---

Today we are shipping the first public preview of the OblivionMP SDK, version `0.1.0`. OblivionMP is our community multiplayer platform for **The Elder Scrolls IV: Oblivion Remastered**: it turns the single-player game into a shared world you can host, and gives you a C# SDK to build your own multiplayer game modes on top of it.

This is an early preview, and we want to be upfront about what that means. A lot is not built yet. Some of what is here will have rough edges, and some of it will break. We are releasing it now anyway, because the fastest way to learn what the community actually needs is to get the SDK into your hands.

<!-- truncate -->

## What OblivionMP is

The base server replicates the world and the players connected to it, but it ships with no gameplay logic of its own. There is no bundled co-op quest, no PvP arena, nothing built in. It is a blank canvas. Everything beyond "players share a world" is something you build with the SDK, or install from a mod someone else built.

`0.1.0` ships with the SDK and an empty `mods/` folder; the only thing in `server_mods/` is the server-side SDK itself. There are no game modes distributed with this release yet.

## What is in this release

The SDK covers both sides of a mod:

- **Client-side mods** ([docs](/oblivion-mp/docs/Client/getting-started)): custom networked components, gameplay systems that run on the client tick, client-relayed RPC, hosted services, and custom key bindings.
- **Server-side development** ([docs](/oblivion-mp/docs/Server-development/getting-started)): a `ServerModBase` mod that registers its own networked components, attaches them to archetypes, runs systems on the server tick, and handles RPCs sent by clients.
- **Custom data sync**: define your own components and have them replicated across the server and every connected client, with an ownership model that controls who can write what.
- **Custom RPC**: request/response messages between client and server, plus client-relayed events that the server forwards to other players.
- **Automatic mod sync**: when a player joins a server, the ReadyM Launcher installs the exact mods that server requires before they connect. No manual modpack installs.

To see all of this wired together, start from the [OblivionMP mod template](https://github.com/readycodeio/oblivionmp-mod-template): a ready-to-build solution with client, server, and shared projects, a small working example, and a script that packages both mods.

## What is not here yet

Because this is a preview, several things are deliberately incomplete or absent:

- **No bundled game modes.** If you want co-op or PvP, you build it with the SDK for now.
- **Save file API.** Save sync is implemented under the hood, but there is no public API for it yet.
- **Mod manifests are not enforced** in `0.1.0`.

We will fill these in over the coming releases, and each version will get its own documentation and release notes.

## Help us shape it

We are testing OblivionMP continually, both internally and with members of the community, and this preview is the next step in that. What we want most right now is your feedback: what works, what doesn't, and which features you expect from a multiplayer Oblivion.

If you hit a bug, have a mod idea, or want to tell us what is missing, come find us on the [OblivionMP Discord](https://discord.gg/obmp). To get started, read [What is OblivionMP?](/oblivion-mp/docs/what-is-oblivion-mp) and clone the [mod template](https://github.com/readycodeio/oblivionmp-mod-template) to build your first mod. The server is in closed alpha; see the [installation guide](/oblivion-mp/docs/Server/installation) for availability.

Thanks for being here this early. Let's build it together.
4 changes: 4 additions & 0 deletions blog/tags.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@ wukongmp:
label: 'WukongMP SDK'
permalink: '/wukongmp'
description: 'Release notes related to the WukongMP modding SDK'
oblivionmp:
label: 'OblivionMP SDK'
permalink: '/oblivionmp'
description: 'Release notes related to the OblivionMP modding SDK'
launcher:
label: 'Launcher'
permalink: '/launcher'
Expand Down
17 changes: 13 additions & 4 deletions docusaurus.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ const config: Config = {
organizationName: 'ReadyCode', // Usually your GitHub org/user name.
projectName: 'ReadyMp', // Usually your repo name.

onBrokenLinks: 'throw',
onBrokenLinks: 'warn',

// Even if you don't use internationalization, you can use this field to set
// useful metadata like html lang. For example, if your site is Chinese, you
Expand Down Expand Up @@ -116,9 +116,18 @@ const config: Config = {
},
items: [
{
to: 'oblivion-mp/docs/what-is-oblivion-mp',
type: 'docSidebar',
sidebarId: 'oblivionMpDocsSidebar',
position: 'left',
label: 'OblivionMP',
docsPluginId: 'oblivion'
},
{
type: 'docSidebar',
sidebarId: 'oblivionMpApiSidebar',
position: 'left',
label: '🚧 OblivionMP',
label: 'OblivionMP API Reference',
docsPluginId: 'oblivion'
},
{
type: 'docSidebar',
Expand Down Expand Up @@ -164,7 +173,7 @@ const config: Config = {
title: 'Docs',
items: [
{
label: '🚧 OblivionMP SDK',
label: 'OblivionMP SDK',
to: '/oblivion-mp/docs/what-is-oblivion-mp',
},
{
Expand Down
52 changes: 26 additions & 26 deletions i18n/en/code.json
Original file line number Diff line number Diff line change
Expand Up @@ -251,7 +251,7 @@
"description": "The ARIA label for close button of mobile sidebar"
},
"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel": {
"message": " Back to main menu",
"message": "\u2190 Back to main menu",
"description": "The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)"
},
"theme.docs.sidebar.toggleSidebarButtonAriaLabel": {
Expand Down Expand Up @@ -334,41 +334,41 @@
"message": "Build multiplayer experiences in your favourite games.",
"description": "Hero subtitle / site meta description"
},
"readym.sdk-documentation": {
"message": "SDK Documentation",
"description": "Secondary CTA button in the hero"
"readym.hero.wukong": {
"message": "WukongMP Docs",
"description": "Hero CTA button linking to WukongMP documentation"
},
"readym.host-a-server": {
"message": "Host a Server",
"description": "Primary CTA button in the hero — links to the Quick Start guide"
"readym.hero.oblivion": {
"message": "OblivionMP Docs",
"description": "Hero CTA button linking to OblivionMP documentation"
},
"readym.paths.label": {
"message": "What are you here for?",
"description": "Eyebrow label above the two audience path cards"
},
"readym.path.server.title": {
"message": "Running a Server",
"description": "Title of the server-owner path card"
"readym.game.wukong.title": {
"message": "WukongMP",
"description": "Title of the WukongMP game card"
},
"readym.path.server.description": {
"message": "Get your WukongMP server up and running in minutes. Download the binary or use Docker, configure, and go live.",
"description": "Body text of the server-owner path card"
"readym.game.wukong.description": {
"message": "Community multiplayer for Black Myth: Wukong. Host a server and build custom game modes with the C# SDK.",
"description": "Body text of the WukongMP game card"
},
"readym.path.server.cta": {
"message": "Quick Start Guide \u2192",
"description": "Link label at the bottom of the server-owner path card"
"readym.game.wukong.cta": {
"message": "WukongMP Docs \u2192",
"description": "Link label at the bottom of the WukongMP game card"
},
"readym.path.sdk.title": {
"message": "Building Mods",
"description": "Title of the developer path card"
"readym.game.oblivion.title": {
"message": "OblivionMP",
"description": "Title of the OblivionMP game card"
},
"readym.path.sdk.description": {
"message": "Extend WukongMP with our C#-based SDK. Build roleplaying servers, survival modes, custom arenas, or PvP tournaments with custom rulesets.",
"description": "Body text of the developer path card"
"readym.game.oblivion.description": {
"message": "Community multiplayer for The Elder Scrolls IV: Oblivion Remastered. Host a server and build custom game modes with the C# SDK.",
"description": "Body text of the OblivionMP game card"
},
"readym.path.sdk.cta": {
"message": "SDK Documentation \u2192",
"description": "Link label at the bottom of the developer path card"
"readym.game.oblivion.cta": {
"message": "OblivionMP Docs \u2192",
"description": "Link label at the bottom of the OblivionMP game card"
},
"readym.feature1.title": {
"message": "ReadyM SDK",
Expand All @@ -394,4 +394,4 @@
"message": "Server binaries are the deployable package you run on your own hardware or with a hosting provider. Drop it on a machine, configure it, point players at it. Your server, your rules.",
"description": "Body text of the third feature column"
}
}
}
4 changes: 0 additions & 4 deletions i18n/en/docusaurus-theme-classic/footer.json
Original file line number Diff line number Diff line change
Expand Up @@ -70,9 +70,5 @@
"link.item.label.OblivionMP SDK": {
"message": "OblivionMP SDK",
"description": "The label of footer link with label=OblivionMP SDK linking to /docs/oblivionmp-docs/what-is-oblivion-mp"
},
"link.item.label.🚧 OblivionMP SDK": {
"message": "🚧 OblivionMP SDK",
"description": "The label of footer link with label=🚧 OblivionMP SDK linking to /docs/oblivionmp-docs/what-is-oblivion-mp"
}
}
4 changes: 0 additions & 4 deletions i18n/en/docusaurus-theme-classic/navbar.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,6 @@
"message": "WukongMP API Reference",
"description": "Navbar item with label WukongMP API Reference"
},
"item.label.🚧 OblivionMP": {
"message": "🚧 OblivionMP",
"description": "Navbar item with label 🚧 OblivionMP"
},
"item.label.Releases": {
"message": "Releases",
"description": "Navbar item with label Releases"
Expand Down
48 changes: 24 additions & 24 deletions i18n/zh-Hans/code.json
Original file line number Diff line number Diff line change
Expand Up @@ -334,41 +334,41 @@
"message": "在你最喜欢的游戏中打造多人体验。",
"description": "Hero subtitle / site meta description"
},
"readym.sdk-documentation": {
"message": "SDK 文档",
"description": "Secondary CTA button in the hero"
"readym.hero.wukong": {
"message": "WukongMP 文档",
"description": "Hero CTA button linking to WukongMP documentation"
},
"readym.host-a-server": {
"message": "托管服务器",
"description": "Primary CTA button in the hero — links to the Quick Start guide"
"readym.hero.oblivion": {
"message": "OblivionMP 文档",
"description": "Hero CTA button linking to OblivionMP documentation"
},
"readym.paths.label": {
"message": "您想做什么?",
"description": "Eyebrow label above the two audience path cards"
},
"readym.path.server.title": {
"message": "运行服务器",
"description": "Title of the server-owner path card"
"readym.game.wukong.title": {
"message": "WukongMP",
"description": "Title of the WukongMP game card"
},
"readym.path.server.description": {
"message": "几分钟内启动您的 WukongMP 服务器。下载二进制文件或使用 Docker,完成配置后即可上线。",
"description": "Body text of the server-owner path card"
"readym.game.wukong.description": {
"message": "《黑神话:悟空》的社区多人游戏平台。托管服务器,并使用 C# SDK 构建自定义游戏模式。",
"description": "Body text of the WukongMP game card"
},
"readym.path.server.cta": {
"message": "快速入门指南 →",
"description": "Link label at the bottom of the server-owner path card"
"readym.game.wukong.cta": {
"message": "WukongMP 文档 →",
"description": "Link label at the bottom of the WukongMP game card"
},
"readym.path.sdk.title": {
"message": "构建模组",
"description": "Title of the developer path card"
"readym.game.oblivion.title": {
"message": "OblivionMP",
"description": "Title of the OblivionMP game card"
},
"readym.path.sdk.description": {
"message": "使用我们基于 C# SDK 扩展 WukongMP。构建角色扮演服务器、生存模式、自定义竞技场或带有自定义规则集的 PvP 锦标赛。",
"description": "Body text of the developer path card"
"readym.game.oblivion.description": {
"message": "《上古卷轴IV:湮灭 重制版》的社区多人游戏平台。托管服务器,并使用 C# SDK 构建自定义游戏模式。",
"description": "Body text of the OblivionMP game card"
},
"readym.path.sdk.cta": {
"message": "SDK 文档 →",
"description": "Link label at the bottom of the developer path card"
"readym.game.oblivion.cta": {
"message": "OblivionMP 文档 →",
"description": "Link label at the bottom of the OblivionMP game card"
},
"readym.feature1.title": {
"message": "ReadyM 软件开发工具包",
Expand Down
4 changes: 0 additions & 4 deletions i18n/zh-Hans/docusaurus-theme-classic/footer.json
Original file line number Diff line number Diff line change
Expand Up @@ -70,9 +70,5 @@
"link.item.label.OblivionMP SDK": {
"message": "OblivionMP SDK",
"description": "The label of footer link with label=OblivionMP SDK linking to /docs/oblivionmp-docs/what-is-oblivion-mp"
},
"link.item.label.🚧 OblivionMP SDK": {
"message": "🚧 OblivionMP SDK",
"description": "The label of footer link with label=🚧 OblivionMP SDK linking to /oblivion-mp/docs/what-is-oblivion-mp"
}
}
4 changes: 0 additions & 4 deletions i18n/zh-Hans/docusaurus-theme-classic/navbar.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,6 @@
"message": "WukongMP API 参考",
"description": "Navbar item with label WukongMP API Reference"
},
"item.label.🚧 OblivionMP": {
"message": "🚧 OblivionMP",
"description": "Navbar item with label 🚧 OblivionMP"
},
"item.label.Releases": {
"message": "发布说明",
"description": "Navbar item with label Releases"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# Interface IOblivionSyncApi

Namespace: [OblivionMp.Sdk.Api](../OblivionMp.Sdk.Api/OblivionMp.Sdk.Api.md)
Assembly: OblivionMp.Sdk.dll

```csharp
public interface IOblivionSyncApi : ISynchronizationApi<ReadyMainCharacter>, ISynchronizationApi
```

#### Implements

[ISynchronizationApi<ReadyMainCharacter\>](https://github.com/readycodeio/readym\-gameserver/blob/230fe858a098de9ac732d546ca5b1296f221735a/src/ReadyM.Sdk.Common/Entities/ISynchronizationApi.cs),
[ISynchronizationApi](https://github.com/readycodeio/readym\-gameserver/blob/230fe858a098de9ac732d546ca5b1296f221735a/src/ReadyM.Sdk.Common/Entities/ISynchronizationApi.cs)

## Properties

### <a id="OblivionMp_Sdk_Api_IOblivionSyncApi_AllDroppedItems"></a> AllDroppedItems

```csharp
IEnumerable<ReadyDroppedItem> AllDroppedItems { get; }
```

#### Property Value

[IEnumerable](https://learn.microsoft.com/dotnet/api/system.collections.generic.ienumerable-1)<[ReadyDroppedItem](../OblivionMp.Sdk.Entities.DroppedItem/OblivionMp.Sdk.Entities.DroppedItem.ReadyDroppedItem.md)\>

## Methods

### <a id="OblivionMp_Sdk_Api_IOblivionSyncApi_SpawnDroppedItem_ReadyM_Relay_Common_Oblivion_FormId_System_Int32_System_Numerics_Vector3_"></a> SpawnDroppedItem\(FormId, int, Vector3\)

```csharp
void SpawnDroppedItem(FormId item, int stackSize, Vector3 position)
```

#### Parameters

`item` [FormId](https://github.com/readycodeio/readym\-gameserver/blob/230fe858a098de9ac732d546ca5b1296f221735a/src/ReadyM.Relay.Common.Oblivion/FormId.cs)

`stackSize` [int](https://learn.microsoft.com/dotnet/api/system.int32)

`position` [Vector3](https://learn.microsoft.com/dotnet/api/system.numerics.vector3)


Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# OblivionMp.Sdk.Api

### Interfaces

[IOblivionSyncApi](../OblivionMp.Sdk.Api/OblivionMp.Sdk.Api.IOblivionSyncApi.md)


Loading
Loading