ଅ long read

Long read · Kalinga Engine

Kalinga Engine

A mystery you play on the map of a real city. Mine is Bhubaneswar, and most of it is still under fog.

The Kalinga Engine map at night: dark Bhubaneswar streets, one circle of fog lifted around the decrypted Lingaraj node, a smaller hidden node beside it, and the decrypted story in a side panel.
Old Town, zoomed in. One place decrypted, the fog lifted around it, and a smaller place beside it that only shows up this close.

The city is the board

You open the game and a terminal boots. It tells you the Temple City hides something, and that you are a Decoder now. Then it shows you Bhubaneswar, at night, and almost none of it.

The map is the real city: its roads, its lakes, the Daya river curling along the bottom. Over it sits fog. You can see only the places you’ve earned, and a faint ring wherever something is waiting to be found.

Each place is a node. Click one and you get a fragment: a line of story and a puzzle. Solve it and the node decrypts. The fog pulls back around it, and the story behind it opens up.

That’s the whole loop. The interesting part is what you can do with it.

A story told across a map

A book tells a story in order. A map can’t. You can go anywhere, so the order has to come from somewhere else.

In the Kalinga Engine it comes from the places themselves. A node can require other nodes, or an object you picked up somewhere else. Until you have them, it isn’t locked. It simply isn’t there. So the city fills in the way a story does, one revelation leading to the next, except the revelations have addresses.

In the working content I built the engine with, the approach to Lingaraj and the north ghat of Bindu Sagar are both open from the start. Solve both and a third place appears at Ekamra Haat: stall 42, where a courier has left something with the appliqué seller. Two corners of Old Town point you across the city to a market.

The order of a story is usually a list. Here it’s a set of directions.

There’s a second layer: how close you look. Major places show up when you see the whole city. Minor ones, a ghat or a particular arch, only appear when you zoom right in on their block. A vendor or a single museum exhibit can be hidden in a street you’d never zoom into unless something told you to. Zooming becomes a way of searching.

And a story told across a map can be told differently to different people. At Khandagiri, every player gets their own three compass bearings from the cave mouth. Where your lines cross is where you need to look. Two players comparing notes will only confuse each other, and that’s on purpose.

The puzzles are the city

I wanted puzzles you can only solve by paying attention to Bhubaneswar. Not riddles that happen to have a temple in them, but questions whose answer is in the temple.

  • Count the smiling faces carved on the Mukteswar arch. Not the fierce ones.
  • Find where three shadows meet at the ghat, and drop a pin there. The server checks if you’re within forty metres.
  • Take your three bearings from the Khandagiri cave mouth and plot them.
  • Wait for a letter. Some answers arrive in your inbox, from a character, when you’ve earned them.
  • Put a sequence in the right order, or find the code printed in a kit that arrived by post.

That’s eight kinds of puzzle in all, from a typed answer to a pin on the map. Each one has a hint or two, from a character called V, and five tries an hour so nobody can guess their way through.

The roadmap goes further. Identify a building from a cropped 1970s photograph. Trace the route of Kharavela’s elephant through the Old Town streets with your cursor. Solve a node at Bhubaneswar’s real sunrise, wherever you happen to live.

Playing from Bangalore

The first plan needed you to physically be there, with your phone’s GPS checking. That’s romantic, and it also limits your players to people who live in one city and are free on a Tuesday.

So the story changed instead of the rules. Fragments of the Engine have leaked onto the open network, and anyone can decrypt them from a screen. Some fragments are marked PROXIMITY_LOCKED: the Engine trusts atoms more than packets. Those open only for people standing in Bhubaneswar, during a window in October.

I think the most important players are the ones who aren’t here. People who grew up near these streets and now live in Bangalore, Hyderabad, Dubai. For them, eight weeks of squinting at Old Town lanes on a map is homesickness with a puzzle attached.

The finale is meant to stitch the two together. A gathering at Dhauli, mirrored online, where a remote player hands the name they recovered to someone who is there, and that person carries it up to the stupa.

That is the plan in the roadmap. None of the October layer exists yet.

Somebody has to run it

An ARG isn’t a game you ship and walk away from. It runs like a TV season: new places drop on Tuesday and Friday nights, characters write to players, and someone watches where everyone is stuck.

So half of what I built is for that someone, the showrunner. It’s a plain console. You place a node by clicking on the map and set how far in you have to zoom to see it. You write the puzzle and test your own answer before publishing. You draw which places unlock which, and it refuses a loop. You schedule a drop for 9 pm on a Tuesday, in Indian time.

You can write to players as a character: everyone, everyone who solved a particular place, or one person. You can see, for every node, how many people found it and how many are stuck there. And when someone is genuinely stuck, you can show mercy: reset their attempts, or hand them what they need.

The test for the console was simple. I wrote an entire practice season through it, every kind of puzzle, chains, scheduled drops, messages, codes, without touching the code. It found three bugs in the console. One was a box labelled “grants this object” that actually required it, which would have locked players out of the very place meant to give it to them.

Where it is

The engine works end to end: sign in with an email link, pick an alias, play the map, solve, collect, read your inbox. The console can author and run a whole season. Answers are never stored in a form a player could read, even by digging through the site’s code. A check in the build makes sure of it.

What doesn’t exist yet is Season 1 itself. I deliberately didn’t invent a canon story just to fill the engine. The lines in these screenshots are the working content I tested with: a 1957 survey, a missing year, a stall at Ekamra Haat. Some of them might survive.

It started as a much smaller thing: a dark map of the city with a few places you could type passwords into, saved in your own browser. It’s in my rabbit holes as the scent I finally followed. The story was always going to be about the city. It just needed the city to be the page.

The World Beneath

turn-based roguelike · 8×8 textmode · CRT

Under the site there’s a small world. Click the screen to start: pick a companion, find the ten caches, and see how far down the temple goes.

The ring

water douses fire · fire burns root · root grounds spark · spark shocks water. Lead with what beats what’s in front of you: ×2 one way, ×½ the other.

Walk
arrows, WASD, or click
Act
Enter · Z waits · M menu
Margins
more marks hide in long reads
·