Troll Game Jam

I tend to really like game jams because I always learn a lot of things during the 24-ish hours of non stop development, so when a friend told me he is organizing a small LD like competition, my coder senses went all tingly.

I’ve long been an advocate of diversity, so just for the fun of it I wanted to see if I can do a game based on Qt that could run on anything (anything as in every platform that supports Qt), so this time around I fired up QtCreator and started making the game.

Interestingly enough, it took around 6 hours to implement a standard game of snake and another 6 for the rest of the gameplay,  and I say that because everything is made in C++. When I started game development I transitioned to interpreted and JITed languages because pushing pixels in C++ was a very long process, even with existing frameworks, maybe it’s the development experience I’ve gained over the years, but that no longer seems to be true, so it’s definitely something that I’ll explore in the future.

Back to the game though, the idea was to create a game so buggy that it becomes a challenge to play it. I think I’ve managed to do that to some degree, however if you don’t want to take my word for it, you can download it here

lase shooting snakes

The classic game of snake with lasers

I’m calling it a troll game jam because the unofficial focus of the jam was trolling the other opponents, and since at least for now I’m the only one with a playable prototype, I think I might have lost that round, but on the other hand something pretty fun came out of it.

Android support soon to follow.

Pinballs’ story

I really like stories, generally because there’s something you can learn from them and I particularly enjoy dev stories because not only you learn from them, but at least in my case I end up learning something useful.

This dev story is about the reason that neat little time waster called pinball wasn’t included in any windows release after XP. I guess “management reasons” was a bit of a no-brainer, but often times software engineers stay overtime to make things they believe in happen, I for one have done so on some occasions, so my curiosity naturally settled on the question, why didn’t anyone really want pinball in the next release, the answer? poorly written code.

You know something is truly badly written when the guys writing the operating system it runs on can’t figure it out, as it turns out the issue was quickly diagnosed, but finding the actual code that created it was a bit like finding an accidental piece of hair in your lasagna. It’s too bad they didn’t get to the bottom of that floating point problem though, would’ve made for a better story in my opinion, but at least I can say I learned to be more wary of rounding errors.

Anyway, the story is here, make sure to read the comments as well, they provide some further interesting insight.

LPC: The Game

I started development on the game for the liberated cup and so far it’s going well enough for me to be able to talk a bit about it.

The basic idea would be to have a battle for territory spiced up with some one on one combat. Therefore I started with the following setup:

Image

Basically I started with the idea of the battle of the opposites, nature represented here by water and grass and destruction represented by barren rocks and lava. Now if you try to imagine that the picture above would be filled with art from liberated pixel cup awesome tilesets instead of my prototype, this is basically a 10×10 grid where the two should battle it out.

Rules are simple:

  • Each player starts with 20 life points
  • Each turn a player can attack his opponent, cast a spell, or create territory
  • When you attack the other player loses 1 life and goes 2 tiles back
  • If there’s not enough room to go back, the opposite player loses one life for each tile it doesn’t move(1 tile = -2 life, 2 tiles = -3 life)
  • When you create territory you can only create 2×2 blocks at one time
  • Territory created can be either walkable or not walkable
  • You cannot place a territory if it blocks every path to the other player
  • If you are on your territory when you start the round and your health is < 20, you get 1 life point back
  • You have a limited amount of territory you can build (I’m still working on the specifics)

Spells are something I’m going to detail later because they’re a work in progress.

In any case, development has started off well and I’ve made up most of my spritesheet management stuff, so I should be able to post some actual gameplay soon. Also if you’re into that stuff, you can follow the development of this game on github at this address. I should start pushing pretty soon, after I receive some answers. Until then I’ll just leave this teaser here:

Image

LPC: The Tools

So I think two days should be more than enough to come up with an educated guess at what the best tools for making a quick game for the liberated pixel cup should be.

However, instead of just spewing out names, I’d like to take a more structured approach this time to showcase the entire process. That way if anyone stumbles across this post wanting a clarification on how to make a game, they could use it as a guideline.

First things first, let’s say that you already have a good idea about what you want to do and it’s either fairly documented somewhere or you have it very clear in your head, so coming up with ideas for making a game isn’t really a problem. At this point, you need to define the following:

  1. Platform (Mobile? Windows? Linux? Mac? All?)
  2. Environment ( IDE / Programming Language / Frameworks etc. )
  3. Graphic Design Tool(s)
  4. Audio Design Tool(s)

The Platform

This is the one that makes the most difference, this will be the one you will see and live with for the next few months so you should think about it very thoroughly. Every platform has its quirks and if you don’t know what you’re doing it’s going to be a hell developing for all of them at once, so usually what you will want to do is select one that you are most comfortable with and try to keep the door open for others. For the purposes of this competition, I will start off on Linux.

The Environment

So the platform is out of the way, now it’s time for the environment. Ideally you’ll do this on the same platform that you are developing for ( unless it’s mobile of course ) and let’s say for the sake of the argument that you do, the first thing you will need to research is what tools are there available for my platform that help me make a game. So in my case, I have to make a game for Linux, but keep my options open as well, what can I use ? well it boils down to this:

  • HTML 5
  • C/C++
  • Python
  • Cross-platform game makers

Now, I don’t have anything with game makers, but I wanted to do this in a language I am already familiar with so they fall from the start. Also this game should be finalized within a week more or less, so as much as I wanted to, I didn’t think I could do it in C++. This leaves of course Python and Javascript and seeing as the recent HTML5 hype has reached a peak right now, I figured I’d have more options to choose from if I went that way, not necessarily now, but in the future as well (as a side note, existing Python frameworks should be older and more stable/feature rich)

So up until now I want to make an HTML5 game on Linux. Theoretically this should be enough and I could start, but it’s not, because it would mean having to create my own engine from scratch which sounds intriguing indeed, but wouldn’t be an option in this timeframe, so the next logical step is to find a framework. After careful consideration, these are the ones I could come up with:

Entity looks better structured, but in the end I decided to go for LimeJS because it seemed to me that it has more features.

And so the platform, language and framework are decided, there’s just one last step and that is to choose a suitable IDE, but since it’s not like there’s a plethora of Javascript IDEs it was more or less about choosing the version of repurposed Eclipse IDE that felt the best, so in the end I went with Aptana Studio.

Therefore my environment looks like this now:

  • Linux ( Mint 12 )
  • HTML5 ( language )
  • LimeJS ( framework )
  • Aptana Studio ( IDE )

Which seems about right, so this is the end of this chapter.

Graphic Design Tools

The graphic style of this competition more or less dictates the usage of a raster based software and being on Linux, there’s no doubt about the supremacy of GIMP in this area ( the 2.10 version being a new kind of awesome ) so there wasn’t really much to think about here, but in case you are looking for some alternatives you might also want to check these out:

Sound Design Tools

Do not let the position in this post fool you, this is one of the most important parts in making a game, having nice graphics and lots of eye candy will go a long way for your game, but a lack of sound effects in your game can be a very big turn off. Luckily there’s a very neat tool that comes in handy here called sfxr that will help you with the audio creation and it’s perfect for this competition, so that’s what I’ll use.

So to sum it up, you want to make a game, think about: platform, language, framework, tools choose wisely and most importantly have fun.

See you at the competition.

Back in Business

So to speak, it’s been a while since I’ve made something enjoyable and with all the recent happenings I’ve more than enough time, I just needed some sense of scope.

Luckily for me, competitions are always a good source of inspiration and it seems nowadays they’re just popping around the corner and as always there’s bound to be one that lights that tiny spark in your eyes that reeks of creativity.

Therefore, without furthering the issue, I’m going to participate in the liberated pixel cup competition with a revamped version of an older idea baked a long time ago with fellow developer Zapakitul called Peons and hope that at least some people will enjoy it.

I’m not very sure about the toolchain I’ll be using, I’ll do some research first, but I’m pretty sure I’ll end up concluding that HTML5 would be best in this case. Everything will be hosted on github and available under GPL v3 if you feel like checking it out.

Other than that, if anyone else is planning on participating as well, shoot me a comment, I’m pretty sure I’ll be available over most conventional IM clients (but I’d really prefer skype or google hangout) if you need to bounce ideas or require help with implementing a feature.

TL;DR Awesome competition, count me in

Game Design: Cheating

Following up on my last post, it seems to work, but unfortunately having an idea is not enough, bringing it to life requires time to actually write it , but in any case I feel like talking about design again right now so here it goes.

Ask any game designer and he will tell you that cheating is bad, it;s something you want to prevent because it’s that type of behavior that will kill the enthusiasm you have when playing a game (more so in a multiplayer game where not only you ruin your fun, but you ruin other peoples’ fun too), it’s something that you’d normally want to discourage.

Well I say fight fire with fire, cheating is only bad if it enables someone to make an action you are actively trying to discourage, but what if you were to plan ahead to include behavior that would normally be associated with cheating to give the player the sense that he is in fact breaking the rules and add to the sense of achievement when you finish your task.

So for instance let’s say you have a physics game and a level built so that the obvious solution requires a minimum of 3 steps to complete. What I’m proposing is that you add some way of completing it in say 1 or 2 moves preferably by exploiting a side effect of a mechanic to make the person that finds it feel like he is smarter than you.

What do you think would it be a good idea ?

And yes this thing dawned on me while playing physics games, but I guess I can come up with a way to use this in other games as well.

Game Design: Chekpoints

Well I started tis blog to talk about design (system design, if you came here for art you’re in the wrong place) so I’m now going to pick up where I left off.

I was playing a lot of mass effect recently and what can I say, the game really stands out. Generally it is a model you can follow, but apart from the small collision glitches and the fact that the button that skips cutscenes doubles as the button that selects conversation options, that game has just one serious flaw: checkpoints.

I don’t know, maybe I’m a pretentious prick, but it just doesn’t seem normal to let the user redo more than let’s say 10 minutes worth of gameplay. What this means is not necessarily that the game engine should feature a timer that saves the game every 10 minutes, rather that at the beginning and the end of EVERY mission (yes, that includes side quests) there should be a checkpoint. Or even more general, let’s say you’re working at a game that doesn’t feature any sort of quest. If there is a sequence during which a player might fail his objectives and have to restart his progress, make a checkpoint before and one after that sequence.

What this means for the user is that he won’t have to redo the boring sequences in between missions like say for instance how I have to run around and talk to every NPC on Feros right now because I got killed when I was returning to the quest giver.

So to sum it up: Checkpoints are your friends, use them often.