Dejan Zeljko

About Me Login

Invasion At Dawn

Invasion At Dawn Banner

Game Overview

Invasion At Dawn is a co-op survival FPS developed in Unity, where players must defend a central point against waves of zombies. The multiplayer system is based on client/server authoritative control, which ensures a stable and fair gameplay experience. We used the Riptide networking framework to create a seamless online environment, with configurations for weapons, wave difficulty, and upgrades. The zombies' movement and attack patterns evolve with each wave, increasing in complexity and requiring strategic teamwork.

Contribution

My Role

As the network programmer, I handled all aspects of multiplayer networking. My responsibilities included:



Team Contributions

Our team consisted of four members, each with specific roles:



Note: During most of the project time, Elias and me worked together on both, networking and gameplay programming

Skills Demonstrated

Skill Description
Networking with Riptide Implemented multiplayer capabilities, setting up a reliable client/server authoritative structure to synchronize player actions and game events.
Unity NavMesh Utilized Unity’s NavMesh agents to handle zombie pathfinding, allowing them to navigate through complex terrain toward player positions.
Raycasting Designed accurate ray-based bullet paths for hit detection, ensuring precise combat interactions between players and zombies.
Config Management Developed custom configurations for weapon prices, zombie wave difficulties, and game settings, facilitating easy adjustments and balanced gameplay.
Wwise Integration Integrated Wwise for dynamic sound management, including spatial audio for zombie sounds and weapon effects, adding to the immersive experience.

Game Features

Unity and Networking Concepts

Networking with Riptide

Built the multiplayer system with Riptide, establishing client/server authoritative control, synchronizing game state, and ensuring smooth, fair gameplay for all connected players.

NavMesh and Pathfinding

Used Unity’s NavMesh agents for zombie movement, allowing them to dynamically navigate the environment and strategically approach players.

Raycasting

Designed raycasting systems to ensure accurate bullet path tracking, improving the reliability of hit detection and shooting mechanics.

Config Management

Created flexible configurations for weapons, waves, and gameplay settings, providing easy adjustability for fine-tuning game balance and progression.

Learning Takeaways

This project significantly strengthened my skills in network programming within Unity, where I learned the nuances of client/server authoritative systems and how to manage real-time data transfer reliably. Working as part of a team, I also gained experience in collaborative game development, where each member’s contribution was essential in creating a cohesive, engaging game.

Tools Used