WARME Engine is an open source realtime 2D/3D game engine based on WebGPU.
It is a complete and cross-platform solution to build desktop/mobile games with high performance.
WARME Engine wrap the web stack to serve one goal, make kewl games with a sweet coding style !
Some words about our philosophy:
- Simplicity: We used only simple and efficient methods coming from the industrie for nearly two decades.
- Flexibility: Create your own renderers. Handle rendering and update loops.
- Modularity: We used modular architecture to keep things simple and separate.
You can check the documentation here.
For a more concret overview on it, you can play examples here and check the demo source code here.
- 🧱 Core - Maths, tweening, events manager, container manager
- 👾 2D - Sprite, isometric tilemap, orthographic tilemap, particles system, rendering filters
- 🧊 3D - Debug shapes, mesh, animated-mesh, sprite, billboard, skybox, multiple-camera, mover, particules, flares, fog, vertex colorization, decals, shadow map, mesh pooling, rendering filters
- 📐 Physics - Walkmesh, nav-mesh, raytest, circle-circle, cylinder-cylinder, line-line, point-rect, rect-rect, point-box, box-box
- 💥 Material - Phong, displacement-texture-mapping, normal-mapping, env-mapping, specularity-mapping, texture-scrolling, uv-animations
- 🌞 Light - Directional light, multiple point lights
- 🎮 Input - Action mapper for keyboard and gamepad
- 🧠 AI - A* for 2D/3D with graph and grid, minmax with alpha-beta pruning
- 📺 Screen - Handle different screens of your game
- 📜 Scripts - Write game behaviors
- 🔊 Sound - Sound manager built on the Web Audio API
- 🌳 Tree - Binary Space Partition for 2D & 3D
- 🎨 UI - Component architecture to keep project clean and scalable
- 🌆 DNA - Development normalized architecture
- 🈸 Demos - 19 real-life samples you can used to start a project
You need to install nodejs. Once installation is done, you can clone the repository or use npx to build our first WARME project.
// create your awesome game project
# npx create-warme your_project_name
// now, you can start with
# npm run dev
You can used any software that export file in wavefront obj format like Blender, Crocotile, Elit3D or whatever. You can also simply used the WARME Blender Exporter. Important note: The Blender coordinate system and the engine don't match, see below the rule to translate. Don't forget to apply these changes when you export your obj file.
blender => engine
----------------
x = -x
y = +z
z = +y
----------------
forward = -z
up = +y
right = +x
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
- Fork the Project
- Create your Feature Branch (git checkout -b new_feature)
- Commit your Changes (git commit -m 'Add new feature')
- Push to the Branch (git push origin new_feature)
- Open a Pull Request
- Crisxzu - Contribute to the Wiki and typedoc converter.
- zuda - Contribute to Triple Triad demo.
- luciedefraiteur - Contribute to the fog.
- thetinyspark - Contribute to the binary space partition.
- Use DOM for UI elements
- Use CanvasRenderingContext2D for 2D stuffs
- Use human readable custom format for all graphics stuff
- No glTF support, we don't want to support the rendering techniques used by this format (BSDF, Skinning, etc...)
- No realistic physics engine, we assume if you need one there is many pretty lib for that like ammo.js, plank.js or canon.js
WARME engine is released under the MIT license.