Pigeon Protocol

Play with up to 30 of your friends in this frantic bird based online coop game. Customize your pigeon, Compete to build nests, own territory and to keep hold of shiney things. But watch out, its a bird eat bird world out there!

GitHub – https://github.com/JohnDoubleUB/MultiplayerBirdGame , Steam – https://store.steampowered.com/app/2327660/Pigeon_Protocol/

Responsibilities

  • Technical Responsibilities
  • C# Script Creation
  • Gameplay Implementation and Multiplayer networking
  • 3D modelling (Pigeon and City level assets)
  • Animation and Rigging (Pigeon)
  • Particle effects
  • Implementation of 3rd party audio integration Wwise (as well as some technical work in Wwise)
  • Custom Shaders (using Shader Graph)
  • Map Creation (Lobby City)

Technology used

  • Game engine – Unity
  • Audio solution – Wwise
  • 3D Modelling, rigging, animation – Blender
  • Textureing and Sprites – Substance Painter, Adobe Illustrator, Photoshop
  • Steam integration – Steamworks.NET
  • Networking solution – Mirror + FizzySteamworks
  • Input System – Unity’s Input System Packaget (To allow better input support for devices such as controller)

Links

GitHub – https://github.com/JohnDoubleUB/MultiplayerBirdGame

Steam – https://store.steampowered.com/app/2327660/Pigeon_Protocol/

Process

The goal for this project was to create a multiplayer experience inspired by casual and coach coop games (such as Gang Beasts, Human Fall Flat, Pumel Party) where you can play various party type gamemodes with your friends but with a twist, you all play as pigeons able to fly around, peck, claw and build nests. On release the game will have 3 gamemodes with the plan to add more as well as new maps.

As this was my first experiment with multiplayer gameplay, originally a prototype was created then once I had a good understanding of the way that systems would work much of the original implementation was scrapped in order to better optimize and organize the systems the game would be based around.

Architecture

Following research into types of multiplayer, I decided it was best to implement the use of P2P, this was for several reasons;

  1. No need to setup servers to facilitate multiplayer
  2. Easier to Implement
  3. Lower cost – because servers don’t have to be maintained the hosting of the game is completely free
  4. Client hosting – P2P means that anyone can host the game making it far more accessible and again without relying on paid servers

However this comes with some disadvantages:

  1. Limited scalablity – Many clients can host many games but the amount of players able to be hosted per game is limited by the host
  2. More susceptible to cheating – As clients can also be hosting the source of truth could be modified and clients wouldn’t be able to prevent this
  3. Latency – Based on a given client hosted servers’ internet connection upload and download speed
  4. NAT and port-forwarding because a server is not being used as a middleground for all clients this makes communication back and forth over UDP difficult.

These issues are also issues encountered by other P2P games, however to address these, scalablity isn’t an issue as this isn’t intended to be a large multiplayer game and rather a mess around game with a group of friends, because of this games will for the most part be played in good faith and not in a seriously competitive way meaning that cheating isn’t a large concern. For the most part Latency won’t be a huge issue however over long distances unfortunately some latency is to be expected and as for port-forwarding, this game will be making use of Steam’s websockets in order to act as a bypass for this issue (also known as NAT Punching or UDP Punching)

In terms of multiplayer specific architecture for systems, I did create some diagrams to help plan out how the multiplayer might function in terms of how certain systems would work:

Get in touch

You can see my work and or contact me via the following!

Design a site like this with WordPress.com
Get started