Skip to content
Tiled map library for CL
Common Lisp
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src
.gitignore
LICENSE.md
README.md
cl-tiled.asd

README.md

cl-tiled

Tiled TMX/TSX and JSON map/tileset loader

About

cl-tiled is a Common Lisp library for importing TMX/TSX and JSON tilemaps and tilesets generated by Tiled. It aims to fill the same role as other engine-agnostic Tiled importers. Meaning it is not a renderer nor does it provide integration with renderers on its own. Instead it aims to provide an easy, logical way to read map data so it may be imported/rendered in whatever way you wish.

Status

alpha quality. API changes to come. Mostly additions to missing features.

Note that as a current goal, this library aims to be feature complete, not fast nor space efficient.

Current:

  • Full TMX/TSX and JSON reading support
  • Support for embedded and external tilesets
  • Support for embededd and external images
  • API support for all layer, tile, object, and terrain types
  • Full support for property objects with distinct data-types (string, number, bool, color, pathname)
  • Orthogonal map support

Planned:

  • Defining API for isometric, staggred, and hexagonal maps
  • Make the library more efficient
  • Modifying map and writing TMX/TSX and JSON files (if enough demand for this)

Please post any requests/bugs on the issues page.

Dependencies

Example

(use-package #:cl-tiled)

(defgeneric render-layer (layer))

(defmethod render-layer ((layer tile-layer))
  (dolist (cell (layer-cells layer))
    ;; cell-x and cell-y for pixel positions
    ;; cell-tile for `tile' information
    ;;  what image, which row/column within image
    ))

(defmethod render-layer ((layer image-layer))
  ;;layer-image gets you the relevant image to render
  )

(defmethod render-layer ((layer object-layer))
  (dolist (object (object-group-objects layer))
    ;; render each object according to type
    ))

(defmethod render-layer ((layer group-layer))
  ;;Render each sub-layer
  (dolist (layer (group-layers layer))
    (render-layer layer)))

(let ((tiled-map (load-map "assets/map.tmx")))
  (dolist (layer (map-layers tiled-map))
    (render-layer layer)))

Contact

Wilfredo Velázquez-Rodríguez zulu.inuoe@gmail.com

You can’t perform that action at this time.