MA

map-editor-tool

A grid-based visual tool for designing game maps and placing objects in Babylon.js.

Install

mkdir -p .claude/skills/map-editor-tool && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/283" && unzip -o skill.zip -d .claude/skills/map-editor-tool && rm skill.zip

Installs to .claude/skills/map-editor-tool

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

Comprehensive guide for using the visual map editor. Use when designing game worlds, placing buildings, NPCs, or managing map JSON files.
137 chars✓ has a “when” trigger
Beginner

Key capabilities

  • Visual placement of game world tiles
  • Generate coordinate-based JSON configurations
  • Edit walls, floors, and interactive objects
  • Manage spawn point positioning
  • Rotate map elements via UI

How it works

Provides a visual HTML5 browser interface that translates grid clicks into an exported JSON map file.

Inputs & outputs

You give it
Map grid placement and object selection
You get back
Updated JSON layout configuration

When to use map-editor-tool

  • Design 3D building layouts
  • Place NPC and player spawns
  • Edit map JSON files visually

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:

  1. Click a tool button to select it (it will highlight green)
  2. Click on the grid to place tiles
  3. Use the Rotation dropdown or press 'R' to rotate (0°, 90°, 180°, 270°)
  4. Click on existing tiles with the Erase tool to remove them
  5. 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 npcId in 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:

  1. Copy JSON: Copies the map data to your clipboard
  2. Download JSON: Downloads as a .json file
  3. Save the file to /public/data/maps/your_map_name.json

Importing Maps

  1. Click Import JSON button
  2. Select a .json file from your computer
  3. Map and all schedule data are restored
  4. 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

  • : 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:

  1. Save your JSON file to /public/data/maps/
  2. 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 plaza
  • residential_01.json - House group 1
  • bakery.json - Bakery building
  • police_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:

  1. Create multiple floor plans as separate map files
  2. Load them with different Y offsets in code
  3. Or modify positions before building in code

Complex Structures

For complex buildings:

  1. Start with the outer walls
  2. Add interior walls to create rooms
  3. Place floors
  4. Add doors and windows
  5. 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

  1. Sketch: Draw your building layout on paper
  2. Design: Open map editor and create the structure
  3. Place NPCs: Click NPC Spawn, edit schedule in modal
  4. Export: Download JSON file
  5. Save: Move to /public/data/maps/
  6. Test: Load in game and walk through
  7. Iterate: Adjust and refine
  8. 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 tool
  • D - Select Floor tool
  • W - 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

When not to use it

  • Programmatic map generation
  • Large-scale procedural environment generation

Prerequisites

Web browser

Limitations

  • Limited to 100x100 grid scale
  • Requires manual file handling after export

How it compares

It replaces manual hand-coding of JSON coordinates with a direct visual editing experience.

Compared to similar skills

map-editor-tool side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
map-editor-tool (this skill)610moReviewBeginner
ui-ux-pro-max1,9095moReviewIntermediate
svg-precision5274moReviewIntermediate
mobile-ios-design2725moNo flagsIntermediate

Try saying

Example prompts that trigger this skill in your AI assistant.

You might also like

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.

1,9092,023

svg-precision

dkyazzentwatwa

Deterministic SVG generation, validation, and rendering. Use for icons, diagrams, charts, UI mockups, or technical drawings requiring structural correctness and cross-viewer compatibility.

5271,229

mobile-ios-design

wshobson

Master iOS Human Interface Guidelines and SwiftUI patterns for building native iOS apps. Use when designing iOS interfaces, implementing SwiftUI views, or ensuring apps follow Apple's design principles.

272711

openscad

mitsuhiko

Create and render OpenSCAD 3D models. Generate preview images from multiple angles, extract customizable parameters, validate syntax, and export STL files for 3D printing platforms like MakerWorld.

154305

mobile-android-design

wshobson

Master Material Design 3 and Jetpack Compose patterns for building native Android apps. Use when designing Android interfaces, implementing Compose UI, or following Google's Material Design guidelines.

101335

mobile-design

sickn33

Mobile-first design and engineering doctrine for iOS and Android apps. Covers touch interaction, performance, platform conventions, offline behavior, and mobile-specific decision-making. Teaches principles and constraints, not fixed layouts. Use for React Native, Flutter, or native mobile apps.

149231

Search skills

Search the agent skills registry