# Introduction SYLASTEVEN is a System-Layer-State-Event Engine. It is an engine based on systems, layers, a state and events. It's meant to be highly extensible, so that different crates can define their own systems. ## Systems A system is meant to handle specific intern tasks. They can pass events to layers. Examples are systems for rendering, audio or physics. ## Layers A layer is there to represent a specific task for the user and handles events passed by systems. A layer can react to events, add or remove layers, and pass the event to the next layer. For example having one layer for the main logic, one layer for the user interface, and one layer for each submenu is a useful setup in common cases. ## State There's also a global state, which can be accessed by all states and layers. It's recommended to avoid global state at all, but for some things, that are needed by most systems and layers, for example window size or some global time value, it's good to be able to use a global state. ## Event An event is passed between layers and states. Every type can be used as an event, so it can contain arbitrary information. # See also In the [tests] directory, you will see example usage. Also have a look at the [dependent crates](https://crates.io/crates/sylasteven/reverse_dependencies). Some of them will define usable systems.