An Excalibur System that updates entities of certain types. Systems are scene specific

Excalibur Systems currently require at least 1 Component type to operated

Multiple types are declared as a type union For example:

class MySystem extends System<ComponentA | ComponentB> {
public readonly types = ['a', 'b'] as const;
public readonly systemType = SystemType.Update;
public update(entities: Entity<ComponentA | ComponentB>) {




priority: number = 0

System can execute in priority order, by default all systems are priority 0. Lower values indicated higher priority. For a system to execute before all other a lower priority value (-1 for example) must be set. For a system to execute after all other a higher priority value (10 for example) must be set.

systemType: Draw = SystemType.Draw

Determine whether the system is called in the SystemType.Update or the SystemType.Draw phase. Update is first, then Draw.

types: readonly ["ex.transform", ""] = ...

The types of entities that this system operates on For example ['transform', 'motion']



  • Optionally run a postupdate after the system processes matching entities


    • engine: Scene<unknown>
    • elapsedMs: number

      Time in milliseconds since the last frame

    Returns void

  • Update all entities that match this system's types


    • _entities: Entity[]

      Entities to update that match this system's types

    • delta: number

      Time in milliseconds

    Returns void