ECS

buildHex.pm

Elixir Entity-Component System game engine

Installation

Add ecs to your list of dependencies in mix.exs:

def deps do
  [{:ecs, "~> 0.2.1"}]
end

Example

# Define a simple component for containing a "name" value.
defmodule Component.Name do
  defstruct value: nil

  def new(name), do: %__MODULE__{value: name}
end

# Define a player entity that will contain components.
defmodule Entity.Player do
  def new(name) do
    ECS.Entity.new([
      Component.Name.new(name)
    ])
  end
end

# Define a service that prints out names of entities that have name components.
defmodule Service.DisplayName do
  @behaviour ECS.Service

  def component_types, do: [:name]

  def perform(entity) do
    IO.puts ECS.Entity.get(entity, :name)
    entity
  end
end

# Take our modules for a spin!
player = Entity.Player.new("Josh")
ECS.Service.run([Service.DisplayName], [player])