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