Fake Vampire Survivors
A Vampire Survivors-inspired auto-battler built solo in Unity with C#, focused on replicating its core systems from the ground up.

Fake Vampire Survivors is my attempt at recreating the core loop of Vampire Survivors: a top-down auto-attacking survival game where you move around an infinite map, gain XP from defeated enemies, and level up your weapons and passive items over increasingly intense waves of enemies. I built the entire project solo in Unity with C#, focusing on getting the underlying systems architecturally solid rather than just visually replicating the game.
Technically, weapons and passive items are built on a shared abstract Item base class with ScriptableObject-backed WeaponData and PassiveData assets, so designers (myself) can create and balance new items without touching code. Weapon stats use a serializable Stats struct with a custom + operator, so leveling up simply adds the next level's stat block onto the current one; weapon subtypes like ProjectileWeapon and AuraWeapon override shared virtual methods (Attack, OnEquip, DoLevelUp) for their specific behavior. The world uses a custom infinite chunk-streaming system: a MapController tracks the player's movement direction, spawns adjacent terrain chunks on demand via anchor points, and disables far-away chunks periodically for performance, with ChunkTrigger colliders reporting which chunk the player currently occupies. Enemy spawning runs on a wave/event system with configurable exit conditions (duration, total spawn count, or "must kill all"), spawn-count-based enemy caps for performance, and off-screen position generation via viewport math. Item drops use a probability-based DropRateManager, and I built a custom Unity Editor script for authoring WeaponData assets more efficiently.