Tanuj Rao
Game designer, Boston

TanujRao

Hi! I'm a game design grad student at Northeastern, working on systems design and level design, with an interest in UX research. I like systems where the theme lives in the rules.

What I'm making

Both solo, both still in progress

Putt Me In

A party golf game where one player is the ball and everyone else is trying to sink it. Whoever sinks it scores, and so does the ball, so the ball gets to pick a favourite.

Multiplayer party game
Godot 4, solo
Sep 2026 to now
A hand-drawn notebook sketch: a stick-figure golfer mid-swing, a crouching 'human ball' and a flag in its hole.
Where it started: a page from my notebook.

How a hole plays

  1. Someone gets picked to be the ball. It goes round the group, so everyone gets a turn.
  2. Everyone else takes turns hitting it. You can also shove whoever's swinging to mess up their shot.
  3. The ball can steer, lean and jump once per shot, toward the cup or away from it. It's also the only one who can see the flag.
  4. Whoever sinks it gets the points, and the ball does too.
  5. After 8 strokes nobody scores, the ball included. So it can't just stall forever.

Helping and sabotage are the same buttons

The ball's moves work exactly the same whether it's helping you or ruining your shot. That's where the shouting comes from.

Your score is also your money

Between holes you can spend points on new clubs, or hang on to them and stay ahead. Each club does one thing: a frying pan for high lobs, a baseball bat for long low shots, a pool cue for precise putts, and a cannon that kicks you back when you fire it.

On the tech side, up to four people can play split screen on one PC, and online lobbies go through Steam. The host runs the physics and everyone else gets snapshots of the ball. I wrote the shaders for the toon look and outlines, and added hit-stop and a bit of camera kick so swings feel chunky.

DEPRECATED

Slay the Spire, except your deck is code and a friendly AI keeps offering to write it for you. Saying yes makes you a lot stronger. It also slowly wrecks your deck, your route, and eventually the game's own art.

Roguelike deckbuilder
Godot 4, solo
May 2026 to now
DEPRECATED combat: a pixel-art programmer at a desk faces three orange spider robots labelled Crawler.py, with a hand of five code-named cards below.
A fight against three Crawler.py spiders. You're the person at the desk.

“What you outsource, you lose.”From the top of the design doc

The whole game takes place inside a codebase that an AI called COAUTHOR is rewriting, and you're one of the last bits of human-written code left. Enemies are scripts that went feral. Cards are things like print(), firewall() and sudo.

COAUTHOR's offers start at Autocomplete and go all the way up to Full Autopilot, which just plays your turns for you. Every one of them is a real upgrade, and every one has a catch: junk cards in your deck, or the cards it didn't suggest getting pricier. I wanted the trade to show up outside the deck too, on the map, in the art and in the cards.

The spiral map: three concentric rings of node icons with labels such as 'skip 2, +8 slop' on the shortcut edges.
The map. The yellow labels are shortcuts and what they cost.

The map is a spiral

This was the idea I pitched first. The map is three rings, and you go around each one before heading in toward COAUTHOR in the middle.

Shortcut paths let you skip nodes, but every node you skip adds 4 Slop. If you're patient, a run is 13 nodes. If you take every shortcut, it's about 7. Taking a shortcut is the same choice as taking an AI upgrade, just on the map.

The same fight at Slop 0: clean pixel art with orange spiders. The same fight at total Slop: purple dithered corruption over every sprite and card. Slop 0 Slop 100

Slop gets into the art

Slop is a single number from 0 to 100, and nearly everything reads from it: screen noise, glitchy fonts, UI that drifts out of line, the music, and the card and enemy art. Drag the slider on the picture to see the same fight at both ends.

Glitch effects can be rough on some people, so there's a setting that keeps the art clean while Slop keeps counting underneath.

Three pixel-art cards: mutex_lock(), garbage_collect and defrag(), each with code-themed art and rules text.
Some of the cards that clean up Slop.

Some cards lie

The junk cards are where Slop actually hurts. My favourites:

  • // TODO: implement does nothing at all. It just clogs your draws.
  • hallucination.js says it deals 15 damage. It deals 0.
  • infinite_import makes more junk cards.

Your Slop also picks the ending. Finish with no upgrades and no shortcuts and you get the real one, manual_override. Go past 80 Slop and you get ai_generated.

Where it's at: 53 cards, 27 enemies, 18 events and 9 relics so far. I balance it with a script that plays 1,000 runs at a time with different kinds of decks.

What's still wrong: fights end in about 2.8 turns, and I want 3 to 5. A deck that only stacks Block is tied for the strongest strategy, which is boring to play against. Those are the next two things I'm fixing.

Other stuff

Ludus

A web app for exploring Steam libraries. You paste in one or more Steam profiles and it pulls together everything Steam makes public about them.

Ludus overview for a Steam account with 279 games: library value, all-time-low value, total hours played, cost per hour and 117 games never opened, above a sortable library table.
  • Backlog. It guesses whether you've finished each game from your playtime and achievements. You can correct it, and it adds up how long the rest would take to clear.
  • Family sharing. It merges everyone's libraries, shows who brings which games, compares two accounts, and tells you how many new games you'd get if someone joined the family.
  • Prices. Price history graphs, all-time lows, and a watchlist that flags when a game hits your target price. Prices show in your region's currency.
  • Insights. Playtime by genre, how much you've completed, and a “what to play next” pick from well-rated games you haven't touched.
  • Library value. What your library is worth, your cost per hour played, and how much money is sitting in games you've never opened.
  • Library. Your whole library, sortable by price, Metacritic score, completion, playtime or release date, and exportable as CSV or JSON.
Ludus insights: a what-to-play-next pick, a list of almost-finished games and recently played games.
Insights
Ludus price tracker: wishlist totals, current sales and a watchlist table with all-time lows.
Price tracker
Ludus backlog: a donut chart of unplayed, abandoned, in-progress and completed games, with a status for each game.
Backlog

It's a React front end with a small Node server in between, because Steam's API needs a secret key and can't be called straight from the browser. There are no accounts. It only reads public Steam data, and your backlog and watchlist stay in your browser.

Open it at ludusdb.lol →

Colony

A side experiment from this month, in JavaScript. 150 little creatures have neural-net brains that they pass down to their kids, and they can also learn during their lives. Nothing tells them what to do. Whoever survives and reproduces wins.

Related creatures end up the same colour, so you can watch families spread. The creatures, camps and scenery in the background of this page are from Colony.

They're always a little hungry. Click (or tap) any empty spot on this page near the creatures and see who comes running.

About me

2025 – 2027

Northeastern University, Boston

MS, Game Science and Design

Level design and research methods. I've used game design pattern languages to document and plan levels, and drawn pixel art for team projects.

Dec 2023 – Jan 2024

National University of Singapore

Software engineer intern

Led work on Sign Sense, an app that translates sign language into English in real time using Google MediaPipe.

2021 – 2025

SRM University KTR, Chennai

BTech, Computer Science

AR and VR, machine learning, and the usual CS. I also built a sports outcome predictor with gradient boosting.

Design

Systems and level design, prototyping, game feel, balancing, game design patterns, pixel art and playtesting.

Interested in

UX research, especially how players learn complicated systems.

Tools

Godot 4 (GDScript), Unity 2D and 3D, Visual Scripting, Python, C++, C, JavaScript and Git. I've also worked with Steam lobbies, local split screen, AR/VR and machine learning.

Say hi

I'm looking for game design and systems design roles. Email is the best way to reach me.

+1 857-370-2876