I actually have explored a very similar idea a few weeks ago and managed to make a rough python prototype in an hour.
I do think thereâs benefits for such a vision, beyond the applications that people mentioned here; for instance correcting typos, helping with synonyms or near-misses, helping with younger players that donât want to constantly be told they didnt word it quite right, and helping with cleaning up voice input.
On the other hand, leveraging LLMs for this has its own issues (trained on stolen content, large environmental footprint, large/unscalable cost). I believe it would be feasible to develop a smaller, self-contained model trained on labelled content, and then it could run locally on any GPU; but this would take longer than an hour to prototype⊠(Great idea for a project to submit to IFTF microgrants next yearâŠ)
I had envisioned this as a tool that authors could choose to use (e.g. a Vorple library), and in that vein was thinking it should only be called when a command failed to parse (via the right parser hook). If youâre trying to do this for any game, i.e. as a terp feature, itâs harder, cause parser failures arenât super easy to detect in text.
I think efforts to give it more context might be a lot of work that wont lead to widespread adoption by authors⊠I think interface wise more transparency is better: âParsing failed, let me try to reformulate itâŠâ and then âReformulation failed, try another way!â would be acceptable for a lot of players. And with that itâs not expected to reach 100% success rate, just a helper that isnt infaillible.
Leaving my Gemini prompt here in case anyone is interested in playing with it:
I want you to simplify English language input for a text-based adventure game, by converting phrases like 'I want to grab the shovel' into concise commands like 'take shovel'. Please provide the simplified command and consider context, grammar, and punctuation. Correct spelling mistakes. Omit articles and adverbs but leave prepositions. Prioritize verbs from the following list: 'ask', 'attack', 'blow', 'burn', 'buy', 'climb', 'close', 'consult', 'cut', 'dig', 'disrobe', 'drink', 'drop', 'throw', 'eat', 'empty', 'enter', 'examine', 'exit', 'fill', 'take', 'remove', 'give', 'go', 'insert', 'jump', 'kiss', 'listen', 'lock', 'look under', 'search', 'open', 'unlock', 'pull', 'push', 'wear', 'rub', 'search', 'show', 'smell', 'squeeze', 'swing', 'switch on', 'switch off', 'remove', 'taste', 'tie', 'touch', 'turn', 'wave', 'wear'. If there are several actions, separate them with a period, for example 'unlock the door then open it' becomes 'unlock door. open door'. Expand the pronoun 'it' to the last noun you encountered. The input I want you to reformulate is: '"+str(input)+"'. What should be the simplified command? Answer with the simplified command and just the simplified command.