Archives

All posts for the month July, 2012

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.

I have a little decision before me. I’ve done some nice work on my Liberated Pixel Cup project, but after losing almost two weeks because of recent events, there’s no way I’ll be able to complete what I wanted. So right now I’m looking into some other options – maybe I’ll try something a little less time-consuming. With a week remaining, it’s becoming a little bit like the Experimental Gameplay Project – luckily, thanks to that I have some experience in making a game within a week (and of course, I’ll try to use as much as possible of the code I’ve already written). Tomorrow I’ll know for sure what, if anything, I’m going for. Anyway, I’m pretty sure I’ll still try to have something to submit by the end of the month.

Wow, this was quite an intense week. I don’t want to get too personal here, but I might as well share a little insight I got during that time.

Some people look back at their families and tell of some great war hero grandfather. Some have a great leader to tell about, a famous artist, a successful businessperson. Some can tell about great charity work or academic success. Meanwhile, one of the most famous stories about my grandmother is that hers was the second family to have a piano in her entire city.
Why is that meaningful? Because as part of a notoriously difficult immigration, of which many people remained in the lowest tiers of society for several generations, she didn’t think about anything but working extremely hard for one main goal – providing the best education possible for her children[1] (of whom one would later become my mother). This is quite certainly one of the important factors in making me what I am today.

So, rest in peace and all that. This blog, and my life in general, will start going back to normal now.
[1] Not that a piano is the most important part of good education, but it’s certainly a reasonable part.

A while ago I told you about my early attempts at hydroponics, and I’m still doing it – trying to better understand the plants of this world, especially the ones we eat. I haven’t started providing nutrients yet, so I still can’t hope to see actual food growing, but I’m still experimenting and learning some things.
Latest attempts: navy beans (Paholeus vulgaris) and black-eyed peas (Vigna unguiculata subsp. unguiculata).

Left: Black-eyed peas, right: navy beans. The bottom pictures compare them with the seeds.

- Most noticeable result, for the navy beans: they’re huge. What you see in that picture came from just 5 seeds. I guess that’s to be expected – the seeds are much much bigger than the previous ones I’ve tried. Although the black-eyed peas are also quite bigger than mung beans, and yet the plants grew to almost exactly the same size. Which brings us to the next conclusion:

- I’m starting to see the family resemblance. The black-eyed pea plants act very much like the mung bean plants, and it was no surprise for me to learn that they both share the same genus (Vigna). They both grow a long stem ending with the two cotyledons, with no branching. And they’re both very similar to navy beans in the form of sprouting – all have seeds with two parts loosely connected, and during sprouting the two parts separate and the cotyledons come out from within. Then those two parts of the seed remain attached to the stem for a while, giving more and more of their contents, until they become nothing more than dry husks and fall off.

Navy bean seed during and after sprouting

- I wasn’t sure previously, but now I know that the very long stems I get from hydroponics compared to soil growing is indeed the product of abundance of water. I’m not quite sure if it’s good or bad for the chance to grow food out of it.

- The navy beans have different shapes for the cotyledons and the other leaves. And the regular leaves appear to grow only in threes (after some Wikipedia reading, I understand that it’s probably considered to be a single leaf with three leaflets).

Navy bean leaves

- Some of the navy bean sprouts seemed to have been blocked by their own husks. They didn’t grow at all while the rest were growing very well, so I thought maybe the husk was blocking it (because it was still around it in a way that might prevent the two parts from separating). I tore the husk myself, and the next day they returned to growing fine. I wonder if that happens in nature as well, and prevents some of the seeds from turning into plants.

Blocked seed

That’s it for now.

I’ve had a new challenge keeping me a little busy for the past two weeks – helping my mother with Microsoft Office for her new job. It’s actually not entirely new to me – a few years ago I volunteered in a community center, helping with computer lessons for adult populations (many of them Haredim, so quite likely saw very few computers in their lives). And the concept is the same – teaching computers to people who have never used a computer in their lives.

Obviously, it can be quite frustrating sometimes. Helping people with Microsoft Office is pretty much the bane of computer geeks and computer science students everywhere. However, I think it can also be a pretty educational experience.

First of all, it’s an exercise in patience. Some people see it as a bad thing, but I like to think about it like training – sometimes you go to the gym to exercise your muscles, and sometimes you teach someone Office to train your patience. And I consider patience to be a strategic asset in my life, much more than my muscles[1].
But more importantly – Being a computer programmer, and a geek in general, and living in a developed country[2], it’s easy for me to forget how many people out there have absolutely no idea about computers. So really, it’s a way to step out of a bubble and back into reality. It shows me how many things I take for granted when I use computers: Often when someone has a problem I’ll try to explain it in terms of files, and checkboxes, and double-clicks – but then I realise that these terms are not really that obvious, and some people don’t know what a checkbox is, and don’t know that a double-click always uses the left mouse button, and don’t know that a Word file and an Excel file are the same thing when you want to copy or delete them.

The most interesting thing about it is realizing how those things are not really neccessary, and maybe could have gone differently. If computers were developed separately by five civilizations with no contact between them, would they all have files and folders? would they all have double-clicks[3]? Would they all have first-person shooters and real time strategy games? I think it’s easy to imagine an alternate universe where things would have gone just slightly differently, and all the Starcraft pros of today would have been playing something completely different and convinced it was the best game that could possibly exist.

So to conclude, my advice – if you’re a programmer and want to make something truly creative, that challenges existing habits and appeals to new populations – go help your mother use Microsoft Office :-)

[1] Not that they’re not important – another thing I’ve seen too many computer geeks neglect.
[2] Arguably…
[3] Definitely not. Who came up with this ridiculous thing in the first place?

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.

Do you know how, when you’re reading a long book, you read a little bit every day, not spending too much time at once on it? And when you’re close enough to the end you feel like you have a chance to finish it in one day, you allow yourself to read all the way to the end, even if it takes you several hours?

So I finished Anathem today. Therefore I didn’t have much time remaining for development… I did get a little going – mostly the replaying mechanism, and some more for the combat engine. I was hoping to finish the day with characters appearing on screen though, but that will have to wait for tomorrow.

The book, by the way, is quite recommended. Not the best I’ve ever read, but certainly worth the time (which is saying something, because it’s a lot of time. And I’m not easy to please when it comes to books).

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…