- Completely read-only, making it completely safe to use, with no risk of corrupting or overwriting your world files.
- Cross-platform, supports any modern browser on Windows, MacOS, and Linux.
- Open your Terraria world files by browsing to the .wld file.
- Interactive, smooth pan and zoom using the mouse.
- Find and highlight ores, items in chests, Enchanted Swords, Shark Statues, Strange Plants, etc.
- Find and highlight biomes such as Corruption, Crimson, Hallow, Spider Nests, Floating Islands, etc.
- View the world's spawn and dungeon locations.
- View the location of NPCs such as Merchant, Mechanic, Arms Dealer, etc.
- View world properties such as name, version, revision, width, height, moon phase, orbs broken, altars smashed, etc.
- Drag with left mouse button to pan.
- Click with left mouse button to select a tile. Click the 'Selected Tile Info' panel to see the contents of chests, text on signs and gravestones, etc.
- Use mouse wheel to zoom.
TerraMap uses only a single pixel and color for each block, tile, wall, item, etc. It does not use the game's textures. For that, I highly recommend the excellent Terrafirma.
It uses Web Workers to do processor-intensive work in the background to improve responsiveness and performance.
I experimented with several different approaches to drawing, and finally ended up using HTML canvas 2d context fillRect method, which is the fastest method on Chrome, my current browser of choice.
This was an education exercise for me. The only real improvements I made over Terrafirma are the combined block/tile/item search, allowing you to search for items in chests, the incremental search forward/backward, and UI improvements.
I referenced the Terraria .wld format documentation provided by Terrafirma to read the world data.
Sean definitely did a great job at reverse-engineering and documenting the format.
Portions of TerraMap code were adapted from the source code for TerraFirma and TEdit.
I also used ILSpy to peek at some of the Terraria game code.
I used the excellent jquery.panzoom for pan and zoom functionality.