Tuesday, July 25, 2017

Summary -- Week 7

So most of the week was spent on rewritting the game loop to implement animations as shown above and fixing the bugs introduced by it..
The animation system is simply implemented by setting a timer that when it expires causes the room specific animation() function to be called. (1, 2, 3, 4)
Besides that,

An interesting discovery for me was that although the text rendering code is correct it shows artifacts when drawing umlauts. As the game strings were copied directly from the cp437 encoded source I expected the character value to be encoded in a single byte as characters in extended ASCII don't exceed 0xFF. What I didn't consider is that UTF8 is only backwards compatible to basic ASCII (0x00 - 0x7F) and anything above takes at least two bytes, what causes the corruption as seen above ("Triebwerke funktionsunfähig"). That's why umlauts in the German original will be substituted by their equivalent octal value as already done here.

For the coming days the first act should be made playable by implementing edit() so the sleeping cabin section works correctly and adjust the game loop for dying and implement the 'death screen'.
After that implementing the remaining game logic takes priority especially now that the animation system is working.

Tuesday, July 18, 2017

Summary -- Week 6

Sorry for the delayed report this week but I really wanted to add a video finally walking through the empty hallways of the starship Supernova. Moreover...

ūüéČ The GUI is finally working! ūüéČ

Probably the most noticeable improvement is that GUI is now actually rendered correctly and interaction with the environment is finally possible without everything glitching out. Although, there are still issues with Give and Use command that will be addressed next.
Besides the GUI there have been improvements on every front.
  • Wrapping GUI elements in a state class (1, 2, 3)
  • Fixing font rendering
  • Correctly handling and rendering object state (1, 2, 3, 4)
  • Improvingn mouse input handling (1, 2)

Coming up next will be implementing timers for handling events and animations. There have been talks about starting translating but depending on how things go it either has to be pushed back or will have a lower priority.
Of course fixing a bunch of bugs along the way would be nice too :)

Monday, July 10, 2017

Summary -- Week 5

Sorry for the delayed update due to injuring myself while sleeping..
The input code still gives me quite a headache and will be partially rewritten when there's time. I am now in a place I wanted to prevent ending up in but for now, getting things running has priority.

As I said getting the input code working was my goal for this week additionally to fixing some GUI issues and rendering static GUI elements like the minimap, inventory, command row and status line.
I expected this part to be more difficult, as the original code is quite intertwined but I completely misjudged the effort needed for porting and debugging.

For this week I want to keep fixing the GUI and implement stubs
so the remaining game logic can be implemented without too much trouble.