Games

Some of my favourite projects are tiny ideas I consider over a bus ride or two, then take a few hours to code them on the following day. Here’s one of those – I’m always looking for ways to use games to learn cool things, and one of the things I like learning is languages. So I decided to make a little snake-like game to practice foreign alphabets:

As you can see, the name of the letter is written in the middle, and you have to direct your snake to the right letter, avoiding the randomly generated incorrect answers. Nothing too complicated, but it’s good at forcing you to practice your memory constantly until you remember the script perfectly. I already tried it with Devanagari, Hangul, Hiragana and Katakana (Ge’ez doesn’t seem to work for some reason, I’ll need to check how Java works with fonts), and it’s quite nice.

The only problem is that I can’t come up with a good aesthetic design for it (the screenshot is with placeholder graphics, of course). Any ideas?

I wonder, is there some sort of time people should wait after a piece of commercial software comes out before it’s polite to steal their idea? Obviously there’s no problem in using other people’s ideas (every game genre or software type is essencially mass stealing of someone’s initial idea), but it doesn’t seem nice to do it immediately after something is published.

Why am I asking all that? Because I bought a very nice game this week, a very creative indie game called Waveform[1]. They invented a mechanic where you control a wave of energy (a sine wave), and your control method is to increase / decrease its frequency and amplitude. Maybe it’s because I’m a math geek, but it’s a really good idea and it works really well.

Waveform Screenshot

However – they went for a single-player score-attack kind of game. What I’m thinking – someone really needs to take this idea and turn it into a multiplayer racing game, where you have several waves together, trying to aim themselves at various pickups to make themselves go faster and obstruct their opponents. It’s actually perfect for the free software world because it naturally invites abstract graphics, so artists aren’t necessarily needed. So free software people – do it[2]. But buy Waveform first, they deserve some success for thinking of this idea.

[1] By the way, all my indie game discoveries are due to TotalBiscuit - the best gaming channel in Youtube, who is doing an amazing service to the indie world. If you like good games, I definitely recommend watching him.

[2] I’m currently a little busy, but indeed – if you don’t, I’ll do it eventually.

I tried playing Unknown Horizons a while ago. It’s a very pretty game and seems quite well polished, but I had a little problem with it[1]. In spite of being a relatively relaxed game, it made me think a little about video game violence.

I’ve been playing video games ever since I was a kid. Violence has always been quite present, and I didn’t have much problem with it. Some of my childhood memories include shooting things, punching things, throwing stuff at things and shelling things. I never really had much problem with it, as long as it was tasteful[2].

Then, a new problem came. And from what I remember, it started with GTA. When I first saw GTA I was quite impressed, it seemed like a fun game and I liked the open world concept. But after playing it a little, I realized it’s not for me – not because it was violent, but because it was evil. Shooting zombies is one thing, but I didn’t really see the fun in harming innocent people, even if it was only a game. I don’t think it should be forbidden and I don’t have anything against people who enjoy this, but it’s just not for me. If a game allows even a little bit of immersion, I like being immersed – I like to feel like I’m really there, doing what my character is doing. And when my character is evil, it just feels bad.

So how does all this relate to Unknown Horizons? I bet the developers wouldn’t have seen this coming. Around ten years ago I became a vegan. I’m not usually very preachy about it, but it is an important ideological choice for me, and I do think harming animals for anything but self-defense is very wrong. So my problem with the game? Simple. If you want to succeed in Unknown Horizons, you have to have hunters. You have to have animal farms. No gathering, no (initial) agriculture, no choice like in some other games[3] – if you want to survive, you need to kill things. I know you must be thinking I’m exaggerating, and games shouldn’t be taken too seriously, but that’s just the thing – I don’t have a problem playing Chicken Invaders, because it makes no attempts at being immersive. I don’t have a problem with Dungeon Keeper because it’s too humorous and over-the-top to be taken seriously. But if your game tries to look realistic and invites immersion, then I’ll have a problem with things like that.

I wonder if there are any other unexpected problems like that people have with immersion in games[4].

[1] I mean, in addition to the fact that it crashed for no discernible reason after about 30 minutes.

[2] I have quite relaxed demands for “tasteful”, but for example – after trying the new Mortal Kombat game, I lost all interest in getting anywhere near the series again. When a game turns violence from a means to tell a story or play a game to the essence of the game, it becomes not only too violent but also stupid and not creative, in my opinion.

[3] Little anecdote – back when I used to play Lords of the Realm 2, one of the first things I’d do every time I conquered a new county was abolish cattle / dairy farming and plant stuff instead. I didn’t even pay much attention to it, it was just obvious that this was the way for me to play.

[4] Actually, colonization games like Unknown Horizons often have another obvious problem. I didn’t notice it back when I was into the Civilization series, but having grown a little and learned a little about the world, I have to ask – they had you colonize a new land while occasionally finding little native villages to fight and pillage? How did that seem reasonable when I was younger?

Time is running out, and the project is advancing nicely. I changed a few of the things I thought about the last time – the game will be a little bit simpler in mechanics to make sure it’s well balanced. There will be no special abilities or advantages to having more tiles at any given time, instead I’m going for a more complete Reversi style – tiles which you step on will change only if they haven’t already been changed – so once all tiles in the screen changed from the original terrain type to one of the two players’ types, the game is over and the winner is the one with the higher percentage of the board. To prevent developing an easy always-win strategy, the structure of the level will be randomly generated each time – in addition to ordinary tiles, there will be obstacle tiles which can’t be walked on, and can’t be part of a connecting line (so, if you have the rightmost tile and the leftmost tile in a certain row, you don’t get all tiles in the middle if there’s an obstacle somewhere in the row). Multiplayer levels will always be symmetric to prevent unfair advantages to any player.

On the single player front, the main opponent will be trees. Trees are stationary, and constantly alter the terrain immediately around them, slowly advancing outward. On each single-player level you’ll need to hurry up and get the strategically important tiles before the trees capture them. Here as well, your goal is to get a majority of tiles on the board.

Here’s what it currently looks like:

On the screenshot, the player is spreading farmland terrain and the trees are spreading volcanic terrain (the default being grassy terrain). I hope to change the trees to be more appropriate to each terrain type (also, I seem to have screwed up the shadows, I’ll fix that). The level currently has no obstacles – obstacle generation is my main challenge for tomorrow. Also, I’ll want to generate some non-obtrusive things for the level, simply to make it more interesting aesthetically.

All together – I’m feeling good about it. The game is starting to feel fun, I think it looks quite lovely (I’d love to hear what you all think), and I think I’ll be able to complete it in the remaining time.

As promised, I’m still in the Liberated Pixel Cup. After abandoning (hopefully not forever) my previous project due to lack of time, I’m now officially declaring my new one – it will be smaller in scope to allow me to finish it in the little time remaining, but I believe it has a lot of potential.

The game will be called Terramancers, and it’s based on a game idea I tried to develop a few months ago[1] with an artist I met, but it didn’t reach anything beyond basic planning. Here’s the concept:

Basically, the game is kind of a real-time action-Reversi. You and your opponent each have a character associated with a certain terrain type. You start in a grassy arena, and each of you, simply by walking, can alter the tile under you to your terrain type. Like in Reversi, if you alter a tile which has a straight line connecting it to another tile that already has your terrain type, all other tiles on that line will also be altered. The goal, of course, is to alter the entire arena to your terrain type.

Screenshot for the current build

So far it’s quite simple, but I’ll need to add a few things to make it practical and fun. First of all, the more tiles you have on your side, the more powerful you are – you move faster, you can use more special abilities. This makes sure the game won’t go on forever – once one character gets an advantage, they’ll be able to extend it more and more unless the opponent does something unexpected. I haven’t implemented special abilities yet, but I have a few planned. Not sure yet if different characters will have different abilities, I probably won’t have time for that.

Of course, the above description is for the multiplayer mode, which is where the basic idea comes from. However, being just one person it will be very hard for me to properly balance a game for multiplayer (and I won’t have time to make a proper AI). Therefore, I’m hoping to be able to produce a single player mode that works a little differently, where instead of one equally-powerful enemy, you have waves of simple monsters that alter the terrain against you, and you need to eliminate them before losing all your terrain.

That’s the basic idea. I have very little time left, so let’s hope something good comes out of it!

[1] Which actually makes it much newer than the previous project, which I actually tried to develop back in high school (that’s over 10 years ago). I had a basic engine working, but absolutely no graphics – the UI was textual menus, and the combat screen was made of ASCII visuals. I’m not even sure if it was written in C or Basic.

Characters moving on the screen!

Most of the work today went on tweaking the combat engine, but I started some graphics and animation as well – mostly to be able to better test the engine, and also partially as a break from engine stuff (because let’s face it, making people move on the screen is always more satisfying than seeing a proper arithmetic operation succeeding, even if the latter is still quite satisfying).

One of the interesting things coming up now is ethnic diversity. One of the important graphical features for this game is creating many different characters, in fact infinite different characters – due to the nature of the game, you might get a new member on your team after a while, and he / she might be with you for a long time, so I would want them to look unique and interesting. However, the graphical resources are quite limited of course, so I knew from the start I wanted to make a mechanism for generating random characters – take the existing bases, randomly add clothing, hair and accessories, and randomize all colors so that as much as possible, any one of the many characters in the game will look unique. After all, the game will feature a league with at least 10 teams, each team with 5-10 members, and new characters constantly available for you to hire. Also, when the contest is over maybe I’ll look into making a general tool for doing it and publishing it for the community – I’m sure many people would want an easy way to make a lot of unique characters.

I haven’t started the sprite combinations yet, but my basic color randomization is working. Working only with the bases, this mostly means skin color – and I love the results. Quite unsurprisingly, the characters submitted to the LPC art phase were almost all blue-eyed white people (much of it was probably caused by the base published in the LPC style guide, which I assume most people left unchanged). Of course I don’t have anything against blue-eyed white people, but I think some human diversity would be very welcome:

This is the result of randomly generating 10 characters from the bases, with random genders, skin colors and eye colors (I didn’t constrain it to natural eye colors, but maybe I should prevent getting red eyes, they look a little disturbing).

I hope to use the weekend for final tweaks in the combat engine and more work on the character sprites, and next week I’ll get serious with the team management stuff – which is really the main point of the game.

Tested it today – and indeed, Ring of Marbles works well on Linux (tested on Knoppix). Also, here’s what happens when you release something when you should be sleeping – I said it was open source, but forgot to actually attach the source. So I’m now adding a link to the source as well.

Other than that – Have I mentioned how happy I am with how that turned out? It’s certainly not the most polished thing I’ve ever done, but of all games I made so far, this is the one I enjoy playing the most. Maybe when the LPC is done, I’ll polish it a little and release it as a serious game.

By the way, if there’s a Mac user out there who wants to try to run it and let me know if it works, that could be very nice…

I’m getting increasingly convinced that my main game idea is indeed what I want to do for the LPC, so I decided I might as well declare it – here it is, my project’s official announcement. I’d love to hear your opinions.

I’ve chosen a very uncommon genre: My plan is a sports management simulation, in the spirit of Championship Manager and similar games. However, the “sport” here is not football – it’s fantasy-style tactical combat. You’ll need to hire the finest warriors your limited budget can buy, train them constantly to improve their weak spots or strengthen their specialties, get them the finest equipment possible to give them the edge over their opponents, choose tactics that let them use their strengths to break the opposing team and eventually win the championship.

So that’s the general plan. Now for the actual dev diary – what did I do today?

- Built the basic combat engine. Warriors now go on the arena and are able to perform actions, once I define what those actions can be. This is still behind the scenes – still no actual characters on the screen.
- Built an initial skeleton for the team management module.
- Worked on the setting. I hope that tomorrow the official wiki will open and the background plot, major characters, and more[1] will start slowly building. The actual game will not contain much plot (by nature of the genre), but I do intend to place it in a rich world, where you can really understand what’s going on and why things happen as they do.

While I’m currently going for it, I’m still not 100% sure about it, and I do still have backup plans in mind. My main concern is that the genre is too esoteric and unpopular. So if anyone wants to give me some feedback, I’ll appreciate it – have you ever played a game in this genre? If so, did you like it? If not, do you think you might?

[1] Also, a name for the project, which it still lacks.

I’ll be working quite seriously on my Liberated Pixel Cup entry over the next month, so I thought I might share my progress here in a little dev diary. All relevant blog posts will start with “LPC Dev Diary”, so if you don’t care about those, just skip them.

Anyway, day 1 was quite productive, with me having started the project officially, set up my source control repository, and my got the following working:

- Tile engine, reading tiles from given files and saving them to memory.
- Tiled maps, using the tiles from the above to draw the tiled world on the screen.
- Primitive map editor, allowing me to change tiles on the fly to see how they would look like.

It might sound fancy (the word “Engine” automatically makes any software description sound like Batman’s next gadget), but it’s not really that much.

Anyway, the game is also advancing in the design front (i.e what the gameplay would be like) and setting front (i.e plot and such), but I’m still remaining silent on that, until I’ll be more confident with what I’m going for.

Here we go, the Liberated Pixel Cup coding phase has finally started, and I’m planning to go for it very seriously, hoping for a chance to win. The art phase produced some impressive results, but definitely not many… It will take some planning to make a full game with it. But I already have some plans for it.

Basically, I have two separate projects planned, both in the same setting and with some common features, but very different gameplay. So I’m starting to work on things common to both and do some initial tests for each game’s engine, and later on I’ll try to see which one of them seems most feasible and promising.

For now, the first step is complete – setting up a source control system. I was not excited about their decision to demand source control (although I can see why they made it), since as a solo developer I never bothered to use it. However, I do have some fond memories of Subversion from my professional days. I actually considered trying Github which seems to be what all the cool kids are doing these days, but after realising it’s a whole new thing to learn, I decided that with a month deadline, I better stick with tools I know, and set up a an SVN repository though SourceForge.

More details about the game will gradually come over the next month. Stay tuned!