In Progress2025 - presentSchool

Project Survivor

Multiplayer online Hack'n Slash, graduation project

Platform
PC
Team
1 person · Solo project
Time
Ongoing
Role
Gameplay, networking and server systems
About the project

What it is

Project Survivor is my solo graduation project, a multiplayer online Hack'n Slash prototype inspired by Path of Exile and Vampire Survivors. Players build a character, collect equipment and fight enemy waves alone or together in independent map instances hosted on a dedicated Linux server.

What I worked on

My contribution

I designed and programmed the full project in Unity with Mirror and KCP. My work covers the client, server architecture, combat, character progression, procedural loot, inventory, equipment, stash and player trading. I also set up the Linux server and the Jenkins deployment workflow used to update it.

Key features

Main systems

  • Authoritative Linux server with KCP transport for responsive multiplayer combat.
  • Custom Instance Manager that starts isolated maps and assigns available ports.
  • Server-side ability and damage pipeline with synchronized combat feedback.
  • Character progression, loot, inventory and trading systems synchronized with Mirror.
Technical deep dive

How it works

Multiplayer architecture

From the town to isolated maps

Players first connect to a shared town. When a map is requested, the server saves the player state, selects an available port and starts a separate headless Unity process. The client is redirected only after the new instance has had time to boot.

  • The map identifier, random seed and selected difficulty are passed to the new server process.
  • Each map runs independently, which separates session state and makes the architecture easier to scale.
Combat and progression

Server-authoritative gameplay

Spells and damage are resolved by the server, while clients receive the visual feedback. A synchronized statistics component manages health, mana, resistances, critical hits, elemental damage and progression.

  • Spell tags such as Projectile, Fire and Cold determine which character bonuses are applied.
  • Projectile count, pierce, speed, cooldown and damage are combined at runtime for each cast.
Items and builds

Procedural equipment

Equipment is generated from an item base, rarity and item level. Magic and rare items receive weighted prefixes and suffixes, with tiers and values selected from data-driven pools.

  • Inventory, equipment and character statistics stay synchronized across the network.
  • Currency items can modify existing equipment by adding or rerolling affixes.
Player economy

Secure trading

The trade system is controlled by the server. It checks player distance and session state, locks offered inventory slots and resets both confirmations whenever an offer changes.

  • Each trade uses revisions so an outdated client cannot validate a changed offer.
  • Both players review the final state before the server completes the exchange.
Challenges

What was difficult

The main challenge is keeping combat responsive while the server remains authoritative. I am improving pooling, interest management and update frequency so enemy waves stay smooth for every connected player.

Screenshots

Gallery

Presentation splash
Current key art for the prototype.
Spell combat
Spell casting, damage feedback and enemy hit reactions in the current prototype.
Conclusion

What I learned

This is the most ambitious project I have built so far. It has taught me to consider reliability, latency and infrastructure from the beginning of a multiplayer project.

Stack
UnityC#MirrorDedicated ServerLinux
The Fallen One
Next project
The Fallen One
A C++ boss rush built around demanding, multi-phase encounters