The wooden blade caught the nearest bandit in the throat.
I had programmed critical hit zones into every enemy model, weak points that rewarded skilled play with disproportionate damage. The throat was one of them. I had placed it there because it was anatomically logical and because fencing instructors had told me it was a legitimate target. I had not, at any point during the design process, thought about what it would feel like to actually hit one.
CRITICAL STRIKE! LEE ZHANG DEALS 45 DAMAGE. BANDIT THUG LV.2 TAKES FATAL DAMAGE.
The bandit's eyes went wide. That was the detail that got me, not the blood, not the sound he made, but the expression: genuine shock, a flicker of something that looked like disbelief, and then nothing. He dropped his sword. He fell backward and hit the forest floor with a wet, heavy finality that I felt in my back teeth.
I stood there for a moment longer than I should have, staring at what I had just done.
BANDIT THUG LV.2 DEFEATED. +15 XP GAINED.
The notification materialized in my peripheral vision with the same cheerful chime as the tutorial completion, the same positive reinforcement sound design I had agonized over for two days because I wanted it to feel rewarding without feeling cheap. Standing over a body with blood on my hands, it felt like neither of those things.
The rational part of my brain tried to explain, patiently, that this was an NPC. Code and algorithms given digital flesh. The irrational part of my brain, which had apparently been paying very close attention to the blood and the expression and the wet sound of the fall, was not interested in that explanation.
And then the leader said: "Nobody kills Gareth and walks away."
Gareth.
I had named him. I had sat at my desk sometime around month fourteen of development and opened the NPC database and typed a name into the field because unnamed enemies felt thin, felt like placeholders, and I had wanted the world to feel populated by people rather than targets. I had given Gareth a name and then, because the lore document was open anyway, I had given him a line of backstory: former farmer, lost his land to a drought three seasons back, fell in with the bandit crew out of desperation rather than genuine malice.
I had written that in a lore document that no player would ever read in full. I had written it because it made the world feel real, and then I had placed Gareth at this chokepoint on this path and set his behavior tree to attack on sight, and I had never once connected those two decisions into their logical conclusion.
Gareth was dead on the forest floor because I had made him desperate and then given him no exits.
I did not have time to finish that thought because the leader was already charging, his caution overridden by whatever I had coded as grief response in the faction loyalty system. His attack was wild and furious, the clean tactical coordination gone, and I sidestepped on reflex and caught him across the back as he passed.
LEE ZHANG DEALS 18 DAMAGE. BANDIT LEADER LV.3 TAKES 18 DAMAGE.
The remaining flanker came in fast from the left. My shoulder was still screaming, my HP sat at 85 and falling, and the shakes were starting in my hands from the adrenaline and the pain feedback working together. But I was moving now, actually moving, the tutorial forms coming up through my body without me having to consciously retrieve them. Block, pivot, counter. Block, step, counter. The wooden sword was slow and weak but it was fast enough if I committed to the angle.
It lasted another five minutes. I know that because I was counting, marking each exchange as it happened, trying to stay inside the pattern recognition and outside the part of my brain that kept returning to Gareth's face.
When it was over I sat down against a tree with my back to the bark and let my sword arm drop.
BANDIT LEADER LV.3 DEFEATED. +25 XP GAINED. BANDIT THUG LV.2 DEFEATED. +10 XP GAINED. LEVEL UP: LEE ZHANG IS NOW LEVEL 3.
Three bodies on the forest floor. My HP was at thirty-eight out of one hundred ten. My starter armor was shredded at the shoulder and across the ribs. My hands would not stop shaking, which was either adrenaline crash or the game's physical debuff system, and at this point I was not sure the distinction mattered.
The level-up felt hollow in a way that the tutorial level-up had not. That one had been earned against wood and patience. This one had been earned against three men, one of whom had a backstory and a name and a drought that had taken everything from him before I had taken the rest.
I sat there with my back against the tree and breathed until the shaking slowed.
The bodies would despawn in a few hours, resetting for the next player who came down this path. That was how I had built it: clean, efficient, no persistent corpses cluttering the starter zone. I had thought that was good design. Considerate, even.
Sitting here now I thought it was the loneliest thing I had ever programmed. That Gareth would just be gone, and then be back, and be gone again, every time someone walked this path. Over and over, forever, or until the servers went down.
I looked at my HUD. Seven lives, still. No. Wait.
Six.
The shoulder wound had taken more than I realized while I was moving. A secondary bleed timer I had designed to punish players who did not tend their wounds after combat. It had ticked down quietly while I was sitting here thinking about Gareth, and somewhere in that five minutes it had crossed a threshold and taken a life.
I stared at the counter.
Six lives remaining. Countless encounters ahead. And a world full of people I had built and broken and placed in the path of whoever came walking through.
I really was trapped in hell, and it was a hell of my own making.