• About
  • Gallery of Images
  • Archives
  • Categories
  • Archive for the ‘Random Thoughts’ Category

    LowRezJam – Report 1

    2014 - 05.03

    So #LowRezJam is all about fitting a game into a 32×32 screen.  Sounds fun and potential painful at the same time.  I thought I’d post some progress updates to keep myself motivated and to give me some ponder time while writing blog posts.  I’ve had an idea I’ve wanted to do for a while, which is basically a simple resource harvesting game.  I prototyped some ideas a while ago, and have worked out how to adjust them to make them fit within the constraints of a 32×32 screen – some of the more complex functions I may have to drop, but it should still be fun.

    I’m using my goto html5 library, impact.js and the first test was to make sure that it would upscale correctly – the rules of the jam are very specific that everything must be in the 32×32 pixel grid – no half pixels when up-scaling.  impact.js handles this fine, so I stuck together a mock level to test scrolling :

    Initial level designThis worked fine, but building static levels like this struck me as a bit boring.  If in doubt I try and use procedural generation as much as possible so I decided to do that instead 🙂  I tweaked the game to have to distinct map layers – the first one contains the desert environment, the second will contain the resources that you are collecting.  I used the diamond-square algorithm to generate some realistic looking desert and the resource layer.

    full tilemaps

    When combined, this looks something like this :

    combined tilemaps

    Pretty simple stuff for now, not quite happy with the look of it, but its a start.  I also needed something to actually harvest the resource, which is this prototype little vehicle I made :


    tiny miner

    30×30 for the full tilesheet – lots of unused space for now and easily the smallest tilesheet I’ve made.  Why on earth gimp says 1.1MB I have no idea 🙂  So now, we combine these all together, and stick them in the 32×32 frame.  This initial prototype was just to see if it would all work as expected, so the harvesters just randomly move up and down and left and right, and the screen is scrolled by the arrow keys – this is the up-scaled version, next to the original size.


    And finally, for those who haven’t seen it, this is my quickly put together title screen ( not featuring text, yet ) :


    Now to add some actual gameplay to it 🙂



    The Roaring Silence …

    2014 - 05.03

    Alas, being busy with real life stuff, my blog ( and gamedev ) has slipped a bit from my attention, which is always lame when your last post was last year. So this is me addressing this fact and getting back into the froodiness that is gamedev.

    I’ve worked on a few projects in the past few months, but nothing which has really seen the light of day in a release way – which is a terrible terrible sin for an indie gamedev to commit, which is one of the reasons I started this blog in the first place. Publicly stating stuff get things done 🙂 So with that in mind, I’m stating for the record that I’m taking part in #lowrezjam. Which is a pretty cool idea for a jam where you have to make a game that fits that will fit inside 32×32 pixels. I’ve got a game idea I’ve been wanting to do for a while now, and I think it will fit this theme quite nicely, and be quite challenging to do ( how do you fit a decent UI within 32×32 pixels? only time will tell 🙂 ).

    So this means in around ~15 days from now, there should be ( finally! ) a new game to play 🙂

    Now to make this entry a bit more media friendly, here are a couple of screen shots from some of my WIP’s that I’ve been toying with in my spare time :

    Physically Simulated Tentacles
    Physically simulated tentacle monsters. There is a reason. I’m not going to say what until I get further along. Each tentacle can navigate using A* and can grow and contract as is required to manipulate obstacles. A screenshot doesn’t really do it justice – the physics produce some really cool organic looking animation

    More physics, and blood! This was an early experiment with box2d and impact which resulted in many, many hysterical bugs. This game is actually game complete, but only has one level currently. And terrible programmer art.


    Lean startups and the indie gamedev

    2013 - 07.13

    Making games is my hobby, dare I say, my obsession. However, like a lot of other indie gamedevs, I have a full time job. By day I work for a digital marketing agency. Recently, the company has started to adopt a set of principles referred to as ‘The Lean Startup’ – linkie to website here : http://theleanstartup.com/. I’m going to try and avoid using lots of buzzwords in this blog post as articles about Lean Startups seem often to have way more buzzwords than content 🙂

    One of the central concepts of a lean startup is the Minimal Viable Product ( MVP ). ‘What is an MVP?’ I hear you cry. Well, simply stated : it’s the least amount of work you can do to get a product ‘out there’. By ‘out there’ I’m referring to getting friends, family, strangers, clients actually using your product and providing you with feedback on it. The general approach is basically a feedback loop – get feedback on the MVP, change the MVP to incorporate the feedback as cheaply ( time or resource wise ) as you can, release a new version of your MVP, get feedback on it, etc; etc;

    Think about it very much as step 2 in the underpants gnome great money making scheme.

    What I found really interesting about the concept of an MVP is its a methodology I use all the time without ever having thought about it – what do you get when you mix up indie gamedev with an MVP? You get a game prototype. Suddenly all those hours spent cutting out bits of paper and pestering people to play a paper version of game before starting coding made sense. Sending out desperate cries of ‘play my game! tell me what you think’ on social media wasn’t just me being devoid of social interaction – it was a viable business technique!

    I read every single bit of feedback I get related to my games like a starving man. I make a point of replying to as many as I can. ( Of course, not everyone gets a reply – ‘Your game gave me cancer it was so bad’, really doesn’t deserver a reply ). And, more importantly, I implement a LOT of the feedback I get, and along comes another version of the game.

    I’m now going to talk a little about how I used the idea of an MVP to build Wastelands.

    Wastelands, my most recent #1GaM entry, was built as an MVP. Initially when I was approached by a co-worker with the idea of building Wastelands, the phrasing of the goal was ‘a dopewars clone, set in a zombie apocalypse scenario, where you sell drugs to your real life friends, who can die in the game’. My first thought was yuck, zombies. As much as I love the zombie apocalypse scenario I think it is become more and more clichéd. My second thought was, this is a really awesome idea minus the zombies so I wrote a little story about aliens. We refined this somewhat between us and got down to deciding how to turn this idea into an MVP. So, the major hook is having your friends in the game. But whats the best way to go about that?

    There are so many ways of getting your friends into a game these days, its almost indecent its not used more to bring interesting NPC’s into your game. Twitter, facebook et al all provides ways of pulling this data down. But working with with those techs is time consuming. We are thinking MVP. What is the laziest way of having this tech in the game without resorting to the full twitter/facebook implementation? ( ‘laziest way’ will probably be frowned upon by practitioners of the lean startup, but it’s exactly how I think of it 🙂 ).

    It’s simple – the first MVP released was shown to co-workers inside the company. So with this limited audience, we found a global set of friends for the entire company – the board of directors. No need to worry about a facebook or twitter integration, no need to worry about any sort of online/offline integration. Simply an array containing the name of each director, along with an image.

    The feedback was good – the concept was interesting, though immediately we had to deal with the idea of a public release – the board of directors where all very good internally – but would mean nothing to anyone else. So we evolved the MVP and the next version of the game contained some text boxes at the start of the game that allowed you to put a friends name in, and select a sex – this allowed us to populate the world with your friends, along with a not very specific image of them. You can guess the next bit of feedback we got from the tests.

    ‘We want to see our friends instead of random NPC faces !’ they cried. Still with another MVP in mind, we looked for another lazy way to achieve this. The idea came pretty quickly. By adding an email address box next to each friend box, we could query gravtar and pull an image of a friend to place it in the Wastelands world.

    This was just one example of feedback and implementation inside the Wastelands MVP. There were many other things that came to light – resulting in a game which wasn’t exactly like our first vision, but one which had been developed hand in hand with players, with us able to drop and add features dependent on actual feedback. We had something viable that people enjoyed playing.


    Setting up node.js on appfog – a quick tutorial

    2013 - 03.25

    I’ve been playing around with node.js and loving it so far. I wanted to find a third party host for it, as my current host won’t let me play with it without it getting expensive quickly. So after some googling around, I decided to give AppFog a go. It’s free and from my limited exposure to it so far, does the job pretty well. I ran into a few stumbling blocks as I went, so decided to put a mini-tutorial together to explain how to get node.js running.

    Firstly, you need to sign up to an account. No credit/debit card details needed. Once signed in, you need to go here : https://console.appfog.com/apps/new. Simple enough. To get an instance running, simply select node.js from the first menu :

    Then select where you want it hosted, followed by giving the app a name :

    Once done, click on Create App, and you are re-directed to something similar to this screen :

    Congratulations! You have just created a node.js instance. Now, with a process as simple as that, why on earth do I need to write a tutorial? Well, I spent some time sorting out the environment to properly edit this instance, so this is the ‘meat’ of the tutorial.

    Firstly, you need to install ruby. http://rubyforge.org/frs/download.php/76804/rubyinstaller-2.0.0-p0.exe should run fine. Install it, and then from the Ruby 2.0.0-pl folder, select start Command Prompt with Ruby.

    mkdir src
    gem update --system
    gem install af
    af login
    cd src
    af pull slimetutorial
    cd slimetutorial

    This basically creates a /src/ directory within your ruby install and sets everything up nicely. AppFog tutorial suggest an af update – but if you have nothing created already, it just deletes the instance – d’oh! Presuming the above works you should see something very similar to this :

    That file is your node.js file. Open it up in your environment, and lets change the code slightly :

    var http = require('http');
    http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/html'});
    res.end('Many happy slime monsters from AppFog.com !');
    }).listen(process.env.VMC_APP_PORT || 1337, null);

    Silly I know 🙂 but anyway, you have this file now saved, how do you deploy it ?

    Simply run an update :

    af update slimetutorial

    If everything went ok, it should look like this :

    This handles stopping the node.js instance, staging it, then re-starting the server. Assuming no errors of course 🙂 Things may look slightly different if your server is started/stopped – visit your control panel and click on the Visit Live Site button. Congratulations, you can now start playing to your hearts content with node.js – for free ! 🙂


    Mine your step – dynamically generated heatmaps

    2013 - 03.07

    With the massive amount of attention Mine your steps is getting, I thought I’d quickly throw together some ( ugly ) heatmaps of all the deaths. These are generated by php using gdlib to build the pictures. Click on them to get a bigger version. Hit refresh either on this page, or on the graphic, and it will update with the latest info 🙂

    Level 1 :

    Level 2:

    Level 3:

    Level 4:

    Level 5:

    Level 6:

    Level 7:

    Level 8:

    Level 9:

    Level 10:

    Level 11:

    Level 12:

    And to see all the heatmaps in one place – click here!