Codekiddy and Open-source

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.

And because I love Git so much, Codekiddy it’s freely available on GitHub. Contribute or fork as you please!

That’s all from me today, hopefully I’ll write another blog post next week, thanks guys.

Read More

Git Version Control

For those of you living under a rock, and are unfamiliar with it; Git is a fast, powerful, and easy to use distributed revision control system. It was created by the face behind the open-source Linux initiative, Linus Torvalds.Once you’ve set up a Git repository for your project, the basic principle of Git is this:

  1. Programmer A edits a file from a local clone of the repository on his/her system.
  2. When Programmer A has finished implementing Feature A or fixing Bug A, they “Commit” to their changes; a note can be added describing what they’ve changed, added, or removed.
  3. It would be wise at this point for Programmer A to “Pull” any changes to the remote repository; any alterations made will be cleverly merged.
  4. When Programmer A so desires, he or she can then “Push” the changes to the remote repository.
  5. Programmer B will receive these changes when he or she makes a “Pull”.

There’s way more to it than that, but that’s the basic idea; Git is awesome and I much prefer it to Apache Subversion (SVN).

Linus Torvalds
“Intelligence is the ability to avoid doing work, yet getting the work done.”

Read More