Yet Another Voxel Engine (written in TS).
- Simple but powerful true ECS (Entity-Component-Systems) where components and systems are not coupled (unlike in Unity's current EC-system)
- Has all the basics to start making your own game, but is modular so you can replace things with your own systems
- Self-documenting code (along with generated docs) so you (almost) never have to meddle with the engine itself
- Uses modern ES standards for cleaner and fully-typed code
- Compiles to relatively new ES standards, I'm tired of supporting older browsers/versions
- Not restricted to working with voxels (I know it's in the name, but I want to support both 2D & 3D)
- Turn-based system
- Upcoming ecs system rewrite:
- inheritance support (can target base class in aspect and get any component that extends it).
- better support for rendering/non-rendering system (perhaps give "tags" to components and allow for "Run()" with specific tag requirements).
- assemblages?
- (need to figure out how that would work, perhaps make them very basic where you give it a basic entity + components list, this returns a function to create the entity with parameter that allows overriding that behavior?)
- Handle yaveEngine/engine property better (so don't have to check null every time)
- Maybe RunOptions can pass it? (That might get messy)
- Components.get should return T | null (it currently only returns T)
- Standardize JSDoc, some have space before params, some have JSDoc typings, etc.
- Add an internal unit system (like Unity where 1 unit can be 16px or 32px or however many you want based on texture)
- Create docs
- RenderSystems should be used for anything that requires buttersmooth movement, camera, graphics, rendering, etc.
- One edge case is making an object follow the mouse. This should be a render system since the mouse moves much faster than the "ticking speed," BUT any other kind of movement that requires a "set speed" (like player movement speed) should be handled by a normal system in order to get better/more predictable results and to prevent lag from impacting the behavior too much.
- ECS-TS by Trixt0r: Perhaps the best ECS system I've ever seen (although needs a bit of doc & typing corrections)
- Nova Engine by holywyvern: Interesting TypeScript ECS System (with Family system) but somewhat lacking in docs
- Blog Post by Stefan Valentin with great insight on extra features like assemblages
- Anatomy of a Game on MDN: A great example on how to write a JS game engine loop
- GameLoop by sethvincent: Implementation of game loop for inspiration
- Game Inputs by andyhall: Good library for game inputs although uses old JS
- Keydrown by Jeremy Kahn: Cool library with an inventive way of getting faster response for inputs