Skip to content

Speed up Godot terminal rendering and fix frame pacing - #39

Closed
nicodes wants to merge 3 commits into
mainfrom
perf/godot-terminal-frames
Closed

nicodes wants to merge 3 commits into
mainfrom
perf/godot-terminal-frames

Conversation

@nicodes

@nicodes nicodes commented Oct 11, 2026 •

Copy link
Copy Markdown
Member

Honeyvale playback spends about 32 ms resizing every native-resolution frame, then waits another full 16.7 ms after rendering finishes. That makes its fixed-step simulation visibly slow.

Render near terminal resolution with Godot canvas-item scaling while preserving authored logical coordinates and game state, use bilinear final conversion, disable Nagle buffering, and count rendering/transfer time inside the 60 Hz player budget. TERMCADE_GODOT_FULL_RES=1 preserves native render targets for resolution-sensitive games. The benchmark command reports warmed exchange mean/p95, terminal-cell conversion and available engine stage timings through bounded JSON.

Sequential Honeyvale replays on the same Linux/Mesa machine, 160 columns ×45 rows, 60 warmup/120 measured steps: exchange mean 46.764 →5.600 ms (8.35×), p95 52.376 →6.994 ms. Resize mean 32.402 →1.943 ms. These measure the pipeline and exclude startup, terminal-emulator painting and player pacing; they are not an end-user FPS guarantee.

Validation: canonical make install/check passed, including five-platform compilation, lint, race/consumer tests, native rendering, low-resolution versus authored-coordinate assertions, native-resolution override, shader/UI/3D/scene transition fixtures, watchdog cleanup, and shipping archive benchmark/replay/PNG/PTY checks. Optimized Honeyvale title, movement, pause/resume and inventory replay remained functional; its bag capture was inspected. The exact one-command preview launcher passed a real PTY and clean-exit check. Honeyvale tracked source is unchanged.

This branch includes the unmerged framebuffer foundation and supersedes #38. Canonical documentation and measured JSON evidence are reviewed separately in nicodes/docs. No deployment or marketplace change.


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

@nicodes nicodes closed this Oct 11, 2026
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