Friday, 30 September 2016

Sprint Update 30.09.2016 - BIOS-ecurity hazard

Hello, hello!
This sprint we’ve been hard at work extending some of our core systems and playing with hacking NetDevices. There has been some great progress on how the interactions with internet enabled devices around the level will produce gameplay and we have developed a couple fo new features that we are excited to show you! Read on!


Whilst it’s still up in the air which languages (apart from English) we’re going to support in Off Grid at launch, we now have a system to easily localise text content, we’ve also been discussing the possibility of being able to allow new translations through downloadable mods. No promises! but it’s certainly something we’d love to look into supporting in the future, we want everyone to be able to play and enjoy Off Grid.


We’ve added support for checkpoints in missions, this allows us to easily test new features and changes further into levels, this system is easy to mark up in the missions Lua script/Level and can be taken full advantage of by modders for easier testing.

Hackable devices

This sprint Harry also worked on the loading systems for our hackable devices whilst Pontus worked on the UI layout side.

The first pass is now up and running, this is something that we’ve been working towards for quite some time, so we’re obviously super excited!

Hackable devices can be completely marked up in Lua, this includes marking up the devices logic as well as the contents of the user interface when the player interacts with it.
The future plan is to allow a few different types of UI meaning that your Lua data can be interpreted in different ways depending on the UI type.
Currently we’ve only implemented the ncurses like UI, here’s a quick example just for you!

The following Lua code marks up an example device in Lua with a simple UI

And here’s the result when loaded into the game!

There are lots of more options that aren’t in that example that we’ll go into detail on soon, but so far we’ve been able to come up with some really fun and interesting examples of devices that can be made in our new system.

Still working on the user interface…

As far as the user interface goes, this sprint was a combination of completing our move to Unity’s native UI, and starting to add some new features. So lots and lots of small things tweaked around in the UI setup, like getting inventory items to read their icons from mission folders (so modders and level creators can add their own items to the game), tweaking our in-game app & Lua setup to deal with icon background colors, app on/off/disabled/alert states and so on, and improving positioning of UI elements on screen dynamically. The last one was definitely a pain, Unity’s UI really doesn’t make it too easy to do this with anything but the simplest UI hierarchies. It’s working now for 16:9 resolutions, but it looks like we’ll still need to revisit the positioning code to make sure it works for everyone. And last but not least, we made sure that all UI elements work correctly on both mouse & keyboard and gamepad controls.

Having done that, we did actually get to doing something new as well. And pretty exciting stuff, even!

We now have a new targeting setup, which highlights different types of objects in the data view mode, and displays information about them. This makes it much easier to select the data point you want, or to choose which network-connected device you’d want to connect to. And it works well enough that we’ve extended the targeting range to match with the visible data on screen. So now you can grab that piece of data you want from much further away, and hack devices remotely while hiding in some comfy corner away from the guards’ patrol routes!

Talking about hacking devices, we of course needed some kind of user interface for the devices…

We pretty much wanted a remote connection UI that would be flexible enough to deal with all the different kinds of devices we’ll have in game, all the way from simple Internet-of-Things-stuff and old-school terminals and servers to full-on modern desktop computer displays. And we wanted all that to be modder-friendly and Lua-driven…

The setup we now have deals with remotely connecting to any devices, and the device itself can then define what kid of user interface it has and all the contents, colors, and other details of the UI. In this sprint we decided to start with something that would work for as many devices as possible, so we built a simple ncurses/BIOS-screen -like UI option that would fit pretty well as the recovery/setup menu many of modern devices have hidden somewhere behind the normal daily use UI’s you usually see. Of course the fact that these kind of user interfaces are easy to use with simplest of control schemes also played a part in it being our first choice. As a nice little extra we also made a simple command-line style UI option, which is mainly for non-interactive stuff at least at the moment (an interactive command-line style UI that works well with a gamepad will require some further thinking :P).

In the long run we’ll add more options for the UI style, at the very least a typical computer desktop and maybe something that looks more like a mobile device UI would be the first things on the list. And it looks like something that would give modders even more power to come up with their own UI styles could be possible, we’ll just have to see if (and when) we have time to work on something like that.


We have also spent a bit of time taking the prototype whitebox level we have been using for some time and exported the geometry from Unity out to Blender to do a proper clean up pass and set it up with vertex colours.
Previously the levels had been rapidly prototyped with the very cool Probuilder, but we were running an old version and not making enough use of it’s features to justify purchasing it again and updating. The newer version is far more advanced and would probably fit our workflow quite well, but for now it’s nice to have cleaned out some more 3rd party code that we weren’t seeing the full benefit of. This mean the levels will be able to start making use of the vertex shaders we wrote about working on a few months back, hopefully giving us a performance saving and also looking a little more polished, and also we a sticking truer to the principle of using the AssetKit we are developing and a majority of the tools we make available to the modding community to make the core levels in the game.

That pretty much sums this sprint up, we’ll be back in a couple of weeks time, see you then!

No comments: