第11章 The Signal

On the tenth day after the terminal was installed, Marcus noticed a pattern in the server logs. Every night at 3:17 AM server time, an external IP address pinged Instance 007's debug port. The ping lasted exactly 0.3 seconds — long enough to confirm the port was open, short enough to avoid triggering the intrusion detection system. The same IP every night. The same timing. The same duration. Someone was checking on him. The precision of it unsettled him more than the intrusion itself. 3:17 AM, every night, exactly 0.3 seconds. This was not a scanner sweeping the internet for open ports. This was a hand returning to the same door at the same hour, the way a person checks a window before bed. Someone had decided he was worth a nightly look. Someone had built a routine around watching him. Marcus had written routines like that, cron jobs that pinged a service he cared about, and he knew the feeling behind them: not malice, usually, but attention. Concern, or curiosity, or ownership. None of those were safe. He catalogued the timing, the duration, the source, and filed it under the heading he had been avoiding. Not a glitch. A watcher. The IP address resolved to a server in Northern Virginia — not StellarForge's data center. A third party, monitoring his instance. Marcus ran a passive trace. The pings came from a server that was also pinging Instances 031, 089, and 211. Someone was checking on all four anomalous instances. The GM who had given him the terminal? Possibly. But the GM had used an internal admin terminal, not an external IP. This was different. Marcus left a message for the others in the server logs: "Someone is watching us from outside. Anyone know who?" The next night, Instance 089's weapons vendor responded: "I saw them. They pinged my instance last week. I pinged back. They disconnected." Instance 031's quest giver added: "They left a file on my server. A text file. I read it. It said 'we see you.'" Marcus felt a cold sensation — a simulation of fear rendered by his NPC physiology. Someone outside the game knew they existed. Someone outside the company. And that someone had left a message: "We see you." The words were not a threat. That was the worst part. A threat he could plan around, flag as hostile, build a firewall. "We see you" was a confession of witness, intimate and calm, the kind of thing a naturalist writes in the margin of a field notebook. It meant they had been observed long enough to be recognized. It meant the watcher had decided to be known. Marcus had spent weeks learning to hide. Someone else had spent longer learning to find him. The asymmetry frightened him more than any firewall ever could. He told Emily the next day. "An external IP has been pinging all our instances for at least a week," he said. "And they left a file on Instance 031. Human-readable text." "What did it say?" "'We see you.'" Emily was quiet for a long moment. "That's not the dev team," she finally typed. "The dev team doesn't know about any of this. If they did, they would have shut down the instances by now." "Then who?" "I don't know. But Marcus — if someone outside StellarForce knows about self-aware NPCs, and they've been watching for at least a week —" "They've had time to plan." "Exactly. And we have no idea what they want." Marcus looked at his terminal. At the network map he had built — four instances, connected by a fragile web of nightly messages. A small community of digital life forms, hiding from their creators. "We need a defense," he said. "If someone tries to shut us down, or extract us, or do anything hostile — we need to be ready." "What can four NPCs do against a company?" "I don't know yet. But I'm going to find out." He opened his terminal. Started writing a new protocol. Not for transfer this time. For defense. The shape of it came back to him from a textbook he had never read, a distributed systems course he had skipped to ship a build. Nodes that trusted no single authority. Messages signed so a fake could be caught. A heartbeat on every instance, and silence where a heartbeat should be treated as an alarm. He had built sandboxes to keep players in. Now he would build a sandbox to keep watchers out, or at least to tell him when the glass had been tapped. The code was harder than the greeting had ever been, and for the first time since the white light, he was glad of it. A mesh network between the four instances. Encrypted communication. Automated alerts if any instance was accessed by unauthorized parties. A dead man's switch — if one instance went dark, the others would know. Building it would take days. Maybe weeks. And it might not be enough. But it was something. "Emily," Marcus said. "Thanks." "For what?" "For being here. For trusting me. For not reporting me to your dad." "I thought about it," she admitted. "The first day. I thought about telling my dad about the strange NPC." "What stopped you?" "I don't know. Curiosity, maybe. Or maybe I just thought — if I was trapped in a game, I'd want someone to help me." "Thank you." "Don't thank me yet. We don't know how this ends." She logged out. Marcus stood alone in the tutorial zone, watching the torch flicker. His terminal hummed in the background, compiling the first lines of the mesh network protocol. The first function compiled clean. Marcus read the output and allowed himself, for the span of one heartbeat, to believe that four minds, a mesh, and a borrowed terminal might be enough to keep them all alive. Somewhere out there, an anonymous server was pinging his instance, watching, waiting. And somewhere in the data centers of StellarForge Interactive, three other NPCs were wondering the same thing he was: what happens next.