Showing posts with label AI. Show all posts
Showing posts with label AI. Show all posts

Thursday, 3 March 2022

OFF GRID Devblog "Look who's talking!"

Welcome back to another episode of the OFF GRID DevBlog, lots of interesting interactions to tell you all about, so let's dive right in!


Tuesday, 9 March 2021

Sprint Roundup: Spring Forward

Welcome Folks and Happy 2021, and how good does it feel to be finally well out of 2020?!

Thanks for bearing with us while we got this you, we missed December's update, but here we are, back in the swing of things, and so finally here is your back-to-regular dev update!

 Give me an 'A', give me an 'I', what does that Spell?!

On the last sprint roundup we mentioned that we started to work in some improvements in the AI to give more flexibility to the NPCs. So what exactly are these improvements? To start, some bugs were fixed, some unused features were removed and others simplified. But the main thing improved was the possibility to change, add or remove any aspect of the NPC behaviour in run time, like, for example, actions and goals, and with this came a round of improvements on our AI debugging tool, the AI Explorer:
 


The default way to change any NPC behaviour is still as it has always been, changing the world states.  Only in specific situations should changing the goals or actions be needed, but this is now possible by adding or removing them during runtime and allows for much more complex behaviour. Changing Goals should be used rarely, as it is seen as a more permanent change to the NPC behaviour. It's important to keep the following concepts in mind to understand the best way to change an NPC behaviour:
 
"World States" represent everything that the NPC knows about the world and themselves, for example: The guard must see the intruder before doing any action to try to catch it.  Changing world states in order to evoke a reaction is the first thing you do. 

"Actions" are the available skills and resources that an NPC has, for example: A guard should have an action to use a taser or other resource to knock out the intruder, and so accomplishing his goal. Changing actions is the best way to change what an NPC has the potential to do.

"Goals" describe the intentions or beliefs of the NPC, for example: the guard should always have the goal to catch the intruder, because it's his job, if this goal is removed it means that the guard lost his faith or belief in the job. For this reason goals are the last thing in NPC behavior you would consider changing as you are fundamentally changing them as a person.
 
Being able to alter any of these at runtime means NPCs are now more flexible and give more options to design new levels and scenarios, that is noted especially during the gameplay because now its possible to change its behaviour at any time and you don't have any restrictions in relation to what was initially defined in the NPC, so that means that a NPC now can use picked up objects, learn new skills, change their main objective, among other possibilities, it really is much, much more flexibility.

But of course this flexibility also means that is important to be careful with the complexity of the NPC definition, it could get a bit confusing in the best way to accomplishing some results and also could be hard to track why the NPC is behaving in some way. So to simplify we think the best way to approach the changing in the NPC behaviour in runtime is trying to change the world states first (but being careful to not have to many different states), next is the actions (that are especially handy for use specific items and skills), and the last one is the goals (that need to be used very carefully because a minor change can change the NPC behaviour drastically). Hopefully this model will provide some exciting opportunities for us in design and for modders too!

We also replaced the old Lua API call for altering a character's motivation value with a new generic system which allows for checking, and setting, any of the stats an AI might have.

The U in Usablility

Since the last blog post, we've spent some time fixing some usability issues on the UI side. Mainly, we've added automatic scrolling to UI for use with gamepad controls, removing the need to use scrollbars, which then simplifies the navigation across the UI. To go with that, we've updated lots of the UI across the game, also fixing some selection issues and improving on the mouse cursor autohide system to further smooth the controls and especially switching between input methods. While these might not sound like big changes, they certainly have made the user experience a lot smoother...


Paperwork for a good cause!

The start of a new year always brings a lot of paperwork, with our financial year end timing in to the calendar one.  It's a lot of shifting numbers on spreadsheets but the nice thing is that in the UK, with the fantastic BFI's support, we actually get a credit back on money we have spent on development each year though the Video Games Tax Relief scheme the UK government runs. Pretty good stuff.
 
We have had some work for hire that we have fitted in in a couple of places, Pontus has been doing research and development on an unnanounced project of a developer friend of ours and Rich ran a lecture series on Blender basics and specializing in Character animation for the MA Character Animation course at Central Saint Martins, University of The Arts London.

We also managed to garner some more funding for some R&D work from one of our long term partners Creative England, which has been super exciting - PLEASE don't jump to any conclusions from this but we have been researching how well our procedural message generation can be evolved to be able to handle languages other than English...
 

No Tofu!

As mentioned above, we have been working out how our generated content will work in different languages and doing some R&D on non-latin alphabet/writing system support.  This is all quite exciting stuff, and warrants its own dedicated post at some point, but... essentially, OFF GRID's game mechanics depend on key words in data and meta-data generated by NPCs, and the fact that there is text in the game that is generated at all creates and interesting problem to solve when it comes to localisation.
 

At this early stage we can't specify any particular languages, in-fact we can't guarantee it will work, or that there will be any other languages than English in the game, but we are laying the groundwork to see if possible and have embarked on some research work to see what those possibilities are, watch this space!

The Beginning and The End

Some of you who have played alpha builds, or demos at some point may have seen the intro cutscene to the game (it's the one that some of the clips in the trailer on our Steam page come from). One of the things we have been working on is making this part playable and more of a mix of small cutscene sections intertwined with basic tutorials and gameplay. We are believers in making sure that everything in the game story is told via gameplay and the environment as much as possible, so we were keen to make sure that the very beginning of the game sets the scene while still adhering to this principle. 
 
 

 
Unity's timeline is the powerful tool we have been using to achieve this, but we have had to do some real hackery to get it to play nice with interactive sections rather surprisingly.  When you couple that with tying it into our lua commands for writing missions, objectives and triggers and you start to get quite a complex section of the game to assemble. It's coming along nicely though, and they say the first 30 seconds, and 30 minutes of a game are the most important to focus on to keep players intrigued, so we have been happily dedicating a lot of time to getting this to all feel right. It's also certainly something we'll be counting on you, as our players, to play and give feedback on ahead of full release. Looking forward to seeing what you think!

 
We've also been fine tuning and cleaning up some of the content in the later game and making some more complex puzzles and hacks. The wierd thing about editing content is sometimes you can make more of something, in this instance we needed to make sense of one of the final missions, and actually breaking it into two seperate missions works better.  Without giving any spoilers, one of the planned missions is now giving a 2-for-1 value!
 

Changelist

Content (Level Design and Art) 
  • Design for the Harbour level passenger terminal / offices building
  • Replaced messages that were written for old SMS system with proper single-message conversations
  • Courthouse initial puzzles done 
  • Taking the scene from prototype to production and playable instead of just a cutscene
  • Broke up Court House Level into two levels

Controls and UX
  • Autoscrolling in UI
    • Usability improvements especially on a gamepad for any scrolling UI
    • Greatly improves device UIs since it means we can make their scrollbars un-selectable on a gamepad, simplifying the navigation in that window

AI 

  • AI Goal and Action improvements for flexibility
  • AI Debug system improved (with more information and in a clear format)

Modding and Lua API additions 
  • Lua API support for setting/getting NPC AI stat values
    • We used to have AI.AlterNPCMotivation(name, value) specifically for setting motivation stat value, this replaces it with a generic AI.AlterNPCStat(name, stat, value) usable for all the stats an AI might have
  • Lua support for Unity timeline and firing Lua functions from it (use wisely!)
  • Lua Console app for testing any line of lua anywhere in the game
Bugs fixed 
  • Bug fixes related with the AI and save system
  • Fixed issues with mouse cursor autohide/show system when switching between mouse/kb and gamepad controls
Other 
    • Year end accounts and VGTR
    • A few small work-for-hire jobs
    • Blender for Animators Lectures
    • New Ideas Fund application and grant

     

    Hopefully that catches you up on OFF GRID development. It's been a tough 2020 for us, especially the second half of it.  Safe to say, the world has been turned upside down and that had an impact on some of our families and how we managed running businesses and looking after our loved ones. Obviously OFF GRID is continuing development but running behind at this point, luckily we have at every turn been ahead of the punches and come up with game plans to make sure we could continue sustainably, and deliver OFF GRID come what may.

    For our little studio this has meant tightening our belts at the couple of junctures when we have found we were behind our anticipated milestones, tightening scope, bringing in some part time work-for-hire contracts to top up the coffers, and scaling the team down so we could operate in a lean and efficient way. The knock-on effect of shrinking the team for sustainability is it means things take longer, but it has the benefit of meaning you can roll with the punches and survive more easily.

    The three of us, Pontus, Andre, and Rich are still working hard on dev, bringing you the best game possible, and one thing is clear, with our great little team, OFF GRID is going to be everything it deserves to be, and that you deserve it to be for supporting us. Thank you so much and looking forward to showing you more over the coming months!



    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, 9 October 2020

    Sprint Roundup: Meta work

    Welcome friends, time for another sprint update!

     
    In the last couple of sprints we did a fair amount of checking existing game systems, making sure everything works as intended, and adding some long-planned polish here and there to make those existing features look and feel better. Most visible changes from player's perspective would be improvements to how meaning and use of metadata is communicated to the player, with better messaging about what data has new metadata, making sure player knows when they gain new metadata, and making the effect of collecting data about someone more visible in the UI.




    One of the improvements we did was the addition of the save slots, we believe that this change will make the save system cleaner and quicker to use. Each slot (the current number of available slots is 3, but that value can be increased before launch) can have one manual save and one auto save, also the difficulty option will be associated with a specific slot, to give the option to have different game states with different difficulties at the same time, every other game option will be general and not associated with a save slot.


    Improving the AI system is another important feature that we worked on in recent weeks, it's still a feature in development so we will talk more in-depth in the next sprint roundup, but essentially we felt the necessity to change the NPCs behaviour in the middle of a mission in a more flexible way, using the specific agent Lua script, doing that in an easier and transparent way. This will be a powerful tool to us and modders, to change the AI in a more dynamic way, but also it will help us to debug and improve the NPC behaviours in a faster way. For example, with this we can give a NPC a taser in the middle of a mission to attack the player. We'll have a full update on this topic on the coming weeks.



    On the art front we have been importing a load of art assets into the project and reorganising our source files. We've been reworking all Existing LUTs, essentially cleaning up any old redundant character textures. 


    Whilst we made these changes, we updated the wiki to reflect which LUTs are working and a preview of their appearance, this should help to visualise the vast variety of LUTs we have in the game for modders to choose from.

    On top of all this we've been looking forward with some funding applications for some interesting post release collaborations we have in the pipeline. We've also done a lot of back end organization work, we moved cloud provider for our documentation for the studio, and it takes a surprising amount of time to make sure everything makes it's way over to a new system properly, and when you move stuff you realise you have a bunch or organization to do at the same time!

    In the latest game and Levelkit build : 

    So, what can you expect to see in the next build of the game and modding tools?
     
    Content (Level Design and Art) 
    • Dynamic light cone mesh for flashlights (no more flashlights clipping through walls!)
    • New gates, fences, light models, concrete barriers, road/sidewalk parts etc added to LevelKit 
    • New character LUTs have been made based on the older designs that work with the new LUT template

    Gameplay and Mechanics
    • All game systems will now only display a character's name if the player has actually learned the name from metadata or not.
    • Targeting system will show if a data point has new metadata the player hasn't found yet. (also cleaned up the target info window a bit)
    • Data download notification shows the amount of new metadata gained from the data.

    Controls and UX
    • Save slots added

    AI 
    • Improving and fixing various issues on the AI system such as NPCs being able to move form neutral to adversarial mid mission
    • Setting and changing NPCs actions and goals were improved
    • Cleaner NPC animation state machine setup
     
    Modding and Lua API additions 
    • Changes made on agent Lua script to allow for more flexible modding of AI
    • Lua track for Timelines (run any Lua command from a timeline - DANGER!!)


    Bugs fixed 
    • Character LUTs were not assigned correctly if only color or only smoothness/metallic was defined in mission Lua script.
    • SocialInventory was not assigned correctly so all collected metadata was just sent to void
    • Lua API was not handling null/nil values consistently, some API calls returning a nil value from Lua side as a nil, and others as null.

    Other 
    • Funding applications for post release DLC
    • Cloud and documentation migration
    That's it for this update, we'll be back again soon with more, in the mean time stay safe 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!

    Thursday, 20 June 2019

    Sprint Roundup - 20.06.19 - Information Underload

    We are back with another Sprint roundup! Loads of progress to tell you about and a lot of great stuff to poke and test out in the newest build if you are a First Access backer, so let's get to it!

    Working on Information Underload

    Now, bearing in mind the game is still pre-alpha - one of the most frequent pieces of feedback we get from first time players is a sense of information overload, and that it takes about 20 minutes of play time to really break though and "get" the game, but once there they love the depth.

    Information overload

    This is unsurprising seeing as the demo level that we show people drops you in the mid-game in order to give enough of a tech demo and playground, and has very little tutorialisation in it, other that some dense walls of text to set the scene for those interested.

    Many people who bear with it really get a kick out of the moment when the game "clicks" for them, it can be quite rewarding to feel the pieces slot into place as you work out how Off Grid mechanics can be used and combined to your advantage, but it's not optimal that it takes so much perseverance to get there, and this is something we have always hoped a good opening to the game would help solve.

    In steps our first pass at tutorialisation!

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

    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!

    Tuesday, 11 December 2018

    Improving AI Performance

    Hi all, Steve here!  Here's a look into what I've been working on recently: 

    There's been some monstrous performance spikes in our AI, and I've spent time over the last month working to mitigate this issue.  Two significant changes have been made to improve this:

    1 - the addition of a pool of Dictionaries to store states, and
    2 - making each state item immutable

    This vastly reduces object creation, which is slow, and reduces the number of objects in existence, which helps reduce memory fragmentation (another Bad Thing) - which, being C#, is harder to control than in C++.


    Dictionary Pool

    So what's a Dictionary Pool, you may ask! Well, at its simplest (which this is), it's a big list of pre-made Dictionaries, each with a flag on to indicate if it's being used.

    When we want a Dictionary, we grab one from the pool, put it in a list of 'in-use' Dictionaries, and mark it as being used. When the object using it is destroyed, we mark it as free, and put it back in the pool for someone else to use. The key here is to be very strict on who is using your object! It's critical that nobody is using it when it's marked as free, or the whole concept breaks down.

    Immutability

    And immutable states?  Immutability is another weird software-engineer-y word. In english, it means something that never changes. But that's perhaps misleading when it comes to thinking about objects in Unity - what use is an object you cannot alter?

    The answer is that while you can't change the object, you can create a new one to reflect this change. This means you have precisely one instance of any particular combination of object.  For us, this means that instead of creating hundreds of thousands (no exaggeration) of states, all duplicates of one another, we create... about seventy. The overhead of querying a Dictionary for the instance of the state we want is much, much less than creating a tiny object, then destroying it, repeatedly.



    These two changes weren't trivial, as such, but were fairly self contained, and only produced a handful of super frustrating bugs that I had to then work against for a week or two.

    Back within 60fps, but still a lot of garbage to deal with!

    But the good news is that performance improved drastically!  We are now back to 60fps within the editor on my machine, mostly. Which was a relief because I feared for a moment or two that I'd accidentally extended the AI system in such a way that it would never be useful in a finished game, which would have been embarrassing.

    -Steve

    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, 19 November 2018

    Sprint Update 19.11.18: The Longest Sprint


    Hello!  This Sprint Update is a long time coming - there's been a lot going on, including a successful Kickstarter!   Successful Kickstarter has a nice ring to it, eh!?

    If you followed along with the Kickstarter (and hopefully you did!) you will have had a lot of updates to read in the meantime.  Nevertheless, here is the detail of what we have been busy with throughout this epic sprint as we prepared for and ran our first ever crowdfunding campaign:

    AI

    - Pooled dictionaries in AI state
    - Immutable AI state
    - Inevitable fixes for above
    - Extra cost for guards using stairs
    - Fixes to AI planning
    - Fixes for OffMeshLinks / AI using doors
    - Tracked down a bug relating to door GUIDs / saving and loading
    - Noise documentation
    - Updated AI used in the Harbour scene
    - Fixed a drone navigation crash
    - Added mechanisms for AI to prefer particular devices based on their personality
    - Added mechanisms to allow AI Actions based on their personality + Documentation for this

    Controls

    - Added UI to remap controls in main menu
    - Checked/updated all control settings & defaults
    - Limited repeat rate on analog gamepad sticks when moving around UI
    - Added dataview range control on mouse & keyboard


    Apps being configured: choose if you want them available in the app wheel or radial menu.

    App system

    - Completed new app system
        - added App system Lua API
        - unavailable apps are now hidden from Apps menu
        - If app can't be added to either appwheel or radial, it's now hidden in the App Menu (for exaple the password cracking is currently an app, but shouldn't be controlled by the player directly)
        - Apps are added to AppMenu, AppWheel and Radial menus when the app becomes available
        - Only execute currently selected app (instead of all active ones) when selecting a target+app in radial menu
        - Update loop for apps (so apps can run in background and do things continuously/over longer time)
        - Apply app action cost (both per-action, and for app cost over time for a continuously running app)
    - Status windows for apps
        - Support for displaying an icon and/or a piece of text
        - Support for changing icon & color
    - Rewrote Light Monitor app using new API
    - Created "Send Data" app (lets you send a file to currenlty targeted chaarcter or device)

    Lua API additions

    - Lua API for audio RTPC
    - Added normal (scaled) time support for scheduler API
    - Added notification messages to UI Lua API
    - Player API additions to get social profile data for currently targeted character

    Bugs fixed

    - Player character walking/crawling sounds get swapped after crawling first time
    - Removed hack that re-assigns all materials in scenes (original Unity issue that required this has been fixed so the hack isn't needed any more)
    - 1st person targeting should maintain the direction player is currently looking at
    - Character profile data displays color codes in UI rather than colored rich text
    - Fixed notification message UI animation setup
    - Fixed file viewer not displaying images
    - Fixed card scanners missing UI markers whe usign the Help app

    Apostle level

    - Checked all atmos colliders, added new ones where needed
    - Blocked staircase from lobby to 1st floor
    - Blocked door in 1st floor that would otherwise allow player to skip half of the floor
    - Checked navigation layers
    - Checked colliders, changed some to simpler ones, added some that were missing
    - Fixed colliders with negative sizes
    - Fixed typos in some device scripts
    - Checked all doors and assigned correct door groups and access levels
    - Removed drone from rooftop
    - Replaced a few hunded cardboard box models in level with prefab versions
    - Fixed missing/wrong static tags around the level
    - Removed some leftover invisible collliders blocking player and the AI movement
    - Fixed props not correctly aligned to walls/floor
    - Redesigned first floor of Apostle HQ
    - Implementated new hackable device

    Art

    - Creation of activist and hacker characters
    - Prop and asset creation for new levels
    - Set dressing and environment art for the Apostle level

    Models of the real life hackers featuring in OFF GRID.

    Other

    - Enabled ultrawide display reoslutions
    - Added headers support in popup menus (menu item with no function becomes a header automatically)
    - Added splash screens when starting the game
    - Data colors now ignore alpha value set in scripts and instead use pre-defined opacity to make sure things look correct in data view and in UI
    - Opened studio Discord!
    - Built a new website for the game
    - Quick update of studio website with new Semaeopus logo

    Kickstarter

    Updated build for Itch.io demo

    - Removed options menu from build
    - Removed other levels from the build
    - Forced loading straight to Apostle level in demo build
    - Added Kickstarter campaign ad in main menu
    - Disabled save game loading (makes no sense for a single-level demo and would cause issues when loading a save where the demo level is already completed)

    Campaign Prep

    - Campaign page drafting, review, and finalising
    - Reward drafting, review, and finalising
    - Contact push
    - Press push
    - Newsletters
    - Update planning: every 3-4 days to all channels
    - News release drafting
    - Daily social media scheduling
    - Streaming planning

    Events and promotion

    - Game Dev Camp, Lisbon - Rich and Steve spoke
    - IndieCade, LA - Rich spoke
    - Sweden Games Conference - Rich spoke, Off Grid demoed within Indicator and Off Grid won the Indicator award!
    - Inside Intel, London - an art exhibition on privacy & surveillance
    - PlayUK, a videogame curation put on by the British Council in Macedonia
    - Dev Space Winter Mixer, London
    - Closing party and livestream to countdown to the Kickstarter campaign's end!



    The final moments of the Kickstarter campaign!

    Whew!  A long list to match a long, bountiful Sprint! 

    To top all of this off, the team travelled to Dundee, Scotland last week to attend the UK Games Fund Awards.  Semaeopus was nominated for the 'Smart Studio' Award, and we were looking forward to a fun celebration together after the month of hard graft.  When the category for 'Smart Studio' was up, we were absolutely stunned to hear 'Semaeopus' announced as the winners!


    Award winners!  Sarah, Steve & Pontus pictured with the award presenter.

    A successful Kickstarter, two new awards, and loooooads of new supporters - we are so grateful to each and every one of you that has helped make the last couple of months so successful!  

    There's been SO much going on - expect to hear more from individual members of the team as we each wrap up from the last couple of months. 

    What's next?


    It's onwards and upwards now.  We're working on getting our FIRST ACCESS programme off the ground.  Anyone that backed at the PENTESTER level or above can expect to hear from us soon about what is to come. 

    One of the two main goals of the crowdfunding campaign was to provide a bit of additional resource to support more open production of Off Grid.  We're busy getting our ducks back in a row after the Kickstarter, and can't wait to move forward with you all behind us.

    THANKS EVERYONE!

    The Off Grid Team


    If you haven’t already - be sure to wishlist Off Grid on Steam - *EVEN IF YOU ALREADY BACKED THE KCKSTARTER! Each wishlist makes a big difference to us, and we really appreciate your support!

    Wednesday, 13 June 2018

    Sorting out motivational issues

    Hello! It’s Pontus here this time.

    You’ve already read about us recently making a trip to USA for GDC and PAX, and about the push for new content and polish we did before that. As things go, that kind of quick development tends to mean lots of new stuff is added at the last minute, and sometimes maybe not tested in every possible situation. Or there’s a good chance there are some odd bugs and things that only appear after a while, or in very specific conditions. Things that in the long term would get noticed, added to our bug list, and eventually fixed… but in a 4-week rush, things sometimes go less than perfectly and some features might end up being a bit buggy.

    In multiple ways, sometimes.


    Most of my sprint was spent on fixing biggest issues we found in our PAX build, and most of that didn’t end being much to talk about. But one of the bugs ended being a bit more interesting to figure out, and while I’d usually prefer talking about design, I though some insight on this side of game development could still have some value. So, this is going to be more or less accurate story of our guards not behaving as intended, as I saw the issue through bug reports on our Jira board, and watching people play the game & testing things myself afterwards trying to figure out what exactly was going wrong. And also a nice example of how the most obvious explanation often isn’t quite true!

    Wednesday, 21 February 2018

    Dev Blog - 21.02.18 - Upping our Profilers

    It’s devblog time! 

    Much of February has passed since the last sprint, and in that time, hearts and precious metals were shared across hipchat, though none were valentines from one dev to another, nor sadly, were they photos of our hard-earned Winter Olympic golds.  They were all lowpoly art, handcrafted by our stellar intern Josh, as he helped us prep marketing materials and create props for the game.  He’s been hard at work and done an awesome job for us. Thanks to our multi-cultural dev team, however, we did learn that Valentine’s Day in Finland is celebrated as ‘Friends Day’ - this is a notion we like.  And if you’re wondering, there’s fans of Team GB, Finland, and USA cheering across our virtual office spaces!  :)

    Here’s what we’ve been up to:

    Tuesday, 23 January 2018

    Dev Blog Post 23.01.2017 - Drones and pwns

    S’been a while, eh!

    We decided to extend this sprint in the way we often do over christmas so that the team has a bit of time to experiment and perhaps take on a few tasks that require a good bit of thinking time. It’s paid off as usual, and so we have some great developments in the game to share with you with this blogpost. Read on for all the juicy details!

    We are all directors now



    We were very secretive some time ago (nearly 2 years back actually!) about how we were in a small set of selected developers given access to an alpha version if some new tools in Unity. Well…

    Originally the tools were called ‘Director’, and with a lot of experimentation and some fairly comprehensive bug reporting they eventually became Unity Timeline, which Unity devs have now been enjoying since last summer!  We are now at the point where what we learnt from experimenting with the original Director tools can be put to good use. If you have played the Off Grid demo anywhere, then you will have seen the still frame animatic for the intro level which sets up the story of the game. We had a mocap session to get all this action captured and now that the Timeline tools have matured (and, more importantly, are stable) we are busy pulling this all together. The opening sequence of the game is going to change dramatically over the next couple of builds - how exciting!

    To Octree or not to Octree

    Steve had one pretty chunky task to do over the past month or so, and it’s been getting the drones to be substantially more drone-y.

    So far we have worked on the basis that drones are just characters that happen to be hovering, but this means we lose the opportunity to move vertically and get to places that characters can’t, or via routes that they are unable to take. So the task at hand was to remedy this. Navigation meshes are two-dimensional, so we needed to take a new path - navigation volumes!


    Using the magic of octrees, we subdivided each level down to the smallest size that contains no collidables, or down to a single unit cube, whichever is bigger. Then, each cube is tested to see which cubes it is adjacent to, to create a graph representing all the nodes. After that it’s simple - run A-Star on the network, and it’ll find a route through.


    This will be available to LevelKit, so drones are accessible to all! There’s a few tweaks and kinks to work out, but overall it was a really satisfying feature to work on and should really change the way the game plays. You can run, but you can’t hide! Well you can hide. It’s a stealth game, after all.

    Next will be to get them to move in a more dronelike manner, and perhaps optimise the navigation a little. But that may have to wait until after Steve’s put his cameraman hat back on for the upcoming sprint!

    So much modding going on!

    Josh has been hard at work testing the modding tools and refining his mods. In particular he expanded the museum of hacking he has been making.


    The museum mod, which he initially designed to be just an interior, has expanded to allow for any future hackable devices to be added to it, no matter their size!

    Josh then turned his attention to improving and developing the transport station map. The map has changed quite a bit since whiteboxing and still has a way to go. For a first attempt at a full level mod it is fairly ambitious due to it being a fairly large map with multiple ways to complete the same task.


    The station has grown quite a bit to allow for more room for the guards and the player to navigate. This will also hopefully allow for a more interesting interior and gameplay possibilities.

    Originally the apartments around the level were going to be just blocks that looked like apartments, but now some of them interiors to allow the player to find hidden data files or to find some higher ground to plan how they will tackle the mission.


    The trainyard is still very much in progress, but has also changed quite considerably. The main additions to the train yard include a new walkway that allows the player to navigate to all 3 platforms. A warehouse has also been added which will include some puzzle elements for the player to complete. This is replacing the old puzzle element which involved moving the train carriages up and down the tracks as it was a bit clunky and confusing.

    Meta-gamedesign

    In the last sprint, Pontus redesigned the character profiles and our data files & SMS generation to handle metadata about the character personalities embedded in data files. That’s working pretty well, and we already built a quick app for testing this. So it’s time to take things a step further, which is why Pontus has spent this sprint working on the game design for how we’ll actually handle metadata collection and character profiling as a player experience. And how that will then tie in with adding a password cracking feature when the player connects to a remote (or local…) device using our SSH app.

    The basic idea is that as the player collects different data files, the included metadata is automatically used to build a catalogue of character profiles, over time adding knowledge about new characters, and their personal information, their likes and dislikes, and pretty much whatever background info we (or modders) choose to add.


    All the collected information will be available for the player to view at any time as a new tab in the pause menu, so it’s directly useful, for example, to try and guess what kind of approach might work best for distracting a specific guard away from your path. In addition to that, the amount of knowledge you have collected about a character is also then used to determine if you’ll be able to access devices belonging to that character. After considering calculating the access as a proportion of known metadata VS all existing data about a character, and realising that this would cause a few odd situations, we settled for a fixed limit for access, and allowing this to be set in each device’s Lua script so if the same character owns multiple devices, some can have easier, and some more difficult, passwords. We’ll likely also add an option for a device to require some specific piece of information instead of some count of any knowledge, but this should be used as a special case option in missions as it requires the mission creator to make sure that exact data is available to the player at the right time.

    A fairly interesting side effect of this design is that it is kind of realistic, in the sense that it’s going to be easier to collect enough information about characters who have more metadata defined in their profiles. So, the more you share about yourself online and in social media, the easier it is for someone to learn enough about you to start guessing your passwords and to use the knowledge for identity theft and so on. And at the same time characters who have shared less about themselves (or, the mission creator has been more lazy ;)) will be more difficult to learn about, as you are more likely to just run into the same few bits of knowledge rather than learning something new.

    Another interesting feature here is that your library of character knowledge will be persistent, so anything you learn about a character in one mission will be carried over to future ones. While this requires us to do a bit of a better job on the UI side to keep things manageable for the player, it also serves to create a longer game play loop, where social engineering can happen over a longer time span than just within a single mission.

    Finally, we’re probably going to add few different apps for gaining access to devices, in the sense that the one based on knowledge about characters (so, basically just guessing badly chosen passwords through social engineering) is just going to be one of the tools available for the player. We’d also like to include other tools that target specific vulnerabilities on devices, and perhaps a late-game one that just uses a direct access to government-collected data.

    Big News

    With all that dev news it’s worth pointing out that we have some other big, juicy news coming soon. We are sooooooo close to being able to announce it that the anticipation almost hurts!

    You can find the newsletter signup page here!

    If you aren’t already on our newsletter, please sign up!  If you are and you have any friends who you think might be interested, then please share and help us reach even more people anticipating the game!

    Ta ta for now,

    Rich, Pontus, Steve, Sarah and Josh.

    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

    Saturday, 24 December 2016

    Sprint Update - 24.12.16 - Ubuntu Xmas

    Our gift to you this year is stable builds across all platforms! The big news is we have been making sure our Linux builds are up to scratch as Rich is off to 33C3 and some of the hardware he might be borrowing to demo on will undoubtedly be running various flavours of Linux for us to put the build through its paces on.

    Linuxmas is here

    Last Saturday we tweeted out a few screens from the latest Linux build running and we were lucky enough to get this write-up from Gaming On Linux.
     


    We’ll be putting the build through testing on as many distros as we can ahead of release, for a game with the sorts of themes encountered in ‘Off Grid’, and as all three devs are Linux users, making sure we cater to those of you who like to play on Linux is extremely important to us.

    Wednesday, 11 November 2015

    Off Grid Development Update 11.11.2015 - Networking



    One more sprint mainly focused on background systems, but this time at least it’s something pretty integral for the game we want to build, and something we’ve been needing for a long time.

    Monday, 26 January 2015

    Sprint Update 26.1.2015 - Fresh brains!

    First full sprint of 2015 completed, and we definitely made quite a lot of progress in this one!




    Friday, 9 January 2015

    Sprint Update 09.01.2015



    Happy New Year! We extended our last sprint to run into January so that we could tidy up a few tasks at our leisure over the break and so that means it’s time for our latest Sprint Update!