NOTE: this is very much in alpha stage, more exploring the pure ECS pattern and current web toolkits. Suitable for a jam game at most!
GoKart.js is a web game starter kit based on ECSY.io, Three.js, and Ammo.js, with React examples. This starter provides a game canvas with basic Three.js rendering system, ECSY component structure, and 2D/3D physics support, controls handling, as well as a React component layer to build on, and a HUD data communication layer. Mostly targeted at "action" games.
- Fun > Features
- API > Performance
- Probably not street legal
- 3D with physics pre-connected (just customize the entity components classes)
- Mobile touch based gamepads for on-screen controls
- Control system to handle and map controls to "actions" (ala Godot)
- HUD bindings to show realtime game info in React-driven HUD
- TBD - JEST test setup for unit tests on ECS component/systems
- Webpack example
- Docker-Compose file for build env
You can either look in the examples folder for the demo projects, or Look at the template project.
The template project will show gokart being pulled in as a library, and is currently setup with esbuild rather than webpack.
Also there is a WIP Multiplayer Example
This started as a web game experiment procgen-bhell, playable at bullethell.nikolaj.dev, where I put these pieces together. Further advanced in our LD48 game, playable at ld48.nikolaj.dev.
All possible only due to much awesome work:
- ECSY for ECS
- Ammo.js for 3D Physics
- THREE.js for Rendering
- React for UI (soon to be preact)
- MobX for HUD communication
- Planck.js for 2D Physics
- Howler.js for Sound (TBD)
Bundled character model by nikolaj with animations from Mixamo.