Multiplayer System and Networking
Designed and implemented a full multiplayer lobby and matchmaking system using Photon PUN, including room creation, player slots, and ready states.
Built a synchronised spawn and team/class selection system, using Photon RPCs and custom properties to ensure every client displays consistent team composition and player data.
Networked all core gameplay systems, movement, abilities, projectiles, and animations, using PhotonView, RPC calls, buffered instantiation, and Animator parameters synchronisation.
Gameplay Mechanics and Ability Systems
Programmed three fully unique elemental classes (Fire, Water, Air), each with custom attacks, cool-down logic, class passive, and special abilities.
Developed a modular ability system using reusable C# components, enabling designers to add or modify abilities without rewriting core logic.
Implemented grenade and environmental synergy interactions such as,
Fire + Air -> Fire Tornado
Water + Air -> Ice Wall
Fire + Water -> Steam/Smoke Screen
UI and Player Experience
Created UI systems for team selection, class selection, and in-game HUD, synchronised across all clients.
Implemented custom property syncing to ensure UI reflects real-time player decisions in the multiplayer lobbies.
Technical Collaboration
Worked closely with designers to integrate animation blends, VFX triggers, and hit reaction systems into gameplay loops.
Iterated through multiple rounds of play-testing, profiling, and debugging to ensure balanced gameplay and consistent network performance.
Matchmaking and Lobby System (Photon PUN)
I implemented a custom lobby and matchmaking system using Photon PUN. Players can create both public lobbies and private lobbies with lobby codes, and all active rooms are listed in a dynamic UI.
HostLobbyManager creates rooms with configurable visibility and a 4-digit lobby code for private sessions.
Matchmaking and Lobby System (Photon PUN)
RoomList listens to Photon's rooms list updates, caches available rooms, and rebuilds the lobby UI with join buttons.
JoinLobby Manager handles joining public rooms from the list or entering private codes manually.
Maps the chosen class to the correct character prefab and spawns it with PhotonNetwork.Instantiate.
Team and Class Based Network Spawning
Once the players select their team and elemental class in the lobby, this system spawns them into the arena in a deterministic way.
Reads 'Team' and 'Class' from Photon custom properties for the local player.
Uses the players position in the sorted team list to assign consistent spawn points across all clients.
Elemental Grenade Synergy System
Each grenade has an elementTag and a trigger collider used to detect other grenades in range.
When two different elements overlap, IsSynergy checks if they form a valid combination and calculates a midpoint position.
A Photon RPC is called to spawn the correct combined VFX on all clients, ensuring synced visuals in multiplayer.
If no synergy happens before the timer ends, the grenade simply explodes with its element specific effects and sounds.