DeadMagic Details
Project information
- Category: Group Game Project
- Project date: 1 May 2025 / July 1, 2025
- Project URL: Rgbcat.itch.io/deadmagic
- Project Github: DeadMagic Github
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