Conversation
There was a problem hiding this comment.
Pull request overview
Refactors Detiled for a v4 release by replacing the Decore-centric map loader with a new parser that supports multiple Tiled map orientations and adds example scenes/assets to showcase supported features.
Changes:
- Replaced Decore entity-pack output with a flat
detiled.entity[]+map_paramsAPI and added coordinate conversion helpers. - Added internal grid modules + a new parser to support orthogonal/isometric/staggered/hexagonal maps and more object features.
- Added an example app (GUI + collection proxies) with multiple map demos and supporting assets; updated
game.projectconfiguration/dependencies.
Reviewed changes
Copilot reviewed 183 out of 366 changed files in this pull request and generated 7 comments.
Show a summary per file
| File | Description |
|---|---|
| test/test_detiled.lua | Updates test to new get_entity_from_map return signature. |
| test/test.script | Disables the Detiled test registration (currently commented out). |
| resources/tilesets_list.json | Removes legacy tileset list resource. |
| resources/tilesets/shooting_circle.json | Removes legacy example tileset JSON. |
| resources/maps_list.json | Removes legacy map list resource. |
| resources/entities.json | Removes legacy Decore entities pack resource. |
| resources/components.json | Removes legacy Decore components schema resource. |
| input/game.input_binding | Adds custom WASD + zoom key triggers (not currently selected in game.project). |
| game.project | Switches bootstrap to example collection; updates deps/resources/input/graphics/native extension settings. |
| example/example_isogrid_staggered/example_isogrid_staggered.script | New staggered isometric example using Detiled entities + coordinate conversion. |
| example/example_isogrid_staggered/example_isogrid_staggered.collection | Collection to run the staggered isometric example. |
| example/example_isogrid/example_isogrid.script | New isometric example using Detiled entities + coordinate conversion. |
| example/example_isogrid/example_isogrid.collection | Collection to run the isometric example. |
| example/example_hexgrid_pointy/example_hexgrid_pointy.script | New pointy-top hex example using Detiled entities + coordinate conversion. |
| example/example_hexgrid_pointy/example_hexgrid_pointy.collection | Collection to run the pointy-top hex example. |
| example/example_hexgrid/example_hexgrid.script | New hex example using Detiled entities + coordinate conversion. |
| example/example_hexgrid/example_hexgrid.collection | Collection to run the hex example (contains a name typo). |
| example/example_grid_game_objects/example_grid_game_objects.script | New grid objects example (includes debug print on spawn). |
| example/example_grid_game_objects/example_grid_game_objects.collection | Collection to run the grid objects example. |
| example/example_grid/example_grid.script | New basic orthogonal grid example using Detiled entities + coordinate conversion. |
| example/example_grid/example_grid.collection | Collection to run the grid example; embeds exported tilemap collection. |
| example/example.gui_script | GUI controller to load/unload example collection proxies via selector widget. |
| example/example.gui | Example GUI (properties panel template + druid layers). |
| example/example.collection | Top-level example collection wiring GUI + collection proxies for each map type. |
| example/assets/isogrid/isogrid_tiles.atlas | Atlas for isometric tile images used by isogrid examples. |
| example/assets/isogrid/entities/waterW.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/waterSW.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/waterS.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/waterNW.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/waterNE.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/waterN.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/waterES.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/waterE.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/waterCornerSW.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/waterCornerNW.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/waterCornerNE.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/waterCornerES.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/water.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/roadSW.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/roadNW.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/roadNS.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/roadNE.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/roadHillW.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/roadHillS.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/roadHillN.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/roadHillE.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/roadHill2W.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/roadHill2S.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/roadHill2N.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/roadHill2E.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/roadEW.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/roadES.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/road.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/riverSW.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/riverNW.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/riverNS.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/riverNE.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/riverEW.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/riverES.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/riverBankedSW.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/riverBankedNW.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/riverBankedNS.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/riverBankedNE.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/riverBankedEW.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/riverBankedES.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/lotW.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/lotSW.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/lotS.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/lotNW.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/lotNE.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/lotN.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/lotES.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/lotE.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/hillW.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/hillSW.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/hillS.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/hillNW.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/hillNE.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/hillN.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/hillES.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/hillE.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/grassWhole.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/grass.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/exitW.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/exitS.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/exitN.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/exitE.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/endW.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/endS.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/endN.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/endE.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/dirtDouble.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/dirt.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/crossroadNSW.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/crossroadNEW.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/crossroadNES.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/crossroadESW.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/crossroad.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/bridgeNS.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/bridgeEW.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/beachW.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/beachSW.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/beachS.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/beachNW.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/beachNE.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/beachN.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/beachES.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/beachE.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/beachCornerSW.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/beachCornerNW.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/beachCornerNE.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/beachCornerES.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities/beach.go | Sprite prototype for isogrid entity factory. |
| example/assets/isogrid/entities.go | Factory hub for isogrid entities. |
| example/assets/hexgrid_pointy/hexgrid_pointy_tiles.atlas | Atlas for pointy-top hex tiles. |
| example/assets/hexgrid_pointy/entities/tileWater_shadow.go | Sprite prototype for pointy-top hex entity factory. |
| example/assets/hexgrid_pointy/entities/tileWater_full.go | Sprite prototype for pointy-top hex entity factory. |
| example/assets/hexgrid_pointy/entities/tileWater.go | Sprite prototype for pointy-top hex entity factory. |
| example/assets/hexgrid_pointy/entities/tileStone_full.go | Sprite prototype for pointy-top hex entity factory. |
| example/assets/hexgrid_pointy/entities/tileStone.go | Sprite prototype for pointy-top hex entity factory. |
| example/assets/hexgrid_pointy/entities/tileSnow.go | Sprite prototype for pointy-top hex entity factory. |
| example/assets/hexgrid_pointy/entities/tileSand_full.go | Sprite prototype for pointy-top hex entity factory. |
| example/assets/hexgrid_pointy/entities/tileSand.go | Sprite prototype for pointy-top hex entity factory. |
| example/assets/hexgrid_pointy/entities/tileRock_full.go | Sprite prototype for pointy-top hex entity factory. |
| example/assets/hexgrid_pointy/entities/tileRock.go | Sprite prototype for pointy-top hex entity factory. |
| example/assets/hexgrid_pointy/entities/tileMagic_full.go | Sprite prototype for pointy-top hex entity factory. |
| example/assets/hexgrid_pointy/entities/tileMagic.go | Sprite prototype for pointy-top hex entity factory. |
| example/assets/hexgrid_pointy/entities/tileLava_full.go | Sprite prototype for pointy-top hex entity factory. |
| example/assets/hexgrid_pointy/entities/tileLava.go | Sprite prototype for pointy-top hex entity factory. |
| example/assets/hexgrid_pointy/entities/tileGrass_full.go | Sprite prototype for pointy-top hex entity factory. |
| example/assets/hexgrid_pointy/entities/tileGrass.go | Sprite prototype for pointy-top hex entity factory. |
| example/assets/hexgrid_pointy/entities/tileDirt_full.go | Sprite prototype for pointy-top hex entity factory. |
| example/assets/hexgrid_pointy/entities/tileDirt.go | Sprite prototype for pointy-top hex entity factory. |
| example/assets/hexgrid_pointy/entities/tileAutumn_full.go | Sprite prototype for pointy-top hex entity factory. |
| example/assets/hexgrid_pointy/entities/tileAutumn.go | Sprite prototype for pointy-top hex entity factory. |
| example/assets/hexgrid_pointy/entities.go | Factory hub for pointy-top hex entities. |
| example/assets/hexgrid/hexgrid_tiles.atlas | Atlas for hex tiles. |
| example/assets/hexgrid/hexgrid_resources.atlas | Atlas for hex resource sprites. |
| example/assets/hexgrid/entities/tile_stone_3.go | Sprite prototype for hex entity factory. |
| example/assets/hexgrid/entities/tile_stone_2.go | Sprite prototype for hex entity factory. |
| example/assets/hexgrid/entities/tile_stone.go | Sprite prototype for hex entity factory. |
| example/assets/hexgrid/entities/tile_sand_3.go | Sprite prototype for hex entity factory. |
| example/assets/hexgrid/entities/tile_sand_2.go | Sprite prototype for hex entity factory. |
| example/assets/hexgrid/entities/tile_sand.go | Sprite prototype for hex entity factory. |
| example/assets/hexgrid/entities/tile_grass_3.go | Sprite prototype for hex entity factory. |
| example/assets/hexgrid/entities/tile_grass_2.go | Sprite prototype for hex entity factory. |
| example/assets/hexgrid/entities/tile_grass.go | Sprite prototype for hex entity factory. |
| example/assets/hexgrid/entities/tile_dirt_3.go | Sprite prototype for hex entity factory. |
| example/assets/hexgrid/entities/tile_dirt_2.go | Sprite prototype for hex entity factory. |
| example/assets/hexgrid/entities/tile_dirt.go | Sprite prototype for hex entity factory. |
| example/assets/hexgrid/entities/r_tree_round_2.go | Sprite prototype for hex entity factory. |
| example/assets/hexgrid/entities/r_tree_round.go | Sprite prototype for hex entity factory. |
| example/assets/hexgrid/entities.go | Factory hub for hex entities. |
| example/assets/grid/grid_tileset.tilesource | Tilesource for grid tileset rendering. |
| example/assets/grid/grid_items.atlas | Atlas for grid item sprites. |
| example/assets/grid/grid_ignore_export.tilesource | Tilesource placeholder for ignored export. |
| example/assets/grid/entities/tree.go | Sprite prototype for grid entity factory. |
| example/assets/grid/entities/icon_table.go | Sprite prototype for grid entity factory. |
| example/assets/grid/entities/icon_stop.go | Sprite prototype for grid entity factory. |
| example/assets/grid/entities/icon_key.go | Sprite prototype for grid entity factory. |
| example/assets/grid/entities/icon_chest.go | Sprite prototype for grid entity factory. |
| example/assets/grid/entities/icon_barrel.go | Sprite prototype for grid entity factory. |
| example/assets/grid/entities/cactus.go | Sprite prototype for grid entity factory. |
| example/assets/grid/entities.go | Factory hub for grid entities. |
| example/assets/camera_wasd_control.script | Adds reusable WASD/zoom camera controller for examples. |
| example/assets/appmanifest.appmanifest | Adds app manifest with platform lib exclusions (3D physics, null rigs, etc). |
| editor_scripts/set_bootstrap_collection/set_bootstrap_collection.version | Adds editor script package version file. |
| editor_scripts/set_bootstrap_collection/set_bootstrap_collection.editor_script | Adds editor action to set bootstrap.main_collection from a selected .collection. |
| detiled/internal/grid/orthogonal.lua | New orthogonal grid conversion utilities. |
| detiled/internal/grid/isometric_staggered.lua | New staggered iso grid conversion utilities. |
| detiled/internal/grid/isometric.lua | New isometric grid conversion utilities (incl. object-position conversion). |
| detiled/internal/grid/hexagonal_staggered.lua | New hexagonal grid conversion utilities dispatching to pointy/flat modules. |
| detiled/internal/grid/hexagonal_pointytop.lua | New pointy-top hex conversion utilities (incl. cube/offset helpers). |
| detiled/internal/grid/hexagonal_flattop.lua | New flat-top hex conversion utilities (incl. cube/offset helpers). |
| detiled/internal/detiled_parser.lua | New main parser producing flat entities + map params across orientations/layer types. |
| detiled/internal/detiled_logger.lua | Switches default logger to pprint for structured output. |
| detiled/internal/detiled_internal.lua | Adds GID flip parsing, tile-layer unpacking, property application helpers. |
| detiled/internal/detiled_decore.lua | Removes legacy Decore-specific exporter implementation. |
| detiled/internal/detiled_annotations.lua | Extends annotations for new map fields, entities, and map params. |
| detiled/detiled_system.lua | Removes legacy Decore system wiring. |
| detiled/detiled.lua | Updates public API to new parser output + coordinate conversions. |
| api/detiled_api.md | Updates API docs for new return values and adds coordinate conversion docs. |
| README.md | Updates usage docs to reflect new entities return shape and conversion helpers. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Refactor, add support for all tiled map types and most of the map features