Invasion At Dawn
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:
- Setting up the multiplayer architecture using the Riptide networking framework, which provided a stable basis for client/server authoritative control.
- Ensuring reliable player interaction, game state synchronization, and data transfer between clients and the server for a smooth co-op experience.
- Designing configurable elements for gameplay, including weapon pricing, wave settings, and other customizable game mechanics, allowing easy tuning for balanced gameplay.
Team Contributions
Our team consisted of four members, each with specific roles:
- Elias: As the gameplay programmer, Elias focused on implementing core gameplay mechanics, such as player movement, weapon handling, and combat interactions. He designed and coded the combat system, ensuring smooth and responsive controls, and collaborated with me to integrate networking with these gameplay elements.
- Felix: Felix was responsible for game audio and UI implementation, using Wwise for dynamic soundscapes that enhanced the horror atmosphere. He set up audio cues for zombies and weapon feedback, integrated UI elements like health bars, ammo indicators, and other HUD components, creating an immersive player interface.
- Zey: Zey was in charge of 3D modeling, bringing the world of Invasion At Dawn to life with detailed environment assets and realistic zombie models. She designed models that fit the dark and suspenseful theme, created various zombie types, and ensured all assets were optimized for performance and visual appeal within Unity.
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
- Co-op Multiplayer: Team up with friends to defend against relentless zombie waves in a cooperative survival mode.
- Zombie Waves: Each wave introduces more challenging zombies, with advanced pathfinding using Unity’s NavMesh agents.
- Weapon Configurations: Customize weapons with different stats and costs, balancing power with available resources for strategic planning.
- Client/Server Authoritative Control: Ensures a consistent multiplayer experience with secure, server-managed game states.
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.
Gallery
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
- Unity: Primary game engine used for all aspects of gameplay, network integration, and design.
- Jetbrains Rider: C# IDE.
- Riptide Networking: Framework used for client/server multiplayer, handling network communication and game synchronization.
- Wwise: Audio middleware for immersive sound design and integration within Unity, enhancing the horror experience.
- NavMesh Agents: Utilized for AI-driven pathfinding, allowing zombies to approach players through complex paths.