title: Ai Npcs
emoji: 🤖
colorFrom: indigo
colorTo: pink
sdk: static
app_file: ./cubzh.html
pinned: false
license: mit
disable_embedding: true
custom_headers:
cross-origin-embedder-policy: require-corp
cross-origin-opener-policy: same-origin
cross-origin-resource-policy: cross-origin
NPC Playground 🕹️🤖
3D playground to interact with LLM-powered NPCs.
Modify the world.lua
file to teach them new skills with a few lines of code.
Installation
- Fork the project on Hugging Face.
- Modify the
world.lua
file to edit NPC skills! - Deploy on your own Hugging Face space to run your modified version of the playground.
Customization
Tweaking NPC Behavior
Modify the fields defined in world.lua
's NPCs
table in order to influence NPC behaviour:
local NPCs = {
{
name = "npcscientist",
physicalDescription = "A small sphere with a computer screen for a face",
psychologicalProfile = "Designed to be helpful to any human it interacts with, this robot viscerally hates squirrels.",
currentLocationName = "Scientist Island",
initialReflections = {
"This NPC is a robot that punctuates all of its answers with electronic noises - as any android would!",
...
},
},
...
}
Teaching NPCs new skills
Our NPCs have been trained to use any skill you've defined before running the game. This is achieved by training the LLM powering them to do "function calling".
Modify world.lua
's skills
table to give your NPCs new skills :
local skills = {
{
name = "SAY",
description = "Say smthg out loud",
parameter_types = {"character", "content"},
callback = function(client, action)
local npc = client:getNpc(action.character_id)
if not npc then print("Can't find npc") return end
dialog:create(action.content, npc.avatar)
print(string.format("%s: %s", npc.name, action.content))
end,
action_format_str = "{protagonist_name} said '{content}' to {target_name}"
},
...
}
The callback
will be called whenever an NPC uses this skill, using the parameters defined in the parameters
field. We've given you some examples in skills.lua
, feel free to draw inspiration from them!
[Work in progress] Environment Design:
The Cubzh game engine allows you to modify the 3D environment of your worlds, by importing community-generated voxel assets or creating new ones yourself. We're working hard to integrate these functionalities into this world - stay tuned!
Course
Together with the HuggingFace staff, we've released a new course to teach you how to create your own Lua skills. You can access it here
Credits
- Hugging Face 🤗
- Gigax
- Cubzh: A versatile UGC (User-Generated Content) gaming platform.
- You ! You're welcome to fork the repo, share your creations, and create PRs here :)
For detailed documentation, troubleshooting, and contributing guidelines, please refer to the wiki.