What is This?
Crayon is a small, portable and extensible game framework, which loosely inspired by some amazing blogs on bitsquid, molecular and floooh.
Some goals include:
- Extensible through external code modules;
- Run on macOS, Linux, Windows, iOS, Android from the same source;
- Built from the ground up to focus on multi-thread friendly with a work-stealing job scheduler;
- Stateless, layered, multithread render system with OpenGL(ES) 3.0 backends;
- Simplified assets workflow and asynchronous data loading from various filesystem;
- Unified interfaces for handling input devices across platforms;
- etc.
This project adheres to Semantic Versioning, all notable changes will be documented in this file.
Assets Workflow
The asset workflow comes with the version 0.5.0. During the development, the assets could be stored in formats which could producing and editing by authoring tools directly, and it will be compiled into some kind of effecient format for runtime (which is dependent on platform and hardware devices usually).
Currently, we are supporting assets with:
- Transmission files like
.glTF
,.blend
,.fbx
, etc.. through assimp.- Notes that not only
Mesh
, but also the nodes will be imported asPrefab
for scene creation.
- Notes that not only
- Texture files like
.psd
,.png
,.jpeg
,.bmp
, etc.. through PvrTexTool and crunch.- Notes that texture files could be compressed into
PVRTC
,ETC2
orS3TC
formats based on platform.
- Notes that texture files could be compressed into
- Audio files like
.mp3
,.wav
,.ogg
,.flac
through RustAudio. - Universal shader files through SPIRV are also in planning, and should be ready in next few releases.
The assets manipulation codes are placed under crayon-tools, checks out the repository for further details.
Quick Example
For the sake of brevity, you can als run a simple and quick example with commands:
&&
You can also check out examples folder for screenshots.