Desktop game engine written in Odin.
Engine documentation (WIP) Galileo asset format documentation
An example application can be found at Bazzas-Personal-Stuff/callisto-sandbox.
Add the engine somewhere to your project and include it in your app. This example will assume the package is a direct child of your root directory, project-root-dir/callisto/
- Initialize the engine
- Perform your application code
- Shutdown the engine
package main
include "callisto"
main :: proc() {
ok := callisto.init(); if !ok do return
defer callisto.shutdown()
for callisto.should_loop() {
loop()
}
}
loop :: proc() {
// gameplay code here
}
Callisto provides a util
package that can help with debugging boilerplate.
package main
include "callisto"
include "core:log"
include "callisto/util"
main :: proc() {
when ODIN_DEBUG {
context.logger = util.create_logger()
defer util.destroy_logger(context.logger)
// A tracking allocator that will print out any bad allocations and/or memory leaks when it is destroyed
track := util.create_tracking_allocator()
context.allocator = mem.tracking_allocator(&track)
defer util.destroy_tracking_allocator(&track)
}
log.info("Hellope!")
}
Callisto loads assets using the Galileo file format.
Source assets such as glTF, png, etc. can be imported to the Galileo format using the Callisto Editor (WIP), or using a custom implementation of the format specification.
- Window abstraction
- GLFW for desktop platforms
- Basic input forwarding
- Game loop
- Logger
- Renderer abstraction
- Vulkan implementation
- WebGL implementation
- Asset file format "Galileo" (.gali)
- glTF/glb model support
- HDRI skybox lighting
- Profiling (Spall)
- Audio
- SHIP A GAME
- Input abstraction / developer console
- WebGPU renderer implementation?