Tag «post mortem»

Global Game Jam 2017 – Post Mortem

In January 2017 Jana and I were part of the Global Game Jam, as usual. We had some doubts we'd do it again in Leipzig, because every year it gets a bit harder to wake up in the HTWK (the university where the jam site is located) without a shower or hot water at all. Yes, we're getting older. Our plans went back and forth between not going at all, or driving back home for the nights, or getting an AirBnB. In the end we did it as always.

Thankfully! Commodations aside, it was a very nice experience. A few days before we made some key decision for our jam entry, especially the choice of target platform: VR. As we don't own a full-blown HTC Vive or so, we made a Google Cardboard game for Android. I think it turned out quite well, because it was doable in the scope we aimed for, even though it was our first VR game.

The theme itself ("Waves") wasn't very interesting, but it slowly formed the direction of our game. When we began to think in terms of sound waves, we soon decided that some radio in our game would tell the player what to do. So you'd be in some kind of labyrinth, trying to find that radio by searching around and listening to its noise, and then activate it, because it tells you how to reach the exit. This became less important later, but it's still in the game. So while we don't feature "waves" promintently, the game was definitely inspired by it.

One of the first WIP screenshots

What we have now is an atmospheric stealth game where you play some thief or treasure hunter in a haunted mansion. You walk around, steal things (mostly valuables), evade scary ghosts, use keys, and find the radio and the exit. As the game is a Virtual Reality game, the player's movement is restricted to gliding between square floor tiles in cardinal directions. This is very similar to my Ludum Dare entry Wood for the Trees from last year, but this time the limitation was imposed to us because of the nature of VR games. Free movement was out of question, and a typical "magically beam to place" approach could have been a bit too complex for our first 48 hours VR game. In the end, the limited movement also helped to define the simple but effective behaviour of the evil ghosts, which don't follow you but patrol between the rooms in the same manner as the player.

As usually our games have a somewhat high entry barrier, one of our goals was to simplify controls. With a VR game this seemed easy to do - you don't have much different input methods anyway. All you can do in our jam entry is looking around and take stuff by looking at it for a short time, which is why Jana had the idea to name it Hands Off Thief, as you steal without using your hands... Initially I planned to have the same approach for walking around the rooms - an arrow on the floor tells you if you're allowed to walk into that direction you're looking, and if so, looking at the arrow for a short time moves you to the next room. But it turned out that this is a bit awkward, as you'd always have to look down to walk around. Now players have to activate the trigger (i.e. touch the screen of their phone) when the arrow is shown, which feels a bit more natural.

I prepared by reading articles about VR development for mobile platforms. It was helpful to know that there are some heavy restrictions regarding drawcalls and polycount in order to maintain 60 frames per seconds on a phone. This way I wouldn't be surprised by bad performance at the end of the jam. Thus, from the beginning the Unity project was set up to use cheap vertex lighting, and I programmed a simple occlusion culling i.e. only the room you're in and adjacent rooms get rendered. We also tried to minimize the amount of different materials for everything.

The first thing we did when we started the development was trying to find out how big the virtual rooms should be. Several hours went into discussions if the walls are too near or too far away, if the ceiling is too low, or if the texture scale on the floor is okay. Probably not everything makes sense in the final game; some things were kept for the atmosphere. Especially the lighting was a bit of a headache, until we went with strong darkness and the player having a point light at their center. Every ghost has two lights - on for his current position, and one for the target position. This way, a player can predict if the ghost soon will be floating towards them. And from time to time a lightning strikes (even when there's no window), so there should be enough to see anyway.

Of course we had some help! When he wasn't sleeping Björn Grunewald created some 3D models like the loot, and my brother Ludwig 'KingLudi' Hanisch - as usual - agreed to compose the music. Ludwig was in another city, and when I sent him some screenshots it was very late, so I wasn't sure if he was still willing to do it. But he sent a nice track in time. Afterwards he wasn't content with it, as it didn't quite play along with the visuals. The problem was that Jana and I were late in defining the atmosphere and couldn't send him a meaningful video, so he only had the screenshots with bad lighting as reference. A few days later Ludwig sent us a new, much more eerie track which fit perfectly, and I updated the game. You can play this new and better version by downloading the APK on itch.io.

Overall the Global Game Jam was cool; you might also want to have a look at the other games created at our site in Leipzig. By the way, one aspect I learned to dislike about the GGJ website is that you cannot edit your entry afterwards. I understand that they wouldn't want people to fake their entries, but it would be nice to be able to offer patches, or just add stuff you forgot.

We also might choose to register a jam site in our own city next year, because we found some potential co-jammers!

> Try Hands Off Thief here! <



The bpb:game jam 2016

At the first weekend of August 2016 we once again visited Berlin in order to take part in a game jam hosted by the bpb, the Federal Agency for Civic Education. It was a special jam for us, as we were actually invited by the organizers, and the theme was a lot more serious than we're used to: "Flucht und Vertreibung" (Escape and Eviction).  We didn't really know what to expect, other than that travel expenses, hotel and food would all be paid by the German tax payer. (Thank you all!)

The whole event went from Friday till Sunday, with Friday being reserved for an unconference. It started with everybody introducing themselves, which took a lot of time as there were over 50 people! We knew some of the participants already: they were fellow indie developers. Nonetheless the introductions were very interesting, because - and this is another uncommon thing for our jam trips - around half of the people weren't game developers, but came from various fields, mostly pedagogics. The youngest participant was 16 years old, and I dare not to estimate the age of the oldest person in our group.
The only gripe was the pretty low ratio women to men. Unfortunately this is common, but at least it was higher than at most game jams.


The more interactive part of the unconference were the 'sessions', where people suggested various discussion topics, all in accordance to the main theme, and then do group debates. I suggested "Sprachbarrieren" (language barriers), and thus a few of the participants, including Jana and I, talked about apps for language learning and our experiences with different languages, and how we could use these as gameplay mechanics.

The second session for us was about "Perspektivwechsel" (switching perspective), and here the discussion started with the split-screen camera technique in multiplayer games, but soon got more serious and went from the literal interpretation of perspective to empathy, and how we see others, and games that actually let us "live" different roles; consciously or subconsciously.

Overall these debates prepared us well to get into a more serious mindset, as right afterwards we got instructed to come up with game ideas and discuss them in random groups. I still think the idea of a "Refugee Go", maybe a tad cynical, would be an interesting take on the location-based gaming: the idea was to force the player to literally walk at different places in a real city where they have to fill out virtual forms (in real-time, i.e. with a lot of waiting). The idea was to let players empathize with a refugee in Germany who tries to apply for asylum. As you'd play it with a smartphone only which then demands permanent attention, it would also be a bit like Tamagotchi.

It was new to Jana and me to not discuss our ideas directly with each other, but alas, Jana was in another group. There she formulated the concept of a card game with instructions on each card for the players, and they'd have to run around and solve the tasks.

In the end we found together again. After a few years of jams we became a solid team and apart from a small collaboration now and then we somehow became unable to try new constellations. ;) Some lively discussions later about what our jam entry should be, we settled for a compromise we were actually both happy with: "Visa Runners", later named "Die Stimmung kippt!" (The mood shifts!).

Visa Runners is the prototype for a multiplayer mobile game with real-world interaction, a bit inspired by Space Team. At the beginning all the players connect their smartphones with each other. Afterwards everyone gets assigned a randomly chosen profile of a refugee-seeking person, with character traits like gender, age, birthplace, skin colour, education, etc.

Visa Runner Profiles
Then the real game begins.

The players have to flee to safe countries and get a visa as fast as possible. The countries are represented by QR codes lying around in the (preferably big) room, on tables and maybe even hanging on the walls. In order to get a visa you have to run to the QR code and scan it with your phone. Then you get a few days of visa - so you need to renew this visa very soon and very often. (A "day" is a second long in our game.) To make it harder players get a day less each time they try to seek refuge in the same country. If you overstayed your visa you need to get a new one as soon as possible, because you lose if you're without shelter for too long.

Yes, the game gets unfair quickly. Intentionally so.

To underline this, every few seconds a tabloid issue appears on one of the phones - usually it's a (mildly) exaggerated headline about refugees or foreigners in general. These headlines affect all players, so the one who sees it has to tell the others (or can choose not to). For example, if there are news about "black men attacking a puppy" all players with the traits "dark skin" or "male" will get minus points in that country (i.e. less days of visa). At some point, a country will refuse visas to certain persons, and those have to flee to other countries.HeadlineThe game ends when only one person is left.

Here's hoping we made a game that captured the theme of the jam. I wish the end result were more functional, but for a prototype it worked pretty well. The funny thing is: when we presented our game, it dawned on us that we didn't even need the prototype, as we were only running around with our Android phones, yelling what we're doing currently. It could have been a theatre play...

The first day of actually programming the game was hell, as I had to download the Android SDK first (to be able to actually build games for smartphones), then try to get a certain plug-in from the Unity Asset Store running. It was very badly documented, and I needed hours to find out how it actually works. But after that we finally got the multiplayer part running, and implementing the gameplay was easy enough. Thankfully the plug-in for the QR code scanning was much less of a hassle.

We were very impressed by the games of the other groups, some of them had a team size of five or even more. You can find (German) descriptions of most of the entries at the official wiki - ours is here, even with a downloadable APK.

Overall the first "bpb:game jam" was a success for us, and we think it also was a success as an event. Thanks to the bpb for organizing it! Here's hoping we will be able to take part again next year.



Ludum Dare 35: Wood for the Trees – Post Mortem

Wood for the Trees is my entry for the 35th Ludum Dare game jam which took place in April 2016. For now I don't know how the other participants will rate the game, as the voting is still going on. Yet it's maybe time for a small post-mortem, especially as my last few entries were not really worthy for one of those.


The theme of this Ludum Dare was "Shapeshifting", which was a good theme, or at least I heard far less complaints about it than usual. For my part I didn't have an idea from the beginning - or rather I prepared several in advance, but none of them actually motivated me when the weekend began. For some time I just ignored the theme anyway and did some physics-based experiments, but everything of that was scrapped in the end. Semi-inspired by the theme I then went on with an environmental experiment, which would be about looping and changing level tiles. A bit like our 7DRL Me against the Mutants, but this time in 3D. As usual I did all this in Unity.

My base idea was to have tiles as parts for the level map, and each tile would be 10x10m (conveniently the size of Unity's standard plane), and instead of connecting the tiles in a linear fashion or even in a grid, I would define the connections manually so they can loop or have "impossible" connections. This way, a tile could be connected to itself (this actually happens in the game)! A lot of time went into developing the system of instantiating and destroying the needed game assets on the fly.


With this representation of the game world it's possible for the player to see things that won't be there when they move. Thus I added smooth scaling to all objects when they get spawned or removed, just to make it more appealing and let people accept this strange environment. This system also imposed some limitations which actually turned out to make the game tighter and more focused:


1) The player is allowed to move only from a tile's center to the next, in cardinal directions. At first I had free movement, but this imposed problems with the tiles that lie diagonal to the current one. It would just feel alien. Restricting the movement was the only solution, and it also made the gameplay (adventure game) much more clear.


2) With my system it only made sense to display 3x3 tiles at once, thus I had to limit the view distance to 10 meters. This made me a bit depressed in the beginning, because it meant a pretty big, boring wall of fog in front of the player. But then I invented the "fog trees" - trees that would exist only in the fog, vanishing when the player comes near. In the end, they really helped making the distance fog less boring and even gave the game its name.

As usual I experimented only regarding gameplay mechanics, but as soon as I added the fog I naturally began to design the game's appearance. The fog had to have a colour, so I chose one I actually liked. Everything else had to look (more or less) good from now on, which helped tons with not having to do that later. If I remember correctly the pixelation post-effect shader was added at the same time, and I just liked it - I don't really have a justification for it. But it also helps to hide the fact that my 3D models are all very low-poly and have no textures.


By the way, this is the first time that I used Blender for a game jam; I like it more and more. It fits my style quite well I guess. For the trees I utilized a tool called HappyTree by Sol_HSA, which made it easy for me to generate four different trees and reuse them all the time. I only changed the materials.

The narrative structure of the game also developed more or less naturally: due to the fact I played some "walking simulators" beforehand I was okay with incorporating a personal story. So all content grew out of certain relationships that occupy my mind often enough. As a result it didn't become a straight story really, but more like a set of emotions I wanted to share.


I didn't plan to do a full puzzle game, but somehow I actually added enough elements like finding typical items and having to combine them, so I can now call it an adventure game without shame. Overall it's a simple game in the sense that I didn't even add a visible inventory (as it wasn't needed), but thanks to the shifting environment and the somewhat allegorical hints the game should be longer than just a few minutes.

You could say the background story and the adventure game mechanics are somewhat contradicting or at least exist in parallel only. But whenever I think of my childhood (which the story is touching), I have certain games in my mind which I played back then, and Wood in the Trees actually recreates them in an abstract way. Furthermore, the seemingly mundane tasks represent the protagonists quest for absolution somehow. The mechanics and plot combined with the fog trees, the game's name, the colors and some of the objects in the game, it all is symbolic and it's okay that only a small percent of players understand them fully.



Right next to creating the world system in Unity the hardest part of the game was actually planning it. I'm never big with story (something I really have to train), so I just wrote down a lot of things I'd like to say. Not everything made it into the game. And I laid out the puzzle progress on paper as soon as I decided that I would actually have puzzles. But only by actually implementing them I'd see if an item would make sense or not and from time to time a whole path was changed - thankfully always for the better.

Unfortunately I was not able to follow my initial plan to make the game within 48 hours ("Compo") and had to extend to 72 hours ("Jam"). I never felt that I would actually be able to finish it, which send me to a rollercoaster of emotions during the game jam - either I was relaxed and had a "it's okay, I don't care" attitude, or I was angry at myself that I would fail at Ludum Dare yet again. I'm still surprised I actually finished - and it sure helped that for the Jam I didn't have to create my own music. I suck at this still, and don't stop hoping this will change some day. Instead I used a track by my brothers, which they composed many years ago for a game prototype Jana and I made in university. It fits the game well enough and actually adds to the symbolism of Wood for the Trees.

A monster?

After several days between me and the development I can now think about the game again. In hindsight I would change a few things, especially as players rightfully complained about those. Being able to re-read the notes and texts would be a great addition, and probably easy to do. Not removing the notes in the game would be a good start for that. Moreover, the hit boxes for the clickable objects are sometimes to small, and generally it's not clear enough if you can interact with something or not. I would add a few more descriptions to some elements in the game, and also tweak the controls so they would be easier to understand. And I would take extra-care that players find the solution to the first puzzle easily. Last but not least I'm disappointed I couldn't add any sound effects - not even some step sounds!

If I find time and motivation, I might do these changes and upload a post-jam version.


In any case I'm happy that Wood for the Trees already got some media attention - AlphaBetaGamer made the start (with a title optimized for SEO a bit too much), followed by WarpDoor, PC Gamer and Killscreen. Wow! It shows once more that pixel games - even fake ones - are the way to go I guess. And I visited the A MAZE (a festival for indie games in Berlin) a few days after Ludum Dare, so I even made an Android build of my game. It ran very laggy and the controls weren't working correctly, but it was cool to actually being able to show something when talking about it. Even though I didn't show it around that much I had a lot of fun - the fruits of productivity.


If you're a participant of Ludum Dare 35, you can rate Wood for the Trees here. In any case, the downloads can be found on itch.io - have fun!

And here's a video - be aware, it's the full walkthrough, so of course it contains spoilers: