Nobody: Open-ended dialogue with NPCs using local LLMs

Hi!

I wanted to share a project I’m working on.

It’s a gdextension plugin for Godot 4.2+ that makes it easy to use locally-run LLMs (aka “AI”, similar to chatGPT) to create NPCs that support free-text dialogue.

Source code here: Nobody Who / Nobody · GitLab

Godot asset library: Nobody | AI dialogue for NPCs with local LLMs - Godot Asset Library

Our goals are:

  • It should be possible to easily build games that run LLMs locally on the end user device, and avoid using pay-per-usage online-only proprietary APIs like OpenAI’s. This makes the business model much simpler and more easily viable for game devs, it’s far more privacy-preserving for end-users, and the game will keep working forever by default (no devs need to keep servers running), which is essential for games archival.
  • It should be possible to run small, efficient, special-purpose LLMs on regular computers. For instance, Gemma 2 2B only uses about 1.8GB of memory, and will still beat GPT3.5 on the LMSYS benchmarks. If the language model doesn’t need to be able to do absolutely anything, but only needs to act as specific characters in your game world, we can get away with running much smaller models. This makes running LLMs more accessible to a wider range of players with smaller computers, and it expends way less energy than using e.g. GPT4, which is an absurdly large model by comparison.
  • We should be able to build more flexible role-playing systems than multiple-choice dialogue trees in 2024. Mystery games should be about deduction, not about stumbling into the thing that unlocks a new dialogue option. RPG players will commonly go through all of the dialogue options presented in a multiple, which reduces interactions with NPCs to essentially being cutscenes played in arbitrary order. We can do better. If we let the player ask questions by themselves, there’s a huge potential for bringing yourself into the game, and getting a more immersive role-playing experience.

Nobody is not feature complete yet, there are still plenty of things we want to add, to add stricter control of the dialogue, and to allow interactions with the rest of the game code- but it is ready to give a spin, and to make some free-text conversational personas for your game.

Please give it a shot if you want, and don’t hesitate to give any feedback you have to us here on the forum or on gitlab. We really appreciate all comments and perspectives on our project :sparkles:

2 Likes