Thursday, 14 March 2019

Sprint Roundup - 14.03.19 - Doors of Perception

It's that time again! Here is your regular sprint round up of development! Read on to find out what we have been up to in the last few weeks and if you are one of our backers on the FIRST ACCESS level, what you can expect to see in the latest build update!

Content (Level Design and Art)

  • Created new Character LUTs amd some character variations (as seen above!).
  • Cleaned up on the geometry of the IRL hacker and activist characters.
  • Setup new system for door prefabs
    • Wow this was a big one, but one we have had our sights on a while - the doors and door frames all now conform to sane dimensions and make use of the new nested prefab system in Unity meaning doors and their variations are infinitely easier to create.
  • Lots of work on an early level and tutorialisation of rooting your phone and glasses, and the hacking tools you have to install and learn at the beginning of the game.
  • Some more scripting of interactions with a more neutral NPC than the fairly intolerant guards you meet in other levels.

Gameplay and Mechanics

  • New mechanics for data view trace time & app use and costs. Hopefully this will sort out some of the pitfalls of the old trace time system and instead turns that into a proper game mechanic. Plus the changes give us a way to upgrade player abilities throughout the game while keeping things balanced. We'll test this a bit in action and will then tell you more details. 
    • This also came with some visual prototyping  with Josh Ge's ASCII art and animation editor REXpaint (as you may recognise from his game Cogmind) to try and get an ASCII art / homebrew software feel, we are still playing with this, but it's a nice start:
Prototyping visuals with Josh Ge's REXpaint
  • Added support for using physical inventory items (and the Lua API for scripting what the items do).
    • This helps evolve the game's  "adventure game" like elements
    • This allows for finding and using items which can be scripted now to do pretty much anything. We have yet to add a "combine items" button, but watch this space. Mini crafting system here we come! :0
Speaking of 'adventure game like elements' - Rich talked a little bit about this on the retro gaming podcast last year. One of the host's, Ben, described the game like this:

"Its kind of like an adventure game that is then set within this 3d stealth game - which gives you more fail states than 'well I'm too stupid to figure out this puzzle'.

You can listen here around the 1hour 30min mark.

Modding and Lua API additions

  • The above point to do with physical item inventory comes under Lua API too of course.
  • New scene hierarchy in the Template scene in generated when you create a new mod LevelKit to give a guide to help keep your mod scenes tidy and


  • Fixed NPC prefabs to have the correct navmesh area tags so that NPCs would use stairs again!
  • Lots and lots of small stuff about doors. How their logic is set up, how the player and NPC's unlock them, and making sure they open away from the character instead of hitting you in face etc...
Testing doors!

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!

Thursday, 31 January 2019

Sprint Round Up - 30.01.19 - The FIRST Sprint of 2019

Hello hello, here is your regular sprint round up of development through January!  Read on to find out what we have been up to, and if you are one of our backers on the FIRST ACCESS level, what you can expect to see in the latest build update!

Content (Level Design and Art)

  • Work on workplace level design and early game tutorialisation, mission scripting and character conversations
  • Wrote some new AI states, goals and actions for a nuetral NPC character (using our new moddable, data driven AI behaviours) 
  • Worked on existing geometry in the Workplace level to get it closer to a completed level
  • Paper sketches of new level designs
  • Started grey-boxing on new levels 
Greyboxing a new level

Gameplay and Mechanics

  •  Design work for data view & app use cost changes

Controls and UX

  • Added a crouching first person camera:  the look from point is no longer parented to the rig, which improves camera targeting
  • Reworking of character controller and camera to give finer control
    • Now players have better control of jogging and sprinting both on controller and keyboard and mouse using Space/ B to jog, and repeatedy tap to get a sprint burst 
    • Crawling animations and controls have been fixed to work properly and feel nicer
    • There is a crawl sprint too!
  • Turn animations and transitions in blend trees have been sumplified for better control overall but smoothing and polish is needed still for smaller movements (some finer turning / control has been lost and is to be fixed in next update)
  • Started converting various UI elements to better font rendering and animation systems
  • Support for displaying controls as icons in middle of text in the UI
  • Rebuilt the AppWheel UI to better handle adding and removing apps
Converting the UI to Text Mesh Pro


  • AI function to prefer or avoid particular devices.  Example:  the coffee offer message, sent to a guard, will reduce the cost of the UseCoffee Action, meaning that Guards prefer that Action and will go out of their way to use it rather than alternatives.
  • Added an optional personality requirement to have actions that are only runnable if an Agent has a particular interest (or not!)
  • Added stats to the Agent definition
  • Added generic actions to the Agent definition
  • Added responses (to other Agent's actions), adjusting Agent stats
  • Added reactions (stimuli in the world can thereby adjust Agent stats, based on personality)
  • Added an audio attribute to actions in agent definitions, to be played when they are performed

Modding tools and Lua API additions

  • Added support for loading apps from your current mission (as opposed to the global Apps folder, or app mod)
  • full screen modal window, 
  • Updated gizmo icons in LevelKit
  • Correct scale & rotation for bounding box when editing mission triggers etc.

Bugs fixed

  • Fixed a shader problem introduced after updating Unity



Thanks for reading, look forward to seeing you next time!

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!

Thursday, 3 January 2019

Happy New Year from Semaeopus!

Happy New Year

2019 is here and we are thrilled to welcome it!  There are so many exciting things to come in 2019!

Before we move head on into the new year - we just want to pause and reflect on all that came our way in 2018.

We did a quick recap in our December newsletter, but upon reading it back, realised we missed out some seriously significant moments. 

Without further ado, here are our highlights of 2018:

1.  Rich and Sarah attended GDC for the first time - an eye opener!

2.  The team demoed at PAX East as part of Figs and Co!

3.  Made our print debut with a double page spread in GamesMaster magazine 

4.  Semaeopus was named as part of Creative England's 2018 CE50 cohort
5.  Attended EMF Camp with a base at Milliways!

6.  We brought a fun new artist on board - shout out to Sophie! 

7.  Rich started streaming and we launched our DISCORD!
8.  Gave talks at GameDev Camp and IndieCade
9.  OFF GRID was featured in InsideIntel, a modern art show on privacy put on by the CIJ

10.  Spoke at  Sweden Games Conference, and won the Indiecator award in the form of a giant cheque!

11.  Ran a successful, overfunded Kickstarter campaign​ - hitting the first stretch goal! 

12.  Announced the line up of real life hacker characters to feature in OFF GRID!

13.  Semaeopus won the first ever UK Games Fund Smart Studio Award
14.  Kicked off our new and *exclusive* FIRST ACCESS programme

WOW.  What a year 2018 was!  Thank you to each and every one of you for supporting us and helping us make all of this happen!

...and now it's on to 2019:  GOOD THINGS ARE COMING!

We wish you all the very best in the new year!



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, 21 December 2018

Sprint Round Up - 21.12.18 - The LAST Sprint of 2018

Twas the last sprint before Christmas, when all through slack
there were messages pinging, of snow in Finland
tasks have been completed on Jira with care
with hopes of increased wishlists for the new year

...we're not poets and we know it, but all in good cheer!   Pontus has decamped to his native Finland and the snow is plentiful!  There's a few us of here in merry ol England that are snow jealous.

Finland = Winter Wonderland

In this sprint, there were lots of tweaks and updates as we prepped the roll out of the FIRST ACCESS programme for our Kickstarter backers, as well as plenty of essential documentation and tasks. So without further ado, here's the last Sprint Update of 2018:

App System

•  Apps can define cost per action, and any continuously-running actions can apply cost over time.
•  Updated App scripting wiki page to match with the recent App system changes and to better explain all the features


• Added generic actions to AI definitions (to perform tasks, change state, without the need of an InterestPoint)
•  Added stats to AI definitions (to track various attributes in a data driven fashion)
•  AI documentation


•  Built the "Semaeopus Testing Facility" level in LevelKit as an example for modders, and as easy place to test new modded content and features
•  Changed the LevelKit Tool to have a dropdown menu of different Districts for the mission so people don't need to check the options from wiki and type it in
•  Did a complete review of all the props and models in LevelKit:

  •  Made sure Models are not importing new Materials
  •  Gave a box collider to things big enough to need one
  • Created a Prefab of everything  
  • Added everything to Collections, cleaned up and re-sorted Collections
Organising materials in LevelKit


• Sent FIRST ACCESS keys to relevant backers
• Fresh build of OFF GRID with LevelKit tools for FIRST ACCESS users
• Created public Trello board for modders and FIRST ACCESS players to request features and report bugs

The best NDA return e-mail we received!  :D

Character Controls

• design and planning for improving character control

Bug Fixing

•  Fixed game crash in Map screen.


•  Final build, and then added back all features & content that was disabled for it.
•  Explored documentation generation
• Loads of improvement and additions to the documentation on the wiki
• planning and research on offering a slacker backer option for people to be able to get into FIRST ACCESS post-Kickstarter (more news coming soon!)
•  A team holiday party at Beef & Brew that left us all bursting!  No worries, we took the leftovers home.  Waste not, want not, folks!

A note on FIRST ACCESS: 
 If  you are eligible for FIRST ACCESS, you will have
 a) backed OFF GRID at the PENTESTER level or above on Kickstarter and
 b) already received an e-mail with instructions on how to join!

If you find that e-mail and you have time to dig into things over the holiday season, please do!  Sign and return your NDA, and we'll endeavor to send over your Steam key in return as soon as we can. 

...and that's that!   We're still going through the holidays, but taking it a little easier than usual to enjoy the time with families and friends.

Thanks everyone.  We wish you all the happiest of holidays!

The OFF GRID Team 

p.s.  There's a HOLIDAY GIVEAWAY planned!  We've chatted about it in our discord - and it's soon to be announced.  Sign up to the newsletter to get the details first!

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!

Tuesday, 11 December 2018

Improving AI Performance

Hi all, Steve here!  Here's a look into what I've been working on recently: 

There's been some monstrous performance spikes in our AI, and I've spent time over the last month working to mitigate this issue.  Two significant changes have been made to improve this:

1 - the addition of a pool of Dictionaries to store states, and
2 - making each state item immutable

This vastly reduces object creation, which is slow, and reduces the number of objects in existence, which helps reduce memory fragmentation (another Bad Thing) - which, being C#, is harder to control than in C++.

Dictionary Pool

So what's a Dictionary Pool, you may ask! Well, at its simplest (which this is), it's a big list of pre-made Dictionaries, each with a flag on to indicate if it's being used.

When we want a Dictionary, we grab one from the pool, put it in a list of 'in-use' Dictionaries, and mark it as being used. When the object using it is destroyed, we mark it as free, and put it back in the pool for someone else to use. The key here is to be very strict on who is using your object! It's critical that nobody is using it when it's marked as free, or the whole concept breaks down.


And immutable states?  Immutability is another weird software-engineer-y word. In english, it means something that never changes. But that's perhaps misleading when it comes to thinking about objects in Unity - what use is an object you cannot alter?

The answer is that while you can't change the object, you can create a new one to reflect this change. This means you have precisely one instance of any particular combination of object.  For us, this means that instead of creating hundreds of thousands (no exaggeration) of states, all duplicates of one another, we create... about seventy. The overhead of querying a Dictionary for the instance of the state we want is much, much less than creating a tiny object, then destroying it, repeatedly.

These two changes weren't trivial, as such, but were fairly self contained, and only produced a handful of super frustrating bugs that I had to then work against for a week or two.

Back within 60fps, but still a lot of garbage to deal with!

But the good news is that performance improved drastically!  We are now back to 60fps within the editor on my machine, mostly. Which was a relief because I feared for a moment or two that I'd accidentally extended the AI system in such a way that it would never be useful in a finished game, which would have been embarrassing.


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!