Disclosure: This draft was generated with AI and checked against the cited primary sources, with a separate AI editorial review. It was prepared for the FrameSprite team, which has a commercial interest in FrameSprite. Proposed examples are not executed tests unless explicitly identified as recorded fixture results.
A transparent or decorative HaxeFlixel tile can still collide because FlxTilemap initializes collision from tile indices and properties, not the visible alpha silhouette. Inspect drawIndex, collideIndex and per-type settings. The tilemap loader API separates those inputs.
Key Takeaways
- Visible artwork does not define tile collision.
- Keep the map's numeric IDs and the tileset's frame order synchronized.
- Automatic tiling can override the ordinary starting, draw and collision index choices.
Make the numeric map visible
Use a tiny map containing an empty cell, a decorative tile and a solid floor tile. Show each numeric ID in a debug overlay. If the decorative tile blocks the player, inspect its configured collision flags before erasing pixels from the PNG.
For a constructed tileset, you might reserve ID zero as empty, ID one as decoration and ID three as floor. That convention is a project design choice. It is not a universal rule that an imported Tiled ID maps directly to the same HaxeFlixel frame.
The animated tile collision guide explains the broader artwork-versus-gameplay separation. Here the specific issue is the loader's initial property assignment.
Configure and override deliberately
Review the arguments used by loadMapFromCSV or loadMapFromArray in your installed version. The documented startingIndex, drawIndex and collideIndex values initialize different behavior. Do not shift one index to compensate for a mismatch in a different stage.
After loading, per-type collision can be explicit:
// HaxeFlixel 6.x fragment; not run here.
// Assumes tile ID 1 is intentionally decorative in this map.
tilemap.setTileProperties(1, flixel.util.FlxDirectionFlags.NONE);
The FlxObject reference describes collision flags and object collision state. An override should follow the actual numeric identity, not the tile's human-readable art label.
If automatic tiling is enabled, inspect its documented overrides before expecting manually supplied index defaults to remain effective. Keep a non-autotiled diagnostic map so you can separate the art mapping from the automatic selection policy.
Separate collision from callback intent
A tile can carry a callback or directional collision policy. Do not disable every tile at or after an index just to remove one decorative obstruction. That may also disable floor or hazard behavior.
| Tile role | Visible pixels | Gameplay decision |
|---|---|---|
| Empty cell | None | No collision |
| Decorative grass | Often visible | Usually no body blocking |
| Solid floor | Visible or visually masked | Explicit blocking policy |
| Trigger or hazard | Any artwork | Callback and collision chosen separately |
The official HaxeFlixel cheat sheet provides surrounding collision usage. Your simulation must still perform the appropriate collision or overlap operation; tile properties alone do not run the gameplay loop.
For imported maps, use the tilemap validation guide to distinguish a visual map from validated playable geometry.
Acceptance using a minimal map
Walk the character through the decorative cell and onto the floor. Check the debug tile ID, collision flags and resulting contact state. Repeat after swapping the tileset image while preserving the map data.
Add one intentionally invisible blocking tile only if the game design requires it, and label that rule in the asset contract. Record numeric mappings in the delivery checklist.
No tilemap or engine collision was executed for this article. It targets the linked HaxeFlixel 6.x API snapshot, not an unverified Tiled-to-Flixel importer.
Keep tile properties with the numeric map revision
A tileset image can be reordered while still looking almost identical as a sheet. If the map's numeric IDs and collision properties are not revised together, decoration may inherit floor behavior or a hazard may lose its callback. Validate the mapping when accepting an updated tileset rather than relying on a successful image decode. Save a tiny representative map with one cell for each gameplay role. That small fixture makes an index-policy regression easier to identify than exploring a full level after every art change.
Sources and editorial ownership
Primary references checked on October 20, 2026:
Editorial owner: FrameSprite Workflow Team. Editorial and verification policy. Report a documentation correction.
Top comments (0)