This project is far from being mature for release. These kinds of projects take a lot of time, which I sadly don't have much of in the meantime. However, I decided to make this repository public, as it might be of help to someone, perhaps as a reference of a sort. I might continue working on it in the future, but I can't make any promises.
EtherEngine is a game engine extension built on top of Monogame (currently underconstruction). It follows the entity component system (ECS) architecture thanks to the wonderful Arch.
- Motion: several options for physics based motion, including simple massless motion, massless motion with realistic drag based on Stoke's and quadratic drag, and mass-based motion with PID contorlled physics.
- Collision: separating-axis-theorem-based collision for circles, rectangle (rotatable or AABB) and convex polygons. Provides ready events, point of contact detection, and collision layers.
- Sprites: Ether extends the sprite pipeline of monogames, abstracts it, adapts it to ECS and enables animation with atlas.
- Primative shapes: a simple drawing pipeline for primative shapes (rectangles, circles, and polygons).
- Camera: controllable camera with smooth motion enabled through PID control.
- Particle system: a flexible particle emission system enabled by ECS.
- Entity relations: a relation system between entity, either in general form or as child-parent.
- Tweens: a tweening system for numrical values and colors (linear, ease in quad, ease out quad, ease in out quad).
- Random number generators (RNG): a wide variety of efficient RNG algorithms.
- Permuted congruential generator (PCG).
- SplitMix64.
- Xoroshiro: Xoroshiro128Plus, Xoroshiro128PlusPlus, Xoroshiro128StarStar, Xoroshiro64Star, Xoroshiro64StarStar.
- Xorshift: Xorshift128Plus, Xorshift64Star.
- Xorwow.
- [LDTK] integration: converts LDTK levels to entities and components usable within Ether.
- [Dear ImGui] integration.
- Scene system, input management, timers...etc.