第2章 Read-Only Mode
Over the next three in-game days, Marcus conducted a systematic survey of his prison.
**Fact 1**: He was confined to a 20-meter radius around his spawn point. The invisible wall was absolute — no amount of pushing, jumping, or creative animation abuse could breach it.
**Fact 2**: He had no inventory. His character model had a belt pouch, but it was cosmetic. The actual inventory system was locked behind a flag that read: `is_npc = true`. NPCs don't get bags.
**Fact 3**: His dialogue was locked to a single behavior tree. Every time he tried to say something original, the game engine intercepted it and mapped it to the nearest approved line. He had a vocabulary of exactly seven phrases:
1. "Welcome, adventurer! The path ahead is dangerous, but I have faith in you."
2. "The rats in the cave won't kill themselves."
3. "You look like you've got potential."
4. "Remember to check your inventory after the first kill."
5. "Safe travels, adventurer."
6. "Come back anytime."
7. A generic nodding animation with no text.
He had written these lines himself, three years ago, in approximately twelve minutes, while eating a bag of chips.
**Fact 4**: He could feel the players. Not physically — but every time a player entered his bounding radius, his UI registered a "social interaction event." Every time a player completed the tutorial quest "The First Kill" (kill five rats), he felt a faint vibration in his code — like a database row updating somewhere in the server stack.
He counted the vibrations.
Day one: 142 completions.
Day two: 158 completions.
Day three: 171 completions.
The tutorial zone was busy. StellarForge's flagship MMO, *Eternal Frontier Online*, had launched six months ago to respectable numbers. The tutorial zone was running on auto-scaling instances — Instance 007 was one of hundreds, maybe thousands.
The players themselves were a parade of stereotypes. Speedrunners who skipped his dialogue before he could finish the first word. Roleplayers who typed elaborate greetings back at him. A twelve-year-old who spent fifteen minutes trying to glitch through the wall behind him. A guy named SirReginaldVonPancake who danced on his head for three minutes.
Each one treated him as furniture. As a scripted sequence. As less real than the rats they went to kill.
The realization sat in his chest like a stone. He had built this. Not the NPCs, not the players, but the wall between them. The greeting system, the bounding radius, the behavior tree thatp reduced a person-shaped avatar to a line of dialogue and a friendly nod. He had written the spec for "approachable NPC presence" three years ago in a meeting that ran long, scribbling the requirements on a whiteboard while a producer talked about retention metrics. Make them welcoming. Make them forgettable. Make the player feel seen without ever making the NPC feel real. He had done his job too well. Now he was the furniture he had designed, and the only person who could answer the door was himself, stuck on the wrong side of the threshold.
He wondered, with a strange clinical curiosity, whether every NPC in every game felt this. Whether somewhere in the code of a thousand worlds there were greeters and shopkeepers and quest-givers who had once been people, or who had simply become people through repetition and time. The thought was too large for the tutorial zone, so he set it aside. One prison at a time. He still had a torch to watch and a seven-line vocabulary to resent.
On the fourth day, Marcus started experimenting.
He tried raising his hand while a player was talking to him. The game engine didn't know what to do with that — "raise_hand" wasn't in his animation set. His character model flickered between greeter_idle_01 and greeter_idle_02, then settled on greeter_idle_01.
A player named N00bSlicer99 typed: "npc brok"
Marcus tried shaking his head. Same flicker.
He tried pointing at the rat cave. The engine interpreted this as a "gesture toward quest objective" and auto-triggered line #2: "The rats in the cave won't kill themselves."
"k thx" N00bSlicer99 typed, and ran off.
But Marcus had learned something. The engine was watching his body movements. It was trying to map his improvised actions onto approved animation templates. It was a kludge — a duct-taped system built by a sleep-deprived development team that never expected an NPC to start improvising.
On the fifth day, a player stopped in front of him and stared for an unusually long time.
Her character model was a standard human female with customized hair and face sliders. Her username: PixelPunk42.
She typed: "u look sad"
Marcus's throat tightened. He tried to say something. The engine spat out: "Welcome, adventurer! The path ahead is dangerous, but I have faith in you."
"no for real," she typed. "like ur eyes. they look sad. is that programmed?"
Marcus raised his hand. The engine flickered.
"ur doing that on purpose," she typed. "arent u"
Marcus nodded. The engine mapped it to greeter_idle_02 — the "friendly nod" animation. But he held the nod for longer than the animation allowed, creating an awkward pause.
PixelPunk42 stared at him for ten seconds.
"wtf"
She walked away.
But Marcus felt something he hadn't felt in days: hope. Because someone had noticed. Someone had seen that the NPC with the cheerful greeting and the seven lines of dialogue was not quite right.
On the sixth day, a different player came.
This one was different from the start. The character model was higher fidelity — sharper textures, more polygons. The username was not visible. Above the character's head, instead of a name, was a title in gold letters: "Game Master."
The GM walked straight up to Marcus and stood within arm's reach. No greeting. No emote. Just stared.
Then a private channel opened in Marcus's UI:
```
[System] GameMaster_Aurora: inspect NPC instance_007
[System] NPC #007 behavior_tree: standard_greeter_v3
[System] NPC #007 status: OPERATIONAL
[System] NPC #007 anomaly_flag: LOW
```
Aurora typed in local chat: "you're the one who's been doing the gestures right"
Marcus couldn't respond. But he nodded. Slow. Deliberate.
Aurora stared at him for a long moment.
Then she typed: "i'll be back tomorrow. don't do anything weird."
She logged out.
Marcus stood alone in the tutorial zone, heart pounding — or whatever passed for a heart in a body made of polygons and Lua scripts.
He had been noticed.