A wave-based survival shooter for PC and Meta Quest, built in Unity 6 by a five-person team.
Set in an alternate WWII overrun by a gas-mutated infection, the player is welded to the turret of a tank disabled by an anti-tank mine and defends it alongside Anatolij, a young mechanic sent out on supply runs between waves.
Each run is simple: survive as many waves as possible and climb the local leaderboard on score, kills and round reached.
Core loop & turret combat
One shared turret controller drives combat on both PC and VR.
- Modeled and textured the turret's machine gun: an MG34 with a double-drum magazine, chosen to justify the historical 75-round capacity without a belt-fed reload in VR.
- Built the scoring rules, reading hit location off each enemy's hitbox to reward headshots and distance over point-blank body shots.
The core loop runs through a single ITurretController interface, so both platforms use the same combat logic without diverging balance. I implemented the VR side.
NPC companion & AI
Anatolij, the mechanic, scavenges on his own and can be rescued when the horde grabs him.
- He returns automatically or on command and hands what he picked up to the player's inventory.
- While outside he can be grabbed by the horde, triggering a timed rescue event: the player has to shoot the attacker without hitting him.
- I built his defensive role back inside the tank (the automated machine gun he mans at the front of the vehicle) and wrote the five scripted dialogue beats the two characters trade over a run, carrying the narrative without cutscenes.
Crafting & survival economy
Scavenged materials are combined into buffs through scriptable-object recipes.
- Two dropped items make a buff for the mechanic (bandages, plated armor, stimulants) or the turret (ammo, damage rounds, faster reloads), and only while the mechanic is inside the tank.
- A run's score also converts into currency for a progression shop between matches.
- My contribution: the FMOD feedback for crafting actions, mixed into the same bus setup as the rest of the game.
Menus, settings & localization
A complete menu flow around the game: main menu, shop, per-level leaderboards and settings.
- Settings cover display, controls and audio, with separate sliders for master, sound effects, music, environment, zombies and gunshots.
- The interface can be switched live between Italian and English.
- Each level has its own leaderboard, ranked by score.
Enemies & infinite waves
Four enemy archetypes, each built around a distinct combat read.
- Farmer: slow, and its pitchfork punishes the mechanic.
- Crawler: climbs onto the tank to steal loot before fleeing.
- Bloated: its pustules detonate into an area attack.
- Spore: heals nearby enemies.
I modeled and textured all four, including the Farmer's pitchfork and hat props, and handled most of their in-engine setup myself, while the team built the NavMesh-driven AI and horde-scaling logic on top.
VR interaction & audio
The VR implementation and the audio system were mine end to end.
- Built the dual-grab drum magazine with a physically driven reload handle and matching recoil feedback, extending the XR Interaction Toolkit myself to support offset grabs and drop-height adjustment, neither of which it handles out of the box.
- Architected the whole FMOD setup: independent buses/VCAs for master, ambience and zombie SFX, mixed to keep dozens of simultaneous spatialized enemy and environment sounds legible through the same bus graph.
Art direction: before & after


Tank: rebuilt from scratch
The original tank was modeled by a teammate. When I took over art direction and modeling, I rebuilt it from zero.
- Vertex count cut from about 15.5k to about 6.3k (roughly 59% fewer)
- Added detail: cables, pipes, hatches and more
- Textured to match the rest of the scene


Farmyard: map and art
The farmyard was my own design, including the layout of the map. I took it from a greybox to the final dressed scene.
- Layout and level design by me
- All materials share a single texture atlas to keep rendering cost low
- Lighting and sky chosen to set the game's mood


Anatolij: character
The base model of Anatolij, the mechanic, was made by a teammate. I rebuilt it with all the details and textured it.
- Added all the details on top of the base mesh
- Full texturing


Zombie: from base to horde
The zombie started from the same white base model and became the green zombie that fills the whole project, from gameplay to the promotional art.
- Modeled and textured by me
- One reusable asset for the entire horde
3D models from this project
Gallery






