Documentation - Demos - Screenshots - Join our discord !
Tip
High luminosity is recommanded with scanlines filter (set enabled as default).
WarmeY2K is a fully packed 2D/3D game engine dedicated to indie games !
The first part of the name (W.A.R.M.E) is an acronym for Web Against Regular Major Engines, you can understand it like a tentative
to make a complete game engine for the web. The second part (Y.2.K) is the common acronym used to define the era covers 1998-2004 and define the technics limitation intentionally taken. These limitations are guarants of a human scaled tool and help a lot of to reduce the learning curve.
Some words about our philosophy:
- Robustness: 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 in a state-less way.
- Modularity: We used modular architecture to keep things simple and separate.
- Performance: We used WebGPU API for a blazing fast rendering.
- Lightweight: The lib minzipped size is just 73 kB (1Mb with Rapier2D & Rapier3D).
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
- Curves
- Quaternions
- Object pooling
-
๐พ 2D
- Static sprite (jss)
- Animated sprite (jas)
- Isometric tilemap (jtm)
- Orthographic tilemap (jtm)
- Particles
- Rendering filters
- Motion lines (jlm)
-
๐ 2D Physics
- BoundingRect
- Rapier2D
-
๐ง 3D
- Binary format (bsm, bam, bwm, bnm, blm)
- Debug shapes
- Static mesh (jsm and obj)
- Animated mesh (jam)
- Static sprite (jss)
- Animated sprite (jas)
- Motion lines (jlm)
- Billboarding
- Cubemap skybox
- Particules
- Flares
- Fog
- Vertex colorization
- Decals
- Shadow mapping
- Shadow volume
- Multi-viewport
- Camera orbit
- Camera WASD
- Auto mipmap
- Post-process rendering (gbuffers: depth/normal/ids)
- Rendering filters
-
๐ 3D Physics
- BoundingBox
- BoundingCylinder
- Walkmesh (jwm)
- Navigation mesh (jnm)
- Ray-testing
- Rapier3D
-
๐ฅ 3D Material
- Phong reflection model
- Displacement texture map
- Displacement texture scrolling
- Diffuse map
- Specular map
- Emissive map
- Normal map
- Env map
- Toon map
- Texture scrolling
- Animated UV
- Specular shininess
- Emissive intensity
- Normal intensity
-
๐ 3D Light
- Directional light
- Point lights (max : 64)
-
๐ผ๏ธ 3D Post-processing
- Outline
- Hardware dithering
- Pixelation
- Color depth limiting
-
๐ฎ Input
- Action mapping
- Gamepad, keyboard and mouse support
-
๐ง AI
- A* for 2D/3D with graph and grid
- Min-max with alpha-beta pruning
-
๐บ Screen
- Navigate between different view of your game
- Resources pre-loading
-
๐ Scripts
- Load script from json file
- Register async command function and call-it from json file
- Manual jump to part of the script
- Command primitives like: WAITPAD, GOTO, GOTO_IF, EXEC_IF, VAR_SET, VAR_ADD, VAR_SUB, DELAY
-
๐ Sound
- Handle sounds by groups
- Play multiple sounds at same time
-
๐ณ Tree
- 2D binary space partition
- 3D binary space partition
-
๐จ UI
- Focus/unfocus widgets
- Fade in/out
- Widget architecture
-
๐๏ธ UI Widgets
- Dialog + choices
- Dialog only
- Print long text
- Description list
- Virtual keyboard
- Slider
- Menu base
- Menu list view
- Menu text
- Prompt
- Sprite
- Text
-
๐ DNA
- ECS architecture implementation
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, typedoc converter and Triple Triad demo.
- zuda - Contribute to Triple Triad demo.
- luciedefraiteur - Contribute to the fog.
- thetinyspark - Contribute to the binary space partition.
- Impre-visible - Contribute to 2D tutorial.
- Alina Morinokanata - Create the logo.
- DOM for UI elements
- CanvasRenderingContext2D for 2D stuffs
- Rapier for both 2D and 3D physics engine
- No glTF support, we don't want to support the rendering techniques used by this format (BSDF, Skinning, etc...)
- Compatible Blender for 3D with our addon
- Compatible SpriteFusion for 2D
- [Ver. 1.2.0] Binary format for 3D files added.
- [Ver. 1.1.14] Tilemap SpriteFusion format added.
- [Ver. 1.1.13] Cylinder collision class added.
- [Ver. 1.1.12] Fix and optimize jnm.
- [Ver. 1.1.10] Some added to fps demo.
- [Ver. 1.1.7] Mipmap added.
- [Ver. 1.1.5] Export as npm module added.
- [Ver. 1.1.1] Outline post-process effect added.
- [Ver. 1.1.1] Normals, id and depth rendering buffer added.
- [Ver. 1.1.1] Object pooling added.
- [Ver. 1.1.0] Move physics to dedicated folder and redesign JNM.
- [Ver. 1.1.0] Rapier has been added.
- [Ver. 1.0.3] Playstation one post-process effect has been added.
- [Ver. 1.0.3] Post-processing effects has been added.
- [Ver. 1.0.3] Camera WASD has been added.
- [Ver. 1.0.3] Camera orbit has been added.
[INFO]
1. This roadmap can changed.
2. Ordered by priority
3. Task done one by one
[CORE TASKS]
1. Add spot-light
WARME Y2K is released under the MIT license.