13 April 2012 by Ian Davis
I mentioned in my last post that I’d been creating a game in Go in my spare time. Since then I’ve made a bit of progress and thought I’d share it with a short video. It doesn’t look much but it represents a huge learning curve encompassing learning Go and its toolchain, OpenGL, SDL, clipping and culling, collision detection algorithms and game physics. The last game I wrote was probably back in 1987 on a Sinclair Spectrum 48K (which is about the same size as one of the textures in this game!)
In the video you can see a basic game world which consists of chunky voxels similar to Minecraft. However, the game view is isometric and can be rotated and tilted a bit. The main character is just that grey and white block at the moment – I need to work out how to draw good textures! You can move around the world, jump onto blocks and fall into holes. Falling is broken at the moment because you only seem to fall one level of block – something to do with collision detection in the z axis (up and down). You can also place blocks, although they are all of the same type at the moment. You can’t remove blocks yet. The world map wraps round at the edges. I want the map to be infinite in extent but currently only have a 40×40 section generated so I faked it by simply wrapping the coordinates. it stops you falling off of the edge of the world though!
I even have a name for my game: Amberfell
Currently I’m thinking this will be a steampunk themed game. You play a prospector hunting for a rare and mysterious substance called Amberfell. When you find some you’ll be able to erect a drilling rig to extract it from the ground. It can then be processed into some resulting valuable product that earns you points in the game. However, you also need to use it for other things in the game and you’ll be able to build pipes to transport it to other machines that you’ll need to construct. At the start there will be a few wild animals around (wolves, bears etc) that you’ll need to fend off with your weapon. You’ll also be able to build fences and pit traps to protect yourself. Lighting a campfire will ward off wild animals. However, as soon as you start extracting Amberfell the real fun starts. You’ll find your base being invaded ny mechanical creatures sent by your rivals. I want these to be real steam-driven, brass and iron constructions (heath-robinson-esque). These constructs might try to steal your Amberfell, attack you or destroy your equipment. You’ll be able to fight them off and when you destroy them you’ll be able to salvage their parts to build your own. The interesting part here is that each robotic construct has an Amberfell fueled “brain” that determines its behaviour. You’ll be able to combine the brain with an engine, wheels or legs, sensors and a few manipulators to create your own versions of the machines.
I hope the brains will be developed as little trainable AI’s either using genetic algorithms or neural nets. I’m not sure how well those will work out but I’d like for the enemies to learn new strategies over time and for the player to be able to train their creations to combat the enemies. It would be neat if the brains were swappable between different players.
That’s my current thinking on the game. It’s going to be slow going because I’m still only working on it in short bursts but I think I can figure out all the mechanics. I’m hopeless at graphics so, assuming all goes well in the next few months, I’ll be looking for great graphic designer who can create a real steampunk look and feel for the game.
If you want to take a look at the code it’s on github. The code will be open source, but I haven’t decided what licence to use yet. I might want to sell the game commercially and still keep the source open – not sure how that will work yet.