DeadMagic Details

Project information

DeadMagic is a topdown 3d multiplayer shooter

This project was made with other students at Grafisch Lyceum Utrecht. This was a fun project to work on as i mainly worked on the multiplayer aspect of the game. The overall game turned out great and we had a lot of fun. For more information check the project page.

Key Features

  • 4-Player online-multiplayer utilising Unity Netcode
  • Magic based combat with multiple spell types
  • Multiple enemy types
  • Endless wave-based gameplay with different difficulty levels

Technical Highlights

  • Build with Unity 6.0 + C#
  • Utilizes Unity Netcode for GameObjects for multiplayer functionality
  • Utilizes Unity Relay and Unity Lobby Services for networking and quick matchmaking

My Role

As a key member of the development team, I focused on implementing the multiplayer aspects of the game.

  • Implemented multiplayer functionality using Unity Netcode for GameObjects
  • Developed core gameplay mechanics including spell casting and enemy AI
  • Collaborated on level design and overall game balancing

Insights

Working on DeadMagic provided valuable insights into multiplayer game development, particularly in the areas of networking and gameplay synchronization. Key takeaways include:

  • Effective use of Unity's Netcode for handling multiplayer interactions
  • Collaboration and communication are crucial in a team setting

// Example: Multiplayer spell casting
[ServerRpc]
public void CastSpellServerRpc(Vector3 target)
{
    var spell = Instantiate(spellPrefab, transform.position, Quaternion.identity);
    spell.GetComponent().velocity = (target - transform.position).normalized * spellSpeed;
    NetworkObject networkObject = spell.GetComponent();
    networkObject.Spawn();
}
                

Multiplayer Lobby Handling

This code snippet handles networked lobby management using Unity's Netcode for GameObjects. When a player joins the lobby, the server:

  • Creates a new lobby instance
  • Initializes player slots and settings
  • Synchronizes it across all clients
View full script on GitHub View full project on GitHub