JamJar is a 2D, C++ game engine that primarily targets running in the browser through web assembly.
- Entity-Component-System design.
- Messaging through a centralised message bus.
- Modular design, choose to remove parts of the engine and replace parts.
- Customisable render pipeline.
- Rendering to a WebGL2 canvas.
- Interpolation between frames.
- Orthographic camera projection.
- Sprites.
- Image loading from filesystem (virtual or otherwise).
- Input using SDL2 events (keyboard and mouse).
- Utility methods around translating input events to useful world information.
- Box2D based Physics system.
- Collision detection using Box2D.
- Window management system.
- Fullscreen control.
// TODO: add this guide
See the documentation for guides and architecture details.
See the examples directory for working code examples.
Dev Dependencies
- Catch2 - BSL-1.0
- Emscripten - MIT/UIUC
- llvm/clang/clang-tidy/clang-format - UIUC/Apache-2.0 with LLVM Exceptions
- CMake - BSD-3
See the contributing guide.