Cage is game engine/framework designed for programmers with focus on strategy games.
It started as a hobby/learning project, but has become fairly feature rich and mature over the years.
Features
Designed for programmers
- Cage is a collection of libraries and tools, not yet another editor.
- No visual programming - use c++ for the engine and for the game.
- All tools and assets are configured with simple ini-like text files, which is suitable for version control systems.
Ease of use
- Cage is programming framework that creates a consistent basis for engine, tools and game development.
- It encourages readable, maintainable and safe code while also allowing for quick prototyping.
- Performance optimizations are generally added as needed only, usually hidden from the application.
Portable
- Cage runs on Windows and Linux.
- It is mostly self-contained.
- Most dependencies are accessed as git submodules and compiled in.
- There are just few packages required on linux.
- The Core library has no dependencies on graphics or sound and is suitable to run on headless servers.
Friendly licensing
- MIT license lets you use Cage for personal and commercial products alike, for free, forever.
- All 3rd-party licenses are copied to single redistributable directory during build configuration.
Examples
Degrid
Degrid - simple but mostly complete game with birds-eye-view of a spaceship fighting against hundreds of geometrical enemies.
Cragsman
Cragsman - a game demo with procedurally generated terrain and simple physics
Space Ants
Space-ants - visual simulation of thousands little spaceships at war
Cage Examples
Cage-examples - a collection of test scenes and applications
Contents
Core library
- Framework stuff (strings, logging, configuration, events)
- Operating system abstraction (memory, filesystems, threading, networks)
- GLSL-like math and geometry primitives
- Entity systems
- Assets management
- Extensive tests
Engine library
Low-level API
- Window and input management
- Objective layer on top of OpenGL
- Long term plan is to switch to Vulkan only
- Sound processing
- Gui
High-level API
- Game scene provided with entities
- Pipeline-like processing using multiple threads
- 50 000 objects at 30 fps (cpu-bound)
- All objects goes through automatic instancing
- Rich graphics effects:
- hdr, bloom, tonemapping, gamma correction
- motion blur (per object)
- ssao
- fxaa
- Roughness/metallic workflow
- Automatic shadowmaps
- Stereoscopic rendering
Tools
- Asset processor - converts assets from wide variety of interchange formats to Cage specific formats
- Asset database - manages automatic asset processing
- Asset analyze - automatically generates basic configuration for most files
- Image channels - lets you split or join multiple channels to/from single image
- Image convert - easy mass image format conversion
- Image atlas - slices a single image atlas into a sequence of individual images
Building
- See BUILDING.
Contributing
- Contributions are welcome!
- Questions, bug reports and feature requests are best done on github issues tracker and pull requests.