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-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
|
||||
server's own mod framework, hooking the game's events and dialling out to a
|
||||
sidecar, exactly as the ServUO overlay does. The Rust server is a *binary*, where
|
||||
ServUO is source a shard owner compiles, so the way in is a published hook API
|
||||
rather than a file you edit. **The three-part shape survives that unchanged**,
|
||||
which is the more useful finding: the plugin-dials-out arrangement is not a
|
||||
property of having source access.
|
||||
little with Ultima Online — and its answer is an **Oxide plugin**: C# loaded by
|
||||
the mod framework a modded Rust server already runs, hooking the game's events and
|
||||
dialling out to a sidecar, exactly as the ServUO overlay does. The Rust server is a
|
||||
*binary*, where ServUO is source a shard owner compiles, so the way in is a
|
||||
published hook API rather than a file you edit. **The three-part shape survives
|
||||
that unchanged**, which is the more useful finding: the plugin-dials-out
|
||||
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
|
||||
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
|
||||
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.
|
||||
Every rule in this chapter applies identically to both — they are properties of
|
||||
being inside a game loop, not of how you got there.
|
||||
is an **Oxide plugin**, C# loaded by a closed server's own mod framework and
|
||||
hooking published events. Every rule in this chapter applies identically to both —
|
||||
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
|
||||
layer is one file: `overlay/Scripts/Custom/Bridge/BridgeLink.cs`. It is C# against
|
||||
|
||||
Reference in New Issue
Block a user