name: "godot-web"
description: "Build and verify Blender-to-Godot browser experiences, including export, physics, and web performance."
createdAt: "2026-09-11T18:46:00.191350+00:00"
repoUrl: "https://skillz.supply/skills/did:plc:xbtmt2zjwlrfegqvch7fboei/skills.godot-web/SKILL.md"
# Blender → Godot → browser Start from the actual Godot version, renderer, export preset, scene source, and hosting path. A procedural Blender generator may be the authoritative source; editing only its generated blend or GLB loses changes on regeneration. Preserve existing object names used by runtime code and collision import hints. ## Geometry and physics - Use explicit GLB export and a fresh Godot import before testing. Verify transforms and collision in the imported scene, not only Blender. - Batch by shared material and useful visibility regions. Merging an interior with a city trades fewer draw calls for poor culling and repeated shadow geometry. Compare submitted primitives as well as draw calls; finer cells can also be slower. - Keep static concave environment collision separate from moving primitive/convex bodies. A visible opening and a collision opening are separate facts; test actual trajectories through each. - Physics owns rigid bodies. For teleports/relaunches, synchronize state through `_integrate_forces`; test sleeping bodies and repeated launches rather than only the first throw. ## Browser integration - Check current web-export requirements before changing renderer or threading. Compatibility/WebGL2 and native rendering have different performance and feature constraints. Threading changes can impose cross-origin isolation requirements on embedded apps. - Keep pointer capture and audio activation in the actual input event's synchronous path. Verify return-from-panel behavior on touch and desktop. - A projected iframe needs both correct geometry and correct interaction ownership. Check all edges, resize, stand-up, occlusion, and input release. Do not cache projection merely because a camera is stationary if moving objects can occlude it. - Give external OAuth a real, clearly identified provider page where normal password-manager and clipboard behavior works. Keep callback/SDK state ownership explicit. ## Performance and verification - Separate transfer/decompression, engine startup, shader compilation, frame rendering, physics, and DOM work. Browser load scores alone do not measure walking smoothness. - Use fixed views, viewport dimensions, light counts, warmup, and frame-time percentiles. Record concurrent machine load. Native timing is useful for local comparisons but is not evidence of Safari or Firefox speed. - Shadow-casting lights multiply render work in Compatibility. Budget expensive illumination separately from persistent objects; do not silently delete user-visible objects to meet a rendering budget. - Share mesh/material/shape resources for repeated objects. Warm the real required render variants before interaction when first-use stalls are measured; do not assume allocating an invisible node compiles its shaders. - Inspect export contents. Screenshots and unused imported media inside a Godot project can enter an all-resources pack; use `.gdignore` and explicit export exclusions for non-game directories. - Run headless behavior tests, then inspect actual rendered output and a browser build. Keep known-good live deployments unchanged during experiments. Report which browsers were really measured and what remains unverified. Primary references: [web export](https://docs.godotengine.org/en/stable/tutorials/export/exporting_for_web.html), [GPU optimization](https://docs.godotengine.org/en/stable/tutorials/performance/gpu_optimization.html), [renderers](https://docs.godotengine.org/en/stable/tutorials/rendering/renderers.html), [import node hints](https://docs.godotengine.org/en/stable/tutorials/assets_pipeline/importing_3d_scenes/node_type_customization.html), [RigidBody3D](https://docs.godotengine.org/en/stable/classes/class_rigidbody3d.html), [WebGL best practices](https://developer.mozilla.org/en-US/docs/Web/API/WebGL_API/WebGL_best_practices). Use version-matching documentation for API details.