Is your feature request related to a problem? Please describe.
As of currently, there's a lot of issues with NPC's generally being annoying to work with, either by way of them being 'dumb', hard to manage, or by being inefficiently programmed. Having more than a dozen or so on screen at once will quickly cause the game to lag, and this largely comes down to the amount of data that is being pointlessly simulated at any one point in time.
In other words, they're heavy on processing, but also entirely lacking in the personality and character that I believe a human NPC should have. Instead of running head first at a shaggoth with their flip flops because you forgot to change a particular setting, there should be a system that checks their values and interests first.
Solution you would like.
Since I'm basically suggesting a remaking of the NPC system, I want to make it at least functional and able to do most, if not everything it can presently before I make the PR. Features in here serve to target my ideal of a simulated world, but I imagine it might cause tension with folks who might already be familiar or enjoy the system that exists presently, so discussion is important.
If it's controversial enough, it's likely that it might be delegated to a mod. It's likely that it'll be delegated to a mod for the time being, while it remains a work-in-progress.
The NPC rework will basically set out to make use of some multithreading, to simulate NPC needs and characteristics in a way that will be in the very least more realistic and efficiently than it is now.
NPC's will ideally be able to be added into squads, and squads will be able to be organized in a way that will allow for either more micromanagement from the player, or for some degree of autonomy. Ideally these squads will be able to be ordered directives that are either one time, or on-repeat (patrol particular coordinates or cells in a loop, chop lumber 'if' lumber is available, 'else' go to map cell(s) and chop lumber, etc)
Seek to establish a proper management of player and NPC property to avoid stealing
NPC's will ideally follow your commands, but will seek self-preservation at all costs. If they have low expectations or faith in your ability to provide their needs (they don't align with your faction interests (cannibalism? Psychopathy?), or get fed, clothed, armed, trained and comforted (bed, place to sit & eat, relax)), they'll either try to leave, kill, sneak away, and/or steal things for themselves, depending on the circumstances that lead to that point, their general disposition, and their own interests regarding why they were there in the first place.
an abstracting away of unnecessarily excessive degrees of simulation on NPC's (for example, we don't need to know how chilly their elbows are; limit the detail to legs, torso, head (or whatever else, if an alternative is decided upon)). Additionally, an abstraction of kcals can be done by way of simply having a 'check' once every 6 hours, to see what their needs are, and through there they can either request food, or strike out to find some themselves.
Socialization will be a thing for NPC's, in that they will simulate conversations by way of relationships with others (balanced off of each other's congruent/contrasting interests & values, shared history/experiences, the relationships they might have with others, etc). It will be imperative for NPC happiness, morale in battle, and compliance to your orders (you can't send them off to walk in circles in the woods without them going AWOL)
All simulated needs and wants will be moved to a separate thread, to allow for smoother performance.
Describe alternatives you have considered.
N/A
Additional context
debate and discussion to further refine the concept & objectives is important; I might have missed something
Is your feature request related to a problem? Please describe.
As of currently, there's a lot of issues with NPC's generally being annoying to work with, either by way of them being 'dumb', hard to manage, or by being inefficiently programmed. Having more than a dozen or so on screen at once will quickly cause the game to lag, and this largely comes down to the amount of data that is being pointlessly simulated at any one point in time.
In other words, they're heavy on processing, but also entirely lacking in the personality and character that I believe a human NPC should have. Instead of running head first at a shaggoth with their flip flops because you forgot to change a particular setting, there should be a system that checks their values and interests first.
Solution you would like.
Since I'm basically suggesting a remaking of the NPC system, I want to make it at least functional and able to do most, if not everything it can presently before I make the PR. Features in here serve to target my ideal of a simulated world, but I imagine it might cause tension with folks who might already be familiar or enjoy the system that exists presently, so discussion is important.
If it's controversial enough, it's likely that it might be delegated to a mod. It's likely that it'll be delegated to a mod for the time being, while it remains a work-in-progress.
The NPC rework will basically set out to make use of some multithreading, to simulate NPC needs and characteristics in a way that will be in the very least more realistic and efficiently than it is now.
NPC's will ideally be able to be added into squads, and squads will be able to be organized in a way that will allow for either more micromanagement from the player, or for some degree of autonomy. Ideally these squads will be able to be ordered directives that are either one time, or on-repeat (patrol particular coordinates or cells in a loop, chop lumber 'if' lumber is available, 'else' go to map cell(s) and chop lumber, etc)
Seek to establish a proper management of player and NPC property to avoid stealing
NPC's will ideally follow your commands, but will seek self-preservation at all costs. If they have low expectations or faith in your ability to provide their needs (they don't align with your faction interests (cannibalism? Psychopathy?), or get fed, clothed, armed, trained and comforted (bed, place to sit & eat, relax)), they'll either try to leave, kill, sneak away, and/or steal things for themselves, depending on the circumstances that lead to that point, their general disposition, and their own interests regarding why they were there in the first place.
an abstracting away of unnecessarily excessive degrees of simulation on NPC's (for example, we don't need to know how chilly their elbows are; limit the detail to legs, torso, head (or whatever else, if an alternative is decided upon)). Additionally, an abstraction of kcals can be done by way of simply having a 'check' once every 6 hours, to see what their needs are, and through there they can either request food, or strike out to find some themselves.
Socialization will be a thing for NPC's, in that they will simulate conversations by way of relationships with others (balanced off of each other's congruent/contrasting interests & values, shared history/experiences, the relationships they might have with others, etc). It will be imperative for NPC happiness, morale in battle, and compliance to your orders (you can't send them off to walk in circles in the woods without them going AWOL)
All simulated needs and wants will be moved to a separate thread, to allow for smoother performance.
Describe alternatives you have considered.
N/A
Additional context
debate and discussion to further refine the concept & objectives is important; I might have missed something