Suggestions on making NPC feel more human, to fool player?

Basic overview:
In my game, the player wanders through an endless neighborhood.
An NPC named “Gertrude” will accompany the player, and I want the player to think Gertrude is a real person.

Gertrude’s current state:
-Follows player

-When player stops moving, Gertrude will wander around until player resumes moving

-Will respond to a very limited amount of messages,

-if Gertrude doesn’t recognize something in the players message, he will just say “stop talking” (90% of the time this happens)

-After 5 minutes, Gertrude reveals that he isn’t real and will teleport the player to the next part of the game

But, Gertrude still does not fool most of the people that I’ve had test the game, and I know it can be improved; I’m just unsure how. Any ideas?

Below is a video that I took quickly on my phone of Gertrude, as I am away from my PC

External Media

I will be responding to suggestions, adding suggestions, and providing a new video of the new NPC in a couple days when I implement the suggestions!

4 Likes

Hey, i think there’s 2 most realistic solutions:

  1. Create a message analyze system like Siri or Google assistant, which’s anyway will have limited replies.
  2. Use a generative AI like ChatGPT. Existing, through https requests, or if your’e insanely smart, create and train your own AI.

About moving, probably he should stop moving if distance between player less then some threshold, and start following if distance a bit bigger then threshold (for example stop moving if distance less than 10, and start following if bigger than 15).

Occasionally looking around will also be pretty cool.

1 Like

I didn’t know using generative ai was possible, I’ll look into it. Thanks for the suggestion :+1:

1 Like

I think the name is probably the first giveaway, a random username would be much more convincing.

1 Like

I named it after one of my alt accounts, “GertrudeBertrude,” but you are correct, it doesn’t seem like a generic username. I will change the username, thank you for the suggestion! :smile:

1 Like

There’s a built in implementation that allows text generation like an Ai ChatBot that doesn’t require you to use HttpSerivce: [Beta] Introducing Text Generation API.

Never used it but you might find it helpful

2 Likes

Alright, well I am already nearing completion on using HttpService, so I will stick to that for now. Thanks for the suggestion though

2 Likes

Just implemented your AI idea, and it seems to be working great, video below demonstrating it.
Any ideas on why the messages are so spaced out now? I think it has something to do with how the AI is responding, I am using Gemini.

The biggest giveaway that it’s an NPC is the NPC not appearing on the leaderboard, do you have any ideas to fix this? Maybe try creating a fake leaderboard?

(sorry for bad quality, I just cropped Studio out)

As far as i know there’s no way you can modify CoreGui, so you can carefully put frame with Gertrude’s name into PlayerGui, so it look like normal playerlist, you can know needed size, transparent and other stuff on this path:
CoreGui > PlayerList > Children > OffsetFrame > PlayerScrollList > SizeOffsetFrame.
Every “ScrollingFrameContainer” frame is individual player

Or you can create your own playerlist as you mentioned

Edit: I think you can consider delay between message and answer as if Gertrude read and type message. But in this case will be proper to stop him from moving until he answer

They seem to be walking in place very often, try to prevent that.

Also just the NPC dressed up as a random account.

I have a “pause” function where every 5 seconds there is a 10% chance the NPC just pauses, I should stop the animation when a pause happens, or remove the pause system entirely. I thought it would make it seem more human

I’m not sure if dressing up the NPC randomly would be beneficial, as this whole sequence is a secret inside of my main game and only intended to be played once.

Thanks for the suggestion!