Welcome back to another episode of the OFF GRID DevBlog, lots of interesting interactions to tell you all about, so let's dive right in!
Thursday, 3 March 2022
OFF GRID Devblog "Look who's talking!"
Tuesday, 9 March 2021
Sprint Roundup: Spring Forward
Welcome Folks and Happy 2021, and how good does it feel to be finally well out of 2020?!
Thanks for bearing with us while we got this you, we missed December's update, but here we are, back in the swing of things, and so finally here is your back-to-regular dev update!
Give me an 'A', give me an 'I', what does that Spell?!
The default way to change any NPC behaviour is still as it has always been, changing the world states. Only in specific situations should changing the goals or actions be needed, but this is now possible by adding or removing them during runtime and allows for much more complex behaviour. Changing Goals should be used rarely, as it is seen as a more permanent change to the NPC behaviour. It's important to keep the following concepts in mind to understand the best way to change an NPC behaviour:
But of course this flexibility also means that is important to be careful with the complexity of the NPC definition, it could get a bit confusing in the best way to accomplishing some results and also could be hard to track why the NPC is behaving in some way. So to simplify we think the best way to approach the changing in the NPC behaviour in runtime is trying to change the world states first (but being careful to not have to many different states), next is the actions (that are especially handy for use specific items and skills), and the last one is the goals (that need to be used very carefully because a minor change can change the NPC behaviour drastically). Hopefully this model will provide some exciting opportunities for us in design and for modders too!
We also replaced the old Lua API call for altering a character's motivation value with a new generic system which allows for checking, and setting, any of the stats an AI might have.
The U in Usablility
Since the last blog post, we've spent some time fixing some usability
issues on the UI side. Mainly, we've added automatic scrolling to UI for
use with gamepad controls, removing the need to use scrollbars, which
then simplifies the navigation across the UI. To go with that, we've
updated lots of the UI across the game, also fixing some selection
issues and improving on the mouse cursor autohide system to further
smooth the controls and especially switching between input methods.
While these might not sound like big changes, they certainly have made
the user experience a lot smoother...
Paperwork for a good cause!
No Tofu!
The Beginning and The End
Changelist
Content (Level Design and Art)
- Design for the Harbour level passenger terminal / offices building
- Replaced messages that were written for old SMS system with proper single-message conversations
- Courthouse initial puzzles done
- Taking the scene from prototype to production and playable instead of just a cutscene
- Broke up Court House Level into two levels
Controls and UX
- Autoscrolling in UI
- Usability improvements especially on a gamepad for any scrolling UI
- Greatly improves device UIs since it means we can make their scrollbars un-selectable on a gamepad, simplifying the navigation in that window
AI
- AI Goal and Action improvements for flexibility
- AI Debug system improved (with more information and in a clear format)
Modding and Lua API additions
- Lua API support for setting/getting NPC AI stat values
- We used to have AI.AlterNPCMotivation(name, value) specifically for setting motivation stat value, this replaces it with a generic AI.AlterNPCStat(name, stat, value) usable for all the stats an AI might have
- Lua support for Unity timeline and firing Lua functions from it (use wisely!)
- Lua Console app for testing any line of lua anywhere in the game
- Bug fixes related with the AI and save system
- Fixed issues with mouse cursor autohide/show system when switching between mouse/kb and gamepad controls
- Year end accounts and VGTR
- A few small work-for-hire jobs
- Blender for Animators Lectures
- New Ideas Fund application and grant
Hopefully that catches you up on OFF GRID development. It's been a tough 2020 for us, especially the second half of it. Safe to say, the world has been turned upside down and that had an impact on some of our families and how we managed running businesses and looking after our loved ones. Obviously OFF GRID is continuing development but running behind at this point, luckily we have at every turn been ahead of the punches and come up with game plans to make sure we could continue sustainably, and deliver OFF GRID come what may.
For our little studio this has meant tightening our belts at the couple of junctures when we have found we were behind our anticipated milestones, tightening scope, bringing in some part time work-for-hire contracts to top up the coffers, and scaling the team down so we could operate in a lean and efficient way. The knock-on effect of shrinking the team for sustainability is it means things take longer, but it has the benefit of meaning you can roll with the punches and survive more easily.
The three of us, Pontus, Andre, and Rich are still working hard on dev, bringing you the best game possible, and one thing is clear, with our great little team, OFF GRID is going to be everything it deserves to be, and that you deserve it to be for supporting us. Thank you so much and looking forward to showing you more over the coming months!
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, 9 October 2020
Sprint Roundup: Meta work
Welcome friends, time for another sprint update!
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.
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
AI
- 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
- 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.
Other
- Funding applications for post release DLC
- Cloud and documentation migration
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, 20 June 2019
Sprint Roundup - 20.06.19 - Information Underload
Working on Information Underload
Now, bearing in mind the game is still pre-alpha - one of the most frequent pieces of feedback we get from first time players is a sense of information overload, and that it takes about 20 minutes of play time to really break though and "get" the game, but once there they love the depth.![]() |
Information overload |
This is unsurprising seeing as the demo level that we show people drops you in the mid-game in order to give enough of a tech demo and playground, and has very little tutorialisation in it, other that some dense walls of text to set the scene for those interested.
Many people who bear with it really get a kick out of the moment when the game "clicks" for them, it can be quite rewarding to feel the pieces slot into place as you work out how Off Grid mechanics can be used and combined to your advantage, but it's not optimal that it takes so much perseverance to get there, and this is something we have always hoped a good opening to the game would help solve.
In steps our first pass at tutorialisation!
Thursday, 30 May 2019
Sprint Roundup - 30.05.19 - 'Fluttery' will get you everywhere
"UI the long face?"
As promised as one of the stretch goals in our Kickstarter campaign, we've now added our in-game short message social media app, which we've decided to call "Flutter."![]() |
Some 'fleeting' in action |
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
- 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
Other
AND: WE MADE THE BRIT LIST!http://www.kotaku.co.uk/2019/01/11/games-of-2019-british-games
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!
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
AI
• 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
LevelKit
• 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 |
FIRST ACCESS
• 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
Bug Fixing
Other
• Final itch.io 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
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.
Immutability
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.
-Steve
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:
AI
- 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
Controls
- 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
Art
- 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. |
Other
- 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
Kickstarter
Updated build for Itch.io 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.
THANKS EVERYONE!
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!
Wednesday, 13 June 2018
Sorting out motivational issues
Hello! It’s Pontus here this time.
You’ve already read about us recently making a trip to USA for GDC and PAX, and about the push for new content and polish we did before that. As things go, that kind of quick development tends to mean lots of new stuff is added at the last minute, and sometimes maybe not tested in every possible situation. Or there’s a good chance there are some odd bugs and things that only appear after a while, or in very specific conditions. Things that in the long term would get noticed, added to our bug list, and eventually fixed… but in a 4-week rush, things sometimes go less than perfectly and some features might end up being a bit buggy.
In multiple ways, sometimes.
Most of my sprint was spent on fixing biggest issues we found in our PAX build, and most of that didn’t end being much to talk about. But one of the bugs ended being a bit more interesting to figure out, and while I’d usually prefer talking about design, I though some insight on this side of game development could still have some value. So, this is going to be more or less accurate story of our guards not behaving as intended, as I saw the issue through bug reports on our Jira board, and watching people play the game & testing things myself afterwards trying to figure out what exactly was going wrong. And also a nice example of how the most obvious explanation often isn’t quite true!
Wednesday, 21 February 2018
Dev Blog - 21.02.18 - Upping our Profilers
Much of February has passed since the last sprint, and in that time, hearts and precious metals were shared across hipchat, though none were valentines from one dev to another, nor sadly, were they photos of our hard-earned Winter Olympic golds. They were all lowpoly art, handcrafted by our stellar intern Josh, as he helped us prep marketing materials and create props for the game. He’s been hard at work and done an awesome job for us. Thanks to our multi-cultural dev team, however, we did learn that Valentine’s Day in Finland is celebrated as ‘Friends Day’ - this is a notion we like. And if you’re wondering, there’s fans of Team GB, Finland, and USA cheering across our virtual office spaces! :)
Here’s what we’ve been up to:
Tuesday, 23 January 2018
Dev Blog Post 23.01.2017 - Drones and pwns
We decided to extend this sprint in the way we often do over christmas so that the team has a bit of time to experiment and perhaps take on a few tasks that require a good bit of thinking time. It’s paid off as usual, and so we have some great developments in the game to share with you with this blogpost. Read on for all the juicy details!
We are all directors now
We were very secretive some time ago (nearly 2 years back actually!) about how we were in a small set of selected developers given access to an alpha version if some new tools in Unity. Well…
Originally the tools were called ‘Director’, and with a lot of experimentation and some fairly comprehensive bug reporting they eventually became Unity Timeline, which Unity devs have now been enjoying since last summer! We are now at the point where what we learnt from experimenting with the original Director tools can be put to good use. If you have played the Off Grid demo anywhere, then you will have seen the still frame animatic for the intro level which sets up the story of the game. We had a mocap session to get all this action captured and now that the Timeline tools have matured (and, more importantly, are stable) we are busy pulling this all together. The opening sequence of the game is going to change dramatically over the next couple of builds - how exciting!
To Octree or not to Octree
Steve had one pretty chunky task to do over the past month or so, and it’s been getting the drones to be substantially more drone-y.So far we have worked on the basis that drones are just characters that happen to be hovering, but this means we lose the opportunity to move vertically and get to places that characters can’t, or via routes that they are unable to take. So the task at hand was to remedy this. Navigation meshes are two-dimensional, so we needed to take a new path - navigation volumes!
Using the magic of octrees, we subdivided each level down to the smallest size that contains no collidables, or down to a single unit cube, whichever is bigger. Then, each cube is tested to see which cubes it is adjacent to, to create a graph representing all the nodes. After that it’s simple - run A-Star on the network, and it’ll find a route through.
This will be available to LevelKit, so drones are accessible to all! There’s a few tweaks and kinks to work out, but overall it was a really satisfying feature to work on and should really change the way the game plays. You can run, but you can’t hide! Well you can hide. It’s a stealth game, after all.
Next will be to get them to move in a more dronelike manner, and perhaps optimise the navigation a little. But that may have to wait until after Steve’s put his cameraman hat back on for the upcoming sprint!
So much modding going on!
Josh has been hard at work testing the modding tools and refining his mods. In particular he expanded the museum of hacking he has been making.The museum mod, which he initially designed to be just an interior, has expanded to allow for any future hackable devices to be added to it, no matter their size!
Josh then turned his attention to improving and developing the transport station map. The map has changed quite a bit since whiteboxing and still has a way to go. For a first attempt at a full level mod it is fairly ambitious due to it being a fairly large map with multiple ways to complete the same task.
The station has grown quite a bit to allow for more room for the guards and the player to navigate. This will also hopefully allow for a more interesting interior and gameplay possibilities.
Originally the apartments around the level were going to be just blocks that looked like apartments, but now some of them interiors to allow the player to find hidden data files or to find some higher ground to plan how they will tackle the mission.
The trainyard is still very much in progress, but has also changed quite considerably. The main additions to the train yard include a new walkway that allows the player to navigate to all 3 platforms. A warehouse has also been added which will include some puzzle elements for the player to complete. This is replacing the old puzzle element which involved moving the train carriages up and down the tracks as it was a bit clunky and confusing.
Meta-gamedesign
In the last sprint, Pontus redesigned the character profiles and our data files & SMS generation to handle metadata about the character personalities embedded in data files. That’s working pretty well, and we already built a quick app for testing this. So it’s time to take things a step further, which is why Pontus has spent this sprint working on the game design for how we’ll actually handle metadata collection and character profiling as a player experience. And how that will then tie in with adding a password cracking feature when the player connects to a remote (or local…) device using our SSH app.The basic idea is that as the player collects different data files, the included metadata is automatically used to build a catalogue of character profiles, over time adding knowledge about new characters, and their personal information, their likes and dislikes, and pretty much whatever background info we (or modders) choose to add.
All the collected information will be available for the player to view at any time as a new tab in the pause menu, so it’s directly useful, for example, to try and guess what kind of approach might work best for distracting a specific guard away from your path. In addition to that, the amount of knowledge you have collected about a character is also then used to determine if you’ll be able to access devices belonging to that character. After considering calculating the access as a proportion of known metadata VS all existing data about a character, and realising that this would cause a few odd situations, we settled for a fixed limit for access, and allowing this to be set in each device’s Lua script so if the same character owns multiple devices, some can have easier, and some more difficult, passwords. We’ll likely also add an option for a device to require some specific piece of information instead of some count of any knowledge, but this should be used as a special case option in missions as it requires the mission creator to make sure that exact data is available to the player at the right time.
A fairly interesting side effect of this design is that it is kind of realistic, in the sense that it’s going to be easier to collect enough information about characters who have more metadata defined in their profiles. So, the more you share about yourself online and in social media, the easier it is for someone to learn enough about you to start guessing your passwords and to use the knowledge for identity theft and so on. And at the same time characters who have shared less about themselves (or, the mission creator has been more lazy ;)) will be more difficult to learn about, as you are more likely to just run into the same few bits of knowledge rather than learning something new.
Another interesting feature here is that your library of character knowledge will be persistent, so anything you learn about a character in one mission will be carried over to future ones. While this requires us to do a bit of a better job on the UI side to keep things manageable for the player, it also serves to create a longer game play loop, where social engineering can happen over a longer time span than just within a single mission.
Finally, we’re probably going to add few different apps for gaining access to devices, in the sense that the one based on knowledge about characters (so, basically just guessing badly chosen passwords through social engineering) is just going to be one of the tools available for the player. We’d also like to include other tools that target specific vulnerabilities on devices, and perhaps a late-game one that just uses a direct access to government-collected data.
Big News
With all that dev news it’s worth pointing out that we have some other big, juicy news coming soon. We are sooooooo close to being able to announce it that the anticipation almost hurts!You can find the newsletter signup page here!
If you aren’t already on our newsletter, please sign up! If you are and you have any friends who you think might be interested, then please share and help us reach even more people anticipating the game!
Ta ta for now,
Rich, Pontus, Steve, Sarah and Josh.
Wednesday, 5 July 2017
Off Grid Sprint Update 05.07.2017 - Modder-dod-a-ding-dong
Our First Modder
We were lucky enough to be contacted out of the blue by Dominic who goes to college not far away from the studio and was looking for a place he could do work experience at a games studio. We jumped at the chance as many of us got our first breaks in life through being bold and askingfor work on a whim and we were glad to be able to offer the opportunity.
Dominic has been testing our modding tools and helping write up documentation on our wiki on how to use them this last week, but we’ll let him tell you what he has been up to…
Saturday, 28 January 2017
Sprint Update - 27.01.17 - Voron-Oi-Oi-Oi
Rigi.py
We rigged up a new character and have been working up some new content.
There is a fantastic python script available to take the standard Rigify add-on in blender. It gives you the ability to to switch between the tools needed for animating in Blender and alternatively stripping the export down to just what is needed for importing into Mecanim for setting up with Unity’s humanoid system. We won’t say any more but if you use Rigify and Unity this will make your life sooo much easier!
You can grab the script from here:
https://github.com/trynyty/Rigify_DeformBones/blob/master/Rigify4Mecanim.py
Saturday, 24 December 2016
Sprint Update - 24.12.16 - Ubuntu Xmas
Linuxmas is here
Last Saturday we tweeted out a few screens from the latest Linux build running and we were lucky enough to get this write-up from Gaming On Linux.We’ll be putting the build through testing on as many distros as we can ahead of release, for a game with the sorts of themes encountered in ‘Off Grid’, and as all three devs are Linux users, making sure we cater to those of you who like to play on Linux is extremely important to us.
Wednesday, 11 November 2015
Off Grid Development Update 11.11.2015 - Networking
One more sprint mainly focused on background systems, but this time at least it’s something pretty integral for the game we want to build, and something we’ve been needing for a long time.
Monday, 26 January 2015
Friday, 9 January 2015
Sprint Update 09.01.2015
Happy New Year! We extended our last sprint to run into January so that we could tidy up a few tasks at our leisure over the break and so that means it’s time for our latest Sprint Update!