Similar to Components, Messages are collections of data.

Messages are used to transmit data between Engines so they can manipulate the game state accordingly.

To define a message, declare a struct.

using Encompass;

public struct MotionMessage {
    public Vector2 Motion { get; }

Messages are temporary and Encompass destroys all its references to them at the end of the frame.

Again, because structs are value types, and Encompass stores them in a particular way, we can create as many of them as we want without worrying about creating pressure on the garbage collector. Neato!