latitudegames / AIDungeon

Infinite adventures await!
http://www.aidungeon.io/
MIT License
3.19k stars 554 forks source link

[FEAT] Stop the AI from doing things for your character #228

Open poperigby opened 4 years ago

poperigby commented 4 years ago

🚀 Feature Request

The AI seems to take away control from the player too often. You'll give it a command, and it does things for your character.

theParadox42 commented 4 years ago

I agree, but I feel this is a problem with the training data, not the code itself.

flarn2006 commented 4 years ago

Isn't this more of a bug report than a feature request?

poperigby commented 4 years ago

I didn't really know what to label it as, so maybe.

InconsolableCellist commented 4 years ago

That's a pretty intense ask, as currently the system has no way of deciphering what it's giving you. There's no real game state. That'd be a great thing to add, however

poperigby commented 4 years ago

Maybe I should open an issue for having an actual game state then. That would do a lot to keep the player in control.

GatoCreador887 commented 4 years ago

One of the key concepts is to not have a specific game state IIRC.

poperigby commented 4 years ago

Where did you hear that? Not having a game state means you can't have most of the things that make a game fun to play, like an inventory and character stats.

Herohtar commented 4 years ago

@PopeRigby There cannot be a game state, because it's not really a game; it's a predictive text AI -- you give it some text and it will "predict" (generate) the next X words, similar to repeatedly tapping the middle word in your phone's autocomplete, but a lot more "realistic" because the AI model they based this on was trained using a massive amount of text from all over the internet. The only reason that this version is game-like is because Nick Walton fine-tuned the model by training it using a bunch of text adventure stories, so now the model is more likely to generate text in that format. The "state", as it is, is simply the text of the story so far. (limited to a certain number of words) That's why you can do something like "pull a Tesla 3 out of my pocket and fly it to the moon" and the AI will generally follow -- it has no concept of what is or isn't possible, or inventory, or anything like that; it simply predicts the next "logical" words that follow from that sentence.

poperigby commented 4 years ago

I understand that, I'm just wondering if it's possible to give the a AI a concept of a game state.

Herohtar commented 4 years ago

That's what I was trying to say -- as far as I know, it's not possible, due to the nature of the AI simply being a glorified predictive text system. You would basically have to build on some kind of parser that scanned the output text for things like "you find a X" and store "X" in some kind of inventory list. Then on the other side, you would also have to parse the user's action text (before actually sending anything to the AI) to see if they were trying to do something with an item, and disallow that action if they were trying to do something with an item they didn't actually have.

It wouldn't be strictly impossible, but I'm not aware of any way that would avoid it being extremely complex to even work slightly well, and it wouldn't be part of the actual AI, but rather a separate system that sat between the AI and the user.

Sporking commented 4 years ago

The “/remember” command which is available on at least the iPhone platform (and I don’t know which other ones) can be used in a limited way to keep some state. However, without a “/forget” command, all you can do is add state, while never removing any.

Sporking commented 4 years ago

One interesting possibility would be to just autotruncate any generated text at any point where “You “ appears at the beginning of a line.

Another good truncation point would be any doublequoted text at the beginning of a line followed by “ you”. (truncate before the doublequoted text).

These two would catch a lot of the common cases of the AI taking control. The cost would be that some less objectionable forms (“You feel weak.”) might also be truncated, although I suppose some verbs indicating passive actions could be whitelisted (“You feel”, “You see”, “You hear”, etc.)

OrionFive commented 4 years ago

Yeah, what Sporking said. There should be a whitelist of things that can follow "you". I think it should stop before the first sentence starting with "you", unless it is the first sentence. Because often the AI rephrases the action the player entered, which is cool, but it should stop after that, if it tries to so stuff for the player. It's also quite annoying if it responds for the player.