panel public release

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-15 01:26:41 -07:00
commit 295eb22826
2165 changed files with 301492 additions and 0 deletions
@@ -0,0 +1,8 @@
# Empyrion mod manifest. Tells Empyrion to load this mod into the dedicated
# server process (Game_Start hook), where it opens a TCP listener on the
# port configured in Settings.yaml — 7028 in our case (panel-allocated).
Name: EPM
Description: Empyrion Network Relay - exposes Mod API over TCP for panel/EAH/etc
Author: W3DG (open-source via MichaelGoulding/sample-empyrion-mod)
Version: 1.0
ModTargets: Dedi
+43
View File
@@ -0,0 +1,43 @@
# EPM mod artifacts
Drop-in `Content/Mods/EPM/` for Empyrion. Loaded by the dedicated server's
mod loader; opens a TCP listener on `Settings.yaml.GameServerApiPort` (we
ship `0.0.0.0:7028`, panel-allocated to whatever `EAH_API_PORT` env says).
## Files
- `EmpyrionNetworkRelayMod.dll` — the mod (`ModTargets: Dedi`). Compiled
from `EmpyrionNetworkConnectedMods/sample-empyrion-mod/Empyrion Mod/`
with one tweak: `Configuration.cs` was rewritten to manually parse
`Settings.yaml` (key: value lines) instead of using `YamlDotNet`. Reason:
current Empyrion 1.16.x ships `YamlAssembly.dll` rather than the old
`Assembly-CSharp-firstpass.dll` that bundled `YamlDotNet`, so the
upstream binary fails with `TypeLoadException` at `Game_Start`.
- `EPMConnector.dll` — wire protocol library (TCP framing + protobuf-net
message dispatch). Linked by both EPM and any C# client.
- `EmpyrionNetworkRelayMod_Info.yaml` — manifest. Per-DLL naming is
required because there are two DLLs in the folder; with a single DLL,
`Info.yaml` works, but with multiple Empyrion's loader needs each main
DLL to have a sibling `<DllName>_Info.yaml`.
- `Settings.yaml` — host+port for the TCP listener. `0.0.0.0` is fine
inside the container (host networking limits exposure to the container
port; opnfwd handles WAN forwarding).
## Verified end-to-end on 2026-04-30
1. EPM loads under Wine: `Loaded Mod 'EmpyrionNetworkRelayMod': "EPM"`.
2. TCP listener opens: `Now listening on port 7028`.
3. C# probe (`/eah_probe/probe/Probe.cs`) connects via `EPMConnector.Client`
and gets typed protobuf-net responses for `Request_Get_Factions`,
`Request_Player_List`, `Request_Playfield_List`. Default Human
faction came back deserialized into `Eleon.Modding.FactionInfoList`.
## How to rebuild
1. Open `C:\Users\dbledeez\AppData\Local\Temp\eah_probe\EmpyrionNetworkConnectedMods\sample-empyrion-mod\Empyrion Mod\` (or re-clone from `MichaelGoulding/EmpyrionNetworkConnectedMods`).
2. Replace `Configuration.cs` with the YAML-free version (see
`feedback_empyrion_yaml_dotnet_drop.md` for the snippet).
3. `cd` to that folder and `csc.exe @build.rsp`. Output goes to
`bin\Release\EmpyrionNetworkRelayMod.dll`.
4. Copy `EmpyrionNetworkRelayMod.dll` + `EPMConnector.dll` + the two yamls
into this directory; commit.
+3
View File
@@ -0,0 +1,3 @@
---
GameServerIp: "0.0.0.0"
GameServerApiPort: 7028