Y-engine
A game engine
This will be the successor to the x9 engine. Currently in a very early stage.
Features
Graphics
- OpenGL and vulkan
- forward and deferred rendering
- physically based rendering
- shadow maps
- HDR and tone mapping
- flexible pipeline with post processing stages
- dynamic resolution scaling
- shader graph editor
- RTX path tracing (experimental)
Physics
Own engine mostly deprecated. Now using bullet.
Entity component system
One can write "component" classes in kaba source code files:
class Human extends Component
# some additional data
life, magic: float
clothes: Model*[]
func override on_collision(cd: CollissionData)
life -= 10
func override on_iterate(dt: float)
# movement, animation, ...
These can be attached to any object/entity in the game world via the editor.
Components can be accessed easily:
let human = entity.get_component[Human]()
human.life = 100
Also simple queries for all components of the same type:
let all_humans = get_component_list[Human]()
for h in all_humans
....
The code will be compiled by the JIT compiler when loading the game world. This makes the development cycle very fast.
Plans
Currently I'm having less time. But some things, I had more serious ideas for:
- ray traced global illumination - want to experiment with vulkan RTX
- hot swapping (recompiling code when editing) - theoretically possible and already done in other projects
|