mappo v0.33.0 ![a sample of v2chr2gif cli output alt text](/img/v1/DARIN.CHR-down.gif?raw=true)
Mappo is a work in progress 2D tile map editor for retro games. Currently, only VERGE file formats are supported for loading. A comprehensive set of command-line tools for loading and exporting all VERGE file formats (to PNG/GIF/JSON) are included. One of these can export any VERGE map to a Tiled .TMX
file.
Why?
Grue showed me his cool maped4 project. It exploded when I tried to use it, so I created this project to isolate the issues and understand why. Node and Electron and VERGE are cool, so I kept going. It's a fun way to probe unfamiliar territory (Node and Electron) with a familiar face (VERGE).
In ancient times, I worked on my own map editor. http://chuckrector.com/old/ So, I have a soft spot. Partly, this project is about "Can I do what I once did more easily?" Partly, it's also about "How much more powerful am I now?"
Triplefox | what is the plan for the loaders? just to have everything in json?
@aen | binary formats can be viewed as a bit of a barrier
@aen | conversion to json/png/whatever simply lowers that barrier
@aen | and allows us all to stripmine everything
Requirements
- Yarn (an alternative to npm)
- Node >= 5.10.0 (
Buffer.from
)
Installation
- git clone https://github.com/chuckrector/mappo.git
- cd mappo
- yarn
- yarn start
Supported File Formats
| VERGE1 | VERGE2 | VERGE2.7 (ika) | VERGE2k+j | VERGE3 --- |:---:|:---:|:---:|:---:|:---: PCX | โ | โ | โ | โ | โ BOX.RAW | โ | n/a | n/a | n/a | n/a CHR | โ | โ | โ | โ | โ CR2 | โ | n/a | n/a | n/a | n/a EQUIP.DAT | โ | n/a | n/a | n/a | n/a ITEMICON.DAT | โ | n/a | n/a | n/a | n/a ITEMS.DAT | โ | n/a | n/a | n/a | n/a MAIN.FNT | โ | n/a | n/a | n/a | n/a MAP | โ | โ | โ | โ | โ MISCICON.DAT | โ | n/a | n/a | n/a | n/a PAL | โ | n/a | n/a | n/a | n/a PARTY.DAT | โ | n/a | n/a | n/a | n/a SMALL.FNT | โ | n/a | n/a | n/a | n/a SPEECH.SPC | โ | n/a | n/a | n/a | n/a TRANS.TBL | โ | โ | n/a | โ | n/a | n/a VSP | โ | โ | ๐ญ | ๐ญ | โ VC | ๐ญ | ๐ญ | n/a | ๐ญ | ๐ญ VCS | ๐ญ | ๐ญ | n/a | ๐ญ | n/a save games | ๐ญ | n/a | n/a | n/a | n/a
Planned Features
Emoji | What does it mean? |
---|---|
โ | I did it! |
๐ญ | I didn't do it yet. |
๐ | I'm working on it! |
๐ฅ | I've done some parts of it. |
Feature | Implemented? |
---|---|
Show all maps in launch folder (even subfolders) | โ |
Click any V1/V2/V3 map to load it | โ |
Save maps | ๐ฅ๐ ๐ฅ |
Auto-save | โ |
Tile selector | โ |
Plot tiles | โ |
Basic undo/redo (plots) | โ |
Fill region with tiles | ๐ญ |
Auto-tiling | ๐ญ |
Draw map layers in correct order | โ |
Draw tile animations | ๐ญ |
Edit tile animations | ๐ญ |
Draw characters/entities | ๐ญ |
Edit characters/entities | ๐ญ |
Edit map layer order | ๐ญ |
Draw obstructions | ๐ญ |
Edit obstructions | ๐ญ |
Draw zones | ๐ญ |
Edit zones | ๐ญ |
Show all map layers | โ |
Toggle layer visibility | โ |
Scroll viewport w/ keys | โ |
Scroll viewport w/ mouse near edges | โ |
Scroll viewport w/ mouse dragging | โ |
Zoom map (ctrl +/-) | โ |
Multi-tile brushes | ๐ญ |
Multi-tile templates w/ zones & obstructions | ๐ญ |
On launch, load previous map | โ |
On launch, remember previous window size & position | โ |
On launch, remember previous session undo history | โ |
On launch, remember previous zoom level | โ |
On launch, remember previous selected tile | โ |
On launch, remember previous selected layer | โ |
On launch, remember previous layer visibilities | โ |
Drag & drop maps to load them | ๐ญ |
Drag & drop tilesets to load them | ๐ญ |
Drag & drop images to load them as tilesets or characters | ๐ญ |
Command-Line Tools
What does support mean? Currently, at least one loader. Optionally, one or more converters.
Tool | Description |
---|---|
map2tmx | Convert any VERGE map to Tiled .TMX |
pcx2png | Convert any PCX image to 32-bit PNG |
v1boxraw2png | Convert VERGE1 BOX.RAW to 32-bit PNG |
v1chr2gif | Convert VERGE1 character animation frames to animated GIF |
v1chr2json | Convert VERGE1 character animation data to JSON |
v1chr2png | Convert VERGE1 character animation frames to a single 32-bit PNG sprite sheet |
v1chr2pnglist | Convert VERGE1 character animation frames to individual 32-bit PNG images |
v1cr22png | Convert VERGE1 character portrait cels to 32-bit PNG |
v1equipdat2json | Convert VERGE1 EQUIP.DAT to JSON |
v1itemicondat2png | Convert VERGE1 ITEMICON.DAT to a single 32-bit PNG sprite sheet |
v1itemsdat2json | Convert VERGE1 ITEMS.DAT to JSON |
v1mainfnt2png | Convert VERGE1 MAIN.FNT font to a single 32-bit PNG sprite sheet |
v1map2json | Convert VERGE1 map to JSON |
v1miscicondat2png | Convert VERGE1 MISCICON.DAT to a single 32-bit PNG sprite sheet |
v1partydat2json | Convert VERGE1 PARTY.DAT to JSON |
v1smallfnt2png | Convert VERGE1 SMALL.FNT font to a single 32-bit PNG sprite sheet |
v1speechspc2png | Convert VERGE1 SPEECH.SPC cels to a single 32-bit PNG sprite sheet |
v1transtbl2json | Convert VERGE1 TRANS.TBL to JSON |
v1vsp2png | Convert VERGE1 tileset to a single 32-bit PNG sprite sheet |
v2chr2gif | Convert VERGE2 character animation frames to animated GIF |
v2chr2json | Convert VERGE2 character animation frame data to JSON |
v2chr2png | Convert VERGE2 character animation frames to a single 32-bit PNG sprite sheet |
v2chr2pnglist | Convert VERGE2 character animation frames to individual 32-bit PNG images |
v2kjchr2gif | Convert VERGE2k+j character animation frames to a single 32-bit PNG sprite sheet |
v2kjchr2json | Convert VERGE2k+j character animation frame data to JSON |
v2kjchr2png | Convert VERGE2k+j character animation frames to a single 32-bit PNG sprite sheet |
v2kjchr2pnglist | Convert VERGE2k+j character animation frames to individual 32-bit PNG images |
v2map2json | Convert VERGE2 map to JSON |
v2vsp2pal | Convert VERGE2 tileset palette to VERGE.PAL |
v2vsp2png | Convert VERGE2 tileset to a single 32-bit PNG sprite sheet |
v3chr2gif | Convert VERGE3 character animation frames to animated GIF |
v3chr2json | Convert VERGE3 character animation frame data to JSON |
v3chr2png | Convert VERGE3 character animation frames to a single 32-bit PNG sprite sheet |
v3chr2pnglist | Convert VERGE3 character animation frames to individual 32-bit PNG images |
v3map2json | Convert VERGE3 map to JSON |
v3vsp2png | Convert VERGE3 tileset to a single 32-bit PNG sprite sheet |
v3vspob2png | Convert VERGE3 tile obstruction types to a single 32-bit PNG sprite sheet |