About orangeduck/Corange
Corange is a game engine written in pure C, using SDL and OpenGL. It features a modern deferred renderer, clean asset/UI/entity management, and numerous demos showcasing rendering techniques, animation, collision detection, and more. It is heavily WIP, with a focus on experimentation and learning. The engine provides support for deferred rendering, UI rendering, text rendering, multiple lights, SSAO, shadow mapping, color correction, skeletal animation, inverse kinematics, collision detection, OpenCL interop, terrain, and various file loaders (DDS, WAV, BMP, OBJ, SMD). It is not plug-and-play; users need graphics programming knowledge to utilize its features.
Key Features
Modern deferred renderer
UI rendering and text rendering
Multiple lights with SSAO and shadow mapping
Post effects and color correction
Skeletal animation and inverse kinematics
Collision detection
OpenCL/OpenGL interop for metaball rendering
Asset, entity, and UI management
Terrain rendering system
File loaders: DDS, WAV, BMP, OBJ, SMD
Pros & Cons
Pros
- Written entirely in pure C, accessible for C programmers
- Clean and simple codebase with clear structure
- Modern deferred renderer with multiple lighting techniques
- Cross-platform support (Windows via MinGW, Linux via SDL2)
- Rich collection of graphical demos for inspiration
- Supports advanced graphics: SSAO, shadow mapping, skeletal animation, inverse kinematics, OpenCL interop
- Can be linked to from C++ applications
Cons
- Heavily WIP with bugs, unfinished features, and messy code
- Not plug-and-play; requires significant graphics programming knowledge
- No built-in 2D renderer; 2D rendering must be implemented by user
- Subject to sweeping changes without backward compatibility guarantees
- Unviable for production use without direct involvement with the author
- Demos may be from a previous version and may not work with current code
Best For
Learning graphics programming in pure CPrototyping game concepts and rendering techniquesEducational tool for understanding game engine architectureCreating demos for advanced graphics features like SSAO and tessellationBuilding small games with low-level control
FAQ
Why not C++?
There are plenty of C++ engines which do what I've done here and better. Pure C game engines are much rarer. Corange provided an outlet to practice C skills. You can still program your game using C++ if you link to it.
What stuff does it do?
It's a platform for trying out various techniques and effects. Features are not plug-and-play, but if you have knowledge you can utilize them. Includes deferred rendering, UI rendering, text rendering, multiple lights, post effects, SSAO, shadow mapping, color correction, skeletal animation, inverse kinematics, collision detection, OpenCL support, asset/entity/UI management, terrain, file loaders, maths and geometry, and more.
Can I use this for 2D stuff?
Certainly, but Corange doesn't provide a 2D renderer. You have to write your own rendering code application specific.