TunnelVision – Post Mortem…wait, who died?!

Posted by (twitter: @wzl_)
May 3rd, 2013 5:24 pm

 The Summary

I totally had fun this LD! Even the painful aftermath helped a lot with figuring stuff out. I was at long last able to upgrade to glsl 1.5, fix my shader setup, get more familiar with matrices again (even if i’ll forget it all by next week) and was able to deliver a solid entry, that’s actually gamy, unless most of my previous entries.



The Theme

Like every other LD i need a good half day to get over the theme. I keep complaining on IRC, to my housemates, to basically everyone that dares trying to talk to me within the first couple hours of saturday. I don’t try to intenionally violate it, but i usually end up doing something that only remotely could be considered themed. This time around it was technically quite challenging to set up, but the gameplay atleast mechanics are simple:

Get Gems, don’t run into things, get to goal.



Day 1: The Work

After a bunch of coffee and ranting i fired up the IDE and started working on TunnelVision, not actually being determined on pulling it through. I made the ring model, imported it and have it arranged along a spline. I realized that this solution is not at all sufficient because rotating the rings along the spline direction is a task i didn’t want to bother with. I remembered that you can construct a rotation matrix out of forward, right and up vectors, so i use an array of those to make up a track, where each node has a definite position and orientation i can further work with.

Applying a constant rotation along the forward axis, and a translation along its up and right vectors allowed for some interesting level design components to create segments that don’t look dynamic and not too uniform, like a rotation of 12 degrees every ring in distance 2; although it is nice to have that kind of control.  Basic ship and camera mechanics were added aswell, but in even cruder forms than it is in the entry. Also i started implementing phong shading only realizing later that there will a be whole lot more problems arising.


Day 2: The Joy

After implementing most of the basic mechanics in day 1 i could focus on building actual tracks and a add little more variety to them, get some polish done and get a smooth release. Glad that i decided as i did because i was just on time, so i thought. I realized a bug in the intersection code just after the submission hour started, i tried my best to get rid of it, but i wasn’t able to figure out exactly what the problem was and i wanted to wrap it up, so i left it in.

Another thing that is still bugging me are the ship controls and camera logic. I wasn’t able to get the physics done in a way they behave like i intended them to, so i didn’t bother with it for the time being. The camera logic is another beast. Just attaching the camera do the back of the ship looks very boring and undynamic, i wanted to have it follow the ship with a slight delay but that turned out more diffucult than i imaged. So for now it keeps following the path left behind by the ship in a certain distance. The result is not quite like what i had in mind, but it’s close.

Otherwise it was a smooth process; I planned to have enough time for everything so i didn’t need to resolve to botching. Only thing i regret is that i weren’t able to squeez in a second tune.




Day 3-6: The Pain

Only the day after submitting is when the actual work started. “Error”, “Not working” and “Crash on startup” are only a few of the messages you can read in my comment thread. Again. AGAIN. ATI oh why you just do not care when compiling shaders. At first shaders weren’t able to compile on nvidia systems at all because i called functions that aren’t available in the shader-version i specified (Thanks for realizing ATI). Then, after upgrading to #version 150 nvidia complained about attribute/varying keywords being obsolete (Thanks for mentioning ATI).

After fixing that the game started to run, but the normals were totally wrecked. At this point i already got a lot of help by you guys, providing me with info in your reports and helping me to fix this, so let me say thank you: THANKS YOU! A  remote debug session with NeiloGD in a Hangout enabled us to figure out the culprit. I am at fault myself for not realizing this one: I assigned the correct shader only after buffering the modeldata and assigning the attributes. Since the wrong shader was loaded at that point, the Normal-attribute was not active due to optimizations by the compiler. I can see how that is my fault, but damn, ATI, why you allow for such lax programming!



The Conclusion

All in all i’m very happy with TunnelVision. It turned out mostly like i planned, and you guys seem to like it too 😀

But yeah, i’m sorry i forgot to add the option for inverting vertical controls. It will come soon =]

Speaking of which: A post compo version is planned, and partly in production. If you want to be kept up-to-date on that you can follow me or visit my burrow [RSS].

And if you haven’t played it yet DO SO NOW!


Leave a Reply

You must be logged in to post a comment.

[cache: storing page]