Angstrom

Description

This package provides the ability to create top-down audio games with very little code.

Example

// ...
class MyEngine extends AngstromEngine {
  /// Create an instance.
  MyEngine({required super.playerCharacter});
}

The engine has the public-facing API which you can use control your game. It has an events stream which can be listened to.

Interface

You can rig up an interface fairly quickly with Angstrom, but it also has sensible defaults:

// .
Widget build(final BuildContext context) {
  return GameScreen(
    engine: engine,
    title: 'Exciting Game'
  );
}

Editing maps

If you don't fancy hand-coding your own maps, include an AngstromEditor in your game's menu:

if (kDebugMode && !kIsWeb ) {
  context.pushWidgetBuilder((_) {
    const sounds = Assets.sounds;
    final footstepSounds = sounds.footsteps;
    return Cancel(
      child: AngstromEditor(
        directory: Directory('rooms'),
        footsteps: [
          FootstepsSounds(
            name: 'carpet_hard_surface',
            soundPaths: footstepSounds.carpetHardSurface.values,
          ),
          FootstepsSounds(
            name: 'Concrete',
            soundPaths: footstepSounds.concrete.values,
          ),
          FootstepsSounds(
            name: 'Gravel',
            soundPaths: footstepSounds.gravel.values,
          ),
        ],
        musicSoundPaths: sounds.music.values,
        ambianceSoundPaths: sounds.ambiances.values,
      ),
    );
  });
}

The editor package can be found on pub.flutter-io.cn.

Libraries

angstrom
The Angstrom game engine.
typedefs
Various type definitions used throughout the engine.