Skip to content

A project's ./gameframe runs a second clone or another project's copy of GameFrame, and a tool is missing ​

Symptoms ​

A tool or emulator script that GameFrame has fails with a missing module (pe32_emu, pefile), or behaves like an older version than the one on GitHub. ./gameframe root prints a folder that belongs to another game, a symlink, or a clone made for one game. In a git worktree of the project it may print a different folder again.

Cause ​

The project runs a GameFrame other than the machine's one checkout. Older launchers took the first GameFrame they found, starting with ../game-frame next to the project. Two projects kept side by side in one folder then shared whatever sat there. In Hardwar's case it was a symlink to a second clone made for another game, which had fallen behind and lacked the 32-bit emulator the project's scripts import. A git worktree of the project has no ../game-frame at all, so it fell through to the next match under ~/code (observed, Hardwar's parallel sessions). A clone made for one game drifts the same way: its tools go stale, and its lessons reach GitHub only when someone pushes them.

What to do ​

Keep one checkout of GameFrame on the machine, and pin every project to it in the project's git-ignored .env:

bash
GAMEFRAME_ROOT=~/code/game-frame

The launcher reads it from the project and from its main checkout, so worktrees use the same one (docs/working/environments.md, "One GameFrame checkout"). Projects made by scripts/new-project.sh get the line already; an older project needs the current launcher (scripts/update-project.sh). Check with ./gameframe root in the main checkout and in a worktree. To change GameFrame from a game's session, use a git worktree of that one checkout, not a second clone. Remove clones made for single games once their work is merged.

Code: Apache 2.0. Content: CC0 1.0. No game material: bring your own copy.