Pink and other pretty things

by Philipp Schäfer

The first full version of Schein has left the company (for participation in a competition) and very soon testing will start. Time to get back to the code and do some polishing and fixing (again). After a long list of bugs and many in-production-mini-tasks everything was ready. Even the installer was updated.
Finally, when those infinite to-do lists had found an end, there was enough time to prepare all textures in dds-format und to optimize loading (sadly not in time for the competition upload). Additionally I managed to fulfill a personal to-do from long ago and rewrote the particle-systems to be drawn in a single call.
I also spent some breaks doing really necessary things. For example I created a pink-blue theme for Valentine’s day. I am curious how many of these small things will reach the players in the final version.

Valentine's Day Theme
Also our public presentation is receiving a boost (more on this subject will follow soon). For my part I started optimizing the Zeppelin Studio website for mobile devices (it really sucked before I made some changes).
In such times like these when a deadline approaches, it is a law of the world that things will break. I suffered from an internet downtime, a broken headset and finally even a broken hard drive. But all you need in this situation is a server with version control, screwdrivers, lots of patience and you can carry on …

The Power of 2

by Bernhard Klemenjak

Last time, Philip already told you about his GUI creations — and I’m also currently working on our user interface. When the creative work and painting is done, someone needs to bring the GUI to life. That someone is me.

Main Menue
The title “The Power of 2″ has two backgrounds (how fitting…). On the one hand, it’s a great example that you can achieve many things only as a team. Take Philip for instance, who can do wonders with his drawing tablet and pen. He conjures up his ideas on the screen with his creativity, a good eye (actually two) and talent. Then take someone like me, who may have at least average C++ skills and some logical thinking to offer. In this current constellation, we can cooperate very well and implement the Schein GUI together. If we would switch or merge the roles however, nothing good could be expected.

On the other hand, the “2” is also a symbol for a small “conflict” that Philip and I are facing. As a graphic designer you would quite understandably wish for an infinite amount of detail and a huge canvas to draw on. The result should look perfect — so why bother with counting pixels? However, the programmer needs to keep an eye on the performance. It will hurt the graphic designer when his artwork is scaled down and trimmed. But all players without a high-end-quad-128TB graphics card will be happy about the optimizations. And what does this have to do with “2”? One way to optimize is for instance, that all the images loaded into the graphics card have a power of 2 as horizontal & vertical resolution. For example: 1024x1024 or 2048x4096.
And that’s why the programmer teaches math to the graphic designer.

The Christmas Award

by Philipp Schäfer

Never use a Bus for more than a seven hour trip. I’ve learned this lesson several times in the past but since Germany now has a cheap and working bus infrastructure it seems I will also have to keep learning this lesson again and again. For the German Developer Award we burdened ourselves with no less than two 10-hour trips. Luckily the trip was truly rewarding worth it.
As soon we arrived in Düsseldorf we checked into our hotel located in the typical “Ruhrpott”, an industrial looking part of the city around the train station. Without taking any break we travelled on using the weird public transport system to get to another industrial area, were the event was already taking place.
We arrived just in time to catch the speech and the discussion sessions, which were aimed to fill the evening with conversation. After some drinking without having eaten the crowd slowly moved over to a big hall, which was nicely arranged with round, white tables, some fog and artistic lighting. I was personally pleased, that no one was in a hurry.
Air Berlin
The event included no less than 25 awards. This sounds like a lot and is in my humble opinion too much for the small industry. But since the usual candidates were receiving multiple awards in one go, it didn’t actually take as long as expected. Also the speakers introducing the awards did a very good job, which made the evening quite entertaining. I cannot possibly forget to mention the good free drinks and food — both very important, if you keep in mind that this is the “not so unofficial” Christmas party of the German gaming industry. The people from Daedalic Entertainment did the rest to make it a funny event and so it’s no surprise that after the karaoke we vanished into the “Düsseldorfer Altstadt” with the team from Balloon Quest and Daedalic for a final round of beer.
Air Berlin
P.S.: We won the newcomer award *YaY*
Air Berlin

All holes must be stuffed

by Bernhard Klemenjak

More memory! Even more memory! And still more! That could be the thoughts of a “memory leak”. Every (not 100% perfect) programmer certainly knows this. You write a program and everything is fine and runs great. But after some time, the program, or even the whole system becomes slower and slower. Maybe it even crashes. Hooray! A memory leak!

Memory Leak

It is annoying; you find the mistake. Maybe you’ll even find it funny after it is fixed, depending on how stupid you feel about it. It’s worse though if it’s only discovered by a user. How could you know, that anyone would play the game for 20 hours straight or does 100 level changes with now reason? Because if for example, by a small error, 50 megabyte are stuck in memory after each level change, this will surely lead to a problem.
And therefore there’s nothing better for us to do this Christmas time than to optimize and stuff holes!

Finally back to coding

by Philipp Schäfer

Hello and Welcome. I am happy to announce that I finally had some time to dig around in our code again.

Since we are now a more or less small team some would think a bug tracker is not necessary anymore. But since ours is working we used it anyway and it has proven itself very useful. Sometimes someone is just busy so you can use the bug tracker as a memo. Then there are tasks you just want to be sure about that they are not forgotten, and last but not least there are big tasks and enhancements that need to be saved for later. After all you will have a nice time line in the end, which shows you what was done and who did what. On the other hand there are often some small bugs that take less time to fix, than to put them into a management system – “imo” this is enough reason not to do it. Bottom line: In our next release you will encounter much less bugs – but hopefully until now you did not encounter any — since most of them are pretty cryptic to achieve anyway.

I also had the time to make some improvements that impact you indirectly. One of the best ones is the hot reloading of our shader …. this is useful – soooo useful!!! I can recommend it so much. The core benefit is a quick testing of or shaders while the game is running. This allows us to test colors, parameters and new algorithms instantly. Something else I can recommend when reworking your code is refactoring. It’s useful in common programming and super-useful when reworking and reorganising your code base. Especially the extract function is doing a surprisingly good job.

Sadly most of the new bugs were not really entertaining. But some were and I created a little video with them. I added some unsorted bugs from the old times as well (In case you wonder about the different graphics).

LEVEL UP in Trailer creation

by Philipp Schäfer

Another round for a trailer talk. Along with a new iteration of our core game – which brings its quality to a whole new level – we are working on a new website and a new trailer since we left St. Petersburg. This sounds like a lot of work (or even too much) and be reassured, it really is. Luckily we are a team of more than one person and we already have fixed working times and – best of all – defined working spaces. What is the benefit thereof? You can divide and distribute the tasks more easily and the communication is less of a pain. And most importantly: you actually have free time in your free time.
But let’s get back to the topic: the new trailer.

Until now I always said, build extra levels and program extra scenes for a trailer. And I can only underline this statement this time again. You need a clear structure in your trailer — something which is rarely achieved by using only in-game scenes. But why? Because in a trailer you have much less time to make people understand your gameplay and your game in general. Something they can learn in a game in the course of five levels, must be achieved with a demo of one level and with a trailer of only two minutes. How can this work? Simply by the fact the player does not need to play, but must “only” watch and understand what you are telling him. So you need to squeeze everything together into a couple of small scenes and after all use some nice in-game sequences as decoration. Many game relevant things only need to be applied in a small scale: after all you do need a learning curve in the trailer. You need drama. You need differences. And most of all you need pretty pictures. Don’t forget that some tricky in-game riddles for example might look boring in a trailer where there is no riddle to solve for the watcher.

Trailer

Many of the things you need to do are learned through practice. So start simple and use similar things often that suite your game. As an example: cuts. If we don’t fade, we simply cut … and even this simple technique reveals some new art and wisdom every time you use it.

In the end: in the best case you already have someone in your team with the necessary skills. Otherwise you might be able to hire someone, if you have the money. It can be best to work together with an external professional to achieve a high learning curve and to be sure not to release something bad.

Human-Machine Interface

by Bernhard Klemenjak

A good game with bad controls is not a good game. The connection between player and game character needs to be harmonic. If the game responds slowly or in an unexpected manner that simply kills the fun and playing gets really strenuous.
Input System
This is why the input-system is an important aspect. Playing Schein should be a pleasant experience with the gamepad as well as with the keyboard — and this requires a lot of fine-tuning. My task is to rewrite parts of the input-system. Now you might ask… why? It was already playable, right? The reason is that there’s always more than one iteration in software development. Especially if a game “grows” and changes there will be parts that need to be redeveloped.

Maybe because a better solution for a problem is found, a more efficient implementation is required, or simply because we’ve learned something new.
Of course, the “old” input-system worked — and it worked pretty well too. But, for example, we want to support all gamepads – and if possible even have the controls customizable by the player. And for us the system should also be simple for future maintenance.

But redeveloping it a third time would be too much, for real.

Dimensions Within Dimensions

by Philipp Schäfer

As we designed our game, we did not only think about the crazy dimensions of our world, we also thought about the real dimensions of space. For a platfoming game the obvious choice is 2D. As engineers however we were more interested in 3D, so we thought of a Trine-like realisation. But we discarded this idea for the benefit of our gameplay.

So why are there 3D elements in Schein now? At the end we came back to 3D in a 2D fashion, for the sake of our title. For how could a game called “Schein”, which is all about shine and illusion work without some fancy lighting. That’s the point where 3D defeated 2D. But not totally: Our background assets and decorations are 2D, which helps achieve a good separation between important and decorative objects. Apart from the lighting, 3D was a big plus for the animation of our character and the great swamp creatures. Good 2D animation systems are rare (I only know the one from Ubisoft), and custom-made they are a whole project for themselves. Another argument for a 3D system was the ability to use the depth data for the 2D objects as well – for example the water surface or the haze in the distance.

But not everything that looks three dimensional in Schein is really 3D. Our new doors for example are a texture, which is enhanced with a second texture. This second texture is used for illumination values only. Since our camera is orthographic and not rotating, simple bump mapping does the trick.

Nowadays 2D, 2.5D or 3D is not a feature anymore –it is simply a design decision, which needs to be made and must fit in with the overall game.

**** YEAH!

by Bernhard Klemenjak

That was my first reaction when I heard the happy news from St. Petersburg some days ago. Luckily, I was at a small party in Vienna – so I was able to celebrate right away.

Although I joined the project quite late, I know how Tiare, Michael and the 2 Philipps must have felt. All the excitement, stress, tension and pure joy they lived through. The rest of us tried to remain as close as possible to the four of them. Keeping our fingers crossed during the live streams, chatting with each other in between and then checking out the newest pics.

The feeling of having created all this out of a “small” university project is surely overwhelming – and radiates (or better “shines”) across hundreds of kilometers. If I think back to university time, I remember that “Schein” was not admitted at first – because our instructors couldn’t imagine the mechanics. Maybe it was exactly this challenge, which made it the most successful game of our year.

For us it’s now important to use this momentum and finish our game. Award ceremonies, interviews and a growing prominence are good – but in the end we want to convince with a great game. When I read all the comments on different websites, I appreciate the praise & constructive criticism on the one hand and I think that we probably cannot make everyone happy on the other hand. Especially those who think of our game as just an imitation of others. But maybe that again is one of the many challenges we need to grow stronger than we thought we could be.

Beautiful Animations

by Bernhard Klemenjak

Animations bring the game character to life. But it’s not enough to create some animations and play them timed according to the current situation. Whether standing, running or jumping – each movement of the character should look real and be played in good coordination with the others. This gets even more difficult when the transition to jumping or running needs to be calculated. Additionally, actions like holding a lantern (while jumping around of course) and even more things need to be computed.
The animations need to look smooth, which means that extra frames are calculated between the 24 fps, which were animated by the 3D artist, so that a flowing transition of animations is achieved at 60 fps. And most importantly, all this needs to happen in real-time, to make it a truly enjoyable trip to the swamp.

Animation Blending