I mentioned before that I was studying the pluggable AI tutorials, and still am. Can't say I fully get the idea, but yesterday I managed to assemble a little test, modify the original code, and improve it. I strongly recommend that you watch this conference (and the tutorials):
The tutorial uses an StateManager class which deals with updating the states (states are ScriptableObjects, which lacks the Update() method) and also serves as a repository to keep information. ScriptableObjects should not keep entity related info, as all the entities would be sharing the same object and thus, that would be a problem. Any data needed in states, decisions or actions should be provided by the state manager, so, each entity has one. An state has an action and a decision. Depending of the decision being true or false, it can transition to other two states. That's all... mostly.
The main advantage is modularity. I can write specific states and actions for each NPC, but of course, the ideal is to share as much states, decisions and actions as possible among the entities. These AI components can be assigned from the editor to the entities, could be a bit confusing, but it is not super complex.
In my little test, I added code to keep a list of flags, so the NPC greets the player when sees it, but doesn't keeps greeting again and again, until 5 seconds later, when the flag expires. I am still thinking how to implement a combat system, maybe this weekend I will solve that.
The tutorial uses an StateManager class which deals with updating the states (states are ScriptableObjects, which lacks the Update() method) and also serves as a repository to keep information. ScriptableObjects should not keep entity related info, as all the entities would be sharing the same object and thus, that would be a problem. Any data needed in states, decisions or actions should be provided by the state manager, so, each entity has one. An state has an action and a decision. Depending of the decision being true or false, it can transition to other two states. That's all... mostly.
The main advantage is modularity. I can write specific states and actions for each NPC, but of course, the ideal is to share as much states, decisions and actions as possible among the entities. These AI components can be assigned from the editor to the entities, could be a bit confusing, but it is not super complex.
In my little test, I added code to keep a list of flags, so the NPC greets the player when sees it, but doesn't keeps greeting again and again, until 5 seconds later, when the flag expires. I am still thinking how to implement a combat system, maybe this weekend I will solve that.
Comments
Post a Comment