If this is your first visit, be sure to
check out the FAQ by clicking the
link above. You may have to register
before you can post: click the register link above to proceed. To start viewing messages,
select the forum that you want to visit from the selection below.

I thought I'd do a quick update with all the details I can give right now:

OverviewAlaska is an immersive sim with a dynamic narrative, you have been sent to a remote space station to investigate a murder, you must explore the station and investigate its occupants. Build a case against a suspect, but did you prove his guilt or have you made a terrible mistake?

Immersive Sim - World is simulated and reacts authentically.

Dynamic World - You are free to roam the station and observe the participants going about their day.

I plan on posting more regular development updates from now on detailing what i'm working on and where i'm going with it to coincide with my screenshot saturday posts.

This week I've mostly been working on a system where if an NPC is sleeping you can still talk to them by going to their room and pressing the call button, they'll answer the door and let you talk through your dialogue tree with them. I'm also adding a system where you can sleep to fast forward time, the UI for setting how long to fast forward to is an alarm clock on your phone. Finally I've been 'writing' the dialogue for the ending of the first act.

Things i've still to do before the next build are:
-Polish Pass on Act 1
-Make the Encyclopdia work, any datapads with historical background go here, like Mass Effect.
-When you meet a character their profile is added to the Contacts App in the Phone, and stores all the information you have on that person.
-Add Google Analytics
-New More Polished Trailer

I've not had a chance to post development updates the last couple of weeks because i've been busy, I have a small list of things to work through before I put out a Demo, Trailer and Greenlight campaign.

Primarily I have been working on getting the UI up to date with the new style and removing all the programmer art, it's an ongoing process and there's still lots to do. Part of that is connecting up the functionality for the Mass Effect style encyclopaedia that reveals background details about the setting as the player explores and the Contact screen which holds all the details you know about the NPC's you meet as you find out about them.

I've also been writing and implementing dialogue for some of the NPC's, I hate writing the dialogue because I know how important it is and I don't have a clue what I'm doing. I had initially planned to have a relatively small selection of dialogue options and present them all to the player all the time, rather than having them tunnel through a tree, but this approach means you need to be quite careful about constraining the conversation too much and not getting to flesh out the characters enough. I'm still going to persevere with this approach as I don't think 'exploring' a dialogue tree is very fun, but if it turns out later that I need a lot more dialogue than can comfortably exist in one menu, I might switch.

The other thing I've been working on is Google Analytics implementation in C++ using Microsofts Open Source Cross Platform C++ REST API. I've already uploaded the Google Analytics code to GitHub because I think it might be valuable and it's small and clean. I intend to flesh it out further as time goes by, currently it only supports Events. Analytics is something in mobile we take for granted and is invaluable for measuring all sorts of aspects of where our game is failing the players. Most big studios have their own Analytics solution for their games but Google Analytics is fine for my needs and will help me learn more about how people play my game in the absence of any kind of testers.

finishing the encyclopedia functionality and updating more UI elements to the final UI

Story

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.

Bug fixes

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.

Encyclopaedia

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.

As part of my relentless match to a release quality playable demo, I’ve been working hard on some underlying tech issues and feedback that were considered good enough for whiteboxing but definitely not good enough for the public.
The Key parts of this I’ve been working on:

Audio

Fonts

Player Movement/Control

Navigation & Signaling

Audio

Something quite obviously missing from the Engine all this time has been any audio whatsoever. Audio in Alaska has taken a back seat to Graphics, AI and other features because it’s not going to be integral to the experience, good audio is extremely hard to get right as people notice even slight defects in the production process. Which is why it’s not a great idea to focus on it if you know you aren’t going to be able to do an excellent job. Doing an excellent job costs a lot of resource and expertise. Saying that, no audio whatsoever is jarring and people find it difficult to engage with a world without it. So I’ve implemented a basic sound system built on Open AL which currently only supports RAW audio. It suits my needs for the time being but I will likely extend it to be able to support a container format like ogg later.Fonts

I’ve been using the inbuilt Direct3D font rendering tech to draw text up until now and it’s unsuitable for production for serveral reasons:

It has no shader pipeline support

It’s slow

It requires a draw a draw call to get metrics about a piece of text for formatting

For these reasons I’ve always had a mind to replace it with a better solution, Microsoft would prefer me to use Direct Write but as I’m switch from Direct 3D to Open GL later on I don’t want to couple myself to DirectX any more than I have to, so I’m building a solution with FreeType, which will enable me to use platform agnostic code to prevent me having to port the font code in future. This work is preliminary and I’ll likely be working on it over the next couple of weeks.Player Movement/Control

For player movement I’ve been using bullets built in Kinematic Character Controller, which is not really considered release quality. I’ve had a couple of issues with it, mainly the player sliding down slopes and not being able to climb steps at low speeds. On the plus side it being open source means I can take it and make it work properly. I’m still working on the slope problem, but the step climbing problem was the more serious one. It meant I had to increase the player speed to levels that didn’t fit the pacing of the game and made it hard to position the player a comfortable distance from the screens in the game, as a result I got a lot of feedback about not being able to use the screens, the screens being too small or fiddly. When I came to make the screens bigger as part of the feedback I realised that actually the screens were a good size the problem was entirely sensetivity. I added a mouse sensetivity option and set the default to half what it was before but to give more sensitivity to the player position I had to slow him down to a sensable speed, losing the ability to climb stairs with the current controller. So I had to fix the stair climbing bug. It took a lot of digging through the bullet source code to find the issue but I tracked it down to the players step code sweep code not detecting collisions with short casts, probably because of floating point errors, so the solution was to change the step code to function with longer casts.Navigation and Signaling

In my playtest feedback the tutorial, a very short low friction introduction to some of the basic mechanics, is holding players up a lot.
Some of the issues i’ve been seeing include:

Ignoring the tutorial text

Succeeding a tutorial without realising

Misreading the lights cutting out as a bug

Not reading the “notes” which are designed to provide hints about how to progress

I’m reluctant to force players to stop and read the tutorial text with a fullscreen popup, so currently I’ve simply increased the size of the tutorial window to make it more prominent, if later metrics show it’s still a problem I may force the text. I’m well aware of the weakness of using popups to train the player and I’ve worked hard to make a lot of the training implicit with the tutorial text as a fallback, my feedback seems to show that I’ve been successful at this as a lot of the basic controls were immediately obvious to the players.
As for succeeding a tutorial without realising it, I think this is an area where the tutorials are defined to broadly. The tutorials are currently satisfied if, for example, you pick up an object, but i’ve always intended them to provide a kind of breadcrumb structure. I wanted you to pick up a specific object but picking up any object satisfied the tutorial. It meant players veered off the course of the very linear tutorial (the rest of the game is very open but the tutorial is supposed to be linear to give you that elder scrolls moment when you finish it). So as a result I intend to reign the tutorial in even tighter, It really is something I want the player to glide through without any kind of friction in order to get to the world exploring as soon as possible.
The lights cutting out have been misread as a bug by several people and the reason is because it looks random and isn’t grounded in the world very well at all. One of the main reasons for this is the lights flicker in intensity randomly and there are no audio cues. I’ve already added an ‘shockwave’ push to the swing door, to both signal there was an explosion and that the swing door is a swing door unlike the other doors the player has encountered. I’m in the process of changing the lighting from going nuts and cutting out to slowly powering off and then the red dim emergency lights cutting in as well as adding a sound to the event.
The players haven’t been reading the notes in the diary when they are prompted I need to push them harder to look at them as it functions like a hint system for when you are stuck I intend to do this by rendering the last received note on the HUD until the player looks at the notes and adding this as a toggle in the options menu. I’m not a fan of HUDs and I’ve been trying to get by with zero HUD but as time has went by I’ve added a few things to it, like signalling when the player has a phone call or wifi access because I’ve had no sound so far, I couldn’t use audio cues nor do I want to rely on audio cues because I want it to be accessible to hearing impaired players, I will likely add a toggle for audio and visual hud cues to the menu also.

As well as continuing to work on these issues I’ll be adding sounds to the engine next and adding radios to the world that play music, I’m hoping to make the radios play a stream from a real radio station but I need to make sure the licensing allows for it and so far I haven’t found anything suitable.

Quick development update because it’s been so long since I’ve posted one, the primary reason for that isn’t that I haven’t been working on Alaska, it’s that working on Alaska, Family stuff and other issues I’ve got going on right now have left me WAY too busy to blog! Not to mention my annual Dota 2 International & Steam Summer Sale distractions that slow development down every summer and give me the R&R I need to go at a breakneck pace the rest of the year.

That stuff is all largely sorted though and I have got things to post about from my plan in the last development update I got almost all of it finished the only part I’m still not happy with is the notification system which is still too easy to ignore and the tutorials, which I’m currently thinking would serve the player better if they were in the world beside the objects they refer to. It’d mean they were easier to ignore when you’re not interacting with that object and harder to ignore when you are, people have a tendency to filter the HUD entirely when they are focusing on a task and I’ve found that had prevented people from reading the tutorials, I’m hoping this system helps point people in the right direction.
I’m also working on the notifications, adding the most recent text to the HUD until you dismiss it, currently by going into the notes section of the UI although I can foresee issues with that approach and might do a timed dismiss or add an easier way to dismiss them.
The final thing I’ll be adding is final map sections for the players ship, there is a bedroom and lab on the ship which haven’t currently been implemented and a basketball court on the station which also hasn’t been implemented, also I haven’t added any toilets at all and being an immersive sim tradition (along with the basketball court) It feels wrong to not include them.

Implementing the font system actually required a lot more work on the renderer than I anticipated, the previous font system was stateless, a major weakness, in that you couldn’t use shaders to manipulate it which has a lot of ramifications, including not using the same object space as all the other geometry, it had to be in a 2D plane on the screen. Rectifying that however introduced a problem, everywhere a font was used in the code with the new system would flip GPU states and cause the renderer to barely function after it was switched on and I went about introducing the fix.

The first pass on the fix was to swap all the state change code for state pushing and popping code and use a state stack. State stacks are common in graphics programming because there’s a lot of driver overhead in switching states and a stack can be used to help minimize that. The first pass on the state stack just set a state as it was pushed and set the previous state when one was popped, simple and SLOW! I couldn’t really live with making the engine even less efficient so I wrote some code to manage the states better it involved setting the state based on a comparison between the current state and the one on the top of the stack at draw time, meaning a push and pop without a draw between cost nothing in GPU terms.
After that I noticed I was currently creating the states as I was pushing them, even if an identical state already existed, which is also a source of a lot of slow down. I implemented a system where a state would be created once and reference counted between all duplicate pushes and common states where created once at start up, minimising both the number of states being used at once and the number of times a state was created, the system works well and is a good balance between not having to worry too much about the GPU state in game code and optimising the state switching. I still need to implement a depth peeling system to deal with transparency which will allow me to bucket the states better and reduce switching further, but that will affect the game code quite a bit so is less clear cut for wins/work.

I plan to have something to show in the next update after quite a long series of dry updates, it’d be nice to have a new animated gif or two so I’ll hopefully get a chance to focus on something visual over the next couple of weeks.

Itís been a month since my last blog post, canít believe how quickly time is going by and Iíve been working exclusively on polish, meaning the plan to have finished the second Act of the game by the end of the quarter isnít feasible so Iím moving back the projected release date to the 2nd Quarter 2015, as always though and while thereís no pressure to finish it and less time to work on it the release date will move again if Iím not happy with it. Iíve committed to a playable build of the game at Dare Protoplay on August 9th and 10th which Iím excited about as it will be the first time other people play the game and will inform the direction of future development quite a lot.Why the delay

Iíve been pretty accurate for the most part with my milestones except when it came to the things outside of the games development, which I have next to no experience with. The time it takes to produce marketing material has ballooned lately and itís thrown off all my deadlines. Fortunately Iíve got to pressure to hold to them and a when itís done attitude has always been on the cards. tbh I probably shouldnít be public with my soft deadlines at all but if it helps other devs plan projects itís a good thing and it costs me nothing.Exhibit on a budget

I really canít spend too much money on Alaska development right now and so Iíve been shopping around at where to exhibit and what to spend when I do. Where to exhibit is a pretty easy choice basically divide the amount you are spending with how many people are going to be there and then again by how many devs are going to be there and you get a very primitive cost per mind share metric, Iíve been looking at a few options between The Scottish Games Expo, Dare Protoplay, Rezzed, EGX and Develop. For me the maths donít work for any but Dare Protoplay and EGX, The Scottish Games Expo was too new, Rezzed was too small when compared to EGX and Develop had a low public to developer ratio. Protoplay being the clear winner because it was free and being in Dundee will help me practice for any future exhibitions I go to.

So now Iím taking the game on tour what do I need to exhibit it. I settled on an A0 banner and t-shirts for exhibitors as well as my business cards and the game of course. Iíve already had the banners made up and theyíre actually very cheap if you are on a shoe string and add a lot of professionalism to your exhibit. The T-Shirts werenít that cheap as far as t-shirts go but I think itís a good idea and I got them from Zazzle which means I can add them to a store page and other people can buy them too! The store page is at http://www.zazzle.co.uk/ratusapparatus* and will include other themed products like mugs too. Iíll be adding the store to my site soon.

What to prioritise

When exhibiting itís important to have a build people can play easily without your input and that means, tutorial, gamepad support, and polished signaling. On top of that I will be filming people playing which I hope isnít a problem for people, at the very least I will be watching and taking notes because the value of having other people playing your game is incalculable.

So if youíre around Dundee on August 9th & 10th come along and play the game! Give me feedback and maybe Iíll make a decent game! itís also likely the first and last opportunity for anyone outside a select group to play the game for quite some time. EXCLUSIVE!