34507f9043
- docs/mapmaking/00-index.md — SDK overview with workflow diagram - docs/mapmaking/01-getting-started.md — template setup & first map - docs/mapmaking/02-building-geometry.md — CSG guide & prefab reference - docs/mapmaking/03-lighting-and-env.md — LightmapGI baking guide - docs/mapmaking/04-validation.md — validator CLI & CI/CD usage - docs/mapmaking/05-packaging-and-shipping.md — .pck pipeline - docs/mapmaking/06-faq-and-troubleshooting.md — 30+ common issues - README.md — add mapmaking SDK link to features list
5.5 KiB
5.5 KiB
Tactical Shooter — Mapmaking SDK
Everything you need to build, validate, package, and ship competitive maps for Tactical Shooter. This SDK is designed for the community — no C++, no GDextension tinkering required. You only need Godot 4 (any 4.x) and a text editor.
Quick Start
# Copy the template project
cp -r client/map_template/ maps/my_first_map/
# Rename the demo scene
mv maps/my_first_map/template_map.tscn maps/my_first_map/de_my_map.tscn
# Open in Godot
godot maps/my_first_map/project.godot
Then read the Getting Started guide.
What You Can Build
- Competitive defuse maps — A-site, B-site, CT/T spawns, buy zones
- Custom game modes — The template is gameplay-agnostic; your map logic is in Godot groups, not hardcoded
- Community servers — Ship maps as
.pckfiles via the registry server
SDK Components
| Component | Location | Purpose |
|---|---|---|
| Template project | client/map_template/ |
Standalone Godot project with CSG prefabs and demo scene |
| CSG Prefabs | client/map_template/assets/prefabs/ |
6 drop-in node types (spawns, sites, zones) |
| Editor Validator | client/map_template/template_map.gd |
Auto-runs when scene opened in editor |
| Headless Validator | client/tools/validate_map.gd |
4-module CLI validator for CI/CD |
| Packaging | scripts/map_packaging/pack_map.gd |
Exports .tscn → .pck addon pack |
| Registry Server | scripts/map_packaging/map_registry_server.py |
Serves .pck files over HTTP |
| Client Downloader | client/scripts/map_downloader.gd |
Autoload that downloads + loads .pck at runtime |
Map Authoring Workflow
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ 1. Build │ ──→ │ 2. Validate │ ──→ │ 3. Package │
│ - CSG geometry │ │ - Editor check │ │ - pack_map.gd │
│ - Prefab nodes │ │ - CLI validator │ │ - → .pck file │
│ - Lighting │ │ - Fix warnings │ │ │
└──────────────────┘ └──────────────────┘ └──────────────────┘
│
▼
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ 6. Load & Play │ ←── │ 5. Download │ ←── │ 4. Upload │
│ - Auto-download │ │ - Registry HTTP │ │ - map_registry │
│ - changelevel │ │ - Cache to disk │ │ - .pck + .json │
└──────────────────┘ └──────────────────┘ └──────────────────┘
Performance Targets
Maps built with the SDK must meet these budgets:
| Metric | Target | Enforced by |
|---|---|---|
| Triangle count | ≤ 50,000 | validate_polycount.gd |
| Texture size | ≤ 1024×1024 | validate_textures.gd |
| Dynamic lights | ≤ 4 | validate_lights.gd |
| LightmapGI | ✓ Baked | validate_lights.gd |
| ReflectionProbe | ≥ 1 | validate_lights.gd (warning) |
| FPS target | 60+ | Project rendering settings |
File Structure Reference
tactical-shooter/
├── client/
│ ├── project.godot # Main game project
│ ├── map_template/ # ← YOU ARE HERE (template project)
│ │ ├── project.godot # Standalone Godot project
│ │ ├── template_map.tscn # Demo scene (rename me)
│ │ ├── template_map.gd # Editor validation script
│ │ └── assets/prefabs/ # CSG prefab nodes
│ ├── tools/
│ │ ├── validate_map.gd # CLI validator entry point
│ │ └── validate_map/ # 4 validator modules
│ │ ├── validate_scene.gd
│ │ ├── validate_polycount.gd
│ │ ├── validate_textures.gd
│ │ └── validate_lights.gd
│ └── scripts/
│ └── map_downloader.gd # Client autoload for .pck loading
├── scripts/
│ └── map_packaging/
│ ├── pack_map.gd # Godot editor → .pck exporter
│ └── map_registry_server.py # Python HTTP registry server
└── docs/mapmaking/
├── 00-index.md # This document
├── 01-getting-started.md # Template project setup
├── 02-building-geometry.md # CSG & prefab guide
├── 03-lighting-and-env.md # Lighting & baking
├── 04-validation.md # Validator usage
├── 05-packaging-and-shipping.md# Publishing pipeline
└── 06-faq-and-troubleshooting.md