I know I haven’t written a blog post in a while… so I’ve recently made an addition to my calender to try and write at least one a week, so here goes.
A few months ago I was browsing through some archived folders on my development machine and came across some old projects that I’ve worked on over the years. Unfortunately I don’t often get time to work on personal projects that much anymore, and struggle to get any work done on Clockwork, but I’d really like to start open-sourcing some of these projects.
When I say a few months ago, I actually mean about 7; time goes extremely fast when you’re trying to get on with life, most of the time I don’t even realize it.
Codekiddy is a game engine I started making a few years ago for a course at University. It’s a nifty little engine written in C++, using a library called ClanLib. ClanLib isn’t so bad, it’s mostly cross-platform (although at this stage Codekiddy isn’t) and is really easy to use.
What’s cool about Codekiddy?
When I made Codekiddy (originally called Sidelined – a prototype game I was working on with a few friends before it all went downhill), I wanted it to be easy to mod. What better what to make something moddable than to implement Lua bindings, right?
- Codekiddy uses Lua bindings for pretty much anything. It’s possible to create an entire game using the engine just from the bindings provided.
- Codekiddy is pretty poorly documented (some text files in the project, I’d like to expand this documentation one day.)
- LuaJIT is used to speed up Lua at run-time and works pretty well.
- Includes a fully functional UI library written in Lua.
- Loads content from an archived file, but content inside can be overriden by being placed in the distributed directory.
- Includes a fully functional level editor with levels saved as JSON files (plus the ability to include a .lua script that runs specifically for that level.)
- State system: MenuState, PlayState, etc.
- Built-in Console (written in .lua, too, so fully customizable!)
- Box2D physics, and entity management including base classes.
- Built-in dynamic lighting system made by porting over box2dlights from Java to Lua.
- Material system with material meta data in the form of custom .cmf files.
The only thing missing that I haven’t open-sourced yet is a fully working example game. I’ve actually made a couple, but I’m just trying to tidy one of them up to open-source as soon as I can.
That’s all from me today, hopefully I’ll write another blog post next week, thanks guys.