Consolidate the core engine into a frameengine/ package - #27
Merged
diego3 merged 1 commit intoJul 30, 2026
Merged
Conversation
Physically moves every package classified as "Move" in
docs/frame_engine_migration_plan.md's inventory into a single new
frameengine/ directory, mirroring that plan's proposed frame-engine
repo layout exactly (frameengine/application/{config,engine,game,data},
event, events, object, physics, ports, process, resource, script,
vec2, view/{ui,input,camera,scene}).
Nothing outside frameengine/ changes behavior -- this is a pure move
plus import-path rewrite (goengine/x -> goengine/frameengine/x) within
the same module. main.go, main_wasm.go, and games/metalslug_demo's
scene.go are updated to import from the new paths; games/, logic/,
and docs/ are untouched, since they're staying in this repo per the
plan's inventory.
Once frame-engine (github.com/diego3/frame-engine) is ready to receive
it, the actual repo split becomes: copy frameengine/*'s contents to
the new repo's root, `go mod init github.com/diego3/frame-engine`, and
strip the "frameengine/" segment from every import path -- no other
restructuring needed, since this directory's internal layout already
*is* the target repo's layout.
Stacked on #26 (the WorldScene/MainMenu split) -- that split had to
land first so this move carries the generic scene.WorldScene, not the
old game-logic-leaking MainMenu.
Verified: go build/go vet/gofmt clean on every touched file, go test
(+ -race, same pre-existing box2d-go checkptr failure as before,
unrelated) all passing, a WASM cross-compile check, and a live smoke
run of both games/demo1 and games/metalslug_demo (identical output to
pre-move).
diego3
marked this pull request as ready for review
July 30, 2026 01:24
|
Bugbot is not enabled for your account, so this pull request was not reviewed. Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Physically consolidates every package this repo's
docs/frame_engine_migration_plan.mdclassified as Move into a single new top-level
frameengine/directory, so that extractingdiego3/frame-engine later is a straight copy instead of
another round of figuring out what goes where.
Stacked on #26 (the
WorldScene/MainMenusplit) — that had to land first, since this moveneeds to carry the generic
scene.WorldScene, not the old game-logic-leakingMainMenu. Markeddraft until #26 merges, to keep the diff here scoped to just the move. Base is
claude/split-worldscene-from-metalslug, notmain.What moved
Every directory the plan's inventory marked Move, with its internal layout preserved exactly
as-is — this directory's structure is the plan's proposed
frame-enginerepo layout:games/,logic/,main.go,main_wasm.go, anddocs/all stay where they are — per theplan's inventory, they're the application-layer side of the eventual split, not the engine.
What this is (and isn't)
Pure move + import-path rewrite (
goengine/x→goengine/frameengine/x) within the same Gomodule — no behavior change anywhere. The only files modified in place (not moved) are the three
outside
frameengine/that import it:main.go,main_wasm.go, andgames/metalslug_demo/scene.go.When
frame-engineis ready to actually receive this code, the extraction becomes: copyframeengine/'s contents to the new repo's root,go mod init github.com/diego3/frame-engine,and strip the
frameengine/segment from every import path. No further restructuring needed.Not done here (deliberately, to keep this PR mechanical and reviewable): moving
docs/adr/anddocs/tdr/(the plan also marks these Move, but they're prose with their own cross-links,not import paths — better as its own follow-up), and updating
.claude/skills/game-architecture/
game-dev's file-path references (already flagged as a known follow-up in the plan itself).Validation
go build ./...,go vet ./...,gofmt -l(clean).go test ./...andgo test -race ./...: all passing except the same pre-existingbox2d-gocheckptrfailure this repo has documented multiple times before (triggered by anyCreateWorldcall, unrelated to this repo's code or this move).GOOS=js GOARCH=wasm go build): passes.games/demo1andgames/metalslug_demo: identical output to before themove (same physics-body listing, same point where the sandbox's known audio limitation stops
the run).
Generated by Claude Code