Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length

Advanced search

1104974 Posts in 45976 Topics- by 37658 Members - Latest Member: ssobrlno

April 01, 2015, 02:32:20 PM
TIGSource ForumsFeedbackDevLogsAlaska from Ratus Apparatus
Pages: [1]
Author Topic: Alaska from Ratus Apparatus  (Read 1387 times)
The Sombrero Kid
Level 0

View Profile WWW Email
« on: March 18, 2014, 11:07:14 PM »

Hi, I've been meaning to syndicate my devlog here for a while, you can also read it at my website:

or my indieDB Page:

or The Rock Paper Shotgun Forum:

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

Alaska 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.
  • Adventure Game - Use the Talk/Use adventure game style to progress.
  • Agency Engine - Alaska uses my own Agency Engine, nothing is baked everything is dynamic.



« Last Edit: March 18, 2014, 11:16:31 PM by The Sombrero Kid » Logged

@Sombrero_Kid | ratusapparatus.com
The Sombrero Kid
Level 0

View Profile WWW Email
« Reply #1 on: March 18, 2014, 11:13:10 PM »

To solve the murder, you will have to find out what this machine is.

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

Then I am going to begin work on a Greenlight Campaign.

@Sombrero_Kid | ratusapparatus.com
The Sombrero Kid
Level 0

View Profile WWW Email
« Reply #2 on: March 19, 2014, 03:33:01 AM »

Thought I'd add some of my gifs i've made of the gameplay to the page to give people an idea about how it plays.

On Screen Keyboards

All Lights are Dynamic & Shadowed

@Sombrero_Kid | ratusapparatus.com
The Sombrero Kid
Level 0

View Profile WWW Email
« Reply #3 on: April 05, 2014, 06:03:07 AM »

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.

@Sombrero_Kid | ratusapparatus.com
The Sombrero Kid
Level 0

View Profile WWW Email
« Reply #4 on: April 12, 2014, 03:30:40 PM »

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.

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.


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.



@Sombrero_Kid | ratusapparatus.com
chris is balls
Level 0

hit me up if you want a chat.

View Profile Email
« Reply #5 on: April 12, 2014, 03:39:56 PM »

This reminds me a bit of System Shock 2 and Doom3, what with reading and using PDAs, which hide clues, and the environment. Good luck with the rest, keep going!
The Sombrero Kid
Level 0

View Profile WWW Email
« Reply #6 on: May 05, 2014, 03:47:15 AM »

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


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.

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.

@Sombrero_Kid | ratusapparatus.com
The Sombrero Kid
Level 0

View Profile WWW Email
« Reply #7 on: June 23, 2014, 09:53:57 AM »

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.

@Sombrero_Kid | ratusapparatus.com
The Sombrero Kid
Level 0

View Profile WWW Email
« Reply #8 on: July 22, 2014, 02:10:47 PM »

Dare Teaser Trailer



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!

@Sombrero_Kid | ratusapparatus.com
Pages: [1]
Jump to:  

Theme orange-lt created by panic