Showing posts with label modding. Show all posts
Showing posts with label modding. Show all posts

Wednesday, 20 May 2020

Sprint Roundup: Spring Character Cleaning!

May we welcome you to the latest OFF GRID devblog!  As always, there are continuous improvements being made, and we hope you enjoy hearing about it all. 

Improving User Experience

The last two sprints have seen improvements in the user experience for players, but even more so for modders.  That also means it helps us in making content - as we use the same tools ourselves.

Most noticeably for everyone, the look and feel of the data view has been improved.  This makes it easier for players to find and access the data they want in the levels, making the whole experience of targeting data feel better.  For anyone with access to our LevelKit and modding API, we have been rewriting lots of our API to simplify the scripts, make sure different functions use consistent syntax, and can be used everywhere.  This reduces the amount of information modders need to write, and automates more of the level setup steps on engine side to reduce the amount of things content creators need to handle.

Character Updating

Another major task has been coordinating work by a few of us on characters, their accessories, LUT colours, and how the prefabs are organised for all of this.  We finally removed the last remnants of prototype characters that have been in the game since day dot too.  It has been liberating to do some spring cleaning!  This has also meant that the full remit of characters in all colours, shapes and sizes are now implemented across the game, AND they can be tweaked and modded to your heart's content!  Next up is fleshing out the rest of their personalities and conversations!

New characters have entered the building!
Character customisation - accessories, hair, and colours can be changed.

NPC Direction

NPC direction has been improved when performing certain actions, like interacting with a device or walking through various points.  As the navigation mesh system isn't made to have an agent to face a certain orientation or to be in an exact position at the end of its path, it's needed to tweak the object direction and position with code, and at the same time control the animation manually to make everything seems as fluid as possible.    The facing orientation is really important in patrolling because it's a game design pillar for stealth games to control where the player can navigate through a level.  It's also important when the player is interacting with devices - for the animations to seem correct, the NPC needs to be in a certain position facing a specific direction.

We also added a gizmo to help us visualise in the level each direction the NPC should face at certain points such as interacting with interest points, as you can see in the screenshot below:

Arrow indicates the direction this non-playable character should face.
This helps us and modders to line up the characters correctly when setting up the patrol routes and interactions.

Improving and cleaning the NPC creation system

This is really Phase One of a bigger feature and task that we are going to talk more about in the next blog post, but for now we are going to focus on the NPC part of it.  We are developing a more flexible NPC system to have various types of NPCs with different action, behaviours, or items.  It's really important to have diverse levels, and also to give good tools for the community to create dynamic mods.  In terms of developing the game, this is also really helpful to us because it's a good opportunity to improve and clean some code.  This has already resulted in improving the AI search actions and debugging the code in a faster way.

What will you see in the next build? 

Expect a new build for all of you FIRST ACCESS folk next month - we'll give you a heads up as soon as it's done.  Here are some of the changes you can expect to see:

Characters
  • All protoype characters removed and new characters implemented across the game
  • Characters available in all colours, shapes and sizes now in game - ready to be tweaked and modded as you please
  • Improved creation of NPCs:
    • Ability to create different types of NPCs with various actions and behaviours in a flexible way
    • Some components are added in runtime, using the information in Lua scripts
    • Simplification, merging, and removal of some NPC scripts

Gameplay and Mechanics
  • Support for scheduling things to happen based on date / time (in addition to the existing "do after X seconds" option)

Controls and UX
  • Fixed issues with data view visible range and actual targeting range not matching
  • Improved visibility of data & data trails
  • Fixed data view range not always resetting to minimum correctly
  • Fixed data view shader using negative transparency with missing/bad UV's on meshes

AI 
  • New system to control the NPC direction at certain actions:
    • It improves the movement before the NPC interact with a device
    • Gives more control in the guard's patrol
    • Gizmo added to visualise the desired direction 
    • Cleaner organisation and seperation of NPC functionality, which should make debugging various parts of the codebase easier

Modding and Lua API additions 
  • Lots of Lua scripting API cleanup, with more consistent and less verbose syntax for things
  • Requirements for level creator / modder to set up certain things have been removed and are now handled automatically instead

Other tasks and upcoming events

  • Rich did a presenation on modding and mod communities for Tentacle Zone :  
  •  
     
  • We submitted to Steam Games Festival - fingers crossed!
  • Moving and tidying of all Semaeopus and OFF GRID organizational documentation to a new system

Tonight (Wednesday the 20th), we will be demoing OFF GRID and our Milliways mod during the World Game Night:  Made in London Edition event put on by Playcrafting.  If you're free, join in - this session is all about UK games and their makers!   Check it out:  https://www.eventbrite.com/e/world-game-night-made-in-london-tickets-102541967786 


Thanks for reading!


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!  Thank you!

Monday, 30 September 2019

Coworking and Cracking On - Sprint Roundup 30.09.19

Hello faithful OFF GRID fans!

We had a fairly unique sprint this time around, with loads of doing stuff IRL!  And with that we have got plenty to update you on with this sprint:

Facetime

This sprint we had a great co-working session with the team in Essex.  It was the first face-to-face gathering with all of the current team in one place, and so we made sure to start it off well!  Sarah welcomed the team with fresh, homemade doughnuts and Rich had several racks of ribs ready for the smoker.

It was an extremely useful co-working session with lots of planning and organisation - with discussion carefully curated by Filipe.  The team also got together with other Essex devs for a bowling session one evening... and we've learned there are no standout bowlers on the team!


Essex Dev Bowling

Thursday, 14 March 2019

Sprint Roundup - 14.03.19 - Doors of Perception


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



Content (Level Design and Art)

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


Gameplay and Mechanics

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

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

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

Modding and Lua API additions

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

Other

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


If you haven’t already - be sure to wishlist Off Grid on Steam - each wishlist makes a big difference to us, and we really appreciate your support!

Thursday, 31 January 2019

Sprint Round Up - 30.01.19 - The FIRST Sprint of 2019


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

Content (Level Design and Art)

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

Gameplay and Mechanics

  •  Design work for data view & app use cost changes

Controls and UX

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

AI

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

Modding tools and Lua API additions

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

Bugs fixed

  • Fixed a shader problem introduced after updating Unity

Other

AND:  WE MADE THE BRIT LIST!
http://www.kotaku.co.uk/2019/01/11/games-of-2019-british-games 


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


If you haven’t already - be sure to wishlist Off Grid on Steam - each wishlist makes a big difference to us, and we really appreciate your support!

Friday, 21 December 2018

Sprint Round Up - 21.12.18 - The LAST Sprint of 2018


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


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

Finland = Winter Wonderland

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

App System


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

AI

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

LevelKit

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

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

FIRST ACCESS

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

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

Character Controls

• design and planning for improving character control

Bug Fixing

•  Fixed game crash in Map screen.

Other

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

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

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


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

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

The OFF GRID Team 

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



If you haven’t already - be sure to wishlist Off Grid on Steam - each wishlist makes a big difference to us, and we really appreciate your support!

Friday, 12 October 2018

What makes Off Grid unique?!



What a week this has been: a huuuuuge thanks to you all!  We’re nearly 60% funded - and THAT is a great way to go into the weekend.

In case you missed it, Rich did a little stream yesterday from the back of an LA cab - it is full of big gushy thank yous to everyone! The video isn’t top quality, but the heartfelt thanks definitely are.

He’s out there as he’s a speaker at IndieCade today! He’s talking about modding, digital activism, and why as a game developer, you probably have less to say about a subject than your audience does.
 
So without further ado: let’s talk about what makes Off Grid so unique!   



Off Grid is first and foremost a fun yet challenging hacking game that opens a dialogue about the real world issues of data privacy, information security, and the mass surveillance state that surrounds us all. It has a compelling narrative and a sweet father-daughter relationship at its core.

It’s played with a controller, and we promise, no previous hacking knowledge is required. ;)
But if you wish to take it further, there’s so much more to it!

Replay & Community Input  

We want Off Grid to continue on as a piece of work that the community can shape along with us in order to make it everything it can be. It is an open stealth game with multiple solutions to levels and a complex AI, creating missions that are fun to play through many times over.

PLUS, the game is extensively moddable and the speed and ease with which players and modders can turn around a level means that interesting content and stories should be produced at a speed and scale that will outstrip anything we could dream of as an indie development team!

This is something we want to expand on here...

The 'South Park' of Hacking Games  

Off Grid has dark humour at its centre, and the state of this crazy googling, Orwellian hot mess of a world we live in is ripe for modders to exploit humorous interpretations. Off Grid is much like South Park in that important themes are wrapped up in tongue-in-cheek humour. Like South Park’s speedy turnaround of episodes to approach topical issues, Off Grid’s modding tools make it possible to produce a new level in a matter of days in order to ape news and current events.

The incredible importance and relevance of the issues around hacking and data privacy in everyday life mean that there is a mine of inspiration available for topical mods to be created and for streamers to play and comment on.



In the video above, we took a real life vulnerability and made it as a mod in the game to prove the tools could used to tell stories of real life hacks.  In this instance, we took Scott Helme's talk from Steelcon16 about the vulnerabilities of the Nissan Leaf, and made a hackable car that carried the same weakness:  a publicly displayed VIN was used to access the app that controls the car's aircon, battery, locks, and could get the car's location data.

The possibilities are endless!  We look forward to the game being released and seeing the first official mods come back. 

If this sounds up your street and you have yet you back Off Grid, please consider doing so now!  We’d love to have you as a backer.

To all of you that have backed and/or shared this campaign so far: we can’t say thank you enough - it’s been an absolutely incredible few days!

THANK YOU!

The Off Grid Team

P.S. Don’t forget: please share this, retweet us, post the link wherever you hang out online, and tell your friends! THANK YOU!

If you haven’t already - be sure to wishlist Off Grid on Steam - each wishlist makes a big difference to us, and we really appreciate your support!

Monday, 8 October 2018


That's right, in just over 24 hours, Off Grid will be live on Kickstarter!

Launching on Tuesday, October 9th, you will have the opportunity to:

-PLAY A FREE DEMO of Off Grid
-Secure your copy from as little as £8 (SUPER EARLY BIRD!)
-Get your name or handle in the game
-Help shape the game via our FIRST ACCESS program!

...and much more!



The campaign goes live at 4pm BST. That's:

4pm London / 5pm Berlin / 11am New York / 8am LA

Get in there quick to get the best deal on the game! Some reward tiers are limited... you don't want to miss out!

Help us spread the word! Share our posts, tell friends when you've backed, and let us know that you have by using #offgridthegame on social media!

THANK YOU FOR YOUR SUPPORT!

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!

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!

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…

Saturday, 28 January 2017

Sprint Update - 27.01.17 - Voron-Oi-Oi-Oi

Hello folks!  We hope you have had a good start to 2017 and are fully recovered from the post holiday slump! It has been a pretty busy start to the year for us. We have built a whole new system for mission selection, added new characters and missions, and all the while been busing doing release planning and following up on biz dev.

Rigi.py



We rigged up a new character and have been working up some new content.
There is a fantastic python script available to take the standard Rigify add-on in blender. It gives you the ability to to switch between the tools needed for animating in Blender and alternatively stripping the export down to just what is needed for importing into Mecanim for setting up with Unity’s humanoid system. We won’t say any more but if you use Rigify and Unity this will make your life sooo much easier!

You can grab the script from here:
https://github.com/trynyty/Rigify_DeformBones/blob/master/Rigify4Mecanim.py

Friday, 2 December 2016

Sprint Update - 02.12.16 - Workshop til you drop

Hello hello!
This sprint has been all about the behind-the-scenes:  stuff you would never know about while playing the game.  Just as well you are reading this blog then, eh!  We got a whole lot of release planning done and have our road map to alpha defined with greater granularity, at least for an agile project that is! ;P  We have done some early spring cleaning by upgrading our version control servers (in fact, entirely renewing them) and in project terms, we have mainly been working on our platform abstraction, Steam Workshop integration, and cleaning up some of our old props that were using materials inefficiently.

Now as an overview, that may all sound a little dull, but we promise there are some gems in here - especially if you are a fellow game developer running a similarly sized project.



Friday, 26 August 2016

Sprint Update - 26.08.16 - Lua to the moon!

Hello folks!

Apologies for the delay, we all went on holiday at the end of the sprint and there was some confusion as to who had written up their part of the blog post!

:P

So sorry if you have been achingly awaiting a dev update, it is finally here, and you’ll have another one in short succession at the end of the current sprint to make up for it!

Tuesday, 12 July 2016

Sprint Update - 12.07.16 - What has 6 legs and green shoots? Us!

Greenshoots

Hoorah! We have been selected by Creative England to join their Greenshoots program in partnership with Microsoft, which comes with a solid amount of funding and will help us ensure we get to our aim of getting the alpha in your hands sometime next year!

This means we can continue working full time, plan towards some kind of release date, and have enough funds to guarantee we’ll actually be able to get the game out in it’s alpha state and that people will be able to get it around next spring/summer (assuming you are brave enough to grab early access copy)!!

Thursday, 10 March 2016

Sprint Update - 9.3.16 - Mocappin’ and asset snappin’

Well… there has been a huge amount put into the game this month. In fact, it has been intense, a lot of hours, and at times pretty tiring, as things have had to be organised to hit some quite specific deadlines, but the outcome has been an amazing explosion of creativity and progress on the game. So… what have we been doing?



Wednesday, 3 February 2016

Off Grid Sprint Update 3.2.2016 - Beginning of a New Era

It’s been a while since our last development update, but there’s a good reason for that… (And it’s not just the holidays we spent recovering from last year and doing a bit of research and planning). Be warned, though, this is going to be a long post!

Christmas is a time for modding “research” (and sharing of course)


We have been aiming to open up Off Grid to modders in as many ways as is possible and manageable for a small team like ours, and so the sprint over the Christmas break seemed like a good time to do some “research” by messing about in some of our favourite moddable games made by small(ish) teams.


We had a gander at games like Kerbal Space Program, and Cities:Skylines, who develop using Unity and have opened up a huge amount of their C# API to modders, but also, more interestingly, KSP and other titles are using Unity itself as the level editor for players (due to it being free to download and use - why build your own?!). As far as data and code modding goes, we started small with a tool mod for Starbound (making the most powerful hammer in the known universe seemed like an important contribution to make ;P) and built up to looking at the quest, codec and dungeon modding structure to see what the good folks at Chucklefish have opened up with JSON and Lua for players to tell their own stories through missions and content.



Happily enough, it would seem the .xml data structures we are using already to store things like NPC personalities and the in game hackable DataPoints (text messages, emails etc.) will hopefully lend themselves quite nicely to a similar approach, and so next sprint we went into for January has been partially targeted at implementing a first pass at Lua scripting for character interactions with the aim of them being moddable… but I suppose we are getting ahead of ourselves…

UK Games Fund

We’d better start with the big news. We recently received a grant from the UK Games Fund to further develop our game prototype. This of course meant some of what we had planned for January needed to go on hold, and instead, we needed to sit down and think through the best ways to use that money. We decided we’ll use it to build some of the missing things that require the most help from outside of our small two-man company, setting things up for level editing & modding support, and dealing with our interactive story introduction and tutorial, which will require good amount of animation, motion capture, and of course sound…

Updating the tech

To get started with this plan we realised it’s time to get our tech up to the latest versions. We’ve been in limbo with the old Unity 4 this far, as we knew the upgrade would require roughly a week of rewriting and refactoring of code due to the way Unity does some things changing significantly. The upgrade also required us to update the sound engine we are using, Wwise. And to do that we needed to get our sound designer to come along and make sure everything is still working like it should.

So, now that’s done, we are running latest Wwise, compatible with Unity 5, and also with the support for building audio for Linux. On top of that we also got our sound banks changed to a better compressed format, shrinking the game builds from around 1.2GB down to less than 400MB. That’s going to make things a lot easier to send over the Internet…


With Wwise up to date we finally had a chance to look at Unity itself. Moving things from one major game engine version to next one isn’t the simplest of tasks, and there are limits to what Unity’s automatic migration tools can do. We ended creating a separate copy of the project and testing different approaches to figure out the exact route we’d need to take to get everything running. A few days fiddling, hours of carefully reading through Unity’s change lists and a couple of tries later, thousands of compile errors in our Unity console had narrowed down to few warnings and things were good to go on the main project.

The main hurdle was dealing with any plugins we had around, sadly Unity doesn’t have much for package management or version control for them yet, so lots of the upgrades were a question of searching for any plugin files, deleting it from the project and importing it back again, moving things around by hand, and generally just guessing and trying until they were all running again.

There were also plenty of new changes from Unity’s side, inverse kinematics needed to be handled in different way so our character controller scripts needed a bit of reorganising. There were a good few simple fixes, things like level loading, and how transparency is handled in shaders, had changed and just needed us tickling a few lines here and there. However what created a bit more difficulty was that the way fog is handled is quite different now, and the shader effect we used for our data view relied on reading Unity’s fog settings to fade the data view out over distance. With a bit more research we now have new version of that shader, this time just calculating the distance from camera to which ever vertex it’s drawing on screen. Seems to look even better than what we had before so that was definitely worth having to rethink the effect and shader mechanics.

…and of course the light and lightmaps changed, as did navigation and occlusion culling and everything else. So all of those systems had to be re-tweaked and baked again to get things moving and looking like they should.



So after all that, things are now more or less up and running with the new engine version, and we are finally able to benefit from all the new features and improvements in Unity 5. There are a few issues that still need ironing out, the small differences in physics require adjusting things here and there, and we’ll probably want to redo our lights and take a better look at our camera settings at some point. But we’ll get those sorted out over time, and new Unity features like multi-scene editing are already making our life easier. And of course things will only get better when we have time to update our rendering setup and other camera effects to get all the benefits of Unity 5’s new lights and visuals.

(And with the sound engine up to date we can now finally make the Linux builds *WITH SOUND* that we’ve been promising all this time. That alone makes the upgrade worth it…)

Lua everywhere

Our old mission system relied on a bunch of custom C# code all around various objects and components in the level - a quick and dirty prototype hack essentially. Not the best setup even from our point of view, but completely impossible for doing any level editing support. The plan was to restructure all that into a single script, but to make things even better we decided to build it with the future modders and level creators in mind.
We always had the plan of using Lua scripts in data to allow triggering custom behaviours and reactions when the files are sent to different characters and devices. So if there’s going to be Lua support in the project, why not build the level & mission scripts around it as well? After all it’s an easy-to-read way of defining any data and at the same time a very flexible language for scripting even complicated mission progressions.


We’ve used another Lua integration package before, but for Off Grid we ended up picking up the very nice MoonSharp. Setting things up was a breeze, and we now have the first version of Lua-based mission scripting working. The long-term plan is to also allow defining most of the character spawn locations, items and data used in levels etc. in the same file, so that’s what we’ll try to get running this next month.


Oh, and while doing that, we also got the Lua support for any network devices in the game done. So DataPoints now have the option of pointing to a Lua file as well, and when any NetDevice receives the file it can run the Lua script to trigger different things. That has already ended up being part of the new way missions are running, but we’ll definitely find more interesting ways of using the feature (TROJAN anyone?!). And obviously connecting that with the AI to trigger character behaviours is on the plans as well, although we’ll have to see if it gets done in the next sprint as part of the level editing/modding work or if we’ll have to work on it a bit later.

Setting up a story


Hopefully the test base for the Lua and modding features will be (at least partially) building the interactive intro with the modding tools. Those of you who have played the early incarnations of the demo will remember the little storyboard/animatic at the beginning. Well, here it is in the flesh, sitting in Unity and waiting to be brought to life!



We spent a some of this last sprint setting up the Apartment scene, cleaning up models and lighting it. there is still a long way to go, but it’s great to see this new scene starting to take shape, we can’t wait to throw some code on all the objects in here!

…and then some small stuff:


Encrypting data files will now automatically generate proper encrypted-looking content, with all the PGP version tags and such in place. This means we don’t have to type all that random stuff by hand any more, and of course it’s also required for any dynamically-created data, like the procedural text messages we are sending to our NPCs…

That’s it for this time, we’ll be back in a month’s time, hopefully with some more news about how our level editing & modding tools and intro/tutorial scene are coming along!