Portfolio Update – Game Behaviour


I recently put up pages for two projects from the Game Behaviour module undertaken in the final year of my BScH in Computer Games Programming at the University of Derby, which I have now fully completed and received a very pleasant classification for.

You can now head over to the pages for Crispis and DropCakes, and The Frozen Firepits of Generic Dungeon Name for information on these projects, or to download the source code and executables. The former is simply a 2D physics sandbox built upon Box2D and a custom Entity/Component engine, and probably isn’t or much interest to many. The latter, however, you may find interesting if you’re into game design, classic roguelikes, fantasy games, and such.

The Frozen Firepits of Generic Dungeon Name (TFFGDN) was an experimental game design implemented for an artificial intelligence (AI) assignment; it did well, though the AI isn’t too interesting in my opinion. It’s a fusion of turn-based, physics-based mechanics similar to Snooker or Pool, and classic fantasy dungeon-crawler games where a party of adventurers of traditional achetypes such as Warrior, Wizard, Rogue, etc. enter into a monster-infest labyrinth seeking treasure. In its current state it’s not too thrilling; I had intended to implement magic and special abilities for player characters and enemies, which I think would make things a lot more exciting, but I just didn’t have time. I also feel like the physics could be tightened up a lot to increase the pace of gameplay, but I had to do a lot of fiddling with Unity just to get it working in the first place.

Come next week or so I’ll try to have some more information up regarding my dissertation project which was an investigation into AI for Don Eskridge’s The Resistance. Then I can get onto undertaking some small personal projects while I look for work.

Summer 2012

Since handing in my last assignment of the year, I’ve had a good amount of time to recover from the previous stressful semester and make a start on some of the things I wanted to get done this summer. This’ll be a short post outlining these mysterious things, mostly for my own benefit, though I guess it may be of interest to any passing traffic.

For the most part my efforts so far have been centered around finding work, and following a small series of WebGL tutorials based on the popular Nehe OpenGL series. I’m using WebGL to brush up on the OpenGL I covered last summer, and to serve as an introduction to JavaScript and general web development. Working with JavaScript has been relatively painless given my previous experience with ActionScript 2.0, and the useful developer tools included with Firefox and Chrome. Still, an environment which doesn’t crash when you call a non-existent function has it’s pitfalls.

Expanding my experience with a variety of languages is a priority for me at the moment (I’ll be starting some Python tutorials later today), but ideally I’d also like to move back into C and bring my OpenGL experience up to par with my DirectX experience so that I can make an attempt at some sort of deferred shading system. Graphics programming isn’t my favourite of subjects, but it’s challenging and the results can be very satisfying. The implementation of a renderer using deferred shading seems quite intuitive to me and could be a lot of fun to experiment with. To this end, I’ve also been brushing up on some maths, as I’m aware my lack of A-level puts me at a disadvantage in the eyes of some employers, and It’ll really help to fully understand more advanced techniques in graphics and other 3D programming tasks.

I found a decent book to help with my maths studies, but it’s part of a larger stack of books I’ve yet to wade through, including one on API design, and another one on x86 assembly programming. Assembly programming is something I particularly enjoyed during the first semester this year, but it remains to be seen whether or not I’ll get back to it this summer. I’ve resolved to get hold of a decent graphics tablet as soon as I’m sure I have a little time to burn – I may be a programmer now, but there’s only so long you can suppress your creative routes. I never really got into digital art before, but working with pen and pencil for so long has gotten me into a bit of a rut, and I feel like I need to stretch over into new mediums to escape it. While we’re off the subject of programming, I’ve also been studying Korean a lot more since the semester ended – even if the majority of that has been reading 루쿠루쿠 (Lucu Lucu) and playing Pokemon White. I should get back to Lang-8 and make a post there sometime soon to try out the new grammar.

At the moment I’m still living with the majority of Pillowdrift, and watching as they work away on Mega Driller Mole. I’ve even joined in with the effort this past couple of days, lending them my technical and artistic abilities to enhance the mineral system and throw in some new enemies (yes, there are demon cats now). Mostly though, I’m proud to say that they’ve had little difficulty adapting to my original code-base, and twisting it to their needs. I wasn’t even here during their initial work – they had to figure it out all on their little own!

I also worked with Bombpersons following a quirky little framework he threw together for a discontinued Mini-Ld attempt. He used SDL to create a very lightweight graphics module which allows the setting of pixels, never clears the screen, but blurs its contents every frame. I threw together an equally light weight (and not really well coded) game framework over the course of a day, and implemented a controllable player, just to see what it looked like, while he developed a simple particle system, which it turns out looks really freaking cool in such an environment. That’s as far as we got with this quick and dirty prototype, but we definitely think there’s room for a decent game implemented around the blurring gimmick.

Coming Soon
I mentioned something a while back about decent games made in Game Maker, and how I wanted to write something about that. Well, I’ve been playing a lot of Hyper Princess Pitch recently, and instead of tackling the subject head on, I figure I’ll come at it via review instead. Expect something up in the next day or two.

Of Video Editting and Modules Past

In the first year of my degree at the University of Derby we studied a module named Ludology, which was all about the theory of games and game design. The final assignment for the module was to create a clone of an 8/16-bit era game using Game Maker (urgh) and pitch it to two of our lecturers, who were posing as 80s publishers. Despite having to make the game in Game Maker, choosing a challenging target, and being stubborn enough to use only blocks for the game logic, what I created for this assignment was actually an incredibly faithful recreation of the first level of Sunsoft’s Gremlins 2: The New Batch for NES, including all game mechanics seen in the first level, except for money.

Why do I bring this module up now, a year and a half after the fact? Well, Gremlins 2 is a gem from my past, a huge part of my childhood as a NES gamer (yes I know I’m too young to have been brought up on an NES, but being poor had its advantages I guess), and a game I still enjoy to this day. I’ve played it to death, and previously even uploaded a video of me playing one of its hardest levels without taking a single hit (see below). I distinctly remember other students last year telling me how closely my clone resembled the original game, and having recently come across its exe, I couldn’t help but be proud of how authentic it felt, even if it was made with something so childish.


This brings me neatly on to two issues:
The first is simply the heritage of Game Maker, it’s flaws, misuse, potential, and the fact that it actually is possible to make good, respectable games in Game Maker – people just don’t. I’d like to make a post about this subject later, but in case I don’t get chance, I want you to check out two people: MESSHOF and Remar. In particular I want you to download and play Remar’s games Hyper Princess Pitch, and Hero Core. They’re free, and if you truly have an interest in gaming, you will thank me.

The second is the one I want to discuss now: Video editing. I’ve always found this to be a tricky subject. My experience with the various free software solutions has been poor (no decent export settings, formats, unstable, lost work, poor interface, unintuitive, poor video/audio synchronization), and I have never been able to justify splashing out on something more professional. Add to that I’ve always found it quite difficult to find information on how people managed to capture and compress high quality gameplay videos so effectively, and you’ll begin to see why the video before the previous paragraph is so poor, with the audio gradually drifting out of sync as it runs.

Since making that video, I have discovered VirtualDub. VirtualDub is a simple, linear video editor which is perfect if all you want to achieve is some simple cropping, resizing, dubbing, appending and recompression, however, it does not provide the slick GUI or advanced non-linear features that other editors do. After a little bit of poking around and following a lovely video tutorial for high quality, small file size exports on YouTube, VirtualDub allowed me to create reasonably sharp videos for my recent projects, Battenberg and Pastry3D. However, I ran into a brick wall when I set about my latest video editing endeavours.


Back in January I recorded the two playthroughs seen above, of Gremlins 2, level 1. One of these is running on an NES emulator, while the other is my Game Maker clone, and the point of the video was to position the two side by side so their resemblance was truly put to the test. But the playthroughs were recorded separately, so how would I go about merging them in this manner? VirtualDub is too linear for this – it does not provide functions to merge videos in such complex ways.

The answer, as it turned out after three to four hours of research and work, was to download Avisynth and VirtualDubMod. Avisynth, as best it’s creators describe it, “is a powerful tool for video post-production”. As far as I’m concerned though, it just provides a scripting language which can be used to manipulate videos in a non-linear fashion by utilizing a number of simple functions, such as StackHorizontal, which fitted my purposes to a tee. Again, as far as I’m concerned, VirtualDubMod is simply VirtualDub with added functionality, and integration for Avisynth, including syntax highlighting.

The short story is, the solution to the problem was simple, but the information I needed was so buried, and so tricky to put to use that it took a considerable amount of effort to achieve my end goal. Still, it was interesting to see how programmatic a solution to a problem such as video editing could be (seems obvious now I write it down), and I’m considering laying down a nice tutorial if I find the time – though a tutorial on merging videos like this may be too specific, and I’m no general master of the tools involved.