docs(setup): add submodule and CachyOS build instructions
This commit is contained in:
parent
d826795bbb
commit
69682ccb35
1 changed files with 90 additions and 0 deletions
90
docs/MOD_SETUP.md
Normal file
90
docs/MOD_SETUP.md
Normal file
|
|
@ -0,0 +1,90 @@
|
|||
# Mod source and Linux setup
|
||||
|
||||
The bot pins its STS2MCP fork as a Git submodule at `vendor/STS2MCP`.
|
||||
The fork is private: your desktop needs SSH access to `git.rasyidanaf.com`.
|
||||
The upstream project and its MIT license remain in the submodule.
|
||||
|
||||
## Get both repositories
|
||||
|
||||
For a new checkout:
|
||||
|
||||
```sh
|
||||
git clone --recurse-submodules git@git.rasyidanaf.com:0xrsydn/sts2-bot.git
|
||||
cd sts2-bot
|
||||
```
|
||||
|
||||
For an existing checkout:
|
||||
|
||||
```sh
|
||||
git pull --ff-only
|
||||
git submodule sync --recursive
|
||||
git submodule update --init --recursive
|
||||
```
|
||||
|
||||
An old, unmanaged `vendor/STS2MCP` directory can block initialization. Preserve any
|
||||
local changes by moving that directory outside the checkout before initializing.
|
||||
Do not delete it blindly. Do not use `git submodule update --remote` for normal
|
||||
setup: that bypasses the revision tested with this bot.
|
||||
|
||||
Jujutsu does not populate submodule working trees. After a `jj` checkout/update,
|
||||
use `git submodule update --init --recursive` in a colocated repository. Submodule
|
||||
revision changes require Git; ordinary bot changes can continue to use `jj`.
|
||||
|
||||
## Build on CachyOS / Linux
|
||||
|
||||
Install .NET SDK 9 and the native Linux Steam version of Slay the Spire 2.
|
||||
Check that `dotnet --list-sdks` lists a 9.x SDK. Set `GAME_DIR` to the actual Steam
|
||||
library path; custom libraries and Flatpak Steam use different paths.
|
||||
|
||||
From the bot repository root:
|
||||
|
||||
```sh
|
||||
GAME_DIR="$HOME/.local/share/Steam/steamapps/common/Slay the Spire 2"
|
||||
test -f "$GAME_DIR/data_sts2_linuxbsd_x86_64/sts2.dll"
|
||||
dotnet build vendor/STS2MCP/STS2_MCP.csproj -c Release \
|
||||
-p:STS2GameDir="$GAME_DIR" -o /tmp/sts2-mcp-build
|
||||
```
|
||||
|
||||
If you already use Nix, you can replace `dotnet build` with
|
||||
`nix shell nixpkgs#dotnet-sdk_9 --command dotnet build`.
|
||||
Build against your installed game assemblies. A successful Mac build does not
|
||||
prove compatibility with a different Linux game version.
|
||||
|
||||
## Install with the game closed
|
||||
|
||||
Back up existing files before replacing them:
|
||||
|
||||
```sh
|
||||
MODS_DIR="$GAME_DIR/mods"
|
||||
BACKUP_DIR="$HOME/.local/state/sts2-bot/mod-backups/$(date +%Y%m%dT%H%M%S)"
|
||||
mkdir -p "$MODS_DIR" "$BACKUP_DIR"
|
||||
for file in STS2_MCP.dll STS2_MCP.json; do
|
||||
if [ -f "$MODS_DIR/$file" ]; then cp -p "$MODS_DIR/$file" "$BACKUP_DIR/"; fi
|
||||
done
|
||||
cp /tmp/sts2-mcp-build/STS2_MCP.dll "$MODS_DIR/STS2_MCP.dll"
|
||||
cp vendor/STS2MCP/mod_manifest.json "$MODS_DIR/STS2_MCP.json"
|
||||
```
|
||||
|
||||
Do not use the historical DLL files in the bot's `vendor/` root. They predate
|
||||
this API extension. Keep configuration files and other mods unchanged.
|
||||
Launch the game through Steam and accept mod loading if prompted.
|
||||
|
||||
Read-only health check:
|
||||
|
||||
```sh
|
||||
curl --fail --silent --show-error 'http://localhost:15526/api/v1/singleplayer?format=json'
|
||||
```
|
||||
|
||||
At the main menu, no player/deck/reward data is expected. In a run, inspect
|
||||
`player.permanent_deck`. On a card reward screen, inspect
|
||||
`card_reward.alternatives`. Do not expose the unauthenticated local API publicly.
|
||||
|
||||
## Current integration limits
|
||||
|
||||
The mod extension builds and passed isolated action-guard tests. On macOS, loading
|
||||
and a main-menu GET were verified. Live deck/alternative serialization and Linux
|
||||
execution still require verification. The bot does not yet consume the new fields.
|
||||
Composite scoring remains opt-in; automatic composite skipping is not implemented.
|
||||
|
||||
See the submodule's `docs/reward-observations.md` for the API contract and
|
||||
[the audit](research/16-reward-api-audit.md) for the remaining work.
|
||||
Loading…
Add table
Add a link
Reference in a new issue