An ECS-based game engine and in-browser editor developed in Javascript.
This was a small project I used to get myself familiar with the basics of Javascript. Along the way I learned many things including:
- How much worse javascript is for most tasks that traditionally were done with any other programming language in the entire world until five years ago
- How hard it is to implement basic functionality in javascript that other languages support by default
- How bad the vast majority of javascript documentation is because it is aimed at non-programmers that spend more time consuimg non-dairy products that actually writing functionally useful code
- How the few useful features of javascript are generally frowned upong because it requires you to understand a thing or two about a thing or two
- How much it sucks that javascript still support broken features in the name of backwards compatability yet manages to release updates all the time that break more recent elements of the language
- Not having to imagine what it's like in 2020 without the ability to multi-thread
- Poorly optimized non-archetypal ECS-based solution
- Hacked-together type system to make it feel less like you are working javascript
- Simple two-way databinding model that allows for ease of editing components via UI elements (literally the only part about this where javascript was actually useful)
- Built-in scene editor that can be used in-broweser. Just press 'P' and 'O' keys at the same time to enable it
- Entity serialization allowing entities and their component states to be saved or loaded as textfiles
- Multi-layer rendering system
- Particle systems
- Basic collision and gravity
- Basic sprite animation
- Simple input for keyboard and gamepad
- Simple 2D platformer-style character controller
- Able to be extended by adding new systems and components
- Engine is able to be extended via components and systems