DENIS
Contact

Unity / C# Developer

Games and game systems, from gameplay to multiplayer and backend.

I build in Unity/C# — gameplay mechanics, progression, and, where a project needs it, the multiplayer and server side that makes it run.

3.5+
years commercial experience
6
shipped Unity projects
3
multiplayer network stacks
Web / PC / Mobile
platforms shipped

Projects

Shipped and in-progress Unity projects — gameplay, multiplayer and the backend behind them.

Gameplay video — coming soon

UNITY WEBGL · ASP.NET CORE · VK MINI APP

Rise of the Dead

A co-op, turn-based RPG in the browser about raiding zombie bosses together — with character progression, equipment, and an authoritative C# server. In active development.

Unity WebGL ASP.NET Core / .NET 8 PostgreSQL Redis Docker VK Mini Apps
View project

Core principle: the server is the single source of truth. The client can never directly change its own resources, inventory or a fight's outcome — every result is computed and persisted server-side. The client only sends chosen actions, never results.

  • Boss raids — a shared HP pool per boss instance lives in Redis. Solo, invite-only and open-raid modes all run through the same idempotent round-processing pipeline.
  • Idempotent rewards — currency and skin payouts are finalized atomically in PostgreSQL, so a retried request can never double-grant a reward.
  • Social & content — friends, invites, a realtime chat over WebSocket, and Addressables-based on-demand content loading keep the client light.
Unity WebGL client (MonoBehaviour UI) actions only Nginx reverse proxy · TLS ASP.NET Core API Domain · Application · Infrastructure · Presentation PostgreSQL profiles · inventory · history Redis boss HP pool · live sessions background worker · expires stale raids VK Mini Apps HMAC launch auth
Gameplay video — coming soon

PHOTON PUN · WEBGL / PC / MOBILE

Hide & Seek

A multiplayer Prop Hunt-style game: Hiders disguise as objects in the environment, Seekers hunt them down. Full F2P mobile game with progression, skins and a battle pass.

Rooms & lobbies Networked abilities (RPC) Progression & skins Battle pass Offline bots
View project

Built on Photon PUN (the classic realtime networking stack, not Fusion), running everywhere — WebGL, PC, and mobile with dedicated on-screen controls, plus a Yandex Games SDK integration for the web build.

  • Rooms & roles — a room/lobby browser, Hider/Seeker role assignment synced through Photon Custom Properties, and round phases (Lobby → Prep → Play → Ended) with timers and auto-restart when a room drops below the minimum player count.
  • Abilities over RPC — Seekers get a speed boost, a radar and a slowing aura; Hiders get a speed boost, a teleport, a slow-down debuff for Seekers and a decoy "highlight" flare. All routed through a dedicated RPC proxy layer.
  • Progression & economy — levels, quests, daily rewards, a battle pass and a skin shop, with skin state synced live between players.
  • Offline mode — a bot-driven offline system so the game is still playable without a live match.
Gameplay video — coming soon

SINGLE-PLAYER · AI BOTS · UNITY

Hide & Seek: Paint Prop

A single-player twist on Prop Hunt: as a Hider you paint your own body to blend into the environment, or switch sides and hunt down AI hiders. No multiplayer — every opponent is a bot.

Body painting Camouflage meter Hider & Hunter roles AI bots No networking
View project

A single-player take on hide-and-seek where the disguise is something you draw yourself instead of picking from a list. There is no networking at all — every opponent is an AI bot.

  • Paint to hide — as a Hider you paint directly onto your character with a colour picker, brush, fill, eyedropper and undo, matching your look to the surface behind you.
  • Camouflage meter — an on-screen concealment percentage shows how well you currently blend in, so painting becomes a feedback loop instead of guesswork.
  • Play as Hunter — switch sides and search the level for AI hiders blended into their surroundings, with a live counter of how many are left.
Gameplay video — coming soon

MIRROR · VK · WEBGL

Bubble PvP

A 4-player competitive bubble-shooter with betting: players stake coins, play a shared match, and split a prize pool by final placement. Built on Mirror Networking with VK ID.

4-player rooms Betting & prize pool Match ranking VK ID
View project

Built on Mirror Networking with a VK ID login flow, targeting the WebGL / VK Mini Apps environment — a different network stack from the Photon and custom-backend projects, deliberately, to show range.

  • Match flow — up to 4 players join a room, each staking coins before the match starts; everyone plays a shared, synchronized round of the bubble-shooter.
  • Scoring & payout — players are ranked by score at match end, and the staked pool is split across placements rather than winner-takes-all.
  • Identity — VK ID integration ties a player's in-game identity and stats to their VK account.
Gameplay video — coming soon

CUSTOM ECS · CLEAN ARCHITECTURE · YANDEX GAMES

Animal Hospital Horror

A horror sim about treating patients — some of whom are hiding an anomaly. Built on a custom ECS framework with a strict Clean Architecture split, and no network stack in sight.

Custom ECS Event bus Command pattern Strategy pattern Testable domain logic Localization
View project

The most architecturally involved of the shipped projects: a hand-rolled ECS framework (World, Entity, EntityManager, ComponentManager, ISystem) sits under a full Domain / Application / Infrastructure / Presentation split, with an internal event bus decoupling systems from each other. Domain and application logic have zero Unity dependency and can be unit-tested without the engine running.

  • Patient lifecycle — a state machine drives each patient from arrival through registration, treatment, and a completed / hostile / dead / left-the-clinic outcome.
  • Detective-style inspection — a Strategy-pattern registry of independent inspection channels (documents, photos, CCTV, visual checks) that can reveal an anomaly hidden in an otherwise normal-looking patient, with results cached so nothing is re-checked needlessly.
  • Anomalies — each anomaly type is a pluggable behavior in a Strategy-pattern registry: a shape-shifter that turns hostile and stalks the player if mistreated, a jump-scare encounter resolved with a QTE, and a stalker that tracks the player's head movement and appears on trigger.
  • Sanity system — a fully event-driven survival resource that drops from stress, mistakes and jump-scares, and rises with correct treatment; hitting zero ends the shift.
  • Platform — Yandex Games SDK for leaderboards and cloud saves, with an ad-blocking gate that suppresses interstitials during jump-scares and rituals.
Gameplay video — coming soon

SINGLE-PLAYER · AI BOTS · YANDEX GAMES

Survivor / Hunter

An asymmetric hide-and-hunt game played solo against AI bots instead of real players — pick Survivor and collect keys, or Hunter and catch every bot before someone escapes.

Role selection Match orchestration Registry pattern Runtime localization
View project

Before a match, the player picks a role by touching one of two cubes in the lobby. As Survivor, they collect keys scattered across the map while an AI Hunter roams the level; once enough keys are collected by anyone, an escape gate opens and every AI survivor makes a run for it. As Hunter, the goal is to catch every wandering AI survivor before the first one escapes.

  • Match orchestration — a single manager class owns the full round: spawn delay for the Hunter with its own countdown audio, win/lose conditions for both roles, per-match and lifetime statistics, and cloud sync through the Yandex Games SDK.
  • Deliberately physics-free catching — the catch check compares positions directly against a registry of active catchable bots instead of relying on colliders and triggers, specifically to avoid an entire class of collision-layer bugs.
  • Registry pattern — active bots and fleeing bots are tracked in dedicated registries rather than scanned for every frame.
  • Live localization — an interface-based localization layer backed by the Yandex Games SDK reacts to a platform language change in real time, no restart required.
Gameplay video — coming soon

UNITY · YANDEX GAMES · PC / MOBILE

Farm Tycoon

A multi-floor farming tycoon: plant, grow and sell crops for coins, then sink them into sprinklers, saws and expansions — or rebirth to reset progress for a permanent stat boost.

Growth & economy loop Sector-based expansion Gacha seed spin Rebirth progression Yandex Games SDK
View project

A tycoon-style farm sim: players plant seeds in slots spread across floors and sectors, each crop moving through a Planted → Growing → Ready lifecycle on its own timer, then carry the harvest to a sell zone for coins.

  • Seed economy — new seeds come from a slot-machine-style spinner with a per-plant rarity and spawn-chance table, plus a purchasable luck upgrade that skews the odds toward rarer crops.
  • Boosters & automation — upgradeable sprinklers speed up growth for crops in range, and a leveled saw station processes harvested crops faster as it's upgraded, each with its own range/power/yield upgrade track.
  • Sector-based expansion — the farm unlocks floor by floor and sector by sector as the player buys expansions, with each newly unlocked sector activating its own set of plant slots.
  • Rebirth loop — resetting progress at a rebirth threshold grants a permanent stat multiplier, with a one-time free re-purchase of a sold upgrade tracked per rebirth cycle.
  • Guided onboarding — a multi-stage, localized tutorial walks new players from planting their first seed through selling, spinning and upgrading, driven by a dedicated stage-by-stage navigation script.
  • Platform — Yandex Games SDK for cloud saves, ads and shop purchases, with mobile touch controls alongside PC input.
Gameplay video — coming soon

UNITY · SQUAD AI · YANDEX GAMES · PC / MOBILE

RNG Brainrots

An RNG-collector with real-time squad combat: spin a wheel to pull brainrot characters with rarity modifiers, then take your squad into zones where they chase, fight and knock out enemy brainrots for rewards.

Squad combat AI Weighted RNG & modifiers Loadout & slots Zone progression Upgrade tree Yandex Games SDK
View project

Every brainrot is a small autonomous fighter. The player collects them from a wheel, equips a limited squad, and the squad follows the player around and fights on its own — no manual targeting. The interesting part is making dozens of these agents behave sensibly together in real time.

  • Squad combat AI — each brainrot belongs to a faction (Player / Enemy / Bot) and runs its own target search, chase, attack and cooldown loop. Allies pick the enemy with the fewest attackers first so the squad spreads out instead of piling on one target, and a shared help-request list lets idle allies join a fight that is already going on.
  • Follow & catch-up — idle squad members circle the player; if one falls too far behind it breaks off and rushes back at a speed boost, and a separation pass keeps the crowd from stacking on top of each other.
  • Knock-out & recovery — an enemy that hits zero HP shrinks away, pays out a reward and is respawned; a squad member that hits zero HP ragdolls and heals back to full instead of being lost, so a lost fight costs time, not progress.
  • RNG wheel & rarities — the spin picks a brainrot from a weighted chance table, then rolls a separate rarity modifier (Normal → Gold → Diamond → Platinum → Rainbow, plus a special Frozen variant) that scales reward, size and power. Includes auto-spin and a luck upgrade that shifts the odds.
  • Loadout — an inventory with stacking duplicates, a limited number of equipped slots, an "equip best" action that ranks the collection by power, and a marker that flags a newly pulled brainrot that beats what is currently equipped.
  • Zones & economy — each zone defines its own enemy type, count, HP, damage and reward multiplier (some pay in a second currency). Entering a zone respawns the enemies and teleports the squad to the player. Kill rewards multiply zone, rarity, reward-upgrade and rebirth bonuses.
  • Upgrades — a data-driven upgrade panel built on ScriptableObjects: more squad slots, more enemies per zone, reward multiplier, wheel speed and luck, each with its own cost curve, plus a separate attack size / power track.
  • Platform — Yandex Games SDK for cloud saves and a runtime RU/EN localization layer; touch controls alongside PC input.

More projects

Additional shipped or in-progress work covering a broader production range.

Commercial client work

Several contracted Unity projects under NDA — code kept private.

Skills

Core

C#, Unity, .NET

Gameplay

Game systems, state machines, AI, UI, progression, economy

Multiplayer

Mirror, Photon PUN, WebSockets, authoritative server architecture

Backend

ASP.NET Core, PostgreSQL, Redis, REST APIs

Infrastructure

Docker, Linux, Nginx, VPS

SDK / Platforms

VK Mini Apps, Yandex Games, WebGL

Also

Addressables, UniTask, DOTween, ScriptableObjects

About

I'm a Unity/C# developer with 3.5+ years of commercial experience, focused on gameplay systems, multiplayer features, backend integration and scalable game architecture.

I like working across the full stack of a game — from a gameplay mechanic and its UI, down to the server that has to make it fair and persistent. I'm comfortable picking up an existing codebase and reasoning about its architecture, not just writing new features in isolation.

Currently open to remote roles worldwide, or on-site with employer-paid relocation.

Get in touch

Open to Unity Developer, Unity/C# Developer, Gameplay Programmer and Unity Multiplayer Developer roles — remote or relocation.