GAME DEVELOPER · GAMEPLAY · SYSTEMS · LIVEOPS
I build games end to end.
Gameplay systems, backend, tools and the release itself. Shipped on mobile, and open to any platform, genre or team where that work is useful.
OPEN TO OPPORTUNITIES
BOTRAID · LIVE
SELECTED WORK
05
BotRaid: Idle Strategy TD
An idle strategy TD where the map itself is the stake. Grid platforms dock edge to edge, every core builds robots forever, and whoever holds the ground holds the core.
CASE STUDY>
AceRiders
Portrait hoverboard racing in 60–120 second bursts, with drift mini-turbos and a track editor that makes the community the content pipeline.
CASE STUDY>
Packet
A delivery platformer where the levels are the content: run the route, or build your own, clear it, and publish it for everyone else to run.
CASE STUDY>
Tamagotchi
A pet-raising loop — feeding, washing, shopping, mini-games — designed to stay readable and tappable on a 184×224 watch screen.
CASE STUDY>
SpaceQuizz
Quiz rounds, ordering the planets, naming moons and tracing constellations — a science game for the same watch.
CASE STUDY>ALSO WORKED ON
02Live events, store offers, competitive incentives and UI.
JAMS & PROTOTYPES
ITCH.IO
4 SMALL GAMES, MOST PLAYABLE IN THE BROWSER >
WHAT I DO
CAPABILITIESGAMEPLAY
Combat, movement and physics, controls for touch and gamepad, camera, AI and targeting, economy, progression, levels and editors, VFX and game feel — from the first prototype to the tuning pass that makes it play well.
MULTIPLAYER
Real-time networking with Mirror — the networking layer itself, state replication, client prediction and the server side of a match — plus async competition when live netcode is not worth its cost: leaderboards, brackets and replays as opponents.
LIVEOPS
Daily and weekly mission tracks, seasonal standings, remote config, A/B-able tuning and store offers — content that can be changed without a client release.
BACKEND + SHIPPING
Go services for leaderboards, identity and cloud save, plus the release itself: store listings, ratings forms, crash reporting and ad mediation.

CASE STUDY · SHIPPED
Most idle games are a number that only goes up. This one is a map — and the whole map is up for grabs.
TRAILER
28 seconds, captured in game.
THE DESIGN PROBLEM
Idle games rarely have stakes: progress only accumulates, so nothing that happens while you are away can matter. BotRaid puts the idle loop on contested ground instead. Platforms dock edge to edge, each with a core at its middle that builds robots forever. Whoever has an army standing on a platform owns its core — take the ground and the core comes with it, lose the ground and it goes with it. The war runs continuously, including while the app is closed.
- 01
NO BUILD PHASE
No battle phase, no wave counter, no start button. One continuous war you are always in the middle of.
- 02
A PLATFORM EVERY 45s
A hostile grid docks onto your territory on a clock — and you can call the next one in early when you want the fight now.
- 03
CORES CHANGE HANDS
Hold enemy ground for 8 seconds and the core flips, along with everything it produces. Your home platform is the one thing that can never be taken.
- 04
PARTS BECOME ROBOTS
Wrecked robots drop parts and parts become robots, so the army in front of you decides the army behind you.
- 05
BEHAVIOUR YOU SEE
A mortar arcs over the line, a grappler drags a target off its tile, a mine trips on contact, a kamikaze runs in on a fuse. Nothing is a hidden multiplier.
- 06
COMMAND, NOT MICRO
Robots pick their own targets. You decide what gets built, where it stands and where the line moves next — and you can pause the whole war to think.
IN GAME





CHASSIS CONCEPTS
Each chassis is a silhouette first — a player has to read what a robot does from across the board, before any tooltip.











BUILT WITH
- Unity 6 · URP
- C#
- UI Toolkit
- Custom ECS-lite architecture
- Go backend
- Cloud save
- Play Games Services
- Firebase Crashlytics
- Remote Config
- LevelPlay mediation
- Daily/weekly liveops
- 12 localisations

CASE STUDY · IN PRODUCTION

A hoverboard racer with the movement of Sonic Riders and the mini-turbo of Mario Kart, in 1–2 minute races where the community builds the tracks.
DESIGN PILLARS
- 01
A RACE FITS IN A BREAK
60 to 120 seconds from tap to result. Every other system in the game is budgeted against that number.
- 02
SPEED IS EARNED
Drift, trick, clean landing, rail. There is no passive boost — the boost bar is a scoreboard for execution.
- 03
COMMUNITY = CONTENT
The track editor is a game mode, not an extra feature. The game does not depend on one person authoring tracks forever.
- 04
ASYNC, NOT REAL TIME
Opponents are replays of real players rendered as ordinary riders. No real-time netcode and no racing AI to write.
CONCEPT
Two pieces from the ongoing production — the main menu and the gameplay concept. Not captures of the running build.


CONTROL
The board moves forward on its own — no input is needed to travel. A slow lateral drag steers; a fast one starts a drift; dragging back brakes and charges a jump whose height is proportional to the drag when you release. Low skill floor, high ceiling.
- Unity 6 · URP
- C#
- Config → Controller → Renderer
- Offline-first
- Replays as opponents
- UGC track editor
- Go backend

CASE STUDY · SHIPPED
Packet
A 3D delivery platformer where the levels are the content: run the route, or build your own, clear it yourself, and publish it for everyone else to run.
VIDEO
BUILD, CLEAR, PUBLISH
A level only reaches other players once its author has cleared it themselves — which keeps the published set playable without anyone moderating it by hand. Every route is scored, so the same level is worth running again for a better time.



BUILT WITH
Player-built levels are uploaded to object storage and served back through a CDN, behind a Go service running on EC2 from an ECR image — so a published route reaches other players without shipping a build. On the client, movement is physics-driven and playable on a gamepad or on touch, with the interface in UI Toolkit.
- Unity
- C#
- UI Toolkit
- Physics-driven movement
- Gamepad + touch controls
- Go backend
- AWS EC2
- ECR
- S3 + CDN
- User-generated levels

CASE STUDY · SHIPPED
Two apps for a smartwatch
A virtual pet and a science game for the Moochies kids' smartwatch, both built for a 184×224 screen — roughly a fifth of a phone's pixel budget, tapped by fingers that are not adult-sized.
TAMAGOTCHI
Raise a pet, feed it, wash it and take it to town. At this size the interface has to be one decision per screen: the map is the navigation, icons are the labels, and nothing depends on text a young player has to read.

MAIN

SET PET

INVENTORY

MAP

WASH
- 01
CARE
Feeding, washing and play keep the pet's state up, each through its own short mini-game rather than a menu.
- 02
TOWN
A map screen turns navigation into a place: home, shop and activities are markers a child taps, not a list.
- 03
COLLECT
An inventory of items and outfits gives the loop something to spend on and something to come back for.
SPACEQUIZZ
A science game for the same watch: quiz rounds, ordering the planets by hand, naming moons and tracing constellations star by star. Recorded on a phone and squashed back to the watch’s 184×224 proportions.

MENU

QUIZ

ORDER THE PLANETS

NAME THE MOONS

CONSTELLATIONS

CAPRICORNUS
- 01
DRAG, NOT TYPE
Every answer is a drag or a tap on the thing itself — planets into slots, a line between stars — because a watch has no keyboard and a kid has no patience for one.
- 02
TIMED ROUNDS
Each round runs against a clock with a score, so replaying the same content has a reason to happen.
- 03
REAL CONTENT
Actual moons, actual constellations. The game teaches names that exist, which is the whole point of putting it on a kid's wrist.

JAMS & PROTOTYPES
itch.io
Small games built fast — jam entries and prototypes where the point was to get a loop standing and see whether it was fun. Most run straight in the browser.
DANGERROOM
Build, power up and survive each wave in small interconnected rooms.
PLAY IN THE BROWSER >


RESOURCEFIGHT
Run missions broadcast to the whole city to win the resources you need to survive.
PLAY IN THE BROWSER >





EMANCIPSYCHIC
Cross the city dodging enemies to win freedom for psychics — and a new international holiday.
PLAY IN THE BROWSER >


ABOUT
I make games from first prototype to release.
Gameplay systems, tools, backend, storefront and whatever else shipping asks for. My work has been mobile so far, but the part I actually do — gameplay systems, tools, backend and getting a build out the door — is not platform-specific, and I am open to any opportunity in games.
I work in Unity 6 with URP and C#, on an architecture where every feature owns exactly one concern. That is what makes it possible to keep two mid-sized projects running in parallel without one becoming the other's debt.
BotRaid is live on Google Play, localised into 12 languages, with cloud save, weekly leaderboards and full offline progression. AceRiders is in production. I also worked on Zooba, War Machines and Packet, and on two apps for the Moochies smartwatch.
STACK
DAY TO DAYENGINE
Unity 6, URP, UI Toolkit, VFX Graph, Addressables, Burst.
CODE
C#, system-oriented architecture with ScriptableObject data, editor test coverage.
BACKEND
Go, protobuf, containers. Leaderboards, cloud save, identity.
SHIPPING
Google Play, Play Games Services, Firebase Crashlytics, Remote Config, ad mediation, IARC and Data Safety.
