Thursday, 30 May 2019

Sprint Roundup - 30.05.19 - 'Fluttery' will get you everywhere

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...

"UI the long face?"

As promised as one of the stretch goals in our Kickstarter campaign, we've now added our in-game short message social media app, which we've decided to call "Flutter."

Some 'fleeting' in action
Similar to our existing SMS system, it sends procedurally-generated messages using the profiles of non-player characters in the levels. In addition, it sends messages from the rest of the people in the the game world. PLUS we've made it Lua-scriptable (even more so than the SMS system is), and added support for sending custom messages, both from our own game systems and from Lua scripts. So, the messages the player sees can actually provide some useful feedback about something you've just done in the mission, or reflect on some previous choice you've done during the game. They may also help explain what may be going on in some NPC's AI mind at the moment...

In other words, we made social media that can tell you more about the world outside of the building you happen to be in, and about what all the people around you are doing and thinking at the moment.

The tracing UI has moved!
To fit the app on the user interface, we moved the network tracking info around and did a proper design (you might have seen some screenshots of the previous temp stuff we had in our previous dev blog post).

While we were at it, we also did some balancing for the network tracking cost and data view range (and how that fits with the app use cost and everything else).

Level Design!

We have been working up a new level, created a full pass of a Workplace level with a neutral and more complex NPC, objectives and tutorialisation. Then we realised that it was all a bit too much crammed into one early level and so went back and thinned it out in order to simplify the player journey.
New neutral NPC behaviours
The tutorialisation aspect included creating a sequence for rooting the player's phone and installing new hacking tools. It's just a start, but this sequence is gonna be nice!

We have been implementing some of the most recent editions to the AI . We got the office worker agent script reacting nicely to the player in custom ways and made use of the AI's ability to send and react to data in Workplace, controlling doors using AI's newly found ability for sending data in actions, and a bunch more.

In the course of all this there was some balancing of the difficulty to be had. The idea for the mission is to have something that sets up and tutorialises the basic mechanics, and you want players to have a degree of safety while experimenting with these, however you still need some jeopardy to motivate and challenge the player. We added a second floor you need to sneak through with an additional guard so that you have some space on the floor below to learn and play. Then we added a guard to be spawned and woken up on the sending of data by another NPC.

And finally a lighting pass to make it all start looking a little nicer, although this did also lead to the discovery of a significant bug that took quite some work to squash...

Characters on the move!

We got every character in the game using the new LUT system and the new Rigging system including blendshapes for their weight. This means we have a good pipeline for adding new characters and animations work well between all characters.

We’ve made some changes to the Player Prefab which allows for other characters to be the player rather than just Joe. You can make mods as Jen now! Aaaannnnd.... characters are steadily becoming even more customiseable! There is now a library of Hair, Hats and other Head accessories that work between all characters, it’s a case of finding the right size item for the character and drag-drop it into the ‘HatHair-Parent’ object in the character prefab. We still have some work to get these accessories to be something a modder can control but we are getting there!

We also did a big pass on the animation assets and attempting to make more generic "gestures" available as a library. All animations that exist in the game have been documented. This gives us a good idea of what we have, what needs to be fixed so we can use it, and what we will need going forwards. More news on what that will make available to modders soon!


As ever, a heavy focus has been on AI. A significant aspect of this was the AI Explorer, our tool to examine the current status of any agent. This contained a lot of information, but without much context. To try and give modders a helping hand, we've added some extra 'hints'. So whereas before we listed the current goal, we now list all of them, with attempts at explaining *why* higher priority goals are not achievable. Similarly, for actions. Our AI is not exactly simple, by its nature, but this has already proven to assist in understanding why expected behaviors are not taking place. AI Explorer is also now available in LevelKit, where previously it was a dev only tool.

Documentation can now be generated from any source file, rather than just Lua API code. This should increase the amount of pages on the Wiki; it was previously so easy to think "I will document this feature later", and then fail to. Not any more!

AI coming out after a sleep in the closet
AIs can now be paused/unpaused - this allows for agents that cease to have a use after a certain point in the level, or who need to appear part-way through a level. Examples of such behavior would be a character that needs to leave the building/area, or a maintenance engineer that appears only when the player has caused a particular amount of havoc.

The final notable AI addition is that they can now react to data that they receive. This works in a similar way to reacting to other outside stimuli - compare the data with personality, and see what results come out. It's another way of influencing AI to do different things than normal and create different gameplay experiences. Two guards with otherwise identical goals, but differing personalities, would react to the same data in two different ways and create decisions and obstacles for the player to overcome.

In the latest game and Levelkit build :

So, what can you expect to see in the next build of the game and modding tools? Remember that bug we hinted at earlier? About a lighting pass? Well it was essentially build breaking, and poor old Pontus spent the end of last sprint and the beginning of this one trying to track it down. We can with relief tell you it is now fixed but it has come far enough into this sprint that we decided it is best to just hold the build off until the next one is due in a couple of weeks. We'll give you full post-mortem of the issue in the next post too, as we are certain Pontus will need the catharsis / therapy of getting it off of his chest!

So.. what can you expect in the NEXT build in a couple weeks time?

Content (Level Design and Art)
  • A new level we want some feedback on!
  • Worked up full pass of Workplace level objectives and tutorialisation
  • Created a sequence for rooting the player's phone and intalling new tools
  • Got office worker agent script reacting nicely to player in custom ways
  • Made use of the AI's ability to send and react to data in Workplace
  • Added a guard to be spawned and woken up on the sending of data by another NPC
  • Added remotely controlled doors using AI sending data in actions
  • Added a second guard to the top floor of the Workplace level
  • Lighting pass on the Workplace level
  • Change Character colors LUT shader to black to white for Smoothness
  • Re-Rigged all existing characters, including blendshapes
  • Finished cleaning up all Hacker Characters from the Kickstarter and rigged them
  • Added hair, hat, and head accessories to fit all sizes of characters
  • Re-rigged and re-textured Player character and made it so different characters can be the Player
  • Documented all existing animations
Gameplay and Mechanics
  • Replace old SMS stuff with single-message variant of conversations
  • Conversation Queue
  • Mission info popups for multiple missions on same map tile
  • In-game "Twitter" short message social media
  • Balanced tracking time/cost/NetPoints use mechanics
  • Small stuff. Inventory UI refreshes automatically on item use. ObjectWithScreen component is useable by modders in Levelkit. Occlusion culling baking is optional in Levelkit and can be left out when working on a level or testing things. Fixed IK weight blending on NPC hands. Lua API support for adding/removing NetPoints to/from player
  • Loads MOAR tweaks and improvements to the player character controller!
Controls and UX
  • UI popup for selecting between available missions on same map tile
  • UI menu stack handling in map+main menu
  • Re-designed the network trace/AppPoints UI
  • Explore AI receiving data affecting Agent state, etc
  • Document AI sending data
  • Updated AI Explorer to better expose more information- look at whether it can be in LevelKit?
  • Added 'meaning' to AI Explorer - trying to explain what states relate to what actions, and which goals are achievable.
  • Added a toggle to pause/unpause AI - useful to have Agents that can appear later in levels (AI cannot be spawned mid level, currently).
  • Agents react to data they are sent, as per their agent definition. So sending data to Agents can change their state/stats.
Modding and Lua API additions

  • Moved AI Explorer to LevelKit and added connectivity, meaning that LevelKit users can see some of the functionality we have (but static, as it does not update dynamically).
  • Documentation extended to be generated from any source file, table documentation added.

Pretty busy time as you can see, more coming soon, along with a new build for you FIRST ACCESS folks!

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!

No comments: