scottcgi/Mojoc
FreeA cross-platform, open-source, pure C game engine for mobile game.
FreeFree tier
About scottcgi/Mojoc
Mojoc is an open-source, cross-platform game engine written entirely in C99 that prioritizes simplicity and minimalism. It leverages OpenGLES3 for graphics and supports iOS and Android, with extensibility to other platforms. The engine employs a unique Object-Oriented C (OOC) programming model and a component-based architecture driven by state machines and messages. All platform-independent code uses only the standard C library with no third-party dependencies. Mojoc has been used to develop and publish a bow-and-arrow game called SuperLittleRed, and its source code is accompanied by a sample project demonstrating engine features.
Key Features
Written entirely in C99 with no third-party dependencies in platform code
OpenGLES3-based rendering for mobile graphics
Lightweight Object-Oriented C (OOC) programming model
Component-based architecture with state machines and message-driven logic
Cross-platform support for iOS and Android with easy extensibility
Unique Mojoc Code Style for consistent, simple code
MIT open-source license
Published sample game SuperLittleRed demonstrating real-world use
Pros & Cons
Pros
- Open-source under MIT license, free to use and modify
- Simplistic design philosophy (less is more) reduces complexity
- Pure C eliminates the need for C++ knowledge while still enabling OOP patterns
- No external library dependencies in cross-platform code ensures portability
- Proven with a published commercial game (SuperLittleRed)
- Unique OOC model keeps code organized without heavyweight frameworks
Cons
- Currently only supports iOS and Android; no desktop or web support
- Limited documentation and only one sample project available
- Not recommended for complex 3D games due to minimal abstraction
- Small community and infrequent updates (last release v0.7.1)
- No built-in editor or visual tooling; requires manual coding
Best For
Developing 2D mobile games for iOS and AndroidLearning how to build a game engine with pure CCreating lightweight, resource-efficient games with minimal dependenciesRapid prototyping of action games (e.g., bow-and-arrow shooting games)
FAQ
Why not use C++?
The developer chose C because pure C game engines are rare, and the goal was to create a smaller, simpler engine consistent with C's philosophy. The project tested the feasibility of building a complex system using pure C.
What does the name Mojoc mean?
Mojoc is a combination of 'Mojo' and 'C', where 'C' stands for the C language.
When was Mojoc started?
Mojoc started in 2012 as a spare time project, originally focused on the Android platform using Eclipse, CDT, ADT, and NDK.
Who designed the logo and what does it represent?
The developer designed the logo. It is an unknown creature made up of the letters in 'Mojoc': M for ears, OO for eyes, J for body, and C for tail.
What kind of games can Mojoc create?
Currently, the engine is not recommended for all game types; it has been used for a 2D bow-and-arrow shooting game (SuperLittleRed). The documentation advises caution for complex projects.