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!

Monday, 19 November 2018

Sprint Update 19.11.18: The Longest Sprint

Hello!  This Sprint Update is a long time coming - there's been a lot going on, including a successful Kickstarter!   Successful Kickstarter has a nice ring to it, eh!?

If you followed along with the Kickstarter (and hopefully you did!) you will have had a lot of updates to read in the meantime.  Nevertheless, here is the detail of what we have been busy with throughout this epic sprint as we prepared for and ran our first ever crowdfunding campaign:


- Pooled dictionaries in AI state
- Immutable AI state
- Inevitable fixes for above
- Extra cost for guards using stairs
- Fixes to AI planning
- Fixes for OffMeshLinks / AI using doors
- Tracked down a bug relating to door GUIDs / saving and loading
- Noise documentation
- Updated AI used in the Harbour scene
- Fixed a drone navigation crash
- Added mechanisms for AI to prefer particular devices based on their personality
- Added mechanisms to allow AI Actions based on their personality + Documentation for this


- Added UI to remap controls in main menu
- Checked/updated all control settings & defaults
- Limited repeat rate on analog gamepad sticks when moving around UI
- Added dataview range control on mouse & keyboard

Apps being configured: choose if you want them available in the app wheel or radial menu.

App system

- Completed new app system
    - added App system Lua API
    - unavailable apps are now hidden from Apps menu
    - If app can't be added to either appwheel or radial, it's now hidden in the App Menu (for exaple the password cracking is currently an app, but shouldn't be controlled by the player directly)
    - Apps are added to AppMenu, AppWheel and Radial menus when the app becomes available
    - Only execute currently selected app (instead of all active ones) when selecting a target+app in radial menu
    - Update loop for apps (so apps can run in background and do things continuously/over longer time)
    - Apply app action cost (both per-action, and for app cost over time for a continuously running app)
- Status windows for apps
    - Support for displaying an icon and/or a piece of text
    - Support for changing icon & color
- Rewrote Light Monitor app using new API
- Created "Send Data" app (lets you send a file to currenlty targeted chaarcter or device)

Lua API additions

- Lua API for audio RTPC
- Added normal (scaled) time support for scheduler API
- Added notification messages to UI Lua API
- Player API additions to get social profile data for currently targeted character

Bugs fixed

- Player character walking/crawling sounds get swapped after crawling first time
- Removed hack that re-assigns all materials in scenes (original Unity issue that required this has been fixed so the hack isn't needed any more)
- 1st person targeting should maintain the direction player is currently looking at
- Character profile data displays color codes in UI rather than colored rich text
- Fixed notification message UI animation setup
- Fixed file viewer not displaying images
- Fixed card scanners missing UI markers whe usign the Help app

Apostle level

- Checked all atmos colliders, added new ones where needed
- Blocked staircase from lobby to 1st floor
- Blocked door in 1st floor that would otherwise allow player to skip half of the floor
- Checked navigation layers
- Checked colliders, changed some to simpler ones, added some that were missing
- Fixed colliders with negative sizes
- Fixed typos in some device scripts
- Checked all doors and assigned correct door groups and access levels
- Removed drone from rooftop
- Replaced a few hunded cardboard box models in level with prefab versions
- Fixed missing/wrong static tags around the level
- Removed some leftover invisible collliders blocking player and the AI movement
- Fixed props not correctly aligned to walls/floor
- Redesigned first floor of Apostle HQ
- Implementated new hackable device


- Creation of activist and hacker characters
- Prop and asset creation for new levels
- Set dressing and environment art for the Apostle level

Models of the real life hackers featuring in OFF GRID.


- Enabled ultrawide display reoslutions
- Added headers support in popup menus (menu item with no function becomes a header automatically)
- Added splash screens when starting the game
- Data colors now ignore alpha value set in scripts and instead use pre-defined opacity to make sure things look correct in data view and in UI
- Opened studio Discord!
- Built a new website for the game
- Quick update of studio website with new Semaeopus logo


Updated build for demo

- Removed options menu from build
- Removed other levels from the build
- Forced loading straight to Apostle level in demo build
- Added Kickstarter campaign ad in main menu
- Disabled save game loading (makes no sense for a single-level demo and would cause issues when loading a save where the demo level is already completed)

Campaign Prep

- Campaign page drafting, review, and finalising
- Reward drafting, review, and finalising
- Contact push
- Press push
- Newsletters
- Update planning: every 3-4 days to all channels
- News release drafting
- Daily social media scheduling
- Streaming planning

Events and promotion

- Game Dev Camp, Lisbon - Rich and Steve spoke
- IndieCade, LA - Rich spoke
- Sweden Games Conference - Rich spoke, Off Grid demoed within Indicator and Off Grid won the Indicator award!
- Inside Intel, London - an art exhibition on privacy & surveillance
- PlayUK, a videogame curation put on by the British Council in Macedonia
- Dev Space Winter Mixer, London
- Closing party and livestream to countdown to the Kickstarter campaign's end!

The final moments of the Kickstarter campaign!

Whew!  A long list to match a long, bountiful Sprint! 

To top all of this off, the team travelled to Dundee, Scotland last week to attend the UK Games Fund Awards.  Semaeopus was nominated for the 'Smart Studio' Award, and we were looking forward to a fun celebration together after the month of hard graft.  When the category for 'Smart Studio' was up, we were absolutely stunned to hear 'Semaeopus' announced as the winners!

Award winners!  Sarah, Steve & Pontus pictured with the award presenter.

A successful Kickstarter, two new awards, and loooooads of new supporters - we are so grateful to each and every one of you that has helped make the last couple of months so successful!  

There's been SO much going on - expect to hear more from individual members of the team as we each wrap up from the last couple of months. 

What's next?

It's onwards and upwards now.  We're working on getting our FIRST ACCESS programme off the ground.  Anyone that backed at the PENTESTER level or above can expect to hear from us soon about what is to come. 

One of the two main goals of the crowdfunding campaign was to provide a bit of additional resource to support more open production of Off Grid.  We're busy getting our ducks back in a row after the Kickstarter, and can't wait to move forward with you all behind us.


The Off Grid Team

If you haven’t already - be sure to wishlist Off Grid on Steam - *EVEN IF YOU ALREADY BACKED THE KCKSTARTER! Each wishlist makes a big difference to us, and we really appreciate your support!

Friday, 9 November 2018

126% Funded on Kickstarter!

 We did it!

OFF GRID was 126% funded on Kickstarter in the end - that's a whopping £5,252 over our goal.   THANK YOU!

We hit the first stretch goal late yesterday afternoon, then kept building to our final tally of £25,252.

That means OFF GRID has the extra funds dearly needed for art and sound, AND we'll be sharing even more with you as we shift into a more open mode of development!

PLUS, by hitting that stretch goal, OFF GRID will benefit from the addition of an in-game social media app, and those of you that took advantage of that extra tier (and all those who backed above it!) will get the satisfaction of seeing a message of yours in the game.

Thank you to everyone that followed along with the countdown - whether in person or via the livestream.  It was great fun to share the success with you all!

We will be back in touch soon with updates on the game, development progress, and importantly, details and questionnaires about your rewards.


The Off Grid Team

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!