FAQ and Troubleshooting
This page tracks common problems and fixes. It is organized by category and currently covers more than 10 recurring build, runtime, SDK, graphics, platform, and tutorial issues. To add another entry, open a PR against this file using the contribution format below.
Contribution format for new FAQ entries:
### [Category] Short failure description
Symptoms:
- ...
Cause:
- ...
Fix:
1. ...
2. ...
Verification:
- command or observable result
Build issues
[Build] cargo check fails after pulling latest changes
Symptoms:
- New compile errors in generated SDK files.
Cause:
- Generated artifacts are out of sync.
Fix:
- Run
./codegen.sh - Run
bash scripts/check-generated-artifacts.sh
Verification:
cargo checkcompletes without generated-file drift errors.
[Build] scripts/check-generated-artifacts.sh fails
Symptoms:
- Missing generated files or diff output under generated directories.
Cause:
- Generated outputs were not refreshed.
Fix:
- Run
./codegen.sh - Run
python3 scripts/generate-doc-snippets.py - Run
cd sdks/typescript && node scripts/generate-doc-media.mjs - Run
python3 scripts/generate-showcase-docs.py - Re-run
bash scripts/check-generated-artifacts.sh
Verification:
- Script prints
Generated artifact check passed.
[Build] mdbook build fails
Symptoms:
- Include path errors or broken links.
Cause:
- Missing generated snippet/docs outputs or stale links.
Fix:
- Run
cd sdks/typescript && node scripts/generate-doc-media.mjs - Run
python3 scripts/generate-doc-snippets.py - Run
python3 scripts/generate-showcase-docs.py - Run
mdbook build
Verification:
docs/book/rebuilds with no fatal errors.
Runtime issues
[Runtime] goudengine.list_contexts returns no attachable routes
Symptoms:
cargo run -p goudengine-mcpstarts, butgoudengine.list_contextsreturns an empty list.
Cause:
- The target process was started without debugger mode enabled, or you launched a browser/WASM target that does not publish debugger routes in this batch.
Fix:
- Start a desktop or headless process with debugger mode enabled before creation.
- Use one of the shipped Feature Lab examples if you want a known-good route:
./dev.sh --game feature_labpython3 examples/python/feature_lab.pycargo run -p feature-lab./dev.sh --sdk typescript --game feature_lab
- Re-run
cargo run -p goudengine-mcp, then callgoudengine.list_contextsandgoudengine.attach_context.
Verification:
goudengine.list_contextsshows one of the stable Feature Lab labels such asfeature-lab-csharp-headless,feature-lab-python-headless,feature-lab-rust-headless, orfeature-lab-typescript-desktop.
[Runtime] Python bindings fail with symbol/load errors
Symptoms:
- Import error or unresolved symbol when running Python examples.
Cause:
- Loader found old native library.
Fix:
cargo build --releaseGOUD_ENGINE_LIB=$PWD/target/release PYTHONPATH=$PWD/sdks/python python3 sdks/python/test_bindings.py
Verification:
- Binding tests pass and examples start.
[Runtime] C# tests fail on Apple Silicon architecture mismatch
Symptoms:
- Runtime load/test failures under x64 test paths on Apple Silicon.
Cause:
- Host/runtime architecture mismatch.
Fix:
- Verify binaries:
file sdks/csharp/runtimes/osx-x64/native/libgoud_engine.dylibfile sdks/csharp/runtimes/osx-arm64/native/libgoud_engine.dylib
- Run x64-hosted tests:
DOTNET_ROOT_X64=/usr/local/share/dotnet/x64 /usr/local/share/dotnet/x64/dotnet test sdks/csharp.tests/GoudEngine.Tests.csproj -v minimal
Verification:
- Tests pass on explicit x64 host path.
[Runtime] TypeScript web example starts but renders blank
Symptoms:
- Page opens with no gameplay output.
Cause:
- Wrong import-map/asset path or running from
file://.
Fix:
- Use repo command:
./dev.sh --sdk typescript --game flappy_bird_web - Confirm page is served by HTTP URL printed by
dev.sh.
Verification:
- Game renders and input responds.
SDK and codegen issues
[SDK] python3 codegen/validate_coverage.py fails
Symptoms:
- Mapping coverage errors for FFI exports.
Cause:
- Rust exports changed without codegen mapping updates.
Fix:
- Build once to refresh manifest.
- Run
python3 codegen/validate.py - Update
codegen/goud_sdk.schema.jsonand/orcodegen/ffi_mapping.json - Run
./codegen.sh
Verification:
- Both validation commands pass.
[SDK] TypeScript tests fail after codegen changes
Symptoms:
- Missing generated type exports or runtime wrapper mismatches.
Cause:
- Node/web generated entrypoints drifted.
Fix:
- Run
./codegen.sh - Run
cd sdks/typescript && npm test
Verification:
- Test suite is green with regenerated outputs.
[SDK] Clean-room regenerate fails
Symptoms:
scripts/clean-room-regenerate.shfails after deleting generated files.
Cause:
- Regeneration pipeline no longer rebuilds from source truth.
Fix:
- Run
bash scripts/clean-room-regenerate.sh - If docs are required, run:
PATH="$HOME/.cargo/bin:$HOME/.dotnet/tools:$PATH" bash scripts/clean-room-regenerate.sh --docs
- Fix any step that fails before release.
Verification:
- Script completes without manual file restoration.
Graphics and platform issues
[Graphics] OpenGL context errors in CI/headless runs
Symptoms:
- Graphics tests fail in environments without display/GL context.
Cause:
- Tests requiring GL context run in unsupported environment.
Fix:
- Prefer headless-safe smoke paths for CI.
- Use helper context setup where graphics tests require it.
Verification:
- CI lane runs expected headless-safe coverage without GL crashes.
[Platform] Linux desktop app fails to start with GLFW/OpenGL errors
Symptoms:
- Startup fails before first frame.
Cause:
- Missing system packages for GLFW/OpenGL.
Fix:
- Install required OpenGL/GLFW runtime packages.
- Re-run the same command via
dev.sh.
Verification:
- Window opens and loop runs.
[Platform] Web networking behavior differs from native SDKs
Symptoms:
- Browser networking path behaves differently from Node/native.
Cause:
- Browser SDK uses WASM/browser APIs, not native transports.
Fix:
- Review Web Platform Gotchas
- Validate with web-specific smoke paths.
Verification:
- Web networking behavior matches documented browser scope.
[Platform] TypeScript web networking fails to connect
Symptoms:
- Browser client never reaches
peerCount() > 0.
Cause:
- Wrong protocol, wrong URL, or sending before the WebSocket connection is established.
Fix:
- Use
NetworkProtocol.WebSocket - Point it at a browser-reachable
ws://orwss://URL - Wait for
peerCount() > 0before first send - Validate with:
./dev.sh --sdk typescript --game sandbox_webcd examples/typescript/feature_labnpm run smoke:web-network
Verification:
- Browser smoke passes with a real
ping/pongroundtrip.
Example and tutorial issues
[Examples] Not sure which example to run first
Use this order:
- Flappy Bird for baseline behavior parity.
- Sandbox for the full cross-language feature tour.
- Feature Lab for supplemental smoke coverage.
- C# specialization demos for renderer/gameplay patterns.
Reference:
examples/README.md- Sandbox Guide
- Example Showcase
[Tutorial] Need the final code for Build Your First Game
Use shipped final projects:
examples/csharp/flappy_goud/examples/python/flappy_bird.pyexamples/typescript/flappy_bird/examples/rust/flappy_bird/
If you need zip bundles, use the git archive commands in Build Your First Game.