Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude/agents/loopolis-godot-engineer.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
13 changes: 5 additions & 8 deletions .claude/agents/loopolis-player.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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 \"-\"}')
Expand All @@ -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
Expand Down Expand Up @@ -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
Expand Down
8 changes: 4 additions & 4 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -136,19 +136,19 @@ 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
```

### 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
```

Expand Down
4 changes: 2 additions & 2 deletions STATUS.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
```
Expand Down
8 changes: 4 additions & 4 deletions godot/scripts/UI/MainMenu.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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 &";

Expand Down
Loading