topoftheyear / Byte-le-Royale-2019

2 stars 2 forks source link

Brainstorm various NPC AI Roles #17

Closed jghibiki closed 6 years ago

topoftheyear commented 6 years ago

A thought for the general NPCs: having several complexities of AI that perform multiple functions; general-purpose AI that will mine, transport, pirate, etc, when necessary, but the decision making process of what it decides to do and when will be determined by how advanced they are. For example:

Other than that, will we need AI for the following:

jghibiki commented 6 years ago

Idea: For the space police we could have two variants, one that is akin to regular police, and one that is akin to swat. Have a static number of police roaming the map - most concentrated in the safe zone. Once a pirate goes above a certain bounty threshold without being head hunted by a bounty hunter, we send out an Enforcer which is still killable but more difficult to kill, meaning that bounty hunters could capitalize on the fact that an enemy is engaged with a very tanky-moderately high damage Enforcer

Icyvexen commented 6 years ago

Some Ideas

Name Category What it can do
The Hive Mind Basic - Miner A group of miners all move as a unit with small gap between each other; pathing allows for slight wobble in the path for variety
The Silk Route-rs Basic - Trader Just goes from station to station on a continuous loop; tries to keep a relative ratio of people per route
Interstellar Mall Cops Basic - Police Straight path to you on their Supersonic Segway, armed with water pistols and capable of giving you the meanest parking tickets
Media Pirates Basic - Pirate Ask you politely for your goods, and if not, attack with lots of little attacks (death by 1000 papercuts)
The Poor Shot Basic - Bounty Hunter A camping hunter; stays in one spot, shoots his targets if they enter the area, but will not chase
jghibiki commented 6 years ago

I like the ideas, the only one i think might be difficult is the Hive Mind bots. At present the NPCs implement the same parent class as the player AIs do. So initially, communication between NPCs is no do-able. Additionally, I could see a real performance concern for an AI that manages an AI. We already have a lot of nested loops, I think it is imperative that we avoid adding more, especially for special/edge cases. I would however be interested to see if we can come up with some sort of novel way to do this.

One example, would be hard coding waypoints and then choosing what waypoint to go to based on what minute it is in the day. That way the NPC responds differently, but multiple NPCs don't need to communicate to know where to go.

topoftheyear commented 6 years ago

This is a bit of a tangent but still related. There was some conversation regarding communications between ships, basically whether or not we wanted to include it at all. It seems like a good thing to increase the variety of interactions, especially at the basic level, by including messaging and possibly trading. Presumably done via a Message object with enumerated values, Message.Hello(target), Message.Trade(target, things[], for things[]), Message.Accept, etc.

This issue we had with this was that it could add a bit too much complexity to competitors for possibly low use if it's not intuitive or if there isn't a reason to trade with other people. I think we had agreed that messaging would be a good system to add after everything is working and see if it's necessary from there. I am open for more opinions on the topic to sway either way though.

jghibiki commented 6 years ago

True, but what value would a messaging syatem add? What incentive is there to trade amongst players? Additionally all "conversations" would happen in real time (more or less) so players would have to stop undertaking profitable activities for an activity which so far has no planned value. Secondarily as you mentioned yourself this might get complex for players to grasp if range of communication is a thing. And if it isn't, other players might spam messages to throw others off.

Finally, how would we display chat in the visualizer? This would be difficult with some novel means and without a way to do this would easily make chat a very oblique feature because players cannot get visual feedback from it.

One case where i could see a limited communication being useful is for pirating you could send a demand that another player drop cargo into space so that they can take it, however that might work better as a one-way demand that a pirate can send to their prey when they reach low health. And which the prey would recive as an alert to do with as they choose.

topoftheyear commented 6 years ago

I haven't been able to think of a situation where trading between players would be worthwhile either. Surely you have the cargo you do because you already have a place and a plan to sell it. You can't sell cargo for above market price because there is no value in buying it other than immediacy, that's assuming you have something someone in the area even wants. You also can't sell for below market price because you could just go and sell it for market price and make more. Not to mention that trading in this would be like trading in Monopoly to an extent; any trade you make will be at the benefit of both parties, and why do something that would help someone else when you can do something to help yourself solely.

My other issue with messaging is its a feature that demands other features in order to operate and justify its existence. Messaging itself requires an inbox of some sort so you can read messages. Being able to message others for trading requires the ability to trade. Being able to message demands requires either trading or the ability to vent cargo to space and pick up that cargo.

I can see demands working out as you described because there is value in dumping cargo to space beyond the demands system alone. I could also see surrender being a related option in space fights which would then yield to the demands situation. Then again, I can see people wondering why they would accept surrender for some cargo when you could just destroy them for all of it on top of putting them through the ramifications of ship destruction. I suppose that conversation just goes to possibly destroying a chunk of cargo when the ship explodes so you are given the choice between the benefits of destroying the ship but getting less cargo, or no benefits of destroying the ship and getting more cargo. That's just a tangent from a tangent though.

jghibiki commented 6 years ago

To that point, we had previously discussed having a higher bounty for murder vs robery.

topoftheyear commented 6 years ago

Right you are, didn't think about it. Well at least if we need further punishment for murder we'll know what to do.

jghibiki commented 6 years ago

Closing as discussion has halted and no action has been taken. This will be referenced when implementing NPC AI