Sunday 20 February 2011


I would really like to actually finish Proun soon, so I am going to put this blog on hold for a month or two. Writing for this blog is a lot of fun, but takes several hours every week, so it slows down Proun too much for my own good. Especially since this blog, playing in a baroque orchestra, furnishing my new appartment and working on Proun all need to be cramped into that same bit of spare time I have!

When this blog returns, I will have a lot of stuff to talk about, like my 2.5D area light shadowing technique, real-time camera mapping, the awesome in-game tools we developed for Ronimo's Secret New Game, Tha Prototypinat0r, and a lot more!

To give a teaser and pause this blog in style, let me show you an image of another topic that will be discussed at some point after the break. This is a model I generated with my SolidMotion script:

I'll be back! See you later! ^-^

Thursday 10 February 2011

Meta-shapes emerging from perspective

Perspective is a beautiful thing. Look at an object from a different side, and you get something new. Move your head a little bit and sides disappear and appear, lines align or dis-align. All kinds of things are happening to the world in front of you, just by moving around.

I have been fascinated by this for years now. My mother sometimes asked me why I was staring at something and slightly moving my head to the left and right. Well, to change the composition, of course!

I am aware that this is probably a quite strange hobby of mine, but let me give an example to show what I mean. The photograph below was in De Volkskrant (a Dutch newspaper) a while ago.

(Photo by Joost van den Broek)

I think this is a powerful composition. The big boat, which is balanced in the view by the small boat to the right edge. The strong perspective in the containers, which leads the eyes towards the distance, where the ship is heading. Almost all important lines here are either exactly vertical or horizontal, or they lead to the same point at the horizon. Simply a strong composition.

However, something else in this photograph caught my eye. There is a meta-shape here. The edge of the ship and the horizon exactly coincide, creating a new line. This line does not actually exist, but the perspective creates it. It only exists when this scene is looked at from this angle. It is a meta-shape emerging from perspective.

In Proun, I have partial control over the camera. The player can rotate it around the cable, but cannot look left or right. So I can create meta-shapes like this, and unconsciously, the player will sometimes see them. In the screenshot below, two balls form a new meta-circle that only exists from this perspective.

(The purple ring of the bigger ball could also be called a meta-donut, although I don't know whether it would be a meta-donut-with-chocolate or just a normal meta-donut-with-sugar.)

By the way, last week, when I watched the incredibly beautiful Tron: Legacy in 3D at the cinema, I realised that this effect is actually destroyed by 3D. Tron features a lot of incredibly strong compositions, but I feel that the 3D tears them apart. I think the lines and shapes form a stronger image when flattened. So to my surprise, this was actually the first time that I wished I had watched a movie in 2D instead of 3D.

Finally, there is something else hidden in the photo of the boats. By just taking the main lines, I can create an abstract composition. This is a very simple thing, but since the original image has such a strong composition, these lines could form the basis of a new composition in Proun. I could place coloured objects to create a 3D scene that features these lines when looked at from a certain angle.

I won't deny being a crazy idiot, staring at random things while moving my head around. But at least I can pretend it has a purpose! ^-^

Friday 4 February 2011

10 Tips for the lonely programmer

On the original version of Swords & Soldiers for the Wii, I was the only full-time programmer in a team of 7 developers. On average, there was also 1 programming intern around, but still, this means that the number of programmers was really low. Especially if you consider that this was our first console game!

When working in such a situation, you really need to think smartly about what you make and what you don't make, and plan your entire programming routine around this.

I think about these kinds of problems a lot, so for a presentation at the Festival of Games in April 2010, I boiled my ideas down to these 10 tips for the lonely programmer. Obviously, this is no rocket science, but I think these guidelines may help young gamedev companies and student projects.

It's better to get it working quickly and then add stuff, than to get stuck with more than you can chew. Especially since everyone overestimates his own coding speed.

For example, do not try to tweak the walking speed yourself. Make sure a designer can do this.

Emphasis on the word minimal. Make sure to create something so that levels can be designed and such, but also make sure to not waste half your project making more fancy tools than necessary. Notepad is a perfectly fine level editor.

Keep your code clean at all time, even close to deadlines. Once code becomes a mess, everything you add will also be a mess.

The more bugs and crashes your game already contains, the more difficult it is to see whether what you just added is broken. You will need to fix those bugs at some point anyway, so just do it righ away and keep your game stable.

No need to compete with Uncharted 3. Don't spend your time optimising for the ultimate performance. Instead, focus on making the game good and accept that maybe some computers won't be able to run it.

There are a lot of rules about good programming on the internet. Many of them are a lot of work and not necessary for a small project. For example, it is totally okay to not build your own memory manager and it is no problem to do lots of dynamic allocations in run-time. Just do what works for you.

This is not for student projects, but for start-ups. Interns love to work for real games. Don't feel ashamed if you let an intern create some awesome tools for your project.

Say "No" to almost every idea you hear, especially closer to deadlines. To keep the game concept simple, you will have to protect it from getting bloated. If there is time left, you can always add stuff later.

Game designers and artists depend on your work, so be sure to involve them in why you choose to build some things instead of others. Ask them simple questions, like this one: "I don't have time for option A, but either B or C can be done. Which do you want?" Involving them makes them less frustrated at hearing "no" so often. Otherwise you may end up like this:

Feel free to print these 10 tegeltjeswijsheden and hang them on your wall, and refer to them at all times.

Also, feel free to tell me these are all incredibly obvious. ^-^

PS. For those who expected dating tips after reading the title: that is not part of my field of expertise, so you will have to look elsewhere for that... ;)