The month of May is done and dusted - and Off Grid is all the better for it! We’ve overhauled the app system, reorganised our LevelKit, and continued adding all the right save features. If you’re a wannabe Off Grid player and modder, the time to start getting familiar with the tools at hand is right here, right now!







New ways of using your apps

In this sprint we ended with fairly big difference in how apps, and selecting targets for interactions are handled. While the old AppWheel is convenient for certain types of interactions, like grabbing all the data around you as you run through the level, it’s less ideal when you want to do more planned and complicated interactions with various devices, without having to switch different apps on & off and sometimes opening your pause menu and inventory to select files and send them.

So we decided adding a radial menu you can use to select the apps to use, files to send etc while you are currently looking at a target device would be a nice option.

Simple enough as a concept, but as things go, actually building this ended up requiring quite a lot of other things to change as well…

Targeting and the Radial Menu

The radial menu itself is pretty much what you’d expect - a bunch of app icons around your current target. We decided that some apps should be displayed by default for certain target types, for example the SSH app is something you’d pretty much always want to see when targeting a hackable device, so we might as well make sure that’s the case. The rest of the icon slots we decided to allow the player to fill with whatever apps they prefer.

Our 1st-person targeting is already designed more for hiding somewhere and planning your hacks, rather than the run-through-the-level while grabbing data points around you the 3rd-person/AppWheel excels in. So the radial menu is now always used in the 1st-person targeting mode.

That being said, there were no major road blocks stopping us from making it usable in 3rd-person as well, if the player prefers, so we also made it into an app of its own which you can switch on in your AppWheel to use radial menu-style interactions instead.

Apps menu

So we have an app that can be used to select targets and launch apps, but at the same time all the apps need to work on their own as well, and either with the target selected before, or after, the app is launched. And with two different menus where the apps can appear, but some apps potentially only making sense in one of them, and some that should always be around in one, or both, or for certain types of targets… things were getting a bit complicated at this point. We needed to do some changes to make all this work, and in a way that doesn’t end up being complicated from the player’s perspective.

Cue our new Apps menu!

This is a new page added into our Pause menu, listing all apps the player has available, and the options for viewing more detailed information about what the apps do, and for managing which apps should be displayed in which menu. Don’t worry though, we are taking care of all the complicated rules in the background, so the player will only ever see the sane options for app management.

Apps Lua API changes

This all required some changes into our Apps Lua scripting API. Most of the magic is still handled by our code on the game engine side, so players making their own apps will only have to deal with few extra settings that are available.

First, we’ve separated the single function the apps had for actually doing whatever the app does. Now there’s two, one for an app being triggered from Radial menu, and another for being triggered from the AppWheel. This allows app writers to deal with any requirements for different behaviour between the two modes and how they handle targeting.

Then we added some options for controlling where and when the apps should be available. The apps can be set to display in either menu always, never, always for certain target types, or by default (but still letting the player remove the app). There’s a new option for listing the target types (used together with the target type display option).

And finally, we added a setting for the cost of using the app…

Balancing app use

That’s right. Using the apps has a cost now. Here’s why:

As the radial menu pauses the game, the player would be able to do multiple interactions while the game time is stopped. This might be overly powerful, to the point of breaking the game’s balance, so we needed to add a reason why you would not want to, or could not, do that.

Apps now have a cost - defined separately for each app. In short, using an app means you are slightly closer to being tracked, thus limiting the time you can safely use the PRISM app and data view before you are kicked out or traced. This means you can only do a limited amount of hacks before you need to wait for the trace cooldown.

As a nice side effect, the different costs for apps will also help us better maintain game balance for apps that might be extremely powerful, for example by making their cost high enough that you can only use the app once before the cooldown kicks in. We’ve also discussed ways of increasing your trace time through different methods as you progress in the game, and this would work pretty well with the app cost. The increased time would not only allow you to use the data view longer, but also for longer or more frequent use of more expensive apps.

Save system

Our save system has had even more changes to it this sprint, we now support an unlimited amount of saves and the actual saves contain even more information.

We have a few different kinds of saves in our system:

Manual saves

Manual saves are what you might expect, they’re saves that are manually triggered by the player. The option to manually save is only available in missions and will save the player’s progress in the mission allowing players to pick up where they left off.

Auto saves

Auto saves can be created in a few places, they can be created when the player hits an auto save trigger volume. They can also be created when the player finishes a mission, this would update their global progress state and allow them to unlock further missions.

Checkpoint saves

We’ve updated our developer checkpoint system to use the game’s save system. The idea behind the checkpoint system is to allow us and modders to do iteratively test interactions later in their level. We can now press a button in our debug menu that will create a new checkpoint from the players current progress, these can then be easily loaded back up by the button below it in the debug menu.

AI

Harry and Rich have been focusing on the in-game AI a fair bit this past sprint. They’ve been trying to achieve a number of things including:

A squeaky clean up We’ve had a few little quirks of our AI that we’d been wanting to fix for quite some time now. This included the speed at which the AI characters would rotate when moving to a new location, and some strange animations issues that would cause the guards to “wiggle” when they climbed up stairs. Both have now been fixed, the latter turned out to be some maths that was slightly wrong as opposed to the guards’ insatiable need to dance! :)

More animations We’ve been going through our stockpile of animations, deciding on naming conventions and organising them. We don’t want to spoil anything, but we’ve got some really fun animations we’re looking forward to getting into the game!

Documentation

We’ve now set up and begun fleshing out our very own Wiki! The wiki will contain all the information needed to create mods for Off Grid, it will also be a place for users to share their tips and creations with other players.

As mentioned in previous blog posts, we’ve created some systems that generate documentation for our external tools - we’ve now extended that to create nicely formatted api documentation for the Wiki.

Using the same tool we’ve generated snippets for the lovely Atom editor, which is currently our recommend editor for creating Off Grid mods.

Organised



This month, Rob has been reorganising all the environment assets and props into groups and categories which are stored in scene based ‘Collections.’ This allows us to make levels easier and to see which parts go where by making use of Unity’s multilevel streaming functionality to drop in multiple scenes or ‘Collections’ of props and level building parts. It now gives an easy way to overview all of the available LevelKit peices. This will also help modders to start building more intuitively as they drag, drop, duplicate, and move the pieces they want, rather than having to remember the piece by name and search for it in the wider project.

A few extra props have been modeled for the Embassy. Stairways and props, a lot of the metal pieces have also been simplified too, making life a lot easier for building. Extra care has been taken to show how parts fit together, along with some prefab examples.

All in all, the LevelKit is really expanding quite quickly and feeling intuitively organised now, meaning there should be a huge variety of environments players and modders can build with these modular peices. The Collections also have an added benefit for us as developers allowing us to start to see what content is missing and or needed to flesh out our own scenes.



Making use of the Expanded LevelKit

We have been spending more time recently putting these new assets to work and testing how they peice together, and of course that naturally means we have been doing first passes and whiteboxing of new levels!

We have had a lot of fun playing aroud with and combining different building types and there is going to be some really impressive stuff that modders will be able to put together! The scale of some of these buildings and stuctures that can be built is fairly impressive.



Light hacking



There is quite a lot that goes into making the level more than just geometry, setting up objectives and hackable objects etc. One of the key components of level design now that we have the ability for the player to properly hide in the shadows is lighting the levels so that there is an interesting path of dynamic light levels that the player can use to progress through the environment. Not only this, but we want there to be certain networked light types that the player is able to hack and therefore manipulate the environment’s ‘stealth-ability’.



This sprint Pontus and Rich made some strides toward controllable and very soon, hackable, lights. Now modders and designers on the team can set up lights that are standard, as well as ones that are interactable. The interactable ones make use of code we wrote to make all the led screen and buttons in the game controllable, and essentially make it possible to script light levels and colours into certain actions that player can execute, where as a bog standard light switch on a wall, or and audacious hack on the level’s fusebox.





Other changes

Global sound system

We are converting our sound setup into something that makes more sense with our LevelKit and modding features, with smarter things happening behind the scenes and more generic, easy-to-use sound events exposed to the level creator. The design is already there, and in this sprint we’ve changed our interactive music setup to follow the new design. Atmos sounds will follow soon, in next sprint most likely.

UI/UX improvements and bug fixes

As usual, there were bunch more small changes all around the place. Most are not really worth mentioning, but here are some of more interesting ones:

Conversations can now be fast-forwarded (so you don’t need t wait for the delay between people sendng messages if you have already read the conversation, are not interested, or happen to be one of us testing the game and are tired of waiting for the conversation again and again ;))

More menus and UI elements can be closed with the Cancel button (Backspace/Right mouse button/B-button on gamepad)

UI/Menu system is now better designed to handle various things in the game opening different types of menus, which open their own menus, which open popup menus etc… The UI can now handle things whatever happens, and switches control schemes, game pause states and other things as needed.

Quick slot is now correctly reset when an item is removed from the players inventory

Whew! That’s that - May in a (long) nutshell. If you’ve read start to finish, you’re a champ and we cannot wait to have you playing Off Grid!

