Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

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 Degrid - simple but mostly complete game with birds-eye-view of a spaceship fighting against hundreds of geometrical enemies.

Cragsman

Cragsman Cragsman - a game demo with procedurally generated terrain and simple physics

Space Ants

Space-ants Space-ants - visual simulation of thousands little spaceships at war

Cage Examples

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

Contributing

  • Contributions are welcome!
  • Questions, bug reports and feature requests are best done on github issues tracker and pull requests.
You can’t perform that action at this time.