Tuesday 5 December 2017

Dev Blog Post 5.12.2017 - Social Engineering and Distracting Noises

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

Steve:

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

Pontus:


Character profiling

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

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

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

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

Sending SMS, with Lua

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

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

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

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

Outro

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

Saturday 11 November 2017

Off Grid Development blog 8.11.2017 - Changing Times!

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

Blocktober

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

Indies Unplayed

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

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


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

‘Settings’ it up

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


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

Web work

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


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

Mod testing

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


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

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

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


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


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

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

Farewell Harry!

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

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

https://github.com/Semaeopus/Unity-Lua

Out with the New in with the Old ;)

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

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

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

Fixes and additions:

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

Main game:

Messaging with CryptoChat

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

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

Include Mods in use, in save games

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

Saving NFC

NFC data is now being saved correctly.

Trailer video

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

Player Phone

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

Stuck Running

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

Look around you

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

Invisible walls and soft bathroom sinks

Lots of missing colliders were fixed.

LevelKit:


UV Warning

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

Mod Content structure

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

Non Steam works / DRM free mod exports

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

That’s all folks

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

Pontus, Rich, Sarah, Steve & Josh

Tuesday 24 October 2017

Sprint Update 24.10.17 - Back in the Trenches

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

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

Friday 20 October 2017

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

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

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


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

Off Grid’s Twitch Debut



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

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

The Geek Show

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



Friendly banter with the NCA

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


Here’s a little closeup of their handout:


Big Red Barrel Duet with Yucatan Game

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

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

What else did we love about EGX?

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

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

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


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

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

Wednesday 20 September 2017

Sprint Update - 20.09.17 - Straight Outta Leftfield!

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

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

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

Now onto the sprint!

Rebuilding the harbour

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

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


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

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


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

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

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


Drones and navigation

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


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

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

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

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


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

Other changes and Bugs Fixed:

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

Whats ‘Appening

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


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

New team member!

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

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

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


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

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


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

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


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

Characters Ahoy!

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


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


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

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

The Experience


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

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

PR You Ready?!

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

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

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

Friday 1 September 2017

Develop 2017!


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

The Talk


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


Here’s some of the things I talked about:

What is modding?

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


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

Why make your game moddable?



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


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


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

Deep dive


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

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

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

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

Live Demo


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


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

Podcasts:


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


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


Until next time!


Harry

Wednesday 16 August 2017

Off Grid Sprint Update 16.8.2017 - Imma chargin ma lazer





Heyho! It’s been a long Sprint this one due to various galavanting and laser based activities, so apologies for the adjustment to our usual blogging schedule. The upside is - we have packed an incredible amount in to tell you about!!

Develop 




This sprint started with us heading down to Develop conference in Brighton as Harry was giving a talk on ‘Making a hacking game hackable’. The talk went incredibly well and generated lots of indepth questions from the audience.
We had the opportunity to meet up with all kinds of incredible folk and show them the game, including the ever lovely Dan Marshall who was extremely excited by the game and had these lovely things to say about us :D




That one is definitely going in olive wreathed award quotes!
Harry also found time to appear on Keir Miron (of Darkest Dungeon fame)’s podcast 'The Question Bus’ and was interviewed in a corridor at the conference! You can listen to it here.

SHA2017




We have been pushing a bunch of features forward in the game, especially within the modding toolset, and getting it ready for SHA2017, a hacker camp in the Netherlands that we were invited to.  Rich and Harry spoke and ran workshops focusing on how hackers and modders can use our modding to tools to create interesting hacks that reflect real life vulnerabilities.
The talk and workshops went really well - we learned a heck of a lot and we got a fair few people in using the tools.  You can watch the talk here and we’ll be putting up a full blog post on the whole experience in the coming weeks.

Steelcon

In the run up to this, Rich headed up to Steelcon again to gather inspiration (the SHA talk references how one of the first hacking mods we made in Off Grid was based on a Steelcon talk about hacking the Nissan Leaf electric car by Scott Helme last year). There was loads of interesting brain juice this year, including our friend Darren Martyn’s hilarious talk on Hacking ACS Servers for World Domination and this unnerving talk by Ken Munro from Pen Test Partners about the awful vulnerabilities they had found in IoT sex toys…

Mod hacking workshop with Spoonzy




On top of having gotten a good start on testing the modding tools with Dominic during his work experience last month, we took this a step further and got our mate Spoonzy to come in and apply some hacking knowledge to crafting some hackable devices with the modding tools. Spoonzy spent the day with us and came up with some pretty epic ideas for hacks - we made a start on a couple of them and he prompted a few fixes that we got to work on ahead of our workshops at SHA.

New Networking




This included Harry working on switching the networked tools that allow modders to build their own level changes directly into the game over to our own networking code (much faster iteration time!). This took a little wrangling, but as well as speeding up the workflow, it has put in a couple of checks that prevent potential loss of work. The old way used Unity’s built in TCP/IP networking code and made use of the editor’s play button in the modding project - if you have ever done any Unity development you will know that if you leave that on by mistake when working on objects or values in the scene then you will lose your work when you stop play mode on the editor - the new networking code avoids this pitfall entirely. 

Tools!

We wrote an export tool that can now generate clean versions of LevelKit for us to submit to our steam tools section for the game. Meaning that any half-baked dev content is stripped out and our modders have a nice clean project they can work within.

Spawning




We also found that folk wanted to know what direction characters would face when spawned and so now allow users to visualise players and guards spawn rotation with an arrow marker on the mission object.

Templates




We wanted modders to be able to just jump straight into mission and
hackable object scripting if they wanted to, rather than having to do
any geometry or environment work and so made a template scene so modders
can jump into a working mission with hackable devices already in it,
ready to be edited, scripted and added to. It is just a basic couple of
rooms with a few props and a basic laptop to hack into as an example but
it is a good start. The laptop in it even had the SHA wiki on as the front page :P

All your data belong to us

All networked devices now have a data inventory - this is the first step in making characters dynamically populate the devices in the world with their personal data. This way, when you hack a device you are able to get specific information on the NPCs around you who have interacted with that device, building up a piture of their behaviours and routes, and what data or other devices you might be able to manipulate them with.

No Rest for the Wicked

And one for the books… we fixed guards giving up patrolling after roughly 5 patrol points. We found that they had not been given a place to rest and recoup their motivation so they were essentially lazy guards striking due to lack of coffee!

Progress and Affect

Modders can now update the game progress via lua, which means conversations, objectives, or other triggers and interections in your level can affect another mission. For example, finding a hidden space in a level or making specific conversational choices in a set of CryptoChat messages can be used to unlock new levels and side missions within the wider game. Essentially branching narratives and their effects can be set off by any lua triggers in a level.
We also added an Error checking pass on conversation system (making them now more robust). It’ll now be easier to avoid lua compile errors and get your conversation scripts in the game and conversing properly.

Wiki

 




The other thing we have done is some fairly comprehensive work on getting the Off Grid Wiki to a stage where it is useful to players and modders. We now have a bunch of articles which describe how you can go about making mods for the game. We’ll update you soon once the structure of those articles is coming together!

Character customization

We are aiming to make all characters more customizeable for modders, and want to set up the colors in a way that would require as little as possible special skills or programs to change them for an existing character, while still using a single mesh & single material on each character in game.



Normal textures would do the job, but editing the colors on them afterwards isn’t really for everyone. Vertex colors are easier, but editing has to be done with a 3D modelling tool and creating different color version of a character requires creating a different model (or messing with the vertex color data on the fly through code). Our solution was using a simple texture as color look-up table, so once the characters are set up correctly (by us) all one needs to do to change them is open the texture file in any image editor (even MS Paint would work great for this) and paint the tiles with new colors.
Since we don’t need any detailed textures or anything, we can just assign the UV’s of the models to those colored tiles. And in theory we only need one pixel per color so the textures can be really small. Although to make things easier to work with and avoid any issues with color bleeding when the images are compressed, we settled for a 64x64 texture (the resolution doesn’t actually matter) with 8x8 grid of colored tiles. That’s 64 colors per model (with 8x8 pixels each), which should be more than enough for our art style…




In addition to the color table, we also added support for an additional texture that works the same way, but is used to set the glossiness of the material, and to switch between metallic & non-metallic material.
…and both these textures are of course fully optional, all the characters have default textures built-in to the game so if the modders leave one or both textures out, we’ll just use the defaults instead.

2nd Floor of the Apostle level

If anyone reading this has had a chance to play Off Grid, and made it through our newspaper office level, you might remember the 2nd floor of the building being pretty barren, to put it nicely. Properly decorating that part of the level and adding some actual gameplay has always been our plan, but there’s just always been more important things to do.
Well, this sprint we finally decided it’s time to add some content there. No spoilers, but let’s just say that you can’t just run through that floor any more, and trying to sneak past the guards would be pretty difficult as well. Instead you need to figure out a way to get the guards out of your way. There’s a few possible solutions, like you’d expect in a stealth game, and we thinks there’s room for some more as well.




Other changes & fixes

  • Added a bunch of new sound events for different parts of the UI

  • Text-only lines in the ncurses-like remote connection window are now correctly displayed using the foreground text color (as defined in the device’s Lua script)

  • File viewer UI can now be closed with the “back” button (B button on gamepad, backspace on keyboard), and also closes automatically when the pause menu is closed.

Biz Rumblings

There has been a bunch of production and business development going
on in parallel to all this, loads of interesting folk spoken to about
opportunities for the game, but as always, you’ll have to wait to hear
more about that!

New *MOAR* blog posts

We have decided to shift the format here on the
devblog slightly, we are planning on continuuing with these monthly
sprint updates but maybe trying to make them a little more concise while also expanding on one or two of the items in each
blog post in between each sprint update, so watch this space! We are
going to start with Harry writing up a follow on from his Develop talk,
the kinds of things he touched on, and his impressions of the conference
as a whole, so look out for that!

Speak to you even sooner!
Rich, Pontus, Harry, and Sarah.

Wednesday 5 July 2017

Off Grid Sprint Update 05.07.2017 - Modder-dod-a-ding-dong

We have spent the month hard at working putting together new changes to the game’s interface and the modding tools. We have also brought our wiki documentation forward so that it is usable because we have had our first modder working with us this month!

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 asking
for 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…

Tuesday 6 June 2017

Off Grid Sprint Update 06.06.2017 - Radial Velocity

The month of May is done and dusted - and Off Grid is all the better for it! We’ve overhauled the app system, reorganised our LevelKit, and continued adding all the right save features. If you’re a wannabe Off Grid player and modder, the time to start getting familiar with the tools at hand is right here, right now!


New ways of using your apps

In this sprint we ended with fairly big difference in how apps, and selecting targets for interactions are handled. While the old AppWheel is convenient for certain types of interactions, like grabbing all the data around you as you run through the level, it’s less ideal when you want to do more planned and complicated interactions with various devices, without having to switch different apps on & off and sometimes opening your pause menu and inventory to select files and send them.

So we decided adding a radial menu you can use to select the apps to use, files to send etc while you are currently looking at a target device would be a nice option.


Simple enough as a concept, but as things go, actually building this ended up requiring quite a lot of other things to change as well…




Wednesday 3 May 2017

Off Grid Sprint Update 03.05.2017 - #Winning

Our favorite part of April?  Bagging the Game of Show Award at Bonus Stage!  It was pretty sweet to take part in the coolest new indie games showcase to start - but to take home a prize?!  Awesome. 
We even got a trophy!




That was a great start to the month, but so, so much more has happened since then.  We’ve worked hard on improving the stealth element of gameplay, added to our level kit architecture, worked hard on the save system, and have gotten busy making more levels.  Read on through for all the nitty gritty and make sure you get to the end - there’s even more good news!  :)

Wednesday 29 March 2017

Off Grid sprint update 29.03.2017 A(door)able Conversation

Hello and Welcome!

Dear future players, fans, diehard readers, friends, and fellow indie game lovers, please open your ears, blink your eyes, wiggle your fingers, and get ready to mark your calendars:
Behold, BOnUS STaGe!!!




Bonus Stage is a showcase of independently made video games happening in Loading Bar, Dalston, all day on the 2nd April 2017 (this Sunday!!!).
We’re chuffed to have been invited to take part and are super excited to get our game into even more hands!  Come along - it’s totally free and is a sweet opportunity to get your hands on these great games, meet the developers behind them, and score yourself some swag.
The event is part of the wider London Games Festival, and is one of many fringe events taking place throughout the capital at the moment.

Behind the scenes

Working in the shadows
We have had an extra stealthy member of the team working hard in the background for the last few months.  Her name is Sarah and she’s a bit of a low key operator, but she has recently resurfaced on Twitter herself, and so it seems like the opportune time to shout about how awesome she is and welcome her into the fold.  She’s been helping to fine tune the Semaeopus machine and is taking charge of our social media.   You’ll be hearing a lot more from her as development progresses!  

Under the surface
The team has been shaving away at a whole slew of different tasks, but sometimes it’s easy to forget all the foundational work that goes on under the surface. This time in a project, where you are breaking through from systems and mechanics​ to content and full production comes with an array of different challenges for small teams. Obviously there is the transition of roles and responsibilities as the day-to-day for everyone starts to change shape, and there are considerations of resources, not least scaling up the staff themselves to handle the increased workload that full scale content production inevitably​ brings.
There is also discipline, and finding who is going to own the responsibility for ensuring each team member stays rigidly on task; the amount of jobs to do increases and therefore so does the surface rates for distractions, rabbit holes and scope creep. We do a fairly good job of managing this with our agile approach where everyone has to take responsibility for the next sprints work.
Among the accounts, production and secret biz dev we can’t really talk about, there’s been some great progress and good fun happening over the last month.  Lots of level design going on:



And we finally received our Perception Neuron to do our own mo cap and get some more animations in our bank!  The team couldn’t wait to open it up and start trying it out.  Here’s a couple different interpretations of the ‘T pose’ during calibration :)


The New Door System

This sprint Harry’s been refactoring the door system.
Doors in games can be a never ending source of complexity and problems.
We’d highly recommend Liz England’s hilarous article on Gamasutra
Our new door system had the following requirements:
1.  Doors must have the ability to be hacked (therefore require a network connection)
2.  Door scanners must use NFC connections for key validation
3.  Doors must be easy to set up in LevelKit with only a few variables to tweak
Our old system relied on the idea of “Access Levels” - depending on the player or NPC’s access level, they’d be allowed through the door.
Our new system uses the idea of “Zones.”  Multiple doors can belong to a zone and multiple keys can unlock a zone.
When placing a door prefab down in LevelKit, there’s a zone variable to fill in on the ‘Door’ component.




As you can see in the above example, the door is part of the “Delivery” Zone, the Zone component is the only value you’ll need to change in the Level.
Now lets take a look at the mission script changes!
Here’s the door section in one of our in development missions:




So let’s break it down a little.
Section 1: This sets up the network that the door system will use. It’s required for us to send data when keys are used to validate a door scanner.

Section 2: This code is setting up the Zones and which keys unlock them, for example. Anyone with the “Admin” key will have access to all the doors in the last 4 Zones.

Section 3: So this part is a little bit more complicated, but stay with us! :)
It’s all very well and good setting up these zones and their keys.  But how does the player ever get them?

This is what section 3 is doing. IDcard01 is an interactable mission object.



Once “SetKeyOnDevice” is called, the key data file will be transferred over when the player interacts with (In this case scans) the card.
We also have “Doors.AssignKeyToCharacter()“ to directly send the key data file to a character.
This isn’t all that’s in our new door system, you’ll have to pick up a copy of the LevelKit to find out more details! :D

Conversations

If you’ve had a chance to play Off Grid this far, you might remember there being some points in the game where you are faced with an endless stream of long text messages, either telling you what you should be doing, or providing background information about why you are doing it. And you might also remember us mentioning that we were aware that this wasn’t really working as well we’d like…

From game design perspective, that had a few big problems. First of all, the player is often busy trying to do something else, and message notifications popping up in the corner of the screen are probably the least important thing you feel you should be paying attention to (well, might be the
same thing in real life as well…). To make it even worse, even the players who were kind of interested in the story seemed to just doze off after few long messages! Switching to the Pause menu and reading though the old messages one by one was also a bit cumbersome way for following what really is a longer piece of info, but had to be split to small enough separate pieces in order to work as text messages.

Finally, the worst of all, reading long pieces of text means that the player is not actually actively doing anything, you are not really *playing* the game at that point. While some people enjoy taking their time to read through game lore, many don’t. And when people started ignoring the messages because of this, we lost our means for communicating to the player what their objectives in the level are, what they should be trying to do, and where they should be trying to head.

Well, for a long time now, we’ve also had a plan for how to solve these problems. How about turning all that into something the player can actually actively be part of? Changing the monologue of text coming from other characters into a conversation where the player is taking part, and can make actual choices as well. Not exactly a new idea, we admit, but we are making a game where all the data sent around you is tracked, and is simulated on the level of devices sending it though networks and so on, which made things a bit more complex and also meant we couldn’t just grab some existing dialogue system and instead had to design our own. Last month we were talking a bit more about the design side of things, and now we’ve turned those designs into something that actually works!
Lua Conversations
Our new conversation system is completely scripted in lua, it hooks into our existing apis and allows for some really fun state tracking.
Here’s an example of a simple conversation between Joe and Jen discussing what they’ll have for dinner.




Conversation scripts hook into your mission script seamlessly, all you need to do is list the short names for the characters from your mission and we’ll get the full name for displaying in the UI.
As you can see above, the begin function is called automatically. From then on, it’s up to you to fill in the message queue as you see fit.

Normal messages simply use the Send function. The first argument is the character the message is from, the second argument is the content of the message.
We also have support for dynamic messages, as you can see on line 21. If user provides a function that returns a string as the content, then we’ll call if when Send is called. This allows you to make some messages procedural.

To set up selectable responses from the player, the user can call the SendResponse function, listing up to 4 responses.
The first part of each response is the text that appears in the conversation log, the second part is a reference to the function to call once that option is selected, this allows the conversation to branch.
Here’s some examples of what that conversation looks like in game :)





We’ll keep hold of your on-line conversations…
One extra benefit from conversations over individual messages is that we were also able to  change how our Message history page (in the game’s Pause menu) looks and behaves. Instead of displaying individual messages for the player to read one at a time, we can now easily group all the messages from a conversation together. And this makes it much, much easier for the player to follow what was said and to find the important pieces of information. It also means that there are less entries in that menu, one per each conversation instead of one per each message, so finding the right chat to read should be a lot easier as well.

On the technical side there’s nothing too complicated here, at least for now the log really is just a log of the conversation text itself, and who said what, so we are not logging the actual data sent around or anything like that. Maybe in the future, if we find a good reason to do so. The only reason why we couldn’t just grab the data directly from the conversation Lua script and instead needed to log it as the conversation went on was making sure we save the replies the player actually selected during the conversation.



Missions between missions
So, that’s the old SMS system replaced. And we could have stopped there… But there are times where it just feels odd that the player would just show up on some location, completely without having any information or reasoning beforehands, and everything is just explained when you get there. Surely the people sending you on a mission would at least tell you *something* first to prepare you for what you need to deal with.

So, we made you able to run the conversations in our map screen as well. And it’s not just a chat, the conversations there are actually ran as missions, with all the same rules and effects on the overall game progression as the “normal” missions have. The only difference is we just run the mission & the conversation right there while you are looking at the map instead of loading actual level.




This is even more useful when you think about having some user-made levels, or even complete new stories. You can use the map screen conversations to introduce your own story, to prepare the player for a new mission, to debrief after completing one, and also as a midpoint in your story, something that can serve as a choice between branching story lines and different available missions. And because they use the same mission system, the choices made in the map screen missions can carry on in your save games, and work for long-term progression, affecting things in later conversations and missions. Or, really, whatever the level creators can come up with, it will all be available in the Lua API so if you want your smart water bottle to know what you said to someone few levels earlier, now you can. (What? Smart devices around you logging your behaviour? That would never happen in real life!).

Artist on the run

We have some more good news - we have officially been joined by artist Rob Ramsay!  Maybe you spotted him earlier?  He was the T-pose tea drinker in the mo cap photo above - we like his sense of humor! :)  Here’s a little update from him on what he’s been working on:

Processing 3d models from reference for Off Grid
This is my first blogpost for Semaeopus, and for Off Grid. As an artist with a keen eye for attention to detail and working as methodically as possible I am tasked with making the environment art and props, an specifically making it all fit into the LevelKit setup that the team has for making it easy fro modders to produce new levels.

The process involves looking at reference material and making props that snap to a 20cm grid with extendable parts and components, which in turn allow for the making of custom prefabs and larger props that can be placed into the game.
For example, this sprint we have been producing the model parts of the hangars for the Harbour, which was a case of checking out the reference material and deciding how the parts break down, into walls, roof parts, edges, guttering and internal frame supports.



Above, you can see the parts to make walls and doorways for the hangar have been made with various smaller peices that can be used to extend to almost any multiple of 20cm. In respect of this, the pattern of the walls also had to comply with 20cm.

Each part has a material assigned along with vertex colouring that are predefined from the art document; for example, aluminuim as a metallic-vertex material and plastic as a specular-vertex material. This is currently internal documetation, but there is a future plan for a community wiki with more detail on how anyone can structure making assets for Off Grid.

Another thing that has to be considered when making parts is where the pivots or origins are for each prop. Ideally, they would be at a bottom corner landing on the 20cm grid, this way parts can be rotated and placed together, snapping into place.

A good example of this is how the railings and platforms for internal industrial style walkways containing all kinds of parts that can be assembled to make prefabs.



Here are these parts constructed into a usable prefab that can be placed around any industrial setting:




Each part that is imported is given some kind of collision mesh, and collections are made that will be later used to present to modders who want to know what parts connect together.
Here are 3 examples of some of the collections made so far:




Eventually all of these collections are placed into a collections scene that we can use internally, and will prove useful for future modders to browse, understand and implement.
As you can see, there is a lot of flexibility and we are looking forward to what you all come up with!  ;)

That’s all for now

But don’t forget - come to BONUS STAGE on Sunday and play Off Grid!