Imports Tiled maps into Lua for the LÖVE game engine. (NO LONGER IN DEVELOPMENT)
Lua
Latest commit 9c599f3 Oct 24, 2014 @Kadoba Update README.md
Permalink
Failed to load latest commit information.
external 0.12.0 Oct 18, 2012
Base64.lua 0.12.0 Oct 18, 2012
Grid.lua fixed spacing Oct 11, 2012
Loader.lua fixed external tileset updirectory Jan 17, 2013
Map.lua fixed map factory functions Dec 10, 2012
Object.lua Fixed tile objects Dec 11, 2012
ObjectLayer.lua 0.12.0 Oct 18, 2012
README.md Update README.md Oct 24, 2014
Tile.lua Update Tile.lua Feb 16, 2014
TileLayer.lua Fixed for 0.9.0 Nov 10, 2013
TileSet.lua 0.12.0 Oct 18, 2012
VERSION.txt 0.12.1 Oct 30, 2012
init.lua fixed spacing Oct 11, 2012

README.md

Advanced Tiled Loader

Advanced Tiled Loader (ATL) loads and renders Tiled maps inside of the Löve2D game framework.

ATL is no longer being actively developed. Please consider using an alternative library such as STI.

Supported features include:

  • Multiple Layers
  • All object types (regular, polygon, and tile)
  • Properties
  • Transparent colors
  • Margins and spacing
  • External tilesets
  • zlib/gzip compression
  • Isometric maps
  • Flipped and rotated tiles
  • Saving loaded maps

Example files can be found at https://github.com/Kadoba/Advanced-Tiled-Loader-Examples


Quick Example

-- Gets the loader
loader = require("AdvTiledLoader/loader.lua")

 -- Path to the tmx files. The file structure must be similar to how they are saved in Tiled
loader.path = "maps/"

 -- Loads the map file and returns it
map = loader.load("desert.tmx")

-- Draws the map
map:draw()

-- Limits the drawing range of the map. Important for performance
map:setDrawRange(0,0,love.graphics.getWidth(), love.graphics.getHeight())

-- Automatically sets the drawing range to the size of the screen.
map:autoDrawRange(tx, ty, scale, padding)

-- Accessing individual layers
map.layers["layer name"]

-- A shortcut for accessing specific layers
map("layer name")

-- Finding a specific tile
map.layers["layer name"]:get(5,5)

-- A shortcut for finding a specific tile
map("layer name")(5,5)

-- Iterating over all tiles in a layer
for x, y, tile in map("layer name"):iterate() do
   print( string.format("Tile at (%d,%d) has an id of %d", x, y, tile.id) )
end

-- Iterating over all objects in a layer
for i, obj in pairs( map("object layer").objects ) do
    print( "Hi, my name is " .. obj.name )
end

-- Find all objects of a specific type in all layers
for _, layer in pairs(map.layers) do
   if layer.class == "ObjectLayer" then
        for _, obj in pairs(player.objects) do
            if obj.type == "enemy" then print(obj.name) end
        end
   end
end

-- draw the tile with the id 4 at (100,100)
map.tiles[4]:draw(100,100)

-- Access the tile's properties set by Tiled
map.tiles[4].properties

-- Turns off drawing of non-tiled objects.
map.drawObjects = false