Friday 9 October 2020

Sprint Roundup: Meta work

Welcome friends, time for another sprint update!

In the last couple of sprints we did a fair amount of checking existing game systems, making sure everything works as intended, and adding some long-planned polish here and there to make those existing features look and feel better. Most visible changes from player's perspective would be improvements to how meaning and use of metadata is communicated to the player, with better messaging about what data has new metadata, making sure player knows when they gain new metadata, and making the effect of collecting data about someone more visible in the UI.

One of the improvements we did was the addition of the save slots, we believe that this change will make the save system cleaner and quicker to use. Each slot (the current number of available slots is 3, but that value can be increased before launch) can have one manual save and one auto save, also the difficulty option will be associated with a specific slot, to give the option to have different game states with different difficulties at the same time, every other game option will be general and not associated with a save slot.

Improving the AI system is another important feature that we worked on in recent weeks, it's still a feature in development so we will talk more in-depth in the next sprint roundup, but essentially we felt the necessity to change the NPCs behaviour in the middle of a mission in a more flexible way, using the specific agent Lua script, doing that in an easier and transparent way. This will be a powerful tool to us and modders, to change the AI in a more dynamic way, but also it will help us to debug and improve the NPC behaviours in a faster way. For example, with this we can give a NPC a taser in the middle of a mission to attack the player. We'll have a full update on this topic on the coming weeks.

On the art front we have been importing a load of art assets into the project and reorganising our source files. We've been reworking all Existing LUTs, essentially cleaning up any old redundant character textures. 

Whilst we made these changes, we updated the wiki to reflect which LUTs are working and a preview of their appearance, this should help to visualise the vast variety of LUTs we have in the game for modders to choose from.

On top of all this we've been looking forward with some funding applications for some interesting post release collaborations we have in the pipeline. We've also done a lot of back end organization work, we moved cloud provider for our documentation for the studio, and it takes a surprising amount of time to make sure everything makes it's way over to a new system properly, and when you move stuff you realise you have a bunch or organization to do at the same time!

In the latest game and Levelkit build : 

So, what can you expect to see in the next build of the game and modding tools?
Content (Level Design and Art) 
  • Dynamic light cone mesh for flashlights (no more flashlights clipping through walls!)
  • New gates, fences, light models, concrete barriers, road/sidewalk parts etc added to LevelKit 
  • New character LUTs have been made based on the older designs that work with the new LUT template

Gameplay and Mechanics
  • All game systems will now only display a character's name if the player has actually learned the name from metadata or not.
  • Targeting system will show if a data point has new metadata the player hasn't found yet. (also cleaned up the target info window a bit)
  • Data download notification shows the amount of new metadata gained from the data.

Controls and UX
  • Save slots added

  • Improving and fixing various issues on the AI system such as NPCs being able to move form neutral to adversarial mid mission
  • Setting and changing NPCs actions and goals were improved
  • Cleaner NPC animation state machine setup
Modding and Lua API additions 
  • Changes made on agent Lua script to allow for more flexible modding of AI
  • Lua track for Timelines (run any Lua command from a timeline - DANGER!!)

Bugs fixed 
  • Character LUTs were not assigned correctly if only color or only smoothness/metallic was defined in mission Lua script.
  • SocialInventory was not assigned correctly so all collected metadata was just sent to void
  • Lua API was not handling null/nil values consistently, some API calls returning a nil value from Lua side as a nil, and others as null.

  • Funding applications for post release DLC
  • Cloud and documentation migration
That's it for this update, we'll be back again soon with more, in the mean time stay safe folks!

If you haven’t already - be sure to wishlist Off Grid on Steam - each wishlist makes a big difference to us, and we really appreciate your support!

Wednesday 29 July 2020

Sprint Roundup: An iterative process

Devblog time!  From making all characters playable, API improvements, and an overhaul of our setting systems, we've packed a lot in to the most recent sprints this summer. 

New character spawn system

On the last sprint roundup, we talked about the new NPC creation system - a more flexible system to create various types of NPCs.  That was the phase one of a bigger goal:  to improve and simplify the process to spawn all characters - NPCs or playable ones.

The second (and final) phase was all about making all characters playable!  Now all character prefabs are generic, and every character can be a NPC or playable.  To change between these two states now just requires defining in a single line in the mission script, which, for examples, looks just like this: characterType = "npc". The game will automatically handle add the needed components and connections to make the character controlled by the player or the AI.

This means you can now easily make a mission in which you can play as a guard and Joe can be an NPC!  It's a big change that gives so much more flexibility when creating new missions.

Joe tazering a guard

Look Up Tables

We also reviewed how the characters are currently implemented, and decided how we want them to work with regards to the character look up tables. Following this, we decided to create a new LUT template that would work for all characters whilst still enabling a variety of characters to be created from a single mesh, which will also take into account the new head prop system. For this system to work, a new UV layout has been created, which has been a great opportunity to review all existing characters and tidy up any issues with these characters too. 


There's been a lot of work getting Timeline to play nicely with spawned characters and our Lua API - so recent work has centered around implementing the playable sections of the intro to the game making use of this. It's been an interesting process with lots of back and forth as Timeline really does seem like a tool made for making animated movies in Unity rather than controlling entities in a game engine between playable sequences. Writing "playables", the Unity components needed for scripting different functionality into sequences, is a little arcane too!  None the less, we now have something that is looking pretty good and sets the whole game up nicely.  We think you are going to enjoy this!

Joe in kitchen, Jen coming down stairs


We improved the settings system, and added new settings to give players more options and to add other important small quality of life features.

OFF GRID main menu image

The new and updated settings are:

  • Vibration: enable or disabled the controller vibration
  • Auto hide mouse:  the game have full control if the mouse cursor is shown or not, dependent if the player is playing with a keyboard and mouse or a controller
  • Mouse locked [only available if the "auto hide mouse" option is disabled]: Always show or hide the mouse cursor
  • Follow camera: if enabled, the game camera will always follow the player character
  • Brightness: increase or decrease the screen brightness
  • Resolution: select the resolution in a list of available ones, the user screen native resolution is set as default
  • Fullscreen: selected between fullscreen or window mode
  • Locked framerate: it is possible to play the game on a unlocked or a locked framerate
  • Vsync: the options here are off, on, or half
  • Anti aliasing: the available options on this field are FXAA (FastApproximateAntialiasing), SMAA (SubpixelMorphologicalAntialiasing), TAA (TemporalAntialiasing) or none
  • Anti aliasing quality: the player will also be able to choose the AA quality level if it's selected FXAA or SMA on the option above
  • Shadows Quality: it's also possible to select the shadows quality (high, medium, and low) or disable it completely

Quite a list that is!  All together, they will certainly improve user experience. 

API Improvements

Making games is very much an iterative process, often requiring going back a few steps and re-doing what you have but in a slightly better ways. Over the development, we've grown our Lua API a fair bit, and sometimes things haven't ended in the most logical place, or with the most descriptive name. And in quite a few places we've eventually come up with a more convenient, or more flexible, way something could be done instead. So, while we still have a chance to make massive, breaking changes to our Lua API without annoying all the modders by breaking their mods, we've done a bit of an overhaul of our Lua API in general.

In short, the API is now less verbose, more consistent in its syntax and its use in various Lua scripts in the game, automates certain setup tasks better, removes some easy chances of making mistakes in your scripts, and after all the changes, our mission scripts shrunk in size by about 25%, so you'll probably end having to write less code to make your mods as well!

In summary

As always, a quick list-based summary of the progress:

  • Finished the new spawn character system
  • Bugs fixed and polish on characters and save systems
  • Character LUTs

Content (Level Design and Art) 
  • Intro cutscene playable and tutorialised
  • Testing the Unity Timeline integration with our Lua API and extending it to fit the implementations we need it for
  • Work with virtual cameras and targeting in Intro to make them behave nicely now they are following dynamic spawned targets
  • Continued work on the harbour level
  • Harbour props - creating fences, gates and cranes to help make the harbour feel more authentic
  • Adding head props to the unity project

Controls and UX
  • New and updated settings

  • Writing custom AI Agents for intro level interactions

Modding and Lua API additions 
  • Updated some existing levels to new Lua API
  • Added in-game debug UI with support for executing Lua commands while testing the game/mods

Bugs fixed 
  • Lots of generic clean-up and fixing various small bugs

As always, thank you for reading and following along on this development journey!


If you haven’t already - be sure to wishlist Off Grid on Steam - each wishlist makes a big difference to us, and we really appreciate your support!

Friday 12 June 2020

Steam Game Festival Event Lineup: June 16th - 22nd

OFF GRID is part of the Steam Games Festival:  Summer Edition, now running from June 16th to 22nd!  The date may have changed, but our plans have not!

If you recieve our newsletter, you will already be in the know - if not, that's a gentle reminder to go sign yourself up now.  :)

What can you expect during the Steam Game Festival starting Tuesday?!  Plenty!  We've got SIX ways to for you to join in the fun: 

1.  Download and play a free demo of OFF GRID!

Starting 10am PDT, June 16th - 22nd

Yep, you heard that right!  It's time limited, but it will be there for you to get a taste.  Head on over to the OFF GRID Steam page and get your fix!

2.  OFF GRID Developer Q&A

Tuesday, June 16th, 10am PST / 6pm BST

Questions at the ready, because you can ask us anything!  We'll be taking questions in the live Steam Broadcast chat AND via reddit

3.  Chinese OFF GRID Play Along

Wednesday, June 17th, 1pm BST / 8pm CT

Join us for a play along Q&A session for the Chinese audience with our fried Hao who is keen to help OFF GRID reach his home country of China.  He'll be leading a Q&A session for us and translating the interview into Chinese live as we play through the demo.

Hao runs his own small studio, Flying Hammer, and is a concept designer, game developer, animator and entrepreneur working in both the UK and China, making educational games and animations.  He is passionate about gaming culture exchange and helping get indie games like Sable, and now OFF GRID, seen in his homeland!

**Disclaimer** At the moment, OFF GRID isn't translated to Chinese, but we are keen to help support Chinese players with the limited resources we have as a four person indie studio.  We have translated our Steam page to make a start in this direction, and have modding support for the game that we hope can mean at the very least, that Chinese players will be able to add Chinese localisation mods of OFF GRID to the Steam Workshop.  We will do our best to aim for an official Chinese Translation of the game at some point post-release. 

4.  OFF GRID DevStream:  CCCamp Mod

Thursday, June 18th, 12 noon PDT / 8pm BST

Part of our reguarly stream series - we'll be back with the infamous and Mitch Altman - a seriously cool hardware hacker and inventor of TV-B-Gone on the lineup!  We'll continue modding & making the hardware hacking area in our CCCamp mod, which Mitch runs IRL.  

5.  OFF GRID Livestream + Showcase:  Steam Game Festival Edition

Saturday, June 20th, 12 noon PDT / 8pm BST

This special edition livestream will be a chance to:
  • explore OFF GRID's unique mechanics and how they were created
  • speak with the hackers who have consulted on the game for realism and feature as characters
  • showcase OFF GRID's moddability and how you can craft and contribute to the stories within the universe

6.  Hacker Hangout Livestream

Sunday, June 21st, 12 noon PDT / 8pm BST

A chance to just hang out with the hackers, hactivists and heros that inspire OFF GRID.  We'll do a livestream so that you can see more of the game, and we can chat about all things hacker culture as we do.  Ask your questions in Steam Broadcast chat, and we can have a good ol chinwag about all things that they can legally answer.  We'll be joined by Lauri Love, pathfinder,, and more!

We stream direct from Steam Broadcast, as well as Twitch and YouTube - be sure to join in! 

We're looking forward to the start of the festival!  In the meantime, you're welcome to join our Discord if you haven't already.  We've got a good group of people - they're a sharp, fun bunch - be great to have you in there, too!



If you haven’t already - be sure to wishlist Off Grid on Steam - each wishlist makes a big difference to us, and we really appreciate your support!

Wednesday 20 May 2020

Sprint Roundup: Spring Character Cleaning!

May we welcome you to the latest OFF GRID devblog!  As always, there are continuous improvements being made, and we hope you enjoy hearing about it all. 

Improving User Experience

The last two sprints have seen improvements in the user experience for players, but even more so for modders.  That also means it helps us in making content - as we use the same tools ourselves.

Most noticeably for everyone, the look and feel of the data view has been improved.  This makes it easier for players to find and access the data they want in the levels, making the whole experience of targeting data feel better.  For anyone with access to our LevelKit and modding API, we have been rewriting lots of our API to simplify the scripts, make sure different functions use consistent syntax, and can be used everywhere.  This reduces the amount of information modders need to write, and automates more of the level setup steps on engine side to reduce the amount of things content creators need to handle.

Character Updating

Another major task has been coordinating work by a few of us on characters, their accessories, LUT colours, and how the prefabs are organised for all of this.  We finally removed the last remnants of prototype characters that have been in the game since day dot too.  It has been liberating to do some spring cleaning!  This has also meant that the full remit of characters in all colours, shapes and sizes are now implemented across the game, AND they can be tweaked and modded to your heart's content!  Next up is fleshing out the rest of their personalities and conversations!

New characters have entered the building!
Character customisation - accessories, hair, and colours can be changed.

NPC Direction

NPC direction has been improved when performing certain actions, like interacting with a device or walking through various points.  As the navigation mesh system isn't made to have an agent to face a certain orientation or to be in an exact position at the end of its path, it's needed to tweak the object direction and position with code, and at the same time control the animation manually to make everything seems as fluid as possible.    The facing orientation is really important in patrolling because it's a game design pillar for stealth games to control where the player can navigate through a level.  It's also important when the player is interacting with devices - for the animations to seem correct, the NPC needs to be in a certain position facing a specific direction.

We also added a gizmo to help us visualise in the level each direction the NPC should face at certain points such as interacting with interest points, as you can see in the screenshot below:

Arrow indicates the direction this non-playable character should face.
This helps us and modders to line up the characters correctly when setting up the patrol routes and interactions.

Improving and cleaning the NPC creation system

This is really Phase One of a bigger feature and task that we are going to talk more about in the next blog post, but for now we are going to focus on the NPC part of it.  We are developing a more flexible NPC system to have various types of NPCs with different action, behaviours, or items.  It's really important to have diverse levels, and also to give good tools for the community to create dynamic mods.  In terms of developing the game, this is also really helpful to us because it's a good opportunity to improve and clean some code.  This has already resulted in improving the AI search actions and debugging the code in a faster way.

What will you see in the next build? 

Expect a new build for all of you FIRST ACCESS folk next month - we'll give you a heads up as soon as it's done.  Here are some of the changes you can expect to see:

  • All protoype characters removed and new characters implemented across the game
  • Characters available in all colours, shapes and sizes now in game - ready to be tweaked and modded as you please
  • Improved creation of NPCs:
    • Ability to create different types of NPCs with various actions and behaviours in a flexible way
    • Some components are added in runtime, using the information in Lua scripts
    • Simplification, merging, and removal of some NPC scripts

Gameplay and Mechanics
  • Support for scheduling things to happen based on date / time (in addition to the existing "do after X seconds" option)

Controls and UX
  • Fixed issues with data view visible range and actual targeting range not matching
  • Improved visibility of data & data trails
  • Fixed data view range not always resetting to minimum correctly
  • Fixed data view shader using negative transparency with missing/bad UV's on meshes

  • New system to control the NPC direction at certain actions:
    • It improves the movement before the NPC interact with a device
    • Gives more control in the guard's patrol
    • Gizmo added to visualise the desired direction 
    • Cleaner organisation and seperation of NPC functionality, which should make debugging various parts of the codebase easier

Modding and Lua API additions 
  • Lots of Lua scripting API cleanup, with more consistent and less verbose syntax for things
  • Requirements for level creator / modder to set up certain things have been removed and are now handled automatically instead

Other tasks and upcoming events

  • Rich did a presenation on modding and mod communities for Tentacle Zone :  
  • We submitted to Steam Games Festival - fingers crossed!
  • Moving and tidying of all Semaeopus and OFF GRID organizational documentation to a new system

Tonight (Wednesday the 20th), we will be demoing OFF GRID and our Milliways mod during the World Game Night:  Made in London Edition event put on by Playcrafting.  If you're free, join in - this session is all about UK games and their makers!   Check it out: 

Thanks for reading!

If you haven’t already - be sure to wishlist OFF GRID on Steam - each wishlist makes a big difference to us, and we really appreciate your support!  Thank you!

Monday 23 March 2020

Sprint Roundup "Swimming up the features stream"

Wow, where has the last month or so gone?! We skipped a test sprint (and a blog post, apologies) to get a couple of features pushed further along and in that time the whole world has set on fire. However, we area lucky in working with computers, and although not completely unaffected we are managing to crack on with dev, so here is your long awaited Sprint Update! We hope, wherever you are in the world, that you and your family are holding up ok, hopefully a little insight into the mundanity of OFF GRID's digital universe will provide some respite for your weary mind in these strange times.
Trialing and tweaking new key art