Running local LLMs in Godot

Hi there! We’re excited to share NobodyWho—a Godot plugin that brings large language models right into your game, no network or API keys needed. Using it, you can create richer characters, dynamic dialogue, and storylines that evolve naturally in real-time. We’re still hard at work improving it, but we can’t wait to see what you’ll build!


Features:

:rocket: Local LLM Support allows your model to run directly on your machine with no internet required.

:zap: GPU Acceleration using Vulkan on Linux / Windows and Metal on MacOS, lets you leverage all the power of your gaming PC.

:bulb: Easy Interface provides a user-friendly setup and intuitive node-based approach, so you can quickly integrate and customize the system without deep technical knowledge.

:twisted_rightwards_arrows: Multiple Contexts let you maintain several independent “conversations” or narrative threads with the same model, enabling different characters, scenarios, or game states all at once.

:sweat_drops: Streaming Outputs deliver text word-by-word as it’s generated, giving you the flexibility to show partial responses live and maintain a dynamic, real-time feel in your game’s dialogue.

:gear: Sampler to dynamically adjust the generation parameters (temperature, seed, etc.) based on the context and desired output style—making dialogue more consistent, creative, or focused as needed. For example by adding penalties to long sentences or newlines to keep answers short.

:brain: Embeddings lets you use LLMs to compare natural text in latent space—this lets you compare strings by semantic content, instead of checking for keywords or literal text content. E.g. “I will kill the dragon” and “That beast is to be slain by me” are sentences with high similarity, despite having no literal words in common.

Roadmap:

:arrows_counterclockwise: Context shifting to ensure that you do not run out of context when talking with the llm— allowing for endless conversations.

:hammer_and_wrench: Tool Calling which allows your LLM to interact with in-game functions or systems—like accessing inventory, rolling dice, or changing the time, location or scene—based on its dialogue. Imagine an NPC who, when asked to open a locked door, actually triggers the door-opening function in your game.

:open_file_folder: Vector Database useful together with the embeddings to store meaningful events or context about the world state—could be storing list of players achievements to make sure that the dragonborn finally gets the praise he deserved.

:books: Memory Books give your LLM an organized long-term memory for narrative events —like subplots, alliances formed, and key story events— so characters can “remember” and reference past happenings which leads to a more consistent storytelling over time.


Get Started:
It’s easy to dive in! Install NobodyWho directly from the AssetLib in Godot 4.3+ or grab the latest release from our GitHub repository (Godot asset store might be up to 5 days delayed compared to our latest release). You’ll find source code, documentation, and a handy quick-start guide there.

Feel free to join our communities—drop by our Discord (link in the repo) server to ask questions, share feedback, and showcase what you do with it!

1 Like