create-warme v1.0.3
WARME Engine (Web Against Regular Majors Engines)
WARME Engine is the first fully packed 2D/3D game engine dedicated to de-make games on the web !
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 render and update loops.
- Modularity: We used modular architecture to keep things simple and separate.
- Modernity: We used the WebGPU rendering API.
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.
General features
- 🧱 Core - Maths, tweening, events manager, container manager, curves, quaternions
- 👾 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, psx post-processing effects
- 📐 Physics - Walkmesh, navmesh, 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
Demos
Getting started
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
How to integrate your 3D models ?
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
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
Contributors
- 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.
Some parts taken for this work
- 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
License
WARME engine is released under the MIT license.