Wednesday 16 August 2017

Off Grid Sprint Update 16.8.2017 - Imma chargin ma lazer

Heyho! It’s been a long Sprint this one due to various galavanting and laser based activities, so apologies for the adjustment to our usual blogging schedule. The upside is - we have packed an incredible amount in to tell you about!!


This sprint started with us heading down to Develop conference in Brighton as Harry was giving a talk on ‘Making a hacking game hackable’. The talk went incredibly well and generated lots of indepth questions from the audience.
We had the opportunity to meet up with all kinds of incredible folk and show them the game, including the ever lovely Dan Marshall who was extremely excited by the game and had these lovely things to say about us :D

That one is definitely going in olive wreathed award quotes!
Harry also found time to appear on Keir Miron (of Darkest Dungeon fame)’s podcast 'The Question Bus’ and was interviewed in a corridor at the conference! You can listen to it here.


We have been pushing a bunch of features forward in the game, especially within the modding toolset, and getting it ready for SHA2017, a hacker camp in the Netherlands that we were invited to.  Rich and Harry spoke and ran workshops focusing on how hackers and modders can use our modding to tools to create interesting hacks that reflect real life vulnerabilities.
The talk and workshops went really well - we learned a heck of a lot and we got a fair few people in using the tools.  You can watch the talk here and we’ll be putting up a full blog post on the whole experience in the coming weeks.


In the run up to this, Rich headed up to Steelcon again to gather inspiration (the SHA talk references how one of the first hacking mods we made in Off Grid was based on a Steelcon talk about hacking the Nissan Leaf electric car by Scott Helme last year). There was loads of interesting brain juice this year, including our friend Darren Martyn’s hilarious talk on Hacking ACS Servers for World Domination and this unnerving talk by Ken Munro from Pen Test Partners about the awful vulnerabilities they had found in IoT sex toys…

Mod hacking workshop with Spoonzy

On top of having gotten a good start on testing the modding tools with Dominic during his work experience last month, we took this a step further and got our mate Spoonzy to come in and apply some hacking knowledge to crafting some hackable devices with the modding tools. Spoonzy spent the day with us and came up with some pretty epic ideas for hacks - we made a start on a couple of them and he prompted a few fixes that we got to work on ahead of our workshops at SHA.

New Networking

This included Harry working on switching the networked tools that allow modders to build their own level changes directly into the game over to our own networking code (much faster iteration time!). This took a little wrangling, but as well as speeding up the workflow, it has put in a couple of checks that prevent potential loss of work. The old way used Unity’s built in TCP/IP networking code and made use of the editor’s play button in the modding project - if you have ever done any Unity development you will know that if you leave that on by mistake when working on objects or values in the scene then you will lose your work when you stop play mode on the editor - the new networking code avoids this pitfall entirely. 


We wrote an export tool that can now generate clean versions of LevelKit for us to submit to our steam tools section for the game. Meaning that any half-baked dev content is stripped out and our modders have a nice clean project they can work within.


We also found that folk wanted to know what direction characters would face when spawned and so now allow users to visualise players and guards spawn rotation with an arrow marker on the mission object.


We wanted modders to be able to just jump straight into mission and
hackable object scripting if they wanted to, rather than having to do
any geometry or environment work and so made a template scene so modders
can jump into a working mission with hackable devices already in it,
ready to be edited, scripted and added to. It is just a basic couple of
rooms with a few props and a basic laptop to hack into as an example but
it is a good start. The laptop in it even had the SHA wiki on as the front page :P

All your data belong to us

All networked devices now have a data inventory - this is the first step in making characters dynamically populate the devices in the world with their personal data. This way, when you hack a device you are able to get specific information on the NPCs around you who have interacted with that device, building up a piture of their behaviours and routes, and what data or other devices you might be able to manipulate them with.

No Rest for the Wicked

And one for the books… we fixed guards giving up patrolling after roughly 5 patrol points. We found that they had not been given a place to rest and recoup their motivation so they were essentially lazy guards striking due to lack of coffee!

Progress and Affect

Modders can now update the game progress via lua, which means conversations, objectives, or other triggers and interections in your level can affect another mission. For example, finding a hidden space in a level or making specific conversational choices in a set of CryptoChat messages can be used to unlock new levels and side missions within the wider game. Essentially branching narratives and their effects can be set off by any lua triggers in a level.
We also added an Error checking pass on conversation system (making them now more robust). It’ll now be easier to avoid lua compile errors and get your conversation scripts in the game and conversing properly.



The other thing we have done is some fairly comprehensive work on getting the Off Grid Wiki to a stage where it is useful to players and modders. We now have a bunch of articles which describe how you can go about making mods for the game. We’ll update you soon once the structure of those articles is coming together!

Character customization

We are aiming to make all characters more customizeable for modders, and want to set up the colors in a way that would require as little as possible special skills or programs to change them for an existing character, while still using a single mesh & single material on each character in game.

Normal textures would do the job, but editing the colors on them afterwards isn’t really for everyone. Vertex colors are easier, but editing has to be done with a 3D modelling tool and creating different color version of a character requires creating a different model (or messing with the vertex color data on the fly through code). Our solution was using a simple texture as color look-up table, so once the characters are set up correctly (by us) all one needs to do to change them is open the texture file in any image editor (even MS Paint would work great for this) and paint the tiles with new colors.
Since we don’t need any detailed textures or anything, we can just assign the UV’s of the models to those colored tiles. And in theory we only need one pixel per color so the textures can be really small. Although to make things easier to work with and avoid any issues with color bleeding when the images are compressed, we settled for a 64x64 texture (the resolution doesn’t actually matter) with 8x8 grid of colored tiles. That’s 64 colors per model (with 8x8 pixels each), which should be more than enough for our art style…

In addition to the color table, we also added support for an additional texture that works the same way, but is used to set the glossiness of the material, and to switch between metallic & non-metallic material.
…and both these textures are of course fully optional, all the characters have default textures built-in to the game so if the modders leave one or both textures out, we’ll just use the defaults instead.

2nd Floor of the Apostle level

If anyone reading this has had a chance to play Off Grid, and made it through our newspaper office level, you might remember the 2nd floor of the building being pretty barren, to put it nicely. Properly decorating that part of the level and adding some actual gameplay has always been our plan, but there’s just always been more important things to do.
Well, this sprint we finally decided it’s time to add some content there. No spoilers, but let’s just say that you can’t just run through that floor any more, and trying to sneak past the guards would be pretty difficult as well. Instead you need to figure out a way to get the guards out of your way. There’s a few possible solutions, like you’d expect in a stealth game, and we thinks there’s room for some more as well.

Other changes & fixes

  • Added a bunch of new sound events for different parts of the UI

  • Text-only lines in the ncurses-like remote connection window are now correctly displayed using the foreground text color (as defined in the device’s Lua script)

  • File viewer UI can now be closed with the “back” button (B button on gamepad, backspace on keyboard), and also closes automatically when the pause menu is closed.

Biz Rumblings

There has been a bunch of production and business development going
on in parallel to all this, loads of interesting folk spoken to about
opportunities for the game, but as always, you’ll have to wait to hear
more about that!

New *MOAR* blog posts

We have decided to shift the format here on the
devblog slightly, we are planning on continuuing with these monthly
sprint updates but maybe trying to make them a little more concise while also expanding on one or two of the items in each
blog post in between each sprint update, so watch this space! We are
going to start with Harry writing up a follow on from his Develop talk,
the kinds of things he touched on, and his impressions of the conference
as a whole, so look out for that!

Speak to you even sooner!
Rich, Pontus, Harry, and Sarah.