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:

5 Likes

This is really interesting, but I gotta say, the license you chose is deterring.

If I understand correctly, integrating it into a project makes it a derivative and forces us to provide the project source code under EUPL1.2 as well. So this makes it impossible to use in closed source / commercial projects.

That’s not entirely true, it depends on how you make use of this library. If you do NOT modify the code of this library in any way, and you don’t merge it into your own work, then your code does not automatically become open source, and at that point your only obligations are to include the license text for the library somewhere in your project / game, and link to the original source code of the library itself.
It does not mean your game becomes open source in any way, but you do have to use some tool to link the library instead of straight up including it’s source code in your own work.

1 Like

You are right of course, its the details here. But it all comes down to whether your own project can be considered a derivative work or not. As GDExtensions references binaries, it might work so you only need the attribution and links / license notice.

For me personally, the risk of missing or misinterpreting something will be enough for steering clear. Godot and most of its assets are released under MIT, so it would be easiest to release free assets under MIT as well, and if not, at least CC attribution licensed. Just my 2 cents.

1 Like