AI and I

A blog about AI, implications, and experiments by Karlheinz Agsteiner

A Costly Hobby - Day 4 of my RPGMaker Experiment

Made Quite Some Progress

Today was a good day. With ChatGPT, I added the following new features to my plugin:
- You can determine the position and transparency of the chat window just like in the game. However, it’s only global for every chat that any NPC says.
- Going through the menu every time to chat was impractical. Therefore, there are now two additional (configurable) options: a (rather ugly) chat button at the bottom center of the screen and the practical context menu – if the NPC says something, you can either select “reply” or “continue.” If you want to reply, a dialog appears to type in your text.
- An NPC can now give items to the player. The LLM can decide this and select it as an action.

I’ve also tried out a lot; most of the time, the AI NPCs work quite well. However, the text you enter as the NPC’s description or as a goal is a prompt, and sometimes you have to be very precise about what you say so that the LLM says and does the right thing.

This is what it looks like

What Still Needs to Be Done

I’m still not sure how a player can give an item to an NPC. I also believe the ability to change a game switch has potential, but I haven’t tested it yet.

And there are still a few small bugs. As always.

Costs, Costs, Costs

This is getting quite expensive, calling an LLM with the entire history of actions and a fairly extensive prompt multiple times per second. Unfortunately, the free tier from Mistral is limited to one request per second. That’s not enough.

almost 5 Euros in 3 days with Mistral Large

So next: run local small models in LMStudio and try them out. That will be exciting, because they’re less reliable.

Alternatively, I should work on clever ideas for reducing requests to the LLMs – for example, “NPCs that are more than 3 steps away don’t do anything.” Of course, that would remove options like “Hey you, come over here!” shouting merchants.

And Because It Works, on Github

To the Plugin on Github