---
name: "godot-web"
description: "Build and verify Blender-to-Godot browser experiences, including export, physics, and web performance."
metadata:
  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.
