Time-Shift: Veritas liberabit vos
The truth shall set you free

Archive for the ‘Development’ Category

Fixing bugs the right way: Be a scientist

Thursday, April 9th, 2015

So lately a though started to form in my mind that has been there for quite some time but due to environment has become more and more dominant in my head. A lot of times when I see people dealing with bugs, their first reaction is “This can’t be a problem with my code!”. Though understandable to some point, this is of course bad for the project (and for the team moral). Before long you have bugs floating from one to another, being closed, reopened again and start that nasty circle all over. Most of you will probably know what kind of bugs I’m talking about. So what to do about this? The answer is simple: Be what most of you have been trained to be! Be a scientist! I’ve come about this very intriguing graphic a few days ago:

 

A-Rough-Guide-to-Types-of-Scientific-Evidence

Though technically oriented towards medical students this pictures pretty clearly what evidence you can trust easily and what might be a bit fishy. The first thing that catches the eye is that expert opinions are lowest in the list of trustworthy evidence. In other words: The phrase “This can’t be a problem with my code!” said by no matter how much of an expert is basically worthless when it comes to fixing bugs using the scientific approach. Event a hint where the problem may lay is to be regarded as such.. a hint and no more. Especially if you tell yourself that you can not be the origin of that bug always remind yourself that you can’t be sure unless proven right.

The next step on the list is an experimental approach. This is what you’ll see most in code debugging and bug hunting. Changing values or code and see how it reacts to that changes and then extrapolate from that reaction. Though most people would guess this to be a good approach it really is not. Because this way all you get is more data and most of the times more puzzles instead of solutions.There are a million things that can go wrong using this approach. The code might be time critical and only fail if run without stopping by the debugger. Values might be different using a debugging approach. And last but not least: you might simply run your debugging code on different hardware then the real thing.

The next three steps are basically only good for data collection and finding clues as to where the bug may lay. Sometimes this gives you a really good insight and helps you track the problem faster. But normally this would be the job of the QA department. They are responsible to find a way to reproduce the bug and include that report in their bug report. In 90% of the cases we will be writing deterministic software. Meaning: even if we use some kind of weak random generation using predefined seed, the software will always behave the same way when run on the same hardware and giving the same input. If it doesn’t (and believe me thats really hard to prove) then your hardware is broken. So as long as you have not proven your hardware broken and you are sure your program is deterministic, there is always a way to find reproduction steps. And once you have those you’re on a good path.

Which leaves the last two possibilities. The first one being randomized tests (which is might or might not be possible depending on your software and the way you input data) and the last one being a scientific approached review of the code.

Randomized tests are a good subject to be done automatically by your build servers. They can find bugs and you’ll always have the input data that generated those bugs (which makes finding reproduction steps pretty easy). Depending on your program this might be pretty hard to achieve, however you should at least plan in some automated testing before you even begin to write code. In an optimum case you even have the whole continuous deployment pipeline ready to use before you even start to write a single class.

After you’ve done all this and moved through all the fact finding steps you should have a pretty fair idea where your bug is hiding. If not. Start from the beginning. After all: science means that you are looking for the truth and not “your idea of the truth”. So don’t start bug hunting trying to prove it is not your code that is broken. Start bug hunting trying to prove what code is broken. If it turns out it wasn’t your stuff, all the better. Comment the bug and send it along to the code owner. And if it turned out that you did some really bad stuff: Thank god you found it. Every truth is god. And if you learn from your (or from others) mistake it will not happen again.

So once you have all the information and know where to look, start reviewing your code. I like to do this by stepping through it with a debugger and look at what I’ve really got. More often then not the data I see is not what I expected and I can find the problem really quickly. Sometimes its hard to track where that data is coming from. But at least now you know whats causing the symptoms. If you have proven that its not your code that causes the problem, but the data that comes in from somewhere else, its ok to collect all the infos in the bug report and pass it on to the person you think knows that code the best. After all he might be able to given an expert opinion :-P.

One small step…

Sunday, February 23rd, 2014

Its been silent here lately. For some part it was due to the fact that there was not much to tell (being without work really is utterly boring :-P). For another part it was due to the fact that I was pretty busy (looking for a job is boring too but a lot of work) and last but not least because the year 2013 has seen a lot of losses and disappointments for me and my spirit was to crushed to write something that would’ve been worth reading at all. Now this is the year 2014 and so far its been a lot better then the last one (I keep my fingers crossed that it stays that way). Some of the disappointments of the last year still echo into this one, but overall things are brightening up for me. For one thing I now not only found a new job, but I found a job in the games industry again! That not being good enough, I now work using C++ (which is kind of my “soul language”) and am developing a real 3D game thats not run in some alibi browser plug-in but directly on a mobile device! I’ve only been working at Fishlabs for about a month now but I already get that tingling in my fingers every time I enter the building which is a very good sign :-P. The team is great, the work so far is inspiring and the prospects are rather encouraging (Btw. if you’re a programmer and are looking for a job in the games industry, head over to Fishlabs.net and see if we have a post that would fit your profile! We’re hiring!). So on the job side of life its been a very gentle year so far. In the other areas of my life it has at least been a calm year (which is kind of an improvement regarding all the catastrophes I had in the last one). Now spring is coming in Germany and we all know that spring usually brings out the good stuff of the year :-P. So to quote my favourite Singer: “The best is yet to come…”.

Unending

Monday, August 12th, 2013

After some (rather dreadful) month Kartuga will be closed on August 31. This day will also see the layoff of most of the TBG staff. Most of us (if not all) have already been released from work and are trying to find new jobs and new opportunities in other places. Working with you has been a blast! Here’s to you guys & girls!

The last month has started with quite some action, as Kartuga was actually almost saved (not by the publisher mind you). I want to take this opportunity to thank all of those (especially our bosses) who tried their best to make that happen. After all Kartuga was (and for that matter will be) our baby. Its very sad that those efforts where in vain. Eventually we had to say our goodbyes to team and studio.

Now all that remains is the usual struggle to find a new employer and have all the nasties that come with that assignment. If you by any chance are working for a game studio that needs a good and dedicated programmer specialized in Game Logic and Unity3D don’t hesitate to send me an E-Mail. I don’t bite (most of the time :-P). I also make cocktails as a hobby so thats you opportunity to get 2 in one *gg*.

All Good Things…

Friday, July 19th, 2013

As some might have already read in the latest news: Kartuga, the project I’ve been working on the last 1 3/4 years at Ticking-Bomb-Games, has been canceled by our publisher InnoGames. This decision came to me and my colleges (even though we where already informed at the start of this month that it might come to this) as quite a shock and the after-effects of this sudden “change of hearth” our publisher obviously had are rather visible in the faces of all of us. Unfortunately this decision also carries with it the consequence of our so much loved games studio being closed. Most of us are trying to handle this situation with a mixture of a grim sense of humor, actionism (after all we all lost our jobs and have to look for new ones) and perhaps a bit of anger. We all would have very much liked to bring Kartuga those last few meters to the finish line and the feeling that this project we spend so much time, effort and commitment in is just torn down in this manner and in such short notices is nothing short of painful. I’ll miss my colleges, I’ll miss working on such a great title with such a talented team. And if it may come to this I’ll miss Hamburg. But ultimately all good thing come to an end.

 

P.S. For the Trekkie readers: The titles of my last 2 game posts where titles of last Episodes from Star Trek series :-P. Its kind of fitting.

P.P.S. There might be coming more information from me regarding all this at some point. But at the moment a lot of this can not be made public yet.

Kartuga Gameplay Trailer

Friday, August 17th, 2012

A new snippet of information about Kartuga has been made public on the GamesCom 2012 yesterday. A fancy game-play trailer has been released so that people finally can have a glimpse at what the real game-play will look like in Kartuga. I’d like to mention that all of the footage in this trailer was made using an In game camera. So all of this is REAL. No part of this trailer is pre-rendered (After all Kartuga is not Pirate Storm :-P). So… enjoy!

[jwplayer config=”Default” html5_file=”http://www.time-shift.de/downloads/OfficialKartugaGameplayTrailer.mp4″ download_file=”http://www.time-shift.de/downloads/OfficialKartugaGameplayTrailer.mp4″]

If the Video loads to slowly for your taste (my server hasn’t the best connection upload wise) you can always see it faster on YouTube.

Kartuga: The board is set. The pieces are moving.

Tuesday, June 5th, 2012

Finally the long awaited day has come: Our game has been made official at the E3 in Los Angeles! So we are allowed to admit its existence now :-P. Not much more I’m afraid. But after all I also can show you some of the screen shots that where made available for press usage. If you want to preregister for the upcoming closed beta go ahead to http://www.kartuga.com and register. It sure will be worth it. I’m very proud to be part of such a talented team. So spread the news and stay tuned for more infos as soon as we’re allowed to talk ;-).

Here is the official press release:

InnoGames presents new Action-MMOG at the E3

06/05/2012

Today, InnoGames presents a first look at its upcoming 3D browser title, Kartuga, at the E3 in Los Angeles. The action-packed MMOG is based on Unity 3D and focuses strongly on cooperative PvP gameplay with several role-playing elements. Hamburg-based Ticking Bomb Games is responsible for the development of the title, which is set to launch in 2012. www.kartuga.com gives players a peek into its stylized fantasy world with screenshots and a feature list.

InnoGames co-founder Eike Klindworth is convinced of the game’s potential and is looking forward to the success of the company’s first joint venture with Ticking Bomb Games: “We are bringing out a high quality product with Kartuga. The game offers multiple PvP modes, intuitive controls, plus detailed and vibrant 3D graphics. This action MMOG is an extremely useful addition to InnoGames’ portfolio.”

The developer also has high expectations for the title: “We have been working hard on this project for some years now, and the results are fantastic. The player completely loses the feeling of playing in a browser with Kartuga – it really stands up to client games, “says Ticking Bomb Games Development Director Tobias Severin.

Kartuga players choose one of three customizable classes of ships to sail through a series of quests and missions. The ingenious battle system, along with a strong focus on cooperative PvP, guarantees long lasting fun.

The future and the past

Wednesday, December 14th, 2011

Finally I got some much needed time to update my blog. First of all: I got myself a fancy new job at ticking-bomb-games. So I’ve moved (more or less) to Hamburg. Quite a nice city I have to say but well a city none the less. I’ll have to find me a sweet apartment still and I’ll make sure it’ll be in the suburbs. The company is amazing and the people are amazing so everything is amazing… now. There is however something I always wanted to talk about and now it seems to be the right time and place to do it (it’s got nothing to do with my current job. That much I can tell you): applications. Everyone has to do them (except for people with very rich parents perhaps), everybody hates them. But what was really pissing me of during my application time wasn’t the writing of applications. It wasn’t the job interviews or the rejections. It was the company’s.

So.. I do understand company’s get a lot of applications (especially game company’s). And I do understand that it takes time to go through all of them and to evaluate the best candidates. But the general behaviour of most (game?) company’s when it comes to applications is just RUDE! Most company’s don’t even take the time to write a note that they have received your application. Let alone ANSWER to it. Form more than 30 applications I got a “we-heard-you” notice from perhaps 10 (which is already a lot). Out of those ~30 applications perhaps 5 send me a rejection! Another 5 asked me to do a test and/or a job interview. And now after 3-4 month I got a few requests for job interviews. So lets sum this up shall we:

Out of 30 applications:

  • ~70% didn’t response AT ALL.
  • ~10% took more than 3 month to reply.
  • ~20% cared enough to reply.

I might be a bit sensitive, but I find that to be an embarrassing result for the German job market. For every single one of those applications I spend at least half an hour to polish it and write a cover letter. That would sum up to ~15 hours of work. If all applications those company’s receive are stored in a database or an excel sheet it takes them about 10 minutes to mark the ones to reject and generate an automated rejection e-mail. But obviously that’s to much to ask. Furthermore if a company asks you for a job interview after having sent NOTHING for 3 month how can that NOT be embarrassing for them? All the company’s are crying all the time that they lack trained personnel and that they treat all their employees good.. well what about your future employees? Think about it.. and if you ask me.. think hard… because you’ve got a lot to learn!

Bachelor Thesis online

Monday, August 29th, 2011

Since I’ve got my Bachelor diploma I’ve released my bachelor thesis and the practical solution as binary and source code here. Please be aware that the source code is released under GPL, but the written thesis may only be used for personal education. If you want to publish my thesis in any way please contact me first. The thesis handles displacement mapping in Direct X 11 using hull and domain shader. It makes use of almost every new Direct X 11 feature (Tessellation, Compute Shader). If you have any questions concerning my work please don’t hesitate to contact me or leave a comment. I’ll be happy to explain or help with you work if I can.

Tessellation Demo

Tessellation Demo

Tessellation Demo low tessellation

Tessellation Demo low tessellation

Tessellation Demo wireframe mode

Tessellation Demo wireframe mode

Tessellation Demo low tessellation wireframe

Tessellation Demo low tessellation wireframe

GamesCom 2011

Thursday, August 18th, 2011

I’ll be attending GamesCom this year again (on Sunday). I hope to get some insights and also perhaps get some contacts and maybe a chance to find my next Job ;o). Last years GamesCom was more or less disappointing as there where most continuations of game series and a lot of browser and casual game stuff. I hope that it will be a bit better this year but I don’t have a lot of hope. For us hardcore games it more and more looks like our favorite part of the industry is falling into the hands of console gaming and ever repeating of the same stuff. Soon enough the old days of new genres and ideas around every corner will be nothing more than a distant memory. Something we will be telling story’s about to children with tears in our eyes :-P. Its sad to be living in this times. But we have to make the best of it and work towards making the industry realize that we won’t accept it and buy their crappy ever-same-stuff.

To Game or not to Game

Monday, May 9th, 2011

Finally my childhood dream has come true. I’m a professional game developer ;). Ok… ok I’m a game development intern… but hey.. I’m going there step by step. My first week as intern at EA Phenomic has come and passed and I’m loving every second of it. I can now do what every (crazy) child is dreaming of. I create the games that we love so much and have so much fun playing. What better job there is ;)?