Software / Systems / Games

Nithilan Kumaran

Gameplay & systems engineer.

I build the parts you don’t see, but always feel.
Game engines, concurrent backends, and the systems that make a world work.

FIG. 01 / Inside a frame C++ · SDL2
Inside a frame An exploded diagram of the 2D game engine: input is captured, physics advances at a fixed timestep, and the resulting state is interpolated for rendering. 01 02 03 INPUT PHYSICS RENDER
Input → simulation → pixels.
A look through the layers of my 2D game engine.
CurrentlySoftware Engineering Intern · Neureal
EducationComputer Engineering · UW–Madison ’28
Looking ahead Open to internships & new grad roles

01 Selected work

A closer look
at the machinery.

Built from the inside out. Four projects exploring how software runs, scales, learns, and remembers the choices we make.

01 Concurrent systems

Meridian

What happens when every read
is also a write?

An in-memory cache server for game-backend workloads. I built the LRU cache, socket event loop, sharding, leaderboard, and replication machinery in C++20.

C++20 kqueue / epoll Concurrency CMake
The decision: split the keyspace across independent locks. LRU reads update recency, so a shared reader lock would not solve contention.
FIG. 02 / Divide the contention Meridian
GET player:99
SET session:42
GET player:07
stripe 00
stripe 01
stripe 02
stripe 03
hash(key) → independent mutex + LRU
A smaller lock for each part of the keyspace. Requests to different stripes can proceed independently. Four stripes shown schematically.
Cache throughput ops / sec
1 stripe
838K
16 stripes
5.3M
64 stripes
10.3M

Repository benchmark · Apple M3 · 8 threads · 4M operations.
In-process hot-key workload; not network throughput.

02 Recommendation infrastructure In progress

SageRec

Before a model can learn,
its graph has to be right.

A MovieLens recommender with a C++17 graph and neighbor sampler at its core. I’m building the path from chronological data preparation to repeatable recommendation experiments in Python.

C++17pybind11CSR graphsPython / NumPy
The decision: build the graph from training interactions only. Keep the native sampling contract explicit, then establish a matrix-factorization baseline before adding GraphSAGE training.
FIG. 03 / A graph, packed into memorySageRec
USERSMOVIES u00 u11 u22 3m0 4m1 5m2 6m3
One contiguous rangeneighbors[2:5] → [4, 5, 6]

User 1 has 3 training neighbors.

Follow the edges. Read the array. An illustrative graph of seven training interactions. Each edge is stored in both directions; the native sampler reads a user’s contiguous neighbor range.

Native sampler + MF baseline implemented
GraphSAGE training is the next stage.

03 Engine architecture

2D Game Engine

From keyboard input to
the next rendered frame.

A C++20 / SDL2 engine with fixed-step physics, interpolated rendering, and a component-object model. Pong and Breakout exercise the same underlying systems.

C++20 SDL2 Physics Memory layout
The decision: use a spatial hash to narrow collision candidates, then run AABB checks. Keep object destruction at frame boundaries.
FIG. 04 / Find the nearby pairs 2D engine
A B C D E F G H
3 candidate pairs instead of 28.
Only check objects that share a cell. A small illustrative scene, using the engine’s broadphase rule. A shared cell is a candidate, not a confirmed collision.

04 Procedural narrative

Shadow Index

A world that remembers
what you chose.

A terminal roguelike with a data-driven narrative engine. Choices add story flags; event prerequisites turn those flags into consequences on later encounters.

C++17 State machines Procedural generation
The decision: put narrative content in text files. Change event chains without recompiling the game.
FIG. 05 / A choice becomes state Shadow Index
EVENT device_found A Strange Device
Pick it up + has_device
REQ has_device The Device Awakens
Eligible for selection
Leave it alone + ignored_device
has_device missing The Device Awakens
Excluded from selection
A real event chain from core_events.txt. Flags determine which events may appear; the RNG chooses from the eligible set.
05

Live-game UI / Lua

Space Knights item shop

Fuzzy item search and a purchase flow for a live Roblox game. Levenshtein-distance ranking helps players find weapons even when the query is misspelled.

Read the writeup
A small detail that matters
search: “exalibr
Excalibur closest match ↗

Built with teams.

02 Experience

May 2026 — Present

Software Engineering Intern · Neureal

CURRENT

Reduced gameplay latency by 5%. Built state-driven enemy AI in Luau with windup, fire, and recovery phases synchronized across clients. Wrote the Go daemon behind NeuBridge, connecting Roblox Studio to VSCode.

Sep — Dec 2025

Software Engineer Intern · Sentari AI

Built a multi-stage content pipeline connecting n8n, LLM APIs, and WordPress. Added scheduling, retries, and structured error handling, with deployment on Vercel.

May — Aug 2025

Software Systems Intern · Carrier Global

Integrated Amazon Bedrock and Amazon Q with the SAP environment, built a prediction service using SQL and vector stores, and led user acceptance testing for purchase workflows that reduced production defects by 15%.

Summer 2024

Software Engineering Intern · Neureal

Adapted a React-style component and state architecture to Roblox Lua. Added dynamic and lazy loading for large item catalogs.

Summer 2023

Software Engineering Intern · Neureal

Built the in-game item shop and transaction systems for a live Roblox title, including item search and the purchase flow.

03 About the engineer

Curious about
what’s underneath.

I like making games, but I also just like building things. I take a system apart to understand how it works, write my own version, and find out where it gets slow.

That thread runs through my work: engine internals, cache behavior, procedural worlds, and the tools that make development less painful.

Away from code, I make dark-fantasy 3D sculpts. Different medium, same urge to build.

See the other side on Sketchfab

University of Wisconsin–Madison
BS Computer Engineering · Game Design minor
Expected graduation: May 2028 · Based in Madison, WI

Tools, with a reason to use them.

Systems & engines

C++20 · C · SDL2 · CMake · memory management

Game engine, physics, and cache internals

Backend & performance

Go · multithreading · lock striping · consistent hashing · kqueue / epoll

Meridian and the NeuBridge daemon

Gameplay & tools

Lua / Luau · Roblox Studio · procedural generation · UI systems

Neureal and Shadow Index

Web & data

React · Next.js · TypeScript · Node.js · PostgreSQL · Docker · Git

Content pipelines and developer tooling

Also in the toolkit

Python · Java · JavaScript · SQL · Bash

Certifications

AWS Certified Cloud Practitioner · AWS Certified AI Practitioner

04 Get in touch

Let’s build something
worth understanding.

Gameplay, systems, engines, or backend performance.
Email is the best way to reach me.