There are 4 areas I’ve been working on this week:
- The flow diagram of the second act
- Dialog with Asher that links the first and second act
- Bug fixing and code cleanup
- finishing the encyclopedia functionality and updating more UI elements to the final UI
The way I’ve been working on the plot for Alaska is firstly I had a general outline of what I wanted to happen, mainly based very heavily on games, films, tv shows and books I like. Those influences are primarily Blade Runner, Pathologic, Twin Peaks and Philip K Dicks books with Faustian themes, like Galactic Pot Healer and The Three Stigmatas of Palmer Eldritch.
I then broke the game into 3 acts, despite my belief that the 3 act structure is wholly unsuitable for interactive narrative, it’s actually really difficult to break down a story any other way when you are a complete amateur, so I’m trying not to bite off more than I can chew with the writing.
Flow Diagram of the Tutorial, Act 1 & 2, Blurred to avoid spoilers.
So dealing with each act 1 at a time I will draw a flow diagram of all the Key/Gate verbs in the Act and then go about implementing each one and marking it off on the chart as I go, as part of the flow diagram I will often write a chunk of supporting narrative that may or may not end up exposed in the game but is justification for peoples actions and when I come to writing dialogue in any of the steps on the flow diagram I will usually do the same and write backgrounds for the characters and justifications for what they say and try and give them more than just one dimension, again even if it’s never exposed to the player.
So I’ve been doing that this week and it always makes me feel hugely out of my depth because unlike with the Art, which was more lack of interest than ability, I’ve never had an aptitude for writing and I don’t think I ever could. So after working on story stuff it’s always good to go back to the easy, comfort zone stuff. That being coding and UI grunt work.
The code isn’t very clean at all, one of the reasons it’s not open source right now is I need to go over it and clean it up before I’m willing to let people see it. One of the most important rules I have that I just can’t get myself to adhere to is no code in the header file. No matter how important I feel it is I just have a bad habit of not creating the cpp file when I make the class, so all the code goes in the header and compile times plummet. So with a mind to speeding up compile times after reading and implementing the recommendations in this blog post by Bruce Dawson, I decided to set about moving all the code that shouldn’t be in the headers into cpp files and it makes me feel a lot better about the code cleanliness.
Second on the agenda was fixing some of the known bugs. There was a boring issue where there are 2 ways to pick up an object, one is by holding it in front of you and moving it around and the other is by putting it in your inventory and I had to make sure both these methods were supported for using objects on other objects. My favourite bug so far was where you could put NPC’s in your pocket, carry them around and then drop them off elsewhere which was a trivial fix. and there was a fairly harmless buffer overflow when reading files from an ifstream that meant some of the text in the game ended in garbage strings in release mode. Buffer overflows are fairly common in code and are usually harmless, especially in a game. They can cause things like the heartbleed exploit everyone’s banging on about these days but for my purposes it’s good to get rid of it because it can mangle the heap if you’re unlucky.
Finally keeping visual studio in check requires a lot more work than it used to, I link statically to the c runtime which means I need to build all the libraries to link statically to it too which means they need to be static libraries because dynamic libraries don’t always link well to the static runtime, also since switching to visual studio 2012, I’ve had issues with conflicting versions of direct x in this new windows sdk it’s started getting bundled with which effectively stopped gpu debugging tools from working so I’ve had to fix that by being very specific about the order they get included and linked and where they get included and linked from. Lastly Visual Leak Detector has been reporting false positives since I upgraded to 2012 and it’s made keeping on top of leaks difficult, updating to the new version of vld rectified that though which means I can be certain there are no leaks again. All of this is very boring, very time consuming stuff, thanks Microsoft.
most of the work on the encyclopaedia, as with all the menus is in lua, but there was one thing missing from the menu system that I hadn’t gotten round to implementing – scrollable button lists. There is already scrollable text boxes and it was quite simple code it affects the inventory too which, before, had a maximum size. The other side to the Encyclopaedia is building the UI elements needed.
So that’s everything for this week, No screenshots again this week because as you can see everything I’ve been working on has been pretty bland, I’m certain there will be new screenshots over the next couple of weeks though, as I work on new stuff. I will finish up by linking to all my coverage I’ve had so far though because I’ve been meaning to get them all in one place for a while now.
Thanks to all those guys for the coverage, it’s hugely appreciated.