docs(book): a mod is a plugin too, and RCON is not the Rust answer #7
@@ -151,13 +151,22 @@ shape. That is what thin means: less code, the same architecture.
|
|||||||
|
|
||||||
**Rust is the worked example, and it is not that case.** The dry run in
|
**Rust is the worked example, and it is not that case.** The dry run in
|
||||||
[`rust-dryrun.md`][dryrun] designs a module for it precisely because it shares so
|
[`rust-dryrun.md`][dryrun] designs a module for it precisely because it shares so
|
||||||
little with Ultima Online — and its answer is a **mod**: a plugin loaded by the
|
little with Ultima Online — and its answer is an **Oxide plugin**: C# loaded by
|
||||||
server's own mod framework, hooking the game's events and dialling out to a
|
the mod framework a modded Rust server already runs, hooking the game's events and
|
||||||
sidecar, exactly as the ServUO overlay does. The Rust server is a *binary*, where
|
dialling out to a sidecar, exactly as the ServUO overlay does. The Rust server is a
|
||||||
ServUO is source a shard owner compiles, so the way in is a published hook API
|
*binary*, where ServUO is source a shard owner compiles, so the way in is a
|
||||||
rather than a file you edit. **The three-part shape survives that unchanged**,
|
published hook API rather than a file you edit. **The three-part shape survives
|
||||||
which is the more useful finding: the plugin-dials-out arrangement is not a
|
that unchanged**, which is the more useful finding: the plugin-dials-out
|
||||||
property of having source access.
|
arrangement is not a property of having source access.
|
||||||
|
|
||||||
|
It also pairs **one sidecar to one game server**, on that server's own host,
|
||||||
|
rather than one sidecar fronting a community's several — because those servers sit
|
||||||
|
on separate machines, and a shared sidecar would be reached across a network by
|
||||||
|
plugins that are supposed to talk to it over loopback. Worth knowing before you
|
||||||
|
design yours: if your game runs as a fleet, the question "how many sidecars" is
|
||||||
|
answered by where the loopback boundary is, not by how many processes you would
|
||||||
|
rather run. Your module holding several clients is the cheaper end of that trade,
|
||||||
|
and core never learns there is more than one.
|
||||||
|
|
||||||
That document reached the game over RCON until 2026-08-19, and before that
|
That document reached the game over RCON until 2026-08-19, and before that
|
||||||
concluded there should be **no sidecar at all**. It carries both corrections,
|
concluded there should be **no sidecar at all**. It carries both corrections,
|
||||||
|
|||||||
@@ -12,9 +12,9 @@ rules below are what keep that something from being the reason the server froze.
|
|||||||
|
|
||||||
**That something does not have to be source you compile.** The worked example
|
**That something does not have to be source you compile.** The worked example
|
||||||
below is an overlay built into a server whose code you have; the dry run for Rust
|
below is an overlay built into a server whose code you have; the dry run for Rust
|
||||||
is a **mod** loaded by a closed server's own framework, hooking published events.
|
is an **Oxide plugin**, C# loaded by a closed server's own mod framework and
|
||||||
Every rule in this chapter applies identically to both — they are properties of
|
hooking published events. Every rule in this chapter applies identically to both —
|
||||||
being inside a game loop, not of how you got there.
|
they are properties of being inside a game loop, not of how you got there.
|
||||||
|
|
||||||
The worked example is `servuo-plugins`, the Ultima Online shard plugin, whose link
|
The worked example is `servuo-plugins`, the Ultima Online shard plugin, whose link
|
||||||
layer is one file: `overlay/Scripts/Custom/Bridge/BridgeLink.cs`. It is C# against
|
layer is one file: `overlay/Scripts/Custom/Bridge/BridgeLink.cs`. It is C# against
|
||||||
|
|||||||
Reference in New Issue
Block a user