From e578a3c485c25d6f670c0b10f1543c5787e51aab Mon Sep 17 00:00:00 2001 From: Cairn Date: Fri, 22 May 2026 19:56:44 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20remove=20hardcoded=20personal=20paths=20?= =?UTF-8?q?=E2=80=94=20repo=20works=20on=20any=20machine?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - MainMenu.cs: derive projectPath from ProjectSettings.GlobalizePath("res://") parent; drop hardcoded DOTNET_ROOT - loopolis-player.md: remove absolute cd, replace absolute SHARED and state-file paths with ./godot/shared/... relative paths - loopolis-godot-engineer.md: replace --path /Users/benjamin.eckstein/... with /path/to/loopolis/godot/ - CLAUDE.md: replace both --path personal paths with /path/to/loopolis/godot/; replace hardcoded DOTNET_ROOT with $(dirname $(dirname $(which dotnet))) - STATUS.md: same --path and DOTNET_ROOT replacement in Godot Launch section --- .claude/agents/loopolis-godot-engineer.md | 2 +- .claude/agents/loopolis-player.md | 13 +++++-------- CLAUDE.md | 8 ++++---- STATUS.md | 4 ++-- godot/scripts/UI/MainMenu.cs | 8 ++++---- 5 files changed, 16 insertions(+), 19 deletions(-) diff --git a/.claude/agents/loopolis-godot-engineer.md b/.claude/agents/loopolis-godot-engineer.md index 9a7b69d..43bd122 100644 --- a/.claude/agents/loopolis-godot-engineer.md +++ b/.claude/agents/loopolis-godot-engineer.md @@ -63,7 +63,7 @@ godot/ ```bash DOTNET_ROOT=/opt/homebrew/opt/dotnet/libexec \ /Applications/Godot_mono.app/Contents/MacOS/Godot \ - --path /Users/benjamin.eckstein/IdeaProjects/private/loopolis/godot/ \ + --path /path/to/loopolis/godot/ \ --editor ``` 5. Open `scenes/World.tscn` in the editor, then press **F5** to run. diff --git a/.claude/agents/loopolis-player.md b/.claude/agents/loopolis-player.md index f372b50..10c1d35 100644 --- a/.claude/agents/loopolis-player.md +++ b/.claude/agents/loopolis-player.md @@ -12,10 +12,7 @@ You play Loopolis by sending commands to a running simulation server. You do NOT ## Starting the Server ```bash -cd /Users/benjamin.eckstein/IdeaProjects/private/loopolis -export DOTNET_ROOT="/opt/homebrew/opt/dotnet/libexec" - -# Start server (blank or default scenario) +# Start server (blank or default scenario) — run from the repo root dotnet run --project src/Loopolis.Runner -- server default --speed 50 > /tmp/loopolis-player.log 2>&1 & sleep 3 @@ -28,10 +25,10 @@ echo "Playing session: $SESSION_ID" ```bash # Full state -cat /Users/benjamin.eckstein/IdeaProjects/private/loopolis/godot/shared/state-${SESSION_ID}.json | python3 -m json.tool 2>/dev/null +cat ./godot/shared/state-${SESSION_ID}.json | python3 -m json.tool 2>/dev/null # Quick summary -cat /Users/benjamin.eckstein/IdeaProjects/private/loopolis/godot/shared/state-${SESSION_ID}.json | python3 -c " +cat ./godot/shared/state-${SESSION_ID}.json | python3 -c " import json,sys d=json.load(sys.stdin) print(f'Tick:{d[\"tick\"]} Pop:{d[\"population\"]}/{d[\"maxCapacity\"]} Balance:\${d[\"balance\"]:.0f} Net:{d[\"netPerTick\"]:.1f}/tick Happy:{d[\"happiness\"]:.0%} State:{d[\"gameState\"]} Event:{d.get(\"activeEventName\") or \"-\"}') @@ -43,7 +40,7 @@ print(f'Tick:{d[\"tick\"]} Pop:{d[\"population\"]}/{d[\"maxCapacity\"]} Balance: Write to `command-{SESSION_ID}.json`. Always wait 0.3–0.5s between commands. ```bash -SHARED=/Users/benjamin.eckstein/IdeaProjects/private/loopolis/godot/shared +SHARED=./godot/shared # Pause/resume echo "{\"cmd\":\"pause\",\"sessionId\":\"$SESSION_ID\"}" > $SHARED/command-${SESSION_ID}.json; sleep 0.5 @@ -87,7 +84,7 @@ echo "{\"cmd\":\"set_speed\",\"ticksPerSecond\":2,\"sessionId\":\"$SESSION_ID\"} ```bash kill $(pgrep -f "Loopolis.Runner") 2>/dev/null -rm -f /Users/benjamin.eckstein/IdeaProjects/private/loopolis/godot/shared/state-${SESSION_ID}.json +rm -f ./godot/shared/state-${SESSION_ID}.json ``` ## Your Gameplay Loop diff --git a/CLAUDE.md b/CLAUDE.md index baad813..89a7f5d 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -136,9 +136,9 @@ export DOTNET_ROOT="/opt/homebrew/opt/dotnet/libexec" dotnet run --project src/Loopolis.Runner -- server default --speed 2 # Terminal 2 — launch Godot viewer -DOTNET_ROOT=/opt/homebrew/opt/dotnet/libexec \ +DOTNET_ROOT=$(dirname $(dirname $(which dotnet))) \ /Applications/Godot_mono.app/Contents/MacOS/Godot \ - --path /Users/benjamin.eckstein/IdeaProjects/private/loopolis/godot/ \ + --path /path/to/loopolis/godot/ \ --editor # → Open scenes/World.tscn → Press F5 ``` @@ -146,9 +146,9 @@ DOTNET_ROOT=/opt/homebrew/opt/dotnet/libexec \ ### Standalone mode (Godot runs its own simulation) ```bash # Don't run the server. Just open Godot — no state.json → standalone mode. -DOTNET_ROOT=/opt/homebrew/opt/dotnet/libexec \ +DOTNET_ROOT=$(dirname $(dirname $(which dotnet))) \ /Applications/Godot_mono.app/Contents/MacOS/Godot \ - --path /Users/benjamin.eckstein/IdeaProjects/private/loopolis/godot/ \ + --path /path/to/loopolis/godot/ \ --editor ``` diff --git a/STATUS.md b/STATUS.md index e16570c..676243d 100644 --- a/STATUS.md +++ b/STATUS.md @@ -223,9 +223,9 @@ dotnet run --project src/Loopolis.Runner -- server default --speed 2 # persiste ```bash # Launch Godot editor (viewer mode if state.json exists, standalone otherwise) -DOTNET_ROOT=/opt/homebrew/opt/dotnet/libexec \ +DOTNET_ROOT=$(dirname $(dirname $(which dotnet))) \ /Applications/Godot_mono.app/Contents/MacOS/Godot \ - --path /Users/benjamin.eckstein/IdeaProjects/private/loopolis/godot/ \ + --path /path/to/loopolis/godot/ \ --editor # → Open scenes/World.tscn → Press F5 ``` diff --git a/godot/scripts/UI/MainMenu.cs b/godot/scripts/UI/MainMenu.cs index 2f65a09..52df099 100644 --- a/godot/scripts/UI/MainMenu.cs +++ b/godot/scripts/UI/MainMenu.cs @@ -522,10 +522,10 @@ private void ApplyCityName() private void OnServerGamePressed() { - // Launch the dotnet server as a background process - var projectPath = "/Users/benjamin.eckstein/IdeaProjects/private/loopolis"; - var cmd = $"export DOTNET_ROOT=/opt/homebrew/opt/dotnet/libexec && " + - $"cd {projectPath} && " + + // Derive the repo root from the Godot project location (res:// == godot/, parent == repo root) + var projectPath = System.IO.Path.GetFullPath( + System.IO.Path.Combine(ProjectSettings.GlobalizePath("res://"), "..")); + var cmd = $"cd {projectPath} && " + $"dotnet run --project src/Loopolis.Runner -- server default --speed 2 " + $"> /tmp/loopolis-server.log 2>&1 &";