My Selected Works

Ghost in the Net

A cyberpunk infiltration story in Twine, where your build changes what each scene shows you.

Ghost in the Net cover. A two-colour risograph print: the title in black on cream paper on the left, a faint flowchart of linked squares in the middle, and a security camera lens in red and black cut off by the right edge.
Role
Writer & Narrative Designer
Studio
Solo project
Format
Interactive fiction · Twine (SugarCube)
Status
Finished, playable in the browser (Turkish)
Tools
Twine 2, SugarCube 2.37, JavaScript, CSS
504
Passages
~35,000
Words
70
Story variables
256
Conditions (if / elseif)
750+
Links and choices
~1.5 h
Play time

Highlights

  • Made the whole game alone, from the story to the interface.
  • Designed a ten-point build with a way past every obstacle for each stat.
  • Tracked noise and trust, and read them back in later scenes.
  • Built three minigames that play inside the passages.
On this page
  1. The player infiltrates a corporate building with a stat-based character.
  2. I wrote and built the game as a solo project.
  3. Player stats and earlier choices change later scenes.
  4. I kept the scene text and its logic in Twine passages.
  5. Each passage contains the text and rules for its scene.
  6. The implementation notes explain the remaining systems.

The player infiltrates a corporate building with a stat-based character.

A stealth run through a corporate tower. Who the player is decides what the story shows them.

Opening the hidden log turns the neon interface into a green terminal.

A netrunner, a hacker, breaks into the Nyxocorp building floor by floor with an Operator in their ear. In the basement they meet SEMA, a rogue AI, and VIGIL-7, the building’s security system.

The game, Ağdaki Hayalet, is finished and playable in Turkish, about an hour and a half long. The English version is in progress.

I wrote and built the game as a solo project.

I made the game alone: the story, the branching, the minigames and the interface. I built the interface with AI help, since my own CSS and JavaScript are basic.

Player stats and earlier choices change later scenes.

Each obstacle has routes for INT, TECH and BODY. Ten points go into INT, TECH and BODY, with checks from five to eight. With ten points only one stat can reach six or more, so every obstacle is written three times, once for each. Routing the power in B1, the first basement floor, adds two more.

Your build changes what you notice. Each build sees a scene differently, and clues found on one floor open options on the next.

Noise affects later security encounters. A hidden alert level rises with force and falls with clever solutions. The drone above, on B2, the second basement floor, reads it.

Dialogue choices shape the relationships. The player decides whether the Operator is human or an AI, and the Operator answers in kind. SEMA’s trust is earned over three conversations and shapes its later answers.

I kept the scene text and its logic in Twine passages.

Each passage contains the text and rules for its scene.

Each passage holds its own logic. Variables, checks and timed text sit next to the prose, so a scene and its rules are edited in one place. The minigames run inside passages too.

The implementation notes explain the remaining systems.

Click the picture to zoom · click outside to close