Using TiledMap with RPG-JS
TiledMap integration allows you to use maps created with the Tiled Map Editor in your RPG-JS games. This provides a visual way to design your game maps with layers, tilesets, collision detection, and interactive objects.Use
@rpgjs/tiledmap when you want to build maps with Tiled Map Editor.If you want your own renderer or your own map format, use Custom map rendering with provideLoadMap.Installation
First, install the TiledMap package:Runtime ownership
Tiled behaves differently according to the game mode:- in standalone RPG mode, the browser loads the complete TMX and TSX files
- in MMORPG mode, the server loads the complete files and owns collisions, objects, events and properties; the browser receives only nearby render chunks and their static hitboxes for prediction
Vite Configuration
Configure yourvite.config.ts to handle Tiled map files:
Plugin Options
sourceFolder: Directory containing your TMX files, TSX tilesets, and imagespublicPath: URL path prefix for accessing map files (default:/data)buildOutputPath: Target folder in build output (default:assets/data)allowedExtensions: File extensions to include (default:['.tmx', '.tsx', '.png', '.jpg', '.jpeg', '.gif', '.webp', '.svg'])
dist/client
exposes TMX/TSX files.
Client-Side Setup
Configure the client to use TiledMap:Server-Side Setup
Configure the server to use TiledMap:Custom, Studio, and other map formats
Chunk streaming is not tied to Tiled. A map package can pairprovideServerMapStreaming() with provideClientMapStreaming():
- the server compiler converts private source data into a public manifest and chunks
- every chunk supplies renderer data plus static collision geometry
- the client adapter incrementally applies and removes renderer data
File Structure
Organize your Tiled files in the configured source folder:Features
Automatic Collision Detection
TiledMap automatically detects collision tiles and applies tile rules to physics:- Set the
collisionproperty totrueon tiles in Tiled Map Editor - Collision rules are attached to entities through physics extension hooks
- The server always uses the complete collision map
- In MMORPG mode, the client predicts only with hitboxes from disclosed chunks
- No additional code required for basic tile blocking
Event Integration
Place events in Tiled using point objects:- Create an Object Layer in Tiled
- Add Point objects with names matching your event names
- Events will be automatically positioned based on object coordinates
Map API Compatibility
When the server loads a Tiled map,@rpgjs/tiledmap attaches the CanvasEngine Tiled instance to map.tiled and exposes v4-compatible helpers on the map:
map.layersmap.zTileHeightmap.getLayerByName(name)map.getTileIndex(x, y)map.getTileOriginPosition(x, y)map.getTileByPosition(x, y, z?)map.getTileByIndex(tileIndex)map.setTile(x, y, layer, tileInfo)map.updateTileset(tileset)
@rpgjs/tiledmap. For new code, prefer using map.tiled directly when you need CanvasEngine-specific behavior.
Physics Hooks Integration
The tiled module now uses shared physics hooks:- Server:
map.onPhysicsInit,map.onPhysicsEntityAdd,map.onPhysicsEntityRemove,map.onPhysicsReset - Client:
sceneMap.onPhysicsInit,sceneMap.onPhysicsEntityAdd,sceneMap.onPhysicsEntityRemove,sceneMap.onPhysicsReset