fledge_tiled 0.1.5 copy "fledge_tiled: ^0.1.5" to clipboard
fledge_tiled: ^0.1.5 copied to clipboard

Tiled tilemap support for the Fledge ECS game framework. Load TMX/TSX maps and integrate with the Fledge render system.

fledge_tiled #

Tiled tilemap support for Fledge games. Load and render TMX/TSX maps with full ECS integration.

pub package

Features #

  • TMX/TSX Parsing: Load Tiled maps and external tilesets
  • Tile Layers: Efficient rendering with atlas batching
  • Object Layers: Spawn entities from Tiled objects
  • Animated Tiles: Automatic tile animation support
  • Collision Shapes: Generate collision from objects and tiles
  • Custom Properties: Type-safe access to Tiled properties
  • Infinite Maps: Chunk-based loading for large maps

Installation #

dependencies:
  fledge_tiled: ^0.1.0

Quick Start #

import 'package:fledge_ecs/fledge_ecs.dart';
import 'package:fledge_tiled/fledge_tiled.dart';

void main() async {
  final app = App()
    ..addPlugin(TimePlugin())
    ..addPlugin(TiledPlugin());

  // Load a tilemap
  final loader = AssetTilemapLoader(
    loadStringContent: (path) => rootBundle.loadString(path),
  );
  final tilemap = await loader.load(
    'assets/maps/level1.tmx',
    (path, w, h) async => await loadTexture(path),
  );

  // Store and spawn
  app.world.getResource<TilemapAssets>()!.put('level1', tilemap);
  app.world.eventWriter<SpawnTilemapEvent>().send(
    SpawnTilemapEvent(assetKey: 'level1'),
  );

  await app.run();
}

Object Spawning #

Spawn game entities from Tiled objects:

SpawnTilemapEvent(
  assetKey: 'level1',
  config: TilemapSpawnConfig(
    objectTypes: {
      'enemy': ObjectTypeConfig(
        onSpawn: (entity, obj) {
          entity.insert(Enemy(
            health: obj.properties.getIntOr('health', 100),
          ));
        },
      ),
      'collectible': ObjectTypeConfig(
        createCollider: false,
        onSpawn: (entity, obj) {
          entity.insert(Collectible(
            value: obj.properties.getIntOr('value', 10),
          ));
        },
      ),
    },
  ),
)

Custom Properties #

Access Tiled properties with type safety:

// Get property with default
final speed = obj.properties.getDoubleOr('speed', 100.0);
final name = obj.properties.getStringOr('name', 'Unknown');
final enabled = obj.properties.getBoolOr('enabled', true);

// Get required property (throws if missing)
final id = obj.properties.getInt('id');

Collision #

Generate collision shapes from Tiled tile layers:

SpawnTilemapEvent(
  assetKey: 'level1',
  config: TilemapSpawnConfig(
    tileConfig: TileLayerConfig(
      generateColliders: true,
      colliderLayers: {'walls', 'obstacles'},
    ),
  ),
)

Animated Tiles #

Animated tiles defined in Tiled are automatically animated:

// Just add the TiledPlugin and tiles animate automatically
app.addPlugin(TiledPlugin());

Documentation #

See the Tilemap Guide for detailed documentation.

License #

Apache 2.0 - See LICENSE for details.

0
likes
160
points
0
downloads

Publisher

verified publisherfledge-framework.dev

Weekly Downloads

Tiled tilemap support for the Fledge ECS game framework. Load TMX/TSX maps and integrate with the Fledge render system.

Homepage
Repository (GitHub)
View/report issues
Contributing

Topics

#ecs #game-engine #tilemap #tiled #flutter-games

Documentation

API reference

License

Apache-2.0 (license)

Dependencies

fledge_ecs, fledge_render, fledge_render_2d, flutter, meta, tiled, vector_math, xml

More

Packages that depend on fledge_tiled