[Launched] Birdtown: real-time online multiplayer game

Hi everyone!

I’m excited to share Birdtown, an online multiplayer game I built using Babylon.js. It’s a physics-based, platform shooter with procedurally generated levels and a decent amount of customization (6 game modes, 15 weapon loadouts, 5 playable birds). Since it’s built to run in a web browser, starting a game takes seconds and you can have your friends join just by sending them a link.

Play now at either link:

Note: you can play the game solo, but you’ll need at least 2 players to experience most of the content.

Screenshots


Tech Details
I initially intended this to be a much smaller project, but I ended up really enjoying working with Babylon.js :grinning_face_with_smiling_eyes:.

Most of the code is written in Typescript, and the core libraries include Babylon.js, Peer.js (for establishing P2P connections), Matter.js (for lightweight 2D physics), MessagePack (for compressing data over the network), and Webpack (for compiling code). I wrote a lot of custom code for the networking, which at a high level uses a client-server architecture where one player doubles as the authoritative host. Each client establishes two WebRTC data connections to the host, which essentially act as a “TCP” and “UDP” channel. Game state diffs are broadcasted over “UDP” at ~60Hz with the “TCP” channel being reserved for less frequent, but critical updates. Clients are responsible for sending their inputs to the host and performing client-side prediction & reconciliation.

Anyway, thanks for reading & hope you enjoy!

10 Likes

Hello @bchoi12 and congrats for the release !

The story of most of my projects using BJS :joy:


The design looks cool !
I tried to connect but I see that I can either :

  • Join a room (but I have no id/password)
  • Host a room (and I’ll be alone)

What about you host a room for BJS forum and share the IDs here ? :slight_smile:

1 Like

Looks awesome :star_struck:

I played around in the singleplayer mode and the controls are very smooth and I like the gameplay mechanics. Nice job! :smiling_face_with_sunglasses:

1 Like

Thank you for checking it out and the feedback! :smiley:

What about you host a room for BJS forum and share the IDs here ? :slight_smile:

Good question! With the current setup it’s a bit hard since (1) the host has to be an active player and (2) depending on the host’s location, connection quality could be really poor. However, it sounds like the ability to create & join public games could be helpful here. I agree it would be nice if there was an easier way to just play the game.

Thanks! I spent a lot of time polishing the movement so I’m glad you liked it :smiley: