Tuesday, 5 December 2017

Dev Blog Post 5.12.2017 - Social Engineering and Distracting Noises

We’ve been working with a bit smaller team for this sprint, so this is going to be slightly shorter blog post than usually. And we’ll switch the format slightly as well, so you’ll get a section from both of us telling about what we’ve been up to…


My first month has flown by! It’s been great to get started and become acquainted with Unity, which has impressed me. I started off on Off Grid by poking around the existing code, and playing the demo level, which gives an good overview of where the project is. After that I was forced to do some real work; first of all, I exposed the ‘Noise’ system to Lua, meaning modders will be able to play sounds that the AI will investigate. I’ve also fiddled with the camera, with the Lua setup, the wiki, and a fair few under the hood changes that hopefully will help us create new content more quickly. Exciting times ahead!


Character profiling

We had already previously converted the text files we use to describe each character’s personalities and background information from old XML files into Lua. But as we'de designed some of our data mechanics, and especially the social engineering aspect of hacking and privacy bit further, we realised the profile format we had would not do the job.

So, in this sprint I’ve worked on re-designing the character profiles to use a tag-based system that allows us, and the modders, to easily add pretty much any amount of background information about the characters, and tag that data in a way that lets us then attach those tags to different data points, files and whatever inside the game, and hook it into the AI’s behaviours easily.

(and same as with our mission progression system and many other things, the design goals and explanation how it works ended being much more complicated than the actual implementation, so no need to worry, this is really simple system for modders to use and should be very extensible and flexible for all the crazy weird hacking stories and tools modders might come up with which we never even thought about…)

While doing the required changes for this, I also added few quality-of-life improvements, so the levels can now automatically load character profile files, and the image files used for character colour customization, both from the level’s own folders and from the Common folder used for sharing things that might be used in multiple levels. This means that we don’t need to duplicate character files to each separate level where the same character might appear, and also modders will have easy access to some pre-made characters they can use in their own levels without having to even bother with the actual character profile files until they want to create some new characters of their own.

Sending SMS, with Lua

We are then using those character profiles to generate text messages (and eventually e-mails, and other files as well) that get sent to all the characters, and that the player than intercept, read though, and use to learn about the characters (maybe to figure out how to distract a specific guard, or to help guessing someone’s password, and so on).

This is nothing new, the SMS system has been in place for long time already. But the source file we used for the SMS templates was the last remaining XML file in the game, so of course that had to be converted to Lua as well… If nothing else, it’s more consistent and easier for everyone to deal with the same language throughout the project, but it’s much more human-readable syntax as well.

To take things a bit further than that, we thought that maybe the actual code used to generate the messages could also be moved into Lua. This certainly isn’t something you’d want to mess around for every mod you make, as it’s a bit more complicated than the rest of our mission and character files, and the actual content you see in-game can be changed easily by just creating different character profiles anyway. But exposing that code to the modders might open some interesting opportunities, maybe for localizing the message generation to some language with different grammar than what English has, or to build something more complicated than what the base game needs to go with some awesome mod you are making. We’ll see what happens!

Oh, and of course I made sure both the template file and the actual message generator code can be loaded from both the Common folders as well as from the level-specific folders, just like with the character profiles.


That’s everything for now! We’re not quite sure yet if we’ll have a short sprint (and one more blog post this year) or if we should just make it a long one and return back to you in 2018! Either way, we’ll make sure to let you now when the next blog post is out!

Saturday, 11 November 2017

Off Grid Development blog 8.11.2017 - Changing Times!

The times-they-are-a-changin.’  New horizons, a shake up, big things happening - this has been a heck of a sprint!


Completely unaware of our social media surroundings, Rich managed to spend a good portion of this sprint during October whiteboxing and completely miss the whiteboxing trend on Twitter that was #Blocktober! Nothing nearly as fancy as the timelapsed art passes from the Naughtly Dog team on how they constructed key hero sequences in the latest Uncharted, but we do have a new building for the intro scene in the player’s apartment. If you haven’t seen this yet at a demo I won’t give away any spoilers, but this level is where your hacking journey begins!

Indies Unplayed

We were extremely fortunate to be asked along to Indies Unplayed at Secret Weapon Loading Bar in Stratford. It’s always great to show the game and get player feedback. Many thanks to Lauren Francis

for having us along, it was a very cool little event and we had some really inspiring titles along side us. Below you can see a player learning the setup to our hero’s story in the intro cutscene we are currently making playable.

We got to play some fun new indie games and catch up with some old friends too, including old chum Tim Constant, who we last saw at Nottingham Gamecity in 2013!!!
Tim is working on a very cool dystopian job sim.  It’s a
#PapersPlease-like game, where you play an immigrant bouncer in a post-Brexit apocalypse:

‘Settings’ it up

It’s been quite short and quick sprint, so there are no new amazing game features to talk about from Pontus. But as promised, our settings system has now evolved from a bunch of background systems and code into an actual menu. With some actual settings you can adjust!

The graphics will definitely need more work, but the plan is to fill in more options and then do a second pass on the artwork and layout to make sure everything works well with the content. For now, everything is functional at least.

Web work

Apart from that, things were polished up in the web side, with some imrpovements and additions to our wiki and to automate our newsletter. That’s going to make our life easier, and hopefully also help any players/modders to find the right Lua API and instructions for how to set things up in LevelKit in the future. I would say “go and check it out” but there’s not really much interesting things in the wiki yet, at least unless you are one of the lucky ones who have access to our builds and the LevelKit already. In which case, you of course should go and check it out to get you started testing how to create your own content for the game!

No funny bugs fixed by Pontus this sprint, and no interesting game design work either. But there definitely will be next time, he’s already spent the past few days with XMind open for plotting some pretty big changes for the game…

Mod testing

This sprint Josh, our modding and level design intern, challenged himself to build a level using the modding tools. The aim was to learn how to build a typical level with a focus on the Lua scripting side of things rather than art, and then take those learnings and see where he could fill in the gaps on the wiki that he found wanting.

We’ll let him tell you a bit more himself though:

“So I started out by blocking out the map that I wanted to create. Once I had the basic level that I was happy with I got stuck in with the Lua scripting with which I managed to learn a great deal upon completion of the level.

One of my favourite parts of creating the mod was the conversations, as it was super simple to create but also great fun generating branching dialogue between characters.
Following this, I began work on a guide to building a level mod which has been added to the wiki.This is something that I felt would be important for potential modders to have to help make the modding experience more accessible.

This also resulted in a few new pages being created to explain some sections not covered on the wiki yet, such as the ability to add characters to your level. This is a very exciting and interesting feature which will allow you to create many gameplay elements, from conversations to patrolling guards.

I also had the pleasure of testing the new ability to upload mods to the steam workshop using the Level-kit tools.

Shortly after that it was decided that we should create a mod level that people can download that would demonstrate some of the pre-made devices that any modder can essentially drag and drop into their own mod. It will also be playable which I will turn into an interactive tutorial of how these devices were made to help new modders create their own from scratch.”

Farewell Harry!

Harry had his last sprint with us this month as he is moving to join the development team at Unity, but we made sure he had time to part with a gift for any of our followers who are devs interested in making their games moddable too.

In his time on the team, Harry’s done great work pushing modding in Unity 3d,
and so we’ve open sourced his work on the Lua framework that makes Off Grid moddable, enjoy!


Out with the New in with the Old ;)

And with our youngest team member Harry heading to Unity we have gained the wonderful Steve Allen in his place. Steve comes with a bundle of  AAA and Indie experience, so much so that he qualifies for ‘industry veteran’ status, and we are pumped to have him aboard the good ship Semaeopus. I’ll stop rambling and let him introduce himself though:

Hello! I’m new here. I’ve joined the Off Grid team as a programmer, though will no doubt stick my nose in elsewhere. I’ve been programming games for, well, rather a long time, and am really excited to be part of the project. There’s lots of interesting stuff that still needs to be done and it’s already been a welcome change from the larger, corporate games I’ve been working on over the last few years. And who knows, next time I write one of these updates I might have done some work! - Steve

You’ll hear a lot more from Steve in the coming sprints, he’s already made good strides into impletmenting and extending new features in the Lua API for modders to play with, so watch this space!

Fixes and additions:

Harry’s last couple of weeks were also a great opportunity for us to dig into some of the bugs in our backlog that haven’t been top priority, but would be welcome fixes with a little effort. We had a fantastic flurry of small fixes from the team, with Harry leading the charge.

Main game:

Messaging with CryptoChat

We setup a small notification to say that a character is typeing while you are waiting for them to respond to you in a conversation. It’s essentially a ‘Smedley is typing’ animation much like you’d see when using a messaging app like whatsapp or imessage.

We also and fixed the pause time between messages, which just needed a little finessing to feel more real
And most importantly, we set up ‘B’ to skip single messages instead of all of the incoming messages from another character.

Include Mods in use, in save games

We now have save games recording what mods you have subsribed to so you can progress with your mods intact!

Saving NFC

NFC data is now being saved correctly.

Trailer video

We fixed a strange long wait at the end of our trailer that had been bugging us.

Player Phone

We fixed a bug to do with interactions when the player phone didn’t appear when doing swipe interaction or scanning things.

Stuck Running

We had a somewhat funny but awkward bug in our animation state machine where the player can get stuck if you were crawling and spammed the run button while getting up - the player would get stuck running in circles!  That is now fixed ;)

Look around you

The player character’s look-at IK needed more restriction on target height so that you didnt look at interesting objects on the floors above or below you.

Invisible walls and soft bathroom sinks

Lots of missing colliders were fixed.


UV Warning

We updated asset importer post processing script to warn about missing normals and UVs on new models. This means as you are modding and making new geometry, the LevelKit tool will tell you if it is missing anything that could cause a later error.

Mod Content structure

We re-structured level directories so that the content a modder makes is in a neater structure.

Non Steam works / DRM free mod exports

Added Export as Zip option to build tab so that you can upload your mod anywhere for anyone (with a copy of the game) to try it out.

That’s all folks

Lots of big things happening so we’ll look forward to catching you next time.

Pontus, Rich, Sarah, Steve & Josh

Tuesday, 24 October 2017

Sprint Update 24.10.17 - Back in the Trenches

The sprint since EGX has been an interesting one.  Loads to follow up on with the multitude of interesting folks that took an interest in the game - including a whole raft of journalists, podcasters, Youtubers and Twitchers.  Have you read our EGX round up?!

But now it’s back to the trenches - that’s what you are here to read about anyway - where and how we have been getting our hands dirty!

Friday, 20 October 2017

What do you call one of the top ten best games at EGX?! OFF GRID!

Yes, you read that right!  Off Grid snagged a pretty sweet accolade over the four days at EGX:  Eurogamer staff rated Off Grid as one of the top ten games on the show floor.  Read the article in full here.

Here’s the write up on Off Grid (complete with a pretty accurate description of Rich and his conversational skills!):

While that accolade was certainly the highlight of our EGX experience this year - plenty of other great things happened over the four days:

Off Grid’s Twitch Debut

Thursday kicked off with an interview and live play through of Off Grid on the Twitch Stage.  Rich talked to CaffCast and Spamfish in a livestream to over 2000 viewers - a first for both Rich and the game!  Watch it here.

We now have our own twitch channel - be sure to subscribe!  Rich took the opportunity to do some behind the scenes streaming while at EGX, so go have a gander at those if you’re interested.  In the future, we hope to use it to do playthroughs of Off Grid, talk in more depth about our development process, and perhaps about some of the inspiration and influences behind the the game itself.

The Geek Show

Pontus (not often seen on camera!) was interviewed by The Geek Show for their podcast and YouTube channel.  Get your glimpse of one of the powerhouses behind Off Grid here:

Friendly banter with the NCA

The National Crime Agency (NCA) had a stand at EGX and were handing out helpful information to all inquisitive passersby - including literature on the Computer Misuse Act and an NCA challenge.

Here’s a little closeup of their handout:

Big Red Barrel Duet with Yucatan Game

Fellow indie dev and Leftfield Collection exhibitor, Joe Bain, and Rich Metson were interviewed by the kind folks at Big Red Barrel.

They’ve put together a special EGX podcast, jam packed with all their favorite games.  Listen in at about 56 minutes for the very best bits! ;)

What else did we love about EGX?

You’re right, we already said the highlight was being picked as ONE OF THE TOP TEN GAMES OF THE SHOW!  :D  That’s totally true - it is awesome. 

Off Grid was also highlighted in OuttaSite’s indie picks at EGX, and the VGChartz write up, Games to Watch Out for from EGX.

But what else did we love about EGX and our participation in Leftfield Collection?  Watching YOU play the game!

It’s always a treat to see how players make their way through the latest build - taking note what they find interesting and engaging, and what might be quickly passed over.

This year marked ten years of Leftfield at EGX - that’s ten years of showcasing great indie games alongside all the big hitters - thanks to David Hayward for all the effort supporting indie developers!

Wednesday, 20 September 2017

Sprint Update - 20.09.17 - Straight Outta Leftfield!

Phew!  We’re just about to pack up and head for Birmingham, as Off Grid has been selected as part of the Leftfield Collection at EGX!  We’re SO excited to be showing Off Grid at EGX and are looking forward to players responses to the game so far.  If you’re at the show, please come along and say hi!

Also at EGX, we will be livestreaming a playthrough of Off Grid from the Twitch Stage on Thursday at 11:30am (BST).  Follow along online at:  twitch.tv/twitch.

We’ve been toying with the idea of starting a twitch account for some time - and with the invitation to livestream from EGX, we finally have.  Very soon, we’ll be streaming live from twitch.tv/semaeopus!  Follow us as we chat through our monthly sprint updates, play through some of the games that inspire us, and bring in other indie devs to talk about game dev life. 
In case you haven’t heard (we hope you have!) we are still looking for a C# Unity Programmer to join the team.  We’ve extended the application deadline to Monday 25th September, so if you’re a UK-based games programmer looking for a change, we want to hear from you.  If you’re at EGX, stop by our stand in Leftfield to say hi, talk to us about the position, and play Off Grid for yourself before you get that application in!

Now onto the sprint!

Rebuilding the harbour

Just a day after we began this sprint, we heard that we’d have a place at the Leftfield Collection at EGX.  So we sat down to re-plan our work for the sprint with that in mind.  One of the things we wanted to get working for EGX was the harbour level.

We’ve had some bare bones prototypes of what the harbour would be for a long time now, and a more complete, but still mostly unplayable whiteboxed version of the level for a while.  So it was time to start cleaning and refining that version into something with a bit more gameplay.

First task was to deal with the player path though the level, so we could guide the player from one objective to the next and make sure we can also place a few obstacles on the way.  The draft level was pretty much just open space, with some late-level locations close to the start, and very little for the player to do around the rest of the level.  Cue moving a few buildings around and erecting more fences to gate the player’s path to different locations!

Add a couple of passes of lighting (with a few issues of lightmaps not loading correctly from AssetBundles sorted out); a few hours of placing colliders on objects to block the player from falling off the map; and a few days of writing mission objectives, devices, setting up triggers and so on, it’s starting to resemble an actual mission!

There were a few additional problems we needed to sort out for this level as well.  Nothing too complicated, we just needed to create an ocean, and the sky…

It’s a harbour, so we expect to see some water.  Which means we had to create some low-polygon style animated water in the level.  With a bit of modelling, a bit of C# and a custom shader to go with it, it’s now working reasonably well.  We’ll likely want to refine things later, especially if there’s ever going to be a daytime level, and just to move more of the water animation to shader code.

When it comes to sky, we obviously couldn’t use the same city skyline skybox we use for the newspaper office level, as half of the sky is supposed to be over ocean.  This was a fairly quick fix - we have a Blender project for rendering HDR panoramic skyboxes quickly - we just had to remove some buildings and add a lighthouse.  Lastly, we needed to change our fog setup a bit to fade out the ocean at the skyline nicely without making any far-away geometry stand out from the background too much.  That pretty much just meant having to use a black fog at far distance.  This works great for the city sky with black ground and buildings around, and looks still reasonable over the ocean as well (even if not completely realistic).

Drones and navigation

A big part of our plans for the harbour level is using drones to patrol around the area.  The plan was to get our old drone prefabs, make sure everything is up-to-date and works with everything that has changed in the game since the last time we’ve used them, and drop a few in the harbour.  Well, of course things don’t always go as planned!  The drone AI’s patrol behaviour is still a bit unreliable, but we still got something out of it in the end.  The patrol issue doesn’t seem too complicated either, so we’ll surely figure the problem out after EGX.

Apart from the drone itself and the AI, we needed to set things up so the drones could be restricted to certain parts of the level.  Basically, only in places where there’s enough room for them to fly.  That called for some more navigation areas to separate “walkable” areas from “flyable”, and of course the “walkable+flyable” which is fine for both humans and drones.  As the drone patrol routes are planned on the fly-based on data points in the level, and the player is able to add, remove and move those around, we needed to add few checks for the AI to figure out which patrol locations it can actually reach, and which ones should be ignored.

A nice extra from all this was, believe or not, it all helped improve our lighting in the levels as well!

We are using an automatic script that places LightProbes around the level to provide lighting for any moving characters etc, and also to provide the light level data around the level for our shadow/light stealth mechanic. And that script uses the navigation mesh as starting point. So now that we had some areas marked as flyable, and thus with more vertical space, we could easily use that information and place secondary set of LightProbes a bit higher in those places.

While doing that, we also managed to optimize the LightProbe placement code a fair bit as well, and that’s a definite bonus since there are quite a few of them in each level.

See all the yellow dots connected by the pink lines?  You don’t want to place them by hand. Any speed up in the placement code is worth it!

Other changes and Bugs Fixed:

  • New UI sounds. Loads of them. We got our sound designer to do a pass of new sound events for each specific part of the user interface, and now are no longer recycling the same button click sound for everything.
  • Apps with a use cost could not be turned on if the SPECTRUM app was not turned on first. Now we assume that if data view is off, you can certainly afford to use the app. (We might need to revisit this later if we add apps that cost more to use than what you can afford by default.)
  • Data meshes of data points placed in levels at design time were offset from the actual data point position.  (We had changed some geometry layers around since the data point prefab was made, and the code that moves overlapping data points away from each other was checking for its own location and not just other points)

Whats ‘Appening

Harry’s first port of call for the Sprint was to update the app system.
  • Apps can now have multiple actions and options
    • These are presented as two sub menus. We’ll be getting into this in future posts when we show you some new incarnations of the apps you might already be familiar with if you have played the game with us at an expo or a modding workshop.
  • Apps can now also react differently depending on what kind of targets are passed into them
    •  So apps can display different functionality for devices vs. data, and even different types of data
  • Now app are much more flexible and extensible
    •  This is a fairly in depth point, but it’s safe to say that this opens up a myriad of things modders can call and do with the rest of the API when modding their own hacking tools.

  • New app for interacting with drones called FlySwatter
    •  This used all of the above and was put in as a working example of how to use the new systems, a kind of test case. It might not stick around as a final tool in the game or it might evolve and merger with other tools, but that is what is great about the Off Grid modding system there is a lot of space for interesting tools to grow. 
  •  Continued work on the save system
  • We faced a few last minute headaches, but we have got autosaves and checkpointing working nicely ready for the EGX show floor.

New team member!

Josh has joined us as a design intern - he is testing modding tools, helping with documentation and helping to design hackable objects.  We’re really pleased to have him on board and hope you all join us in welcoming him to the team!

Here’s a little from him about what he’s been up to:

Hi there, my name is Josh and I have been working on the Off Grid mod tools
producing some light-hearted hacks - primarily making Joe his very own
disco room where he can party the night away with disco lights and lots
of balloons!

This involved me taking a look at the pipeline for adding custom 3D assets into the levelkit and getting acquainted with lua, both of which were a very enjoyable experience, and you can see the results for yourself! While fairly new to the modding workflow, I have had a blast with it so far and I am definitely looking forward to making a full story-based level in future.

Speaking of levels, I have also had the pleasure of checking out and testing the demo level of Off Grid!

During testing, my aim was to identify bugs and explain to the team the steps to recreate specific bugs. For example:
  • missing text on main menu - this was a tricky one that only appeared at certain resolutions, but was easily fixed by the team once
  • menu navigation with a controller - as most people
    will be playing Off Grid at EGX, I thought it would be important to test
    the controller experience, which lead me to a few navigation issues when
    using UI menus

  • missing colliders:  I spent several hours walking around the demo level trying to identify anything that I could walk through

When working my way through the Off Grid mod tools, I was able to give feedback on the wiki and add to a few pages myself. I was responsible for adding the Art Pipeline to the wiki in order to help modders to add their own works of art to Off Grid Levelkit. I am absolutely loving putting some of my skills into practice and helping with the project - for me its a dream come true!

Characters Ahoy!

The team spent a chunk of this sprint getting together new ‘docker’ type NPCs for the harbour level, with a little help from our good friend Silvia Bartoli.  There was some wrangling to do as the NPCs are quite a complex array of components and AI behaviours and actions. They require ‘Ears’, viewcones, personalities, all the AI actions available to them, patrol routes, and related props like flashlights or tazers.

We’ve also got a new character editing ‘tool’ for re-colouring the characters.  This guy above is making the most of the metallic values on the colour lookup tables. :)

We specifically designed the geometry of the characters to make it easy for players to make distinct variations.  Above, you can see the same character with a different colour lookup table applied, giving him a different skin colour, hair-do, and even profession - all done with a couple of switched textures.

We have also added blend shapes to the characters that players and modders in future builds will be able to control via lua - so when they spawn an NPC, they can define the model type, their weight via blend shape and their colour with colour lookup tables and textures.

The Experience

As mentioned, we spent a lot of time on mission scripting and refining player experience ahead of EGX - this meant new mission content for both the new Harbour level and the older Apostle HQ.

You can see the newly re-implemented drone above. These are now spawn-able through level kit as a guard type.  We also put in a bunch of smaller and less noticeable gameplay script fixes to make the conversations read better and player experience smoother, including a conversation introducing the
light meter tool for sneaking through shadows.

PR You Ready?!

Rich has organised the next London Indies meetup on Friday October 6th, featuring Stefano Petrullo from Rennaisance PR.  He’ll be joining us all the the Loading Bar in Dalston to talk about how to market your games, how to engage a PR firm and evaluate whether they can
add value to what you are doing, and how and why, in his view, events
are so important for indies!

It’s a 4pm start on the Friday and a nice way to wind down a work week with your fellow game devs.  Check out all the details and RSVP here - look forward to seeing you!

And speaking of marketing - did you receive the very first Off Grid newsletter this month?!  If not, SIGN UP now!  What are you waiting for?!

Friday, 1 September 2017

Develop 2017!

This past month Rich and I attended Develop conference, which is one of the UK’s largest game developer conferences. I’d attended Develop once before about 5 years ago when I was a student, in fact I remember bumping into Rich there and having a catch up! The conference is a magical blend of socialising, knowledge sharing and unofficial indie dev football matches.

The Talk

I was lucky enough to give a talk called “Making a hacking game hackable: An approach to modding in Unity”. My talk was aimed not at modders, but at other developers who might be interested in making their Unity games moddable.

Here’s some of the things I talked about:

What is modding?

For some the idea can sounds a little scary. But the truth is a lot of devs will in some part be familiar with the process of making their game data driven. Essentially modding is the process of making your game incredibly data driven, as well as creating the tools that the public can use to create that data.

It also includes hooking into a distribution platform, for a large number of developers this will be a system such as Steam Workshop.

Why make your game moddable?

Making your game moddable can increase community engagement hugely, as well as the lifetime of your game. If you look at examples such as Skyrim and Minecraft, these games wwere release 5+ years ago and yet are still heavily played today.

I believe this is in no small part to the amazing modding community surrounding those two games.

If you’re a dev considering if you should make your game moddable, a couple of suggestions are: plan modding from the start and use the tools you’ll give to modders for building the rest of the game.

Deep dive

Some of the lower level information about how we’re approaching modding in Unity included:

  • Technical information about how LevelKit works under the hood, using Unity editor scripts and the asset bundle system

  • Information about how we’re using the MoonSharp library to allow mission scripting via Lua

  • Some awesome C# features that allow you to easily create documentation for your community

Live Demo

Lastly, I finished off the talk with a live demo of LevelKit, showing off some of the features like the ability to use Unity’s native animation system and the networked communication between LevelKit and the game. The demo consisted of me making a little cactus on a table dance when a player pressed a button. While not particularly in tone with the game, I think it’s nice to show how flexible the tools are, and how quickly a mod can be mocked up in Off Grid.

I got some great feedback about the talk and I’ll certainly be applying to present more talks in the future!


I also bumped into Keir Miron from the Darkest Dungeon team and we managed to record a podcast whilst crouched in a corner of the conference. Here’s a link if you’d like to listen

Overall I had a fantastic time and I’d highly recommend any game developers attend if they can.

Until next time!