map-editor-tool
Comprehensive guide for using the visual map editor. Use when designing game worlds, placing buildings, NPCs, or managing map JSON files.
Install
mkdir -p .claude/skills/map-editor-tool && curl -L -o skill.zip "https://mcp.directory/api/skills/download/283" && unzip -o skill.zip -d .claude/skills/map-editor-tool && rm skill.zipInstalls to .claude/skills/map-editor-tool
About this skill
Map Editor Tool
Overview
The Map Editor is a visual tool for designing buildings and placing objects in your Babylon.js game world. It uses a grid-based system where each cell represents 1 unit in the 3D world.
Location: tools/map-editor.html
Access: Open directly in web browser - no server needed!
Getting Started
1. Open the Map Editor
Simply open tools/map-editor.html in your web browser:
# From your project root
open tools/map-editor.html
# or
firefox tools/map-editor.html
# or copy the full path and open in browser
/home/gianfiorenzo/Documents/Vs\ Code/babylon_fp/tools/map-editor.html
2. Using the Tools
Available Tools:
- 🧱 Wall - Create solid walls for buildings (2 units wide × 1 unit deep × 3 units tall)
- ⬜ Floor - Create floor tiles (thin, walkable)
- 🚪 Door - Create doorways (2 units wide × 1 unit deep × 2.2 units tall, interactive in-game)
- 🪟 Window - Create windows (2 units wide × 1 unit deep × 1.5 units tall)
- 👤 NPC Spawn - Mark NPC spawn points
- 🎮 Player Spawn - Mark player spawn points
- ❌ Erase - Remove tiles
How to Use:
- Click a tool button to select it (it will highlight green)
- Click on the grid to place tiles
- Use the Rotation dropdown or press 'R' to rotate (0°, 90°, 180°, 270°)
- Click on existing tiles with the Erase tool to remove them
- Hover over the grid to see coordinates
3. Grid System
- Grid Size: 100x100 by default (adjustable)
- Cell Size: 1 unit per cell
- World Size: 100x100 units total
- Origin: Center of the grid is world position (0, 0, 0)
Coordinate Conversion:
- Grid (50, 50) = World (0, 0) (center)
- Grid (0, 0) = World (-50, -50) (top-left corner)
- Grid (100, 100) = World (50, 50) (bottom-right corner)
4. Visual Features
Cursor Preview 👁️
- Semi-transparent preview of the tile you're about to place
- Shows exactly what the tile will look like before clicking
- Preview follows your mouse cursor in real-time
- Changes instantly when you switch tools or rotation
Orientation Indicators 🧭
All rotatable items show a bright green line on their "front" edge:
Walls, Doors, Windows:
- 0° (Horizontal): Green line on bottom edge (facing south)
- 90° (Vertical): Green line on left edge (facing west)
- 180°: Green line on top edge (facing north)
- 270°: Green line on right edge (facing east)
NPC & Player Spawns:
- Default orientation facing south (down) with green line on bottom
Already-placed tiles show a darker green line (more subtle) to indicate their orientation.
Erase Tool Visual ❌
- Shows a red X under cursor when erase tool is selected
- Clear visual indication of what will be deleted
5. Building Types
Walls
- Default height: 3 units
- Blocks player movement
- Used for building exteriors and interiors
- Rotatable: 0°, 90°, 180°, 270°
Floors
- Thin tiles (0.1 units high)
- Create interior floors or platforms
- Collision enabled
- Walkable
Doors
- Height: 2.2 units
- Width: 1.0 units (can occupy 2 grid units with rotation)
- Can be made interactive with the DoorSystem
- Initially blocks movement in-game
- Rotatable for proper wall orientation
Windows
- Placed higher on walls (1.5 units from top)
- Semi-transparent
- Blocks movement (glass)
- Rotatable for proper wall orientation
Spawn Points
- Player Spawn: Where the player starts (only one per map)
- NPC Spawn: Where NPCs are placed (link to NPC id in JSON)
- Include
npcIdin the JSON to link to specific NPC data
Advanced Features
Drag Painting 🎨
- Left-click and drag to paint multiple tiles quickly
- Works with: Wall, Floor, Window, and Erase tools
- Perfect for creating large areas without clicking repeatedly
- Release mouse button to stop painting
NPC Schedule Editor 📅
- Automatically opens when you select/place an NPC
- Edit waypoint times, positions, and npc type
- Add, edit, or remove waypoints
- Time validation ensures consistent schedules
- Export/import preserves all schedule data
Map Import/Export
Exporting Your Map
Once you've designed your map:
- Copy JSON: Copies the map data to your clipboard
- Download JSON: Downloads as a
.jsonfile - Save the file to
/public/data/maps/your_map_name.json
Importing Maps
- Click Import JSON button
- Select a
.jsonfile from your computer - Map and all schedule data are restored
- Existing data is replaced
Rotation & Building Walls
Wall Placement
Horizontal Wall (0° or 180°)
Place walls at grid positions with X-spacing of 2:
Grid: (0,0) → (2,0) → (4,0) → (6,0)
World: x=-50, x=-48, x=-46, x=-44
Vertical Wall (90° or 270°)
Place walls at grid positions with Y-spacing of 2:
Grid: (0,0) → (0,2) → (0,4) → (0,6)
World: z=-50, z=-48, z=-46, z=-44
Creating Corners
Horizontal wall at (0,0) rotation=0°
Vertical wall at (0,0) rotation=90°
Creates an L-shaped corner
How Rotation Works
- 0°: Horizontal (default) - 2 units wide along X-axis, 1 unit deep along Z-axis
- 90°: Vertical - 1 unit wide along X-axis, 2 units deep along Z-axis
- 180°: Horizontal (flipped)
- 270°: Vertical (flipped)
Loading Maps in Game
To load your map in the game:
- Save your JSON file to
/public/data/maps/ - In
src/Game.ts, uncomment and modify the map loading line:
// In the init() method
await this.mapBuilder.loadMapFromFile('/data/maps/your_map_name.json');
Tips for Organization
Version Control
- Save maps as JSON files in
/public/data/maps/ - Commit maps to git for team collaboration
- Use descriptive filenames
Map Organization
Create separate maps for different areas:
town_center.json- Main plazaresidential_01.json- House group 1bakery.json- Bakery buildingpolice_station.json- Police station
Naming Conventions
{area}_{building_type}_{variant}.json
Examples:
- downtown_shop_general.json
- downtown_shop_bakery.json
- residential_house_01.json
- plaza_fountain.json
Map Metadata
Include metadata in your maps:
{
"metadata": {
"gridSize": 100,
"cellSize": 1,
"worldSize": 100,
"version": "1.0.0",
"description": "Town bakery - single story building",
"author": "Your Name",
"created": "2025-10-15"
},
"tiles": [...],
"spawns": [...],
"schedules": [...]
}
JSON Structure
Complete Map Format
{
"metadata": {
"gridSize": 100,
"cellSize": 1,
"description": "Bakery"
},
"tiles": [
{
"gridX": 10,
"gridY": 15,
"type": "wall",
"rotation": 0
}
],
"spawns": [
{
"gridX": 20,
"gridY": 25,
"type": "npcSpawn",
"npcId": "baker"
}
],
"schedules": [
{
"npcId": "baker",
"waypoints": [
{"time": "06:00", "gridX": 20, "gridY": 25},
{"time": "09:00", "gridX": 15, "gridY": 20}
]
}
]
}
Advanced Usage
Multi-Story Buildings
To create multi-story buildings:
- Create multiple floor plans as separate map files
- Load them with different Y offsets in code
- Or modify positions before building in code
Complex Structures
For complex buildings:
- Start with the outer walls
- Add interior walls to create rooms
- Place floors
- Add doors and windows
- Mark spawn points for NPCs
Performance Tips
- Keep maps under 500 tiles for best performance
- Use floor tiles sparingly (they add geometry)
- Group related structures in separate map files
- Reuse maps with position offsets for similar buildings
Example Workflow
- Sketch: Draw your building layout on paper
- Design: Open map editor and create the structure
- Place NPCs: Click NPC Spawn, edit schedule in modal
- Export: Download JSON file
- Save: Move to
/public/data/maps/ - Test: Load in game and walk through
- Iterate: Adjust and refine
- Commit: Save to version control
Troubleshooting
Map doesn't load in game:
- Check browser console for errors
- Verify JSON syntax is valid
- Ensure file path in Game.ts is correct
- Check the file exists in
/public/data/maps/
Walls overlap or look wrong:
- Remember spacing: horizontal walls use X-spacing of 2, vertical use Y-spacing of 2
- Check grid coordinates vs world coordinates
- Verify rotation settings (green line should face outward)
Player gets stuck:
- Add doors where needed
- Check for overlapping collision geometry
- Verify spawn points are in valid, open locations
Schedule editor not showing:
- Make sure you've selected an NPC spawn point
- Click on the NPC spawn to select it
- The editor should appear automatically
Keyboard Shortcuts
R- Rotate selected tool by 90°E- Select Erase toolD- Select Floor toolW- Select Wall tool
Development Commands
List all maps
ls -1 /home/gianfiorenzo/Documents/Vs\ Code/babylon_fp/public/data/maps/*.json
Validate map JSON
cd /home/gianfiorenzo/Documents/Vs\ Code/babylon_fp
for f in public/data/maps/*.json; do
echo "Checking $f..."
node -e "JSON.parse(require('fs').readFileSync('$f'))" && echo "✓ Valid"
done
Count buildings in a map
cd /home/gianfiorenzo/Documents/Vs\ Code/babylon_fp
cat public/data/maps/example.json | grep -c '"type"'
Future Enhancements
Planned features:
- Undo/Redo functionality
- Copy/Paste regions
- Prefab buildings (templates)
- Height adjustments
- Texture selection
- 3D preview panel
- Multi-map management
- Collision layer visualization
You might also like
flutter-development
aj-geddes
Build beautiful cross-platform mobile apps with Flutter and Dart. Covers widgets, state management with Provider/BLoC, navigation, API integration, and material design.
drawio-diagrams-enhanced
jgtolentino
Create professional draw.io (diagrams.net) diagrams in XML format (.drawio files) with integrated PMP/PMBOK methodologies, extensive visual asset libraries, and industry-standard professional templates. Use this skill when users ask to create flowcharts, swimlane diagrams, cross-functional flowcharts, org charts, network diagrams, UML diagrams, BPMN, project management diagrams (WBS, Gantt, PERT, RACI), risk matrices, stakeholder maps, or any other visual diagram in draw.io format. This skill includes access to custom shape libraries for icons, clipart, and professional symbols.
godot
bfollington
This skill should be used when working on Godot Engine projects. It provides specialized knowledge of Godot's file formats (.gd, .tscn, .tres), architecture patterns (component-based, signal-driven, resource-based), common pitfalls, validation tools, code templates, and CLI workflows. The `godot` command is available for running the game, validating scripts, importing resources, and exporting builds. Use this skill for tasks involving Godot game development, debugging scene/resource files, implementing game systems, or creating new Godot components.
nano-banana-pro
garg-aayush
Generate and edit images using Google's Nano Banana Pro (Gemini 3 Pro Image) API. Use when the user asks to generate, create, edit, modify, change, alter, or update images. Also use when user references an existing image file and asks to modify it in any way (e.g., "modify this image", "change the background", "replace X with Y"). Supports both text-to-image generation and image-to-image editing with configurable resolution (1K default, 2K, or 4K for high resolution). DO NOT read the image file first - use this skill directly with the --input-image parameter.
ui-ux-pro-max
nextlevelbuilder
"UI/UX design intelligence. 50 styles, 21 palettes, 50 font pairings, 20 charts, 8 stacks (React, Next.js, Vue, Svelte, SwiftUI, React Native, Flutter, Tailwind). Actions: plan, build, create, design, implement, review, fix, improve, optimize, enhance, refactor, check UI/UX code. Projects: website, landing page, dashboard, admin panel, e-commerce, SaaS, portfolio, blog, mobile app, .html, .tsx, .vue, .svelte. Elements: button, modal, navbar, sidebar, card, table, form, chart. Styles: glassmorphism, claymorphism, minimalism, brutalism, neumorphism, bento grid, dark mode, responsive, skeuomorphism, flat design. Topics: color palette, accessibility, animation, layout, typography, font pairing, spacing, hover, shadow, gradient."
rust-coding-skill
UtakataKyosui
Guides Claude in writing idiomatic, efficient, well-structured Rust code using proper data modeling, traits, impl organization, macros, and build-speed best practices.
Stay ahead of the MCP ecosystem
Get weekly updates on new skills and servers.