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:
- 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.
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.