Tag: game development

Ludum Dare 27: Triad

For pretty much all of this year I haven't really been doing any game development (nor posts). But I'm starting to get back into it now; a couple weeks ago I started working on my arena shooter again, and now I've participated in the 27th Ludum Dare. It would seem my period for "not participating in the main competition" was only eight months. :P

The game I made is called Triad. You can download it from the previous link, or rate/comment at its Ludum Dare page.

Read more

Ludum Dare 25

Well, I participated once again in Ludum Dare and managed to succeed in creating a game (unlike last time). The game I created is called Amongst Shadows, and you can play it here on my website, or rate/comment on it at its Ludum Dare page.

Anyway, on with the post-mortem.

The theme was "You are the Villain"; I had hoped it would be "End of the World", given the date and that I had a good idea for it, but that was not to be. Now this was a somewhat difficult theme for me, because I hate playing characters of the evil archetype; I wasn't going to create some mindless mass-murder simulator. I decided to make the morality of your actions somewhat ambiguous. You're on an infiltration job for some mysterious organisation, you're probably a mercenary, making you morally grey. Furthermore, it isn't clear whether this organisation is good or bad, though it's hinted that they're bad.

Read more

Ammo 1.0

This is just a post announcing that Ammo 1.0 has been released (changelog). After a couple months in the 0.x range, I feel it's ready to be pushed up to 1.0. Hopefully soon I can create some tutorials for the library; the documentation is complete and up-to-date, but documentation isn't particularly good at conveying the big picture.

Anyway, if you've got any feedback on the library, please let me know.

Read more


This announcement post is a bit overdue, but, better late than never. A short while ago, I released the first version (0.1) of Ammo, my organisational library for LÖVE. Its current version is 0.1.3. I plan to let the library stay in the 0.x range for a while as it's tested by me and any others who use it.

Along with the core library, there's a number of extensions available. The one I'm most excited about is ammo-debug, a versatile, highly customisable debugging console. It provides stuff like output logging, a command system, info graphs, and even simple live coding support. At present its version is 0.2.

Read more

Custom Cursors in Love2D

When making a game in LÖVE, you'll probably end up needing to customise the mouse cursor. As I recently had to do just that, I thought I'd make a quick tutorial on it. If you want an example cursor, here's the crosshair I'm using in a game right now.

Now, all of what we need is contained within the love.mouse module. The first step is to hide the mouse with love.mouse.setVisible. You'll probably want to do this in love.load:

Read more

Illusive Dreams: Test Build 5

Well, it's been some time since I've released a test build for Illusive Dreams hasn't it? Work on it has been very slow lately; both I and Jeremiah haven't done all that much on it during the last few months. Nevertheless, a lot has happened to the game since the last test build, and I thought it best to release a new one before I go off to Brisbane. You can find the build here: /games/illusive-dreams/test. Any feedback, suggestions, etc., would be most welcome.

Read more

Getting More Ratings in Ludum Dare

I thought I'd share a few quick tips on getting more ratings, which I've picked up in my experience with Ludum Dare. Please note, I'm not putting this down as fact or anything, but merely expressing my own opinion.

Yeah, this one's kind of obvious by now I'd say. Your "coolness level" increases by one per game you rate, and the cooler you are, the higher chance you have of getting rated. Games are picked for people to rate both by how high the author's coolness is, and how low the number of ratings are.

Read more

Rock 'n' Slash: Ludum Dare 23 Postmortem

Well, I think it's about time I made my Ludum Dare 23 postmortem. First of all, I blame not posting in a long time on my seemingly inherent laziness. Procrastination is an easy trap for me it seems, but that's another topic altogether.

Back on subject, the latest Ludum Dare took place between April 21st and 24th, with the main competition ending on the 23rd. It just so happens that this event was Ludum Dare's 10th anniversary, which is pretty awesome.

Read more

Ludum Dare 22 Postmortem

A couple of in-game screenshots

Last weekend was Ludum Dare 22, and of course, I participated. The game I created is entitled Uncorrupted; there's more information available at its page on my website and on Ludum Dare. You could also check out the time-lapse of my work on the game.

Read more

Illusive Dreams: Test Build 4

The fourth test build for Illusive Dreams has been released. Chapter two has been finished, with nine new levels, in-game text replacing cutscenes, and many other modifications and fixes.

I haven't been able to do anything with the commonly reported "white screen" bug, as I'm not able to reproduce myself. Please let me know if it occurs in this build. If it hasn't disappeared, I'll have to put more effort towards hunting it down.

Anyway, all feedback would be greatly appreciated. Thanks!

Read more

Illusive Dreams: Test Build 3

I've now released the third test build for Illusive Dreams, and as usual, it's bigger than the last one. There's eight new levels, re-arrangements of previous levels, another night time music track, and many modifications and fixes. Check it out and let me know what you think. Thanks!

Illusive Dreams: Test Build 2

I've just released the second test build for Illusive Dreams. This build has six new levels, two music tracks, chapters for level ordering (although there's only one at present), and a number of other modifications and fixes. Once again, I'd really appreciate any feedback or suggestions you might have, as it really helps to improve the game. Thanks!

Illusive Dreams: Test Build and a Composer

Quite a bit has happened (as usual) since the last update via my blog. I've created more levels, added a system for chapters, and many other changes and additions. But there are two main things which I'll cover in this post.

First is the release of a test build of the game. I needed some people to test the game, to find problems and things that could be improved (the main thing of interest for me was the difficulty). A few people (negativeview, @PeteDevlin, @b1naryth1ef, and @headchant; thanks guys!) volunteered to test it, and gave me some pretty helpful feedback. I plan to release another test build sometime soon.

Read more

Pixel Says: A Game with One Pixel

A couple days ago I felt like doing a quick game for a little change from the game I've been working on for the last seven weeks. For some reason, I decided that limiting myself to only one pixel would be a cool idea. So last night, in an hour and a half, using FlashPunk, I put together a Simon Says remake called Pixel Says.

Obviously, the only thing that I wasn't able to do successfully with one pixel is have instructions given inside the game; other than that it was perfectly possible to do.

Read more

How It Works: The Thruster in Facilitated Escape

In this post I'll be taking a look at how I programmed aspects of the ship's thruster in my game, Facilitated Escape. I'll most likely be making more posts like this in the future (as in, I intend to make a series of "How It Works" posts).

Initially I had a lot of trouble getting the thruster to look right; you might be able to see some of my troubles in the Ludum Dare time-lapse. The reason for this was that I had programmed the game to move the ship on the y axis instead of moving everything else, as expressed by this code (line 72 of ship.lua)

Read more

Mouse Dragging in Love2D

In this tutorial, I'll be taking you through my method of enabling objects to dragged by the mouse (in LÖVE of course). You can view the completed code for this tutorial at gist #1196228.

So, say you have an object with x/y coordinates, width, and height, and you want this object to be draggable by the mouse. For this tutorial, I'm just going to construct a table and put in the global, rect:

function love.load()
  rect = {
    x = 100,
    y = 100,
    width = 100,
    height = 100,
    dragging = { active = false, diffX = 0, diffY = 0 }

The next thing we need to do is define love.draw to draw the rectangle. (We'll see what rect.dragging is all about soon.)

Read more

Facilitated Escape 1.0

This post is to announce the release of the first version of my game, Facilitated Escape (other than the one submitted to Ludum Dare). I've been working on it for nearly two weeks since I started work during Ludum Dare 21.

The game revolves around escaping a collapsing facility in your rocket, dodging oncoming "blocks" that are in your path. It's got quite a retro feel to it, with pixel art and 8-bit music.

Anyway, I won't repeat what I've already written, you can get more information and download the game from its page. Also, I'd really like to hear your comments and suggestions regarding it.

Read more

Ludum Dare 21

After my complete failure in the last Ludum Dare, I didn't plan to take part in the next one (the 21st), however I decided to give it another shot. I'd learnt a number of things from my failure last time: go with a concept that's really simple, and use simple art, like pixel art, at least if you're a programmer like me.

I also decided not use my personal framework for LÖVE; the biggest reason I failed last time was that my framework was riddled with bugs. My framework is much more solid now, nevertheless my main reasons for not using it are:

Read more

Glow Effect for Lined Shapes in Love2D

Recently I experimented with an easy way to make lined shapes glow (using LÖVE of course). There are of course other ways of doing it, and there are many styles of glow that can be used, but this is the one I came up with.

love.graphics.setColor(r, g, b, 15)

for i = 7, 2, -1 do
  if i == 2 then
    i = 1
    love.graphics.setColor(r, g, b, 255)

  -- draw lined shape here

The shape gets drawn multiple times, each time with a different line width, set by i. In all, six shapes are drawn with the widths 7, 6, 5, 4, 3, 1. For all the lines, except the last, the alpha of the colour (by the way, r, g, and b represent the respective values of whatever colour you might choose) is set to 15. Since the alpha of every overlapping colour is added to each other (by default), for each line the colour will get stronger and stronger, giving the glow effect. The last line is given an alpha of 255, since this is where all the "light" is meant to be coming from.

Read more

A Guide to Getting Started with Love2D

In this post, I'll attempt to give you my personal guide on some good steps to getting started with the Love2D game engine (the proper name is LÖVE, which I'll be using from now on). It's not perfect, of course, but I hope you find it useful. If you have any feedback, I'd love to hear from you in the comments.

I'm guessing you probably already know, but for those who don't, LÖVE is a 2D game engine (or, framework). It's an environment which contains a lot of pre-written code targeted at making games. It interfaces with the Lua programming language to makes things even easier for you.

Read more