No description
  • GDScript 95.8%
  • Python 4.2%
Find a file
Julien Bake fa633bb82a feat: add top-down city test scene
- add top-down player movement, aiming, and follow camera scripts
  - generate a runtime city scene for movement and camera testing
  - add footprint collision generation for Buildify buildings
  - verify building collision in smoke tests
  - document the top-down test scene and set it as the main scene
2026-07-04 12:30:13 +02:00
addons/buildify feat: add top-down city test scene 2026-07-04 12:30:13 +02:00
scenes feat: add top-down city test scene 2026-07-04 12:30:13 +02:00
tools feat: add top-down city test scene 2026-07-04 12:30:13 +02:00
.codex initial 2026-06-21 13:52:04 +02:00
.gitignore initial 2026-06-21 13:52:04 +02:00
buildify_1.0.blend initial 2026-06-21 13:52:04 +02:00
buildify_1.0.blend.import initial 2026-06-21 13:52:04 +02:00
project.godot feat: add top-down city test scene 2026-07-04 12:30:13 +02:00
README.md feat: add top-down city test scene 2026-07-04 12:30:13 +02:00

Buildify Godot

This is a Godot 4.7 editor-addon port of the Buildify Blender geometry-nodes library.

The first version implements the ADE workflow: add a BuildifyBuilding3D, edit its Footprint Path3D, then press Generate in the inspector. The addon ships with greybox modules exported from buildify_1.0.blend and uses res://addons/buildify/kits/greybox_kit.tres by default.

auto_generate is off by default because editor-time generation can create many nodes and should not run while Godot is still updating 3D gizmos. Press Generate after changing settings or the footprint.

BuildifyCityBlock3D generates multiple BuildifyBuilding3D children from one city_seed. Open scenes/city_block_demo.tscn, select BuildifyCityBlock3D, then press Generate City. Use blocks_x, blocks_z, lots_per_block_x, and lots_per_block_z to scale the test city.

For movement and camera testing, open scenes/top_down_city_test.tscn and play the current scene. It generates a small city at runtime, uses WASD for movement, mouse position for facing, and arrow keys as keyboard aim fallback.

Generated buildings create simple footprint perimeter collision by default, so the top-down player is blocked by building outlines without requiring heavy mesh collision.

Module Convention

Custom module kits should use:

  • local X as module width
  • local Y as height
  • local Z as depth/outward direction
  • pivot at the bottom center for wall and pillar modules
  • applied rotation and scale before export

The included greybox kit uses wall_yaw_offset_degrees = 180 and pillar_yaw_offset_degrees = 90. Custom kits may need different offsets depending on their exported forward direction.

Wall assets are assigned through BuildifyWallModule resources in a BuildifyKit, not by filename. Each wall module wraps a PackedScene and declares whether wall props may be placed on it, whether it can repeat vertically, and which vertical stack group it belongs to. For the included greybox kit, middle_floor_wall_02 and middle_floor_wall_03 are marked as vertically repeatable; middle_floor_wall_01 is kept out of repeated middle-floor stacks because it has no edge lines.

Current Scope

  • Supported: ADE footprints, fixed/random floor counts, ground/middle walls, pillars, trim, flat roof, wall props, roof details, seeded city-block test generation, and a top-down player/camera test scene.
  • Not yet supported: BLOSM/OSM import, Blender vertex-group floor weights, exact Geometry Nodes parity, and multiple architectural styles in one node.

Local verification was done with Godot 4.6.3 because a 4.7 binary was not installed in this environment.