Monday, November 18, 2013
On Versioning (or how the simplest thing can save you from the hardest pain)
Extended titles aside, this is no flashy post. Some will even locate it a bit boring, but if at least one can find out something from it, I will be content. The motivation for it comes from an typically overlooked concern. I now have to tell how a perform day can at some point turn out:
A freelance artist we are working with found this really strange and annoying crash bug in the LevelEditor. One point listed in the Luis's common process manual when functioning with bugs says "1st, check the logs, see if anything looks strange there", next 1 states: "try to reproduce, and operate your way on from there". Occurred that the logs looked alright, and no 1 in the team could reproduce the bug in their machines, me incorporated. So neither of these points threw any light into the concern.
It began to look like I was staring at a single of those errors that no one desires to deal with, brought on by hardware incompatibilities or comparable übernice stuff (oh boy).
A new log seemed to make Luis happy, showing some strange error when loading a temporary file. It warned that the file the editor tried to study hadn't been even produced. This may sound like hint... but the way the editor performs (it checks if the file exists ahead of attempting to read) undoubtedly told me that it could not be attainable. Aggravation++ now (or for the non C speakers there, Luis begins to drop his temper a bit).
After a even though of step-by-step execution debugging, unsuccessful thinking about the trigger and some other shooting in the dark, a new log came in to my hands and, whilst it looked alright, it stank of "I fixed this warning point like three months ago". Turns out that the freelancer was making use of a dusty old version. He updated and bug gone. Gñe... now I want my sanity back.
This longish story confirms a couple issues:
- You must in no way assume your users have the most recent version when they complain about some bug.
- You undoubtedly require a way to determine what version they are operating with out needing to ask them.
A single may possibly consider I'm playing Captain Obvious here, but the very same type of circumstance described above happens a lot of times. It is actually strange to see no new messages for a whilst in our tech assistance forum. And even stranger if they are about stuff we have in no way noticed before. Most of the time they are currently solved troubles, and the solution for them is as straightforward as updating to the newest patch.
So, after finding out this nice lesson, I created a small system that is referred to as by the IDE on the pre build occasion, and updates a construct-ID string (in the form of yyyymmddhhmmss, with y - year, first m's - month, d - day and so on... essentially a timestamp of the moment the point was constructed) that will then be hardcoded in the engine and apps, and seem at the initial line in logs. I am pretty certain there currently are greater options out there for this kind of stuff, but I felt like undertaking it ahead of any googling, and it didn't take long, so no big deal. At least it may possibly save me from obtaining to purchase a small suit: