Qiso (pronounced key-so), is an isometric tilemap engine for Solar2D. It handles the complexity of converting between screen, cartesian and isometric co-ordinates, allows you to programmatically add or remove tile layers at any time, and add player or machine controlled characters. It takes care of map rendering, camera movement/zoom, has built-in A* pathfinding algorithms, and even supports hills and dips.
Qiso is built entirely in Lua and doesn't depend on any platform specific features or external libraries. It's incredibly lightweight and optimised for performance.
Built to work from maps generated using the Tiled engine, exported to Lua data tables. Tested with maps as large as 1000x1000 tiles and reasonably high quality sprites, as shown in the videos. Tiled's infinite map size is supported and Qiso allows you to update map data in realtime, so enormous maps can effectively be chunked and refreshed in realtime, allowing for massive worlds to be traversed on low memory devices.
Fully documented at qiso.qweb.co.uk where you can also find sample code and videos, as well as sample Tiled map files and isometric graphic assets.
To create an isometric game in Qiso is as simple as activating Qiso and loading up a Tiled map, like this:
-- Load plugin library local qiso = require "plugin.qisoengine" -- Load a Lua formatted Tiled Map Editor tilemap into a Qiso map. qiso.loadTiledMap("sample-tilemap") -- Enable zooming when the screen is pinched qiso.enablePinchZoom() -- Enable camera panning when the screen is dragged qiso.enableCameraPan() -- Enable the main Qiso loop to render/update our world qiso.activate()
Qiso creates a display group for rendering and takes care of everything on that group for you, leaving you to create other display groups on top or behind Qiso and build your game code as usual. It provides a number of functions for manipulating the world or extracting data from it and we're extending with other helpful functions as they're developed.