Skip to content

Reinisch/Warcraft-Arena-Unity

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

538 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Warcraft Arena

A World of Warcraft–style combat system built in Unity, playable in single-player, over LAN, or on an online server — and featuring a standalone Path of Exile Sirus boss-fight game mode.

🎮 Latest build: Download (Google Drive) 💬 Questions & feedback: Discord

Warcraft Arena


🌍 Game Modes

  • 🧍 Single Player — play solo and offline against AI and scripted encounters.
  • 🖧 LAN Server — host or join a session on your local network to play with friends.
  • 🌐 Online Server — play together over the internet (matchmaking via Unity Gaming Services Lobby + Relay).

🔥 Featured: Sirus Boss Fight (Path of Exile)

A single-player boss encounter against Sirus, Awakener of Worlds — the pinnacle boss from Path of Exile, recreated on top of the Warcraft Arena combat engine as a fast-paced bossfight shooter. Dodge his beams, survive the storm, and bring him down. ⚡


⚙️ Tech Stack

Area Technology
Engine Unity 6 · Universal Render Pipeline (URP)
Networking Unity Netcode for GameObjects (NGO)
Online services Unity Gaming Services — Lobby + Relay
Dependency injection Zenject
Async UniTask
AI Unity Behavior (behavior graphs) + AI Navigation (NavMesh)
Input Unity Input System
Content Addressables · Localization · TextMeshPro / uGUI

ℹ️ Networking history: This project originally used Photon Bolt. That backend has been deprecated and preserved on the photon-bolt branch. The master branch now runs on Unity Netcode for GameObjects behind a framework-agnostic networking layer (see Architecture).

🏗️ Architecture

The codebase is split into assemblies (.asmdef) with a strict dependency direction, so gameplay logic never depends on any networking framework:

Game.Core  ──────────────►  Game.Common
   │  (pure gameplay: units, spells,
   │   auras, combat — no net deps)
   ▼
Game.Net.Abstraction  ◄── framework-neutral interfaces & messages
   ├── Game.Net.Local  (single-player / offline backend)
   └── Game.Net.Ngo    (Netcode for GameObjects backend)

Game.Server   ── authoritative server logic
Game.Client   ── presentation, split into:
   ├── Game.Client.UI          (unit frames, action bars, lobby, chat)
   ├── Game.Client.Effects     (spell/projectile/aura VFX)
   ├── Game.Client.Sound       (spell, UI and character audio)
   └── Game.Client.Localization
Game.Launcher ── bootstrap, DI installers, scene flow
Game.Editor   ── editor tooling

The networking framework lives only in adapter assemblies (Game.Net.Ngo, Game.Net.Local). Game.Core references just Game.Common, and the asmdef dependency graph enforces that wall at compile time — making the netcode backend swappable.

⚔️ Combat System

Combat is fully data-driven. Content consists of reusable ScriptableObject Balance Definitions:

  • Spells are assembled from one or more Spell Effects (the things a cast does).
  • Auras are assembled from one or more Aura Effects (the persistent buffs/debuffs a spell applies).

This makes new abilities largely a matter of authoring assets — see the wiki guide: How to add a new spell.

Spell kit

A World of Warcraft Mage kit (plus a few support spells), grouped by school:

🔥 Fire ❄️ Frost 🔮 Arcane / Utility ✨ Support
Pyroblast Frost Bolt Polymorph Flash Heal
Scorch Ice Lance Blink Renew
Flame Strike Frost Nova Counterspell Holy Word: Serenity
Living Bomb Cone of Cold Arcane Intellect Pain Suppression
Fire Blast Deep Freeze Presence of Mind Resurrect
Blazing Speed Ice Barrier · Ice Block PvP Trinket
Hot Streak (proc) Icy Veins · Ice Nova
Fingers of Frost · Shatter
Spell Effects — what a cast can do

Damage · Heal · Apply Aura · Area Effects · Direct Teleport · Dispel Mechanics · Kill · Resurrect

Aura Effects — buffs & debuffs auras can apply

Periodic Damage · Periodic Healing · Absorb Damage · Damage Reduction · Critical Damage · Haste · Speed · Stat Mod · Spell Modifier · Spell Trigger · Stun · Freeze · Root · Silence · Pacify · Confuse · Immunity · Slow Suppression · Ignore Aura State · Display Model

✨ Implemented Features

  • Networking — server instances and client connections via Netcode for GameObjects, with single-player, LAN, and online (Relay) backends behind a shared abstraction.
  • PlayerWorld of Warcraft–style player controller and third-person camera.
  • World — arena location setup (Lordaeron map) and the Sirus boss-fight scenario.
  • Combat — data-driven spells, spell effects, auras and aura effects (see above).
  • UI — unit frames, action bars, customizable hotkeys, lobby, chat, floating combat text, unit selection projectors.
  • Presentation — visual effects for casts, projectiles and auras; spell, UI and character sounds.
  • Systems — localization with spell-error notifications; AI behavior graphs for scripted encounters.

🚀 Getting Started

Setup

Open the project in the Unity Editor version specified in ProjectSettings/ProjectVersion.txt. Enter play mode from the Launcher scene (Assets/Scenes/Launcher).

Build

The Launcher scene must be included first, followed by the playable locations.

Play

From the lobby:

  • Single Player — start a local session and play offline.
  • Start Server — host a session, advertised for LAN/online clients to discover.
  • Start Client → wait for sessions to appear → Connect. If a connection fails, the reason is shown at the bottom of the lobby panel.

🎮 Controls

Action bars — Central Bottom bar: no modifier · Central Top bar: Left Shift

1 2 3 4 5 Q E R F Z X C V G

Character

Action Input
Move WASD or Left + Right Click
Jump Space
Target Tab or Left Click
Select self F1
Deselect / cancel cast Esc
Rotate camera Left Click + drag
Rotate character Right Click + drag
Toggle health bars Ctrl + V
Chat Enter

📜 License & Attribution

All character models, textures and sounds are copyrighted by ©2004 Blizzard Entertainment, Inc. All rights reserved. World of Warcraft, Warcraft and Blizzard Entertainment are trademarks or registered trademarks of Blizzard Entertainment, Inc. in the U.S. and/or other countries.

Path of Exile and Sirus, Awakener of Worlds are trademarks of Grinding Gear Games.

This is a non-commercial, educational fan project and is not affiliated with or endorsed by Blizzard Entertainment or Grinding Gear Games.

About

World of Warcraft client-server combat system implementation in Unity with Photon Bolt.

Topics

Resources

License

Stars

583 stars

Watchers

30 watching

Forks

Packages

 
 
 

Contributors