Hint: Use 'j' and 'k' keys

to move up and down

Sprint Round Up - 18.06.18 - Cheat to complete! This sprint included a major milestone… playing the game from start to finish! :D That may be stretching the truth a bit, and included a bit of cheat… but here’s the detail on that, along with the rest of our work this sprint:

Stub-out of all levels Stubbed out the game’s level sequence and the logic that ties it all together then threw in a completion hack to ‘play’ the game end-to-end - Made stub grey box rooms for all remaining levels

- Created completeable mission scripts for missing levels

- Created level.json and preconditions to make all levels tie together and the game “completeable”

- Added dev laptop to all levels and added setting in the device so you can ‘hack’ the laptop to complete the mission.

- Made a couple fo test builds and made sure the game is fully ‘completeable’ end-to-end.

Save System

- Set up save files to save persistent data (to last throughout a play-through, rather than just during missions) Devices

- Added functionality to mission and device scripts to enable state to be saved.

- Refactored devices to work towards formalising their operations, and allow for more modding potential.

Updating to Unity 2018 (and everything else)

Unity update, and updated just about everything else to latest versions at the same time.

- Updated Unity project to run on 2018.1

- Sound engine & Unity integration updated to Wwise 2017.2.4

- Updated ReWired to 1.1.14.4

- Updated PostProcessing stack to v2

- also updated our settings system and postprocessing profiles to work with the new system

- Updated Cinemachine

- Added ProBuilder and Text Mesh Pro to project (giving nicer tools for modders since you can build things inside Unity instead of being limited to our levelkit pieces or using external 3D software to build things with)

App System

Needed to undergo some refactoring to ensure full functionality, this has meant a bit of digging around

Bug fixing - Fixed a Mac path problem that was preventing levelkit work being done on Mac

- Fixed a shader used in harbour that was using a deprecated function

- Added workaround for Unity not handling nested Canvas Groups correctly (to fix issues with invisible selectable buttons in main menu screen)

- Fixed level loading from mods (built-in levels and ones added as mods have a different path for level.json which needed to be taken into account when looking for available levels)



Sprint complete! Thanks for following along with us.



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!



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! There’s something wrong with our guards So, the first thing I heard was one of the other team members saying our guards were sinking to the floor, in t-pose (which is basically a clean starting pose used for character animation, standing with your arms at 90 degree angle to your sides). Not what you’d want to see in the game, but my immediate guess was that there’s just a missing animation file somewhere, which would be easy enough to open the animation tree, figure out what’s missing, drop the file in, and it’s fine.



The second problem, which was noticed during PAX, was that sometimes the guards just seemed to stare straight at the player, but not actually react in any way. Of course there’s a distance check for how far away they can see you, and also the lights and shadows affect the player visibility, so it’s not so easy to say for sure. But it seemed like they should have spotted the player. So we did what you do when demoing a game at events, not being able to open Unity and debugger… we watched people playing it and noticed some things. The guards seemed to work fine, until they went for a coffee break. When they did, they sometimes seemed to continue drinking coffee, either just spending the rest of their working day hanging around the vending machines sipping coffee, or sometimes taking their coffee with them, going to patrol but constantly stopping to sip a bit more from their cups. (Actually, that sounds pretty realistic! :D Sadly it didn’t look great, and wasn’t the behavior we wanted from them. And they didn’t bother to chase the player any more, which is less than optimal for a stealth game).



So, more info added to to Jira bug reports, and since we had just added the animations and related AI actions for the guards to do the coffee breaks (rather than just standing next to the vending machine for a bit to “take a break”, something missing in the animation tree and probably in the AI action seemed a pretty likely explanation). Now I just had to survive people running into same issues over and over again until the PAX weekend was over and I was back at my desk with Unity again. Always great to see your work being broken again and again without being able to do anything about it! :D Debugging and fixing the bug The first thing I did was open a scene with few guards and a vending machine in it, and just let the game run with error log open to see if I could observe the same issues, and if there were any useful errors. After half a day, I hadn’t seen the “t-pose through floor” issue, but I definitely did notice the guards gave up their work day around the first coffee break. Sadly no useful errors appeared, and even with our AI tools open everything seemed fine, the guards took a break, and returned to patrol (based on what AI was doing), yet on-screen they stayed drinking coffee instead. So, maybe we were right about animation issues. Time to open the Animator window.



(not the exact Animator setup I was facing, this screenshot is from earlier in sprint so it’s missing some gestures we added later) The states seemed OK, we were triggering a “gesture” with a number code to tell which gesture to play. It would then play one of the states, check for when the animation has completed, and then tell our animation controller script it’s done. There are some issues with that, which I’ll get into a bit later, but at least that should work for the guards to complete the gesture and get back to patrol. So I needed some other explanation. …Half a day more of staring at the guards walking around the level, with various logs and inspector windows open, trying to see what could be wrong. And then I noticed it. The AI takes breaks when it runs out of “motivation." Motivation in this case is pretty much just a number we track, decreasing it a bit for every boring task they do, and then when it reaches 0, we tell the AI it wants to take a break, which will then restore the motivation. But for some reason it wasn’t being restored. The guards would go for the coffee break, but somehow the coffee wasn’t refreshing them at all, so they kept drinking more, and more, and more! It turns out the gesture system was telling the animation system that it was done playing the gesture, but nothing was informing the rest of the AI that it’s fine, you’ve completed your gesture action. So, with a few more lines of code the guards were now returning to patrol after few sips of coffee to refresh themselves. Kind of. They were indeed returning to patrol, but would still sometimes keep staring at the player in front of them like you were invisible. Or happily drink their coffee as if they were thinking that the odd guy running around the office building in the middle of the night was someone else’s problem during their coffee break. And that’s where the aforementioned problem with the gesture animation setup comes to play. The characters would start the gesture, then go through the animations, and then tell the AI to complete the action and start doing something else. But what if the player walk past the guard while he is in middle of the gesture? We needed to add a way to break them away at any point if the AI tells there’s something more important to do:



Slight pain to set up, but basically, every single animation state needs to have two exit transitions, one for when the animation completes normally, and other that can be triggered by the AI and set up to immediately interrupt everything and exit the gestures tree. This seemed to work: I ran around the guards, interrupting them in different ways and at different times during their breaks, and they now reacted immediately, dropped their coffee cups, and started chasing me. Bug fixed! …or more debugging and fixing more bugs. While doing some final testing to confirm the bug was now gone, I somehow got the guards even more confused. Now they were correctly reacting to me and starting the chase, but then sometimes just ended up stopping in middle of everything, with their AI not able to figure out what to do.



That was odd, as based on the logs, the guard was happily chasing the player, waiting for the chance to fire his taser (probably with a grin on his face even though our characters in general don’t have mouths!). He lost the sight of the player, so he made an estimate where the player might be, but couldn’t find anything. And then it all goes wrong. At that point, the guards should go into search mode, where they select a bunch of search points from the level around them, then jog to each of those locations looking for the player, and after doing this for a while decide the player must have disappeared and return to normal patrol. But sometimes the guards would just completely give up instead - the AI not being able to come up with any sensible plan left the character frozen in place.

So I spent another hour running around the level, trying to get the guard to see me, and then trying to escape him in different ways and in different places, looking for some kind of pattern at least. Let’s just say it’s not easy - the guards are pretty good at catching you. Eventually, I noticed that this only happened sometimes (but not always) when I was running up the stairs from our test scene lobby. To be fair, that’s just about the only way I could actually escape from the guards in that level, so it took a while before I even started considering that the stairs might have something to do with it. And of course, verifying that as the reason was even harder, since now it wasn’t enough to get the guards to see me and then escape, but I also had to make that happen so I’d escape exactly at right time while running in the stairs, with enough distance between me and the guard.



Indeed, that ended up being the very specific situation which was triggering the AI confusion. I probably would have never even ran into it if I hadn’t spent that much time testing for the animation/AI/coffee break issue in the same level. After some nosing around in our code, I found an old hack we had put in place earlier to prevent the guards from using stairs (we had some issues with bit too steep incline on some stairs earlier, but the limitation should have been removed already). I found a line of code that was pretty much saying “if your target is more than 2 meters above or below you, you can’t go there.” And, annoyingly, it was doing it bit too late to really work nicely to start with, so the AI had already set the target and planned for it, and then that line was just saying that the plan can’t be done. Not that the AI would have any other plan to work with, so all it could do was throw its hands up in the air (metaphorically, although I’d really like to actually add an animation for that in the game!) and give up. Done! So, after few days, and staring through tons of code, and carefully observing the Animator trees, and our AI inspector, and tracking values in the code, what we thought was one bug somewhere messing up the guards and making them not see the player (and maybe play wrong animations) it actually ended being a bunch of separate issues that all just happened to surface at the same time, plus one more which I only found because of all the testing I had to do to figure out the others. As for the "Sinking into floor in T-pose” bug I started with? I was never able to replicate it. Not a single time during all this, even though I even had a screenshot as evidence. Maybe it was some even more odd glitch, or maybe it was fixed as a side-effect of something else I did, I have no idea. But I haven’t heard any complaints about that happening from the rest of the team either, so I decided to just mark that bug as “fixed” in Jira as well. :D Also, after getting annoyed about trying to get spotted and escape a very specific situation again and again, while also trying to monitor logs and other stuff, I ended making good use of our Lua apps system, and made one that turns the player invisible. That took about 10 minutes to do, so at least our apps system is showing some great potential here. I don’t see this one being an actual feature in the game for obvious reasons, but it is great tool for testing the levels and debugging AI!



That’s it for now, maybe I’ll get to talk about more design-y stuff next time! Pontus



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!



Saving (and Loading!) Hi all - Steve here. I’m a programmer working on Off Grid - and I’ve had the pleasure of working on save systems recently. :)

Ha! This is really one of the short straws of game development. When I was at Sony, it was almost a rite of passage; these were the days that not only did you have to save and load, but you were responsible for ensuring things didn’t die when the memory card (remember those?) was pulled out mid-operation.

Prior to this month, we had the beginnings of a save system in place, but were aware that certain things didn’t seem to be working quite as they should - so I took a look. What I discovered was that we kept a save in memory as well as writing it to disk. This is a good thing - loading a checkpoint is faster. But a side effect was that there were two code paths to reinstating a save - to load it from disk, or to just reference the save data as game data. The danger with this is that the in-memory data can reference ‘live’ game data, which means the save on disk diverges with this during gameplay. Lots of copying data later, the bits that weren’t working quite correctly now seem much happier. The other work I’ve done was on a system level. Saving and loading requires making a list of all the files available. Previously, we loaded all of these into memory - but as we cannot know how big they’re going to be, this will eventually cause us all sorts of problems. I’ve instead created a header at the top of each save file, containing the information we need to present to the player. Load the first 1000 bytes or so of each file, grab the header, close the file. Saving and loading done then? Certainly not! We will still have new data that needs to be added to our save structure, and I bet there are still some bugs in there. But I’m confident that we are on firmer ground than we were a month ago. Til next time!



Steve



Sprint Round Up - 17.05.18 - A different approach Hello loyal devlog readers!

We’be been blogging about for awhile now, and think it’s time we change up the the way we’re approaching it. There’s SO much going into each development sprint that we want to make it easier to understand what we’ve been doing. From here on out, at the end of each sprint, we’ll be putting together a roundup of the development achievements each sprint, and then breaking the detail out into individual posts every week or two. It means you’ll get more regular updates from us, and they should be a bit more bitesized and cover a specific theme or area across the last month of development. Keep an eye out for Steve’s next post on save systems - coming soon!

Now for the sprint round up:

Upgrading the App System

Evaluated current app system and how to get it to fit our requirements & designs

We’ll need to change things a bit so the apps are fully controlled by the Lua scripts Bug fixes and tweaks after PAX & GDC

Screen fade to black moved to UI, removed all old fade systems/code

…so fades now work reliably on player death, level restart/completion etc.

Pause menu scroll bar was misaligned to edge of screen instead of edge of menu

Fixed guards being stuck in wrong animation / AI states after taking breaks

Taking breaks restores motivation correctly (for NPC’s not just us developers)



Added interrupts in animation system to break out of animation before it completes. (Now the NPC’s don'ät need to finish their coffee before they can start chasing the player)

Fixed guards sometimes not chasing player

…see above. They *tried* but it’s hard to run while also drinking coffee



The AI system for selecting target locations still had some old code that limited target locations within +/- 2 meters vertical from NPC position. When player disappeared out of sight in stairs etc. that stopped the AI from following.

Fixed our build script’s “build all” option only building Windows.

…also made it ask for all the options needed *before* making the builds, not in between each platform. Otherwise the person making the builds can’t go for a coffee while waiting the build to complete ;P



Data view textures and colours conforming (props sucha as paper sheet and some devices had wrong data colour)

Fixing the formating in the text for some devices (Extra tabs in hand dryer description strings)

Sped up first hacking interaction to make gameplay and feedback more immediate (bathroom thermostat start temp to 20C) apostle/basement conversation after server objective not set to secure Fixing save issues NFC data now doesnt disappear on load

Saving and loading is now handled correctly

Save data no longer diverges when play is continued. Fixing Doors! Set up scannable interaction prefabs properly,



Added frosted strip accross all glass door models for better visibility,



Scanner door prefab not tagged properly (doesn’t work for the Help overlay) Prop work Fixed missing files in levelkit source .blend

Updated the vending machine prop to give more detail Character Rigging Worked on bringing new characters into the game

Made a start on rigging and set up of some of the older characters with new Colour LUT setup and blend shapes for their body shape Thanks for reading!

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!



Devblog 30.04.18 - STEAMing Ahead! As you can probably tell from our other posts on PAX East and GDC, there has been a fair amount of jet setting done for conferences and shows that broke up our regular development rhythm, but that doesn’t mean there hasn’t been a lot of dev work in the interim!

Now you NPC me, now you don’t

We’ve been working up new characters, ready to populate new levels and keep on with the content push. Below is another harbour worker that Josh has been working on the rig for.

And of course, thanks to our new character colour setup making use of the colour look up tables we have setup for creating easy variations, means that this character isn’t just a harbour worker, he can have many jobs!

As you can see above, changing the colour of the character texture swabs is really simple, but highly effective!

Bug Fixes The nice thing about showing at GDC in a low key way is it made it into a little dry run for PAXEast, where we could discover and fix smaller issues. We worked in and around the fringes most the time - there were a couple fo things to do with level loading, and there were some small tweaks to the lua mission scripts.

Swag Factory With the help of a family member who makes custom T-shirts, we setup a swag factory for the day. It’s incredible what you can do with a hot plate and some vinyl! We used this to experiment with some designs and do some custom one-off prints.

Here we are with a hoodie being finished on the press.

We also got 100 of our ‘classic’ Off Grid T-shirt design printed by a larger print shop so that we would have plenty on hand at PAX East. Combined with our custom tees and hoodies this is what the final haul looked like (above). The whole lot came to around 70lbs and had to be packed in two seperate bags to get them on the plane and under the weight limit.

New Trailer

It’s been a little while coming so hopefully you good folks have been excited to see the new trailer! (It’s been a relief for us to replace the old footage!) If you pay attention to the blog, then there are lots of features and such that this is your first opportunity to get a glimpse at unless you have been lucky enough to play the demo at a conference recently. Check the trailer out here and give it a thumbsup on youtube!!!

:)

Launching the Steam ‘Coming Soon’ Page

The other mad rush was to get the game reviewed and approved so we could launch the Steam ‘Coming Soon’ page for PAX. It’s a fairly straight forward process but there’s a lot of little things you have to get right. Luckily we did in the nick of time and with a little help from some friends over at Valve, the Steam Page went live while we were at PAX.

Please do head on over to the Steam page and have a gander, and remember to: Wishlist us on Steam now!!!

Wishlisting is important for getting Steam to feature you, and is an interesting marker for how you can predict the kind of range your sales will be in. Recently Jake Birkett wrote an interesting article on Gamasutra that goes into this. Bonus Stage Returned We saw the second inaugural Bonus Stage show return once again as part of the London Games Festival. This time we helped organise the event and we also got to return as the previous year’s winners. There were some great games on show including the very moody ‘Beyond Crimson Stars’ (below) by Ben Lunato.

We had a prize for the audience voted ‘Game of the Show’ again and this time it went to “Black Friday: The Ultimate Shopping Simulator” by Chelsey Webster, congrats Chelsey!

We’re looking forward to the next Bonus Stage - plans are already afoot!

That’s all for now, more news soon!



PAXEast 2018! As part of our month of travels, Pontus, Rich, and Steve all made it out to PAXEast to show off the game. It’s a really friendly and inviting show and we’d definitely recoomend it. We were lucky enough to get to show the game as part of a little collective of friends all put together by Kinifi Games, called Figs & Co, run by husband and wife dev team Hollie and Chris Figueroa, those two are a total powerhouse, and we are so proud to call them friends!!

A nice thing about PAX is the airport is a 10 minute ride from the conference centre and the free airport shuttle drops you pretty much at the doorstep of the Boston Convention and Exhibition Centre (BCEC).

Hello Boston!

^ The setup!

Build up was pretty fun, and Hollie who does all the heavy lifting for organising the stand had done some stellar work to get everything together, not least because UPS lost our shipping pallets with all the banners, computers and gear 24hrs before the show. She is some kind of supernatural force because she managed to source everything we needed in that time and setup went ahead on schedule.

Last minute printing inside the conference centre was a major win. Rich had worked pretty tirelessly in the build up to the show to get a new trailer ready, setup the ‘Coming Soon’ page on steam and create a fancy QR code poster to take you to it, but not had time to print out handouts for wishlisting. It was relief to add this cherry on top with such convenience!

^ The team all land!

Off the plane (and after Rich and Steve made the mistake of trying to use the wheelchair-not-so-accessible subway system), we all settled into a much deserved team dinner.

There were omens that PAXEast was going to be good even before the showfloor opened: our AirBnB had a foam recreation of the Master Sword from Zelda just hanging out in the corner (see above!).

^The team at our stand (Rich, Pontus & Steve), all set up and ready to go!

Demoing the game itself was great as always for meeting players and getting feedback. We had a lot of really enthusiastic visitors to our stand and a couple completed the demo too. The biggest lesson we learned was that the game really does benefit from the creation of an introspective space, and in our case, a chair to sit at. Our second day dragged and didn’t get as much footfall as our first, but the moment we got a chair in for people to sit and play on, was the moment the quality of the experience for our players visibly increased. Off Grid requires time to understand and enjoy due to its complexity, and something as small as a chair really does help with that.

Lots of friends were there, Ana and her VR retro game ‘Pixel Ripped’ above.

As well as our good friends and fellow London Indies, Mike and Angus, who are making the wonderful Pool Panic with Adult Swim games.

We had some stonking Boston breakfasts and fot a fairly hefty dose of Americana in at the same time. This one was in a tiny old rail carriage. There was some of the funniest cosplay we’ve ever seen! Not sure if this guy was demoing a game or just making a statement.

We finished up PAX with a celebratory dinner at the Legal Seafood restaurant harbourside (in the Boston Harbour, where the historic Boston Tea Party took place no less). We also had a day to take in some sights, which basically involved walking the Freedom Trail (yes, inspired by Steve and Pontus having played Fallout 4 rather than a keen interest U.S. Revolutionary War historical sites). This is not least given away by the fact that we ended our historic tour with the two most important sites to us: The bar from the hit TV sitcom ‘Cheers.’ And the bench from Good Will Hunting where Robin Williams’ psychologist character finally makes some progress with Matt Damon’s troubled mathmatical genius. PAXEast, thank you so much, you were fun! 10/10, we would def come back! :)



p.s. If you read our previous post about GDC and no kids allowed - no worries here cause PAX East is totally kid friendly! Hollie and Chris even had their little one, Sofia, working the booth with them over the two days! ;P



Marching on to the US of A! Hello! We’ve got a whole lot of fun stuff coming up and it’s been a busy few weeks moving the game forward and prepping for all of these exciting things to come.

We’re headed to the US very soon - we’ll be attending GDC in San Francisco all of next week. It’s the first time any of us from Semaeopus have made the trip over for GDC and we’re looking forward to it. There’s going to be a few opportunities to get your hands on the latest build during GDC week:

If you’ve got tickets to the SOLD OUT(!) GDC Experience Mixer on Wednesday 21st you’re in luck! We’ll be there ready and waiting for you to play.

We’ve got a few ‘pitch up and play’ events in our schedule, too - follow @OffGridTheGame + @RichMetson on twitter for updates on when and where. After GDC, we’re headed to PAX East in Boston from April 5-8th and Off Grid will be showcased as part of Figs & Co!

We can’t wait! If you’re attending, stop by, say hi, and play the game! Rich, Pontus and Steve will all be there ALL FOUR DAYS with our lastest demo at the ready.

Now, on to all the juicy details on what we’ve been up to and what you might just see while playing the new demo…

Cracking the passwords Maybe you’ve read the last two dev blog posts, and remember that we’ve been working on collecting social profiles about in-game characters? Nice way of keeping track of the people you’ve met during the game… though of course it’s a bit more than that. As in real life, such personal information can be used for all kinds of sinister purposes, like social engineering, and identity theft as well. Or, for guessing all kinds of badly chosen passwords and bypassing security questions for different services.

And that’s the last bit of the puzzle for our social profiling, at least for now. We’ve changed our Lua API a bit so now all the network-connected devices in the game can have specific owner, and configured to have passwords that can be guessed if you have collected enough personal information about the owner. To make things a bit more interesting, if you have almost but not quite enough metadata about the device’s owner, you still have a chance of guessing the password. And to make sure the player never needs to blindly try every device, we made the targeting UI display some helpful information when targeting a device, telling you straight away if it’s worth a try, or if you already know the password. Or have no idea about the owner and you’d better just leave the device alone and look for a some more information. To make this work, we modified our remote connection app, and also added new UI that lets the different apps display their own window with some custom content (modder-friendly, of course) on the screen. And then we used those to set up a password cracking app that uses the collected social profile data automatically. (The devices still also have the old fully scriptable access check in place, so it’s also possible to configure them to give access based on any files in your inventory, a specific piece of information about a character, time of the day, or really just about what ever people can create with Lua and our modding API…) Hunting bugs before GDC & PAX East The rest of the sprint was filled with solving a long list of bugs and annoyances from the game, all the small things that we’ve noticed during the previous times we’ve had people playing the game. Most of that isn’t too interesting, but there was one worth mentioning: Early ‘unauthorised’ access In The Apostle level, we’ve had a laptop with key files to access all the doors in the building hidden in the basement. During EGX 2017, we noticed that one player was actually able to target and hack the laptop through the walls and floors way earlier in the mission than we had planned. The obvious solution would of course have been just blocking it somehow, maybe only connecting the laptop to a network once the player has started the objective for it. But that wouldn’t have been fun, or realistic would it?! We wanted to ensure that players intuitive enough to notice devices that could be hacked early as a shortcut were rewarded… Instead we decided to just make sure the mission doesn’t break and still makes sense if someone happens to do this. So we added some new conversations that are triggered in this situation to explain what the player would have missed by skipping few objectives, and then we just let the player take it from there naturally. So now there’s a quite a different alternative progression through the level, which most will probably never find, but those who do can be proud :D To do this, we realised we needed a few more ways for all the different Lua scripts to work together. They are sandboxed each into their own virtual machine, and can’t talk between reach other directly. So we added new features to our Mission API to allow people to store some custom data there, and access it from other scripts as needed. Simple thing, but allows endless amounts of interesting uses when creating missions and devices! New assets and a makeover for the Apostle level

With some expos and demos coming up, we’ve been working on creating new props to flesh out our levels a little more, some of which have made their way into the latest build. Josh spent some time set dressing and doing some level tweaks, replacing some of the old whitebox geometry with the new assets he has been creating. The main focus was the delivery room at the beginning of the Apostle level, and the basement server room, both of which look much more lived in now. Here are some of the props that have gone in: Intro-ducing A major acheivement has been getting the Intro scene into the engine (anyone who has played the demo so far will know that there has been a placeholder animatic made of rendered stills for #QuiteSomeTime). Rich and Steve worked tirelessley to iron out some fairly fundamental kinks in Unity’s Timeline tool, and with some not insignificant effort, managed to get a combination of mocap, custom events, Wwise audio engine calls combined with Unity audio, a video playing in the middle of it, and the whole thing to work within the frame work of our Lua defined missions. Phew! It’s exhausting just typing it out! We’ll look forward to you checking this out soon at a show near you! AI’s need coffee too We did a good amount of work making the guards react to and use a variety of devices recently, recorded some new mocap and plugged that in, too. Steve worked on the AI and setup some new gestures for guards so that they can use the device as it should be used (dispensing a nice hot cup of coffee), but also so that they can be caught off guard (no pun intended) by a hacked machine that has been setup to spew steam or chuck coke cans at them (or whatever other amok state a device might have). As with any new feature though, we have managed to create a bug or two… Above you can see a guard that’s more interested in finishing their coffee than chasing the player (which kind of fits the whole premise of the game really!). BONUS STAGE IS BACK

Remember this? When we won the trophy at Bonus Stage last April? We sure do!

Well… Bonus Stage is back for year two alongside the London Games Fesitval and is now accepting entries! Be sure to enter by 23rd March. Rich was asked to help organise it this year, and of course he agreed - it is a great indie showcase that we’re proud to have been part of, and now support!

That’s a wrap for this sprint - look forward to seeing you at GDC or PAX East! The Off Grid Team



Dev Blog - 21.02.18 - Upping our Profilers It’s devblog time!



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:

Drone Patrol

This month, Steve’s spent a lot of time trying to wrap his head around the AI in Off Grid, with some success! After a significant battle with drones, we coerced them into patroling, alerting the guards to Joe’s presence, and then a bit more patroling. Implementing these behaviours helped lead to fixing missed issues with last month’s ‘NavCloud’ work, which was largely theoretical - so it was good to see it working (eventually)! This was a bigger win than it may sound and lays a good foundation for future AI work, which we’re hoping to build on next month.

Machine of Cinema

We’ve also incorporated Unity’s Cinemachine module into Off Grid. This caters for both cinematic/cut-scene cameras and gameplay cameras. Our existing cameras have been rebuilt using it, and adding new ones is now trivial. Worth looking at if you’re a Unity developer!

MoCap + Unity Timeline + Cinemachine = <3

There’s been big ol’ heart eyes going on as we’ve been using Unity Timeline to integrate motion capture into an interactive cutscene and recreate our game intro in the engine. Timeline is a fairly big feature and is impressive in how it is extendable. There have been a few frustrations as we went, though, as there are few key features missing, that seem like they ought to follow on from other elements of the engine - such us the Event triggers in rest of the animation tool set. Not to fear though, nothing we haven’t been able to find a good workaround for! We are expecting the intro will be in a good enough state to put in the next build of the game in a few weeks time. It has been great to see the characters coming to life when their animations have been sat in a backup folder for well over 18 months! Now we can see breakfast being cooked, doors being kicked down and hacktivists being kidnapped in all their lowpoly glory.

Personal Data Records In the last sprint we did some design work for social engineering, and modifications to our character profiles to make sure we had the data needed in place, so now it was time to actually start building things.

We’ve now added a “People” page to our pause menu, displaying all the characters you have found, and all of their background profile information you’ve learned about them. As you grab files that contain any metadata about people, the metadata is automatically added to the profiles. We also converted the character targeting app we did last sprint as a testing tool to display the collected information rather than everything, so you can easily just target any character you see to check what you know about them. Depending on how big our profiles grow through the game, we might end up limiting that a bit and instead just take you to the pause menu’s People-page instead. And talking about character changes, we’ve expanded a bit on our character customization options for level creation purposes (and the profiles at the same time). We’ve added some blend shapes to character models, ranging from thin to fat, and a “Gluttony” value in character profile files that will change the character model, but can also be used in mission scripting to change how the characters behave. Combined with the colour look-up textures we’ve added previously, and some clever design choices when building the models, it’s possible to get quite a selection of different looking characters from the same base models! Supporting the cause As you well know by now, we aren’t just making a game about hacking and data privacy - we want to accurately portray hackers and hacker culture in a way that is too often overlooked in popular media. Rich talked about this the end of last month when he demoed Off Grid at the CyberSalon Meetup: What is to be done? Games for Social Impact. Joined by Ben Greenaway, Simon Sarginson, and chaired by Rosa Carbo-Mascarell, it was a really in-depth event to get your teeth sunk into. The discussions and presentations roamed from how games address the emotions of surveillance to why simulating a riot in Riot:Civil Unrest can be seen and explored as a simulation and modelling tool in its own right - and how that uniquely quantifies the dynamics and strategies of something so intangible. With all that said, Monday the 5th of February was a huge victory for justice and an opprtunity for one of the UK’s most eloquent hackers to stand up and cheer! We were incredibly pleased to watch Lauri Love’s extradition case finally be wrapped up this month. He’s been through a heck of a lot and withstood it with remarkable composure.

BIG NEWS

^^^ Is on the way! It is way too hard to keep secrets for so long, but sometimes in life you’ve just got to sit still and keep your lips sealed. What to say?! Just keep your eyes peeled - we should have soem big announcements very soon!

Next Month: See you in San Francisco!

It’s GDC time… and if you’re headed to San Francisco, you will be able to get your hands on our latest demo!! We’ll let you know when and where - just keep an eye on our social media!

Catch you soon!



Rich, Pontus, Steve, Sarah & Josh





Dev Blog Post 23.01.2017 - Drones and pwns S’been a while, eh! 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.

