Hello and welcome to the latest devblog. As we are now firmly into tech and feature lock and finalising all systems to help speed up developing content, this last couple of sprints we decided to get to grips with the AI
In this update6
Full notes
Full OFF GRID : Stealth Hacking update
Read the full published notes in a cleaner layout. The original post stays linked below.
Repeated intro
Hello and welcome to the latest devblog.
What changed
0 fixes6 additions4 changes1 removal
Gameplay
Workshop
Balance
Fixes
addedAs we are now firmly into tech and feature lock and finalising all systems to help speed up developing content, this last couple of sprints we decided to get to grips with the AI and get it cleaner and easier to write and use for gameplay. It made sense to do a pass to tie up loose ends and close the door on some of the AI designs or features that had been left open ended (thanks to the modular system they can always be further added to later!). But in digging around and doing code review, we came across a few other things that deserved some attention too...
addedOnMissionStart()While doing AI clean-up, we ran (once again) into the complicated mess our mission start-up process had grown into over the years, and decided it's time to give that a thorough look as well. Since this all was something that had just been built gradually as we've added new features and changed design requirements, it wasn't all making awfully lot of sense any more, with confusingly named functions both on C# and in the Lua API, half the game system starting up in an event called "OnMissionStart" which was actually executed way before the mission starts, halfway through then mission setup, before we've spawned in any characters or even started loading any save data and so on...
addedOnMissionStart()A good months worth of digging around, and documenting the relationships between everything into a graph, and searching through the codebase for all kinds of legacy systems and checking what it's all doing, we now have pretty good documentation of all the things that happen between loading a level and letting the player in, and were able to re-organize and rename our way through it to create something that makes a bit more sense. And had a good chance to update some truly ancient systems here and there to work with same logic everything else does, and remove some that had no purpose any more.
addedOnMissionStart()Apart form some renamed Lua API functions, this is of course all completely hidden from the player's point-of-view. But it certainly makes it easier for us to work with and keep track of what's supposed to happen, and when, and also smooth out the level start experience and even improve our fail-safe systems in case something goes wrong when trying to load a save or start a level from a mod. So while it took ages to get done, and certainly wasn't as interesting work to do as creating new game systems is, it was definitely maintenance work worth doing!
addedAI cleanupIn the last couple of sprints the majority of the work related with the AI all revolved around doing a big cleanup and review of all the corresponding systems. It was significantly more broad and complicated work than we initially thought, but thanks to that in the future it is now going to be easier and quicker to tweak or add new features or systems, and more importantly much cleaner for modders to expand the AI too!
changedAI cleanupSome unfinished and unused systems were removed, several AI actions were improved with cleaner code, there were systems we tidied up that in the past were needed but have been deprecated because improvements in the overall game and AI design, or thanks to a more flexible agent creation system. We also had a spell bringing the documentation up to date and inline with these changes, and so OFF GRID’s wiki, especially in the agent definition page now gives a much more accurate and detailed portrayal of these systems.
OFF GRID : Stealth Hacking changes
addedAs we are now firmly into tech and feature lock and finalising all systems to help speed up developing content, this last couple of sprints we decided to get to grips with the AI and get it cleaner and easier to write and use for gameplay. It made sense to do a pass to tie up loose ends and close the door on some of the AI designs or features that had been left open ended (thanks to the modular system they can always be further added to later!). But in digging around and doing code review, we came across a few other things that deserved some attention too...
addedWhile doing AI clean-up, we ran (once again) into the complicated mess our mission start-up process had grown into over the years, and decided it's time to give that a thorough look as well. Since this all was something that had just been built gradually as we've added new features and changed design requirements, it wasn't all making awfully lot of sense any more, with confusingly named functions both on C# and in the Lua API, half the game system starting up in an event called "OnMissionStart" which was actually executed way before the mission starts, halfway through then mission setup, before we've spawned in any characters or even started loading any save data and so on...
addedA good months worth of digging around, and documenting the relationships between everything into a graph, and searching through the codebase for all kinds of legacy systems and checking what it's all doing, we now have pretty good documentation of all the things that happen between loading a level and letting the player in, and were able to re-organize and rename our way through it to create something that makes a bit more sense. And had a good chance to update some truly ancient systems here and there to work with same logic everything else does, and remove some that had no purpose any more.
addedApart form some renamed Lua API functions, this is of course all completely hidden from the player's point-of-view. But it certainly makes it easier for us to work with and keep track of what's supposed to happen, and when, and also smooth out the level start experience and even improve our fail-safe systems in case something goes wrong when trying to load a save or start a level from a mod. So while it took ages to get done, and certainly wasn't as interesting work to do as creating new game systems is, it was definitely maintenance work worth doing!
addedIn the last couple of sprints the majority of the work related with the AI all revolved around doing a big cleanup and review of all the corresponding systems. It was significantly more broad and complicated work than we initially thought, but thanks to that in the future it is now going to be easier and quicker to tweak or add new features or systems, and more importantly much cleaner for modders to expand the AI too!
As we are now firmly into tech and feature lock and finalising all systems to help speed up developing content, this last couple of sprints we decided to get to grips with the AI and get it cleaner and easier to write and use for gameplay. It made sense to do a pass to tie up loose ends and close the door on some of the AI designs or features that had been left open ended (thanks to the modular system they can always be further added to later!). But in digging around and doing code review, we came across a few other things that deserved some attention too...
OnMissionStart()
While doing AI clean-up, we ran (once again) into the complicated mess our mission start-up process had grown into over the years, and decided it's time to give that a thorough look as well. Since this all was something that had just been built gradually as we've added new features and changed design requirements, it wasn't all making awfully lot of sense any more, with confusingly named functions both on C# and in the Lua API, half the game system starting up in an event called "OnMissionStart" which was actually executed way before the mission starts, halfway through then mission setup, before we've spawned in any characters or even started loading any save data and so on...
A good months worth of digging around, and documenting the relationships between everything into a graph, and searching through the codebase for all kinds of legacy systems and checking what it's all doing, we now have pretty good documentation of all the things that happen between loading a level and letting the player in, and were able to re-organize and rename our way through it to create something that makes a bit more sense. And had a good chance to update some truly ancient systems here and there to work with same logic everything else does, and remove some that had no purpose any more.
Apart form some renamed Lua API functions, this is of course all completely hidden from the player's point-of-view. But it certainly makes it easier for us to work with and keep track of what's supposed to happen, and when, and also smooth out the level start experience and even improve our fail-safe systems in case something goes wrong when trying to load a save or start a level from a mod. So while it took ages to get done, and certainly wasn't as interesting work to do as creating new game systems is, it was definitely maintenance work worth doing!
AI cleanup
In the last couple of sprints the majority of the work related with the AI all revolved around doing a big cleanup and review of all the corresponding systems. It was significantly more broad and complicated work than we initially thought, but thanks to that in the future it is now going to be easier and quicker to tweak or add new features or systems, and more importantly much cleaner for modders to expand the AI too!
Some unfinished and unused systems were removed, several AI actions were improved with cleaner code, there were systems we tidied up that in the past were needed but have been deprecated because improvements in the overall game and AI design, or thanks to a more flexible agent creation system. We also had a spell bringing the documentation up to date and inline with these changes, and so OFF GRID’s wiki, especially in the agent definition page now gives a much more accurate and detailed portrayal of these systems.
Change List:
Core Systems
refactored mission startup
AI
Much AI code tweked and cleaned
Global AI Systems (GOAP system and ModularAgent for when spawning NPCs)
Agents Personality
Chairs (for agents to sit)
Every AI action (generic, use point and specials)
Drone specific code
Flashlight related code
NPCs Animation Control
Code related with AI using devices on amok
Unfinished and unused AI systems and actions removed because they were outdated
Added information in our wiki about some actions already added and overall information in the Agent Definitions page
Bugs fixed
AI bug fixes and tests
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!