Skip to content

Play Godot-rendered viewports inside the terminal - #38

Closed
nicodes wants to merge 2 commits into
mainfrom
feat/godot-frame-capture
Closed

nicodes wants to merge 2 commits into
mainfrom
feat/godot-frame-capture

Conversation

@nicodes

@nicodes nicodes commented Oct 11, 2026 •

Copy link
Copy Markdown
Member

Godot games currently require a custom renderer that recognizes selected scene nodes. This change lets Godot render its actual viewport on an owned private Xvfb display, then downsamples that image into terminal character cells. Cameras, animated sprites, UI/text, materials, custom drawing, autoloads, scene changes and 3D use the engine renderer rather than a Termcade whitelist.

The local framebuffer target uses Linux, Xvfb and Mesa software OpenGL with Godot 4.7.2 Compatibility rendering. The terminal player fits the available space without restarting gameplay, preserves game aspect ratio, and passes Escape to game menus; Ctrl+C exits. Export setup avoids running autoloads before import. Packages need re-exporting for protocol 2. Trusted native previews remain separate from the Wasm marketplace.

Validation: canonical make install and make check passed locally, including five-platform compilation, lint, race/consumer tests, native-rendering fixtures and the shipping archive replay/PNG/PTY gate. Rendering fixtures exercise camera, animation, shader, custom drawing, UI/button input, 3D SubViewport, autoload state and scene transitions. Hung engine and virtual-display cleanup are checked. Persistent invalid scripts still fail export without leaving a package.

Honeyvale main 17cc4b8 exported with its verified released addon and no tracked source changes. Shipping CLI replays reached the village, moved, opened/resumed the pause menu and opened inventory; captured village and bag frames were inspected. This does not claim full Honeyvale mechanics acceptance, Forward+ compatibility, durable saves, or marketplace containment.

Canonical documentation is updated separately in nicodes/docs. This branch includes the unmerged experimental exporter foundation and supersedes the node-emulation approach in #37.


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant