{"id":43681752,"url":"https://github.com/saworbit/hammerforge","last_synced_at":"2026-02-05T02:01:42.185Z","repository":{"id":335404731,"uuid":"1145608691","full_name":"saworbit/hammerforge","owner":"saworbit","description":"A classic brush-based 3D level editor plugin for Godot 4.6+. HammerForge brings Hammer and TrenchBroom inspired workflows directly into the Godot editor, featuring CAD-style CSG drawing, pending subtract operations, and one-click baking to optimized static meshes with auto-generated collision.","archived":false,"fork":false,"pushed_at":"2026-01-30T12:16:35.000Z","size":9135,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-30T17:29:09.696Z","etag":null,"topics":["3d-editor","csg","gamedev","godot","godot-plugin","godot4","level-design","level-editor","tools"],"latest_commit_sha":null,"homepage":"https://github.com/saworbit/hammerforge","language":"GDScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/saworbit.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-30T01:51:00.000Z","updated_at":"2026-01-30T14:47:42.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/saworbit/hammerforge","commit_stats":null,"previous_names":["saworbit/hammerforge"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/saworbit/hammerforge","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saworbit%2Fhammerforge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saworbit%2Fhammerforge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saworbit%2Fhammerforge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saworbit%2Fhammerforge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/saworbit","download_url":"https://codeload.github.com/saworbit/hammerforge/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saworbit%2Fhammerforge/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29107301,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-05T00:52:08.035Z","status":"online","status_checked_at":"2026-02-05T02:00:07.839Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["3d-editor","csg","gamedev","godot","godot-plugin","godot4","level-design","level-editor","tools"],"created_at":"2026-02-05T02:01:41.629Z","updated_at":"2026-02-05T02:01:42.180Z","avatar_url":"https://github.com/saworbit.png","language":"GDScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/images/hammerforge_logo.png\" alt=\"HammerForge Logo\" width=\"400\"\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eHammerForge\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eFPS-style level editor plugin for Godot 4.6+\u003c/strong\u003e\u003cbr\u003e\n  Brush-based greyboxing and fast bake workflows inside the editor.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Godot-4.6%2B-478cbf?logo=godot-engine\u0026logoColor=white\" alt=\"Godot 4.6+\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/License-MIT-green\" alt=\"MIT License\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Status-Alpha-orange\" alt=\"Alpha\"\u003e\n\u003c/p\u003e\n\n---\n\n## What is HammerForge?\n\nHammerForge brings classic brush workflows (Hammer / TrenchBroom style) into Godot. Draw draft brushes, preview quickly, and bake to optimized meshes only when needed.\n\n| Concept | Description |\n|---------|-------------|\n| **DraftBrush** | Lightweight, editable brush nodes |\n| **Bake** | CSG used only at bake time for performance |\n| **Floor Paint** | Grid-based tool that generates DraftBrush floors/walls |\n\n---\n\n## Features\n\n### Brush Workflow\n- **Two-stage CAD drawing** — drag base, then click height\n- **Add / Subtract operations** with pending cut staging\n- **Shape palette** — box, cylinder, sphere, cone, wedge, pyramid, prisms, ellipsoid, capsule, torus, and platonic solids\n- **Grid snapping** with quick presets and axis locks\n- **Resize gizmo** with full undo/redo support\n\n### Floor Paint *(Early)*\n- Grid-based paint layers with chunked storage\n- **Tools:** Brush, Erase, Rect, Line, Bucket\n- Live preview while dragging\n- Greedy-meshed floors and merged wall segments\n- Stable IDs with scoped reconciliation (no node churn)\n- Paint layers persist in `.hflevel` saves\n\n### Editor UX\n- Editor theme parity for the dock\n- On-screen shortcut HUD (optional)\n- High-contrast editor grid with follow mode\n- History panel (beta) and live brush count\n- Entity palette with drag-and-drop placement\n\n### Bake \u0026 Playtest\n- Bake draft brushes to meshes + collision\n- Optional: merge meshes, LOD generation, UV2 unwrap, navmesh baking\n- Chunked baking via `LevelRoot.bake_chunk_size`\n- **Playtest button** — bakes and runs with an FPS controller\n\n---\n\n## Installation\n\n```\n1. Copy addons/hammerforge into your project\n2. Enable the plugin: Project → Project Settings → Plugins → HammerForge\n3. Open a 3D scene and click in the viewport to auto-create LevelRoot\n```\n\n---\n\n## Quick Start\n\n| Step | Action |\n|------|--------|\n| **1. Draw a brush** | Tool = Draw, Mode = Add, Shape = Box → drag base → click height |\n| **2. Cut a door** | Mode = Subtract → draw brush → Apply Cuts → Bake |\n| **3. Paint floors** | Toggle Paint Mode → choose tool → set radius → paint |\n| **4. Bake** | Click Bake to create optimized geometry |\n\n---\n\n## Documentation\n\n| Document | Description |\n|----------|-------------|\n| [User Guide](docs/HammerForge_UserGuide.md) | Complete usage documentation |\n| [MVP Guide](docs/HammerForge_MVP_GUIDE.md) | Minimum viable product scope |\n| [Floor Paint Design](docs/HammerForge_FloorPaint_Greyboxing.md) | Grid paint system design |\n| [Spec](HammerForge_SPEC.md) | Technical specification |\n| [Changelog](CHANGELOG.md) | Version history |\n\n---\n\n## Roadmap\n\n- [ ] Texture / UV tools\n- [ ] Numeric input during drag\n- [ ] Additional bake pipelines\n\n---\n\n## Troubleshooting\n\n\u003cdetails\u003e\n\u003csummary\u003eCapture exit-time errors (PowerShell)\u003c/summary\u003e\n\n```powershell\nStart-Process -FilePath \"C:\\Godot\\Godot_v4.6-stable_win64.exe\" `\n  -ArgumentList '--editor','--path','C:\\hammerforge' `\n  -RedirectStandardOutput \"C:\\Godot\\godot_stdout.log\" `\n  -RedirectStandardError \"C:\\Godot\\godot_stderr.log\" `\n  -NoNewWindow\n```\n\n\u003c/details\u003e\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eMIT License\u003c/strong\u003e\u003cbr\u003e\n  \u003csub\u003eLast updated: February 5, 2026\u003c/sub\u003e\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsaworbit%2Fhammerforge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsaworbit%2Fhammerforge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsaworbit%2Fhammerforge/lists"}