QuadroPong

22 Feb 2020

QuadroPong is a local 4 player game that I built with MonoGame. It has ai players, astroids, bosses, powerups, and more. I was working on implementing online multiplayer before moving to unity3d. There are many more features I would like to add, but this game is playable as it is. See the game in action…

boss

There is a lot going on in this scene. I am honestly not exactly sure how I got to this point, but I feel like it turned into a fun little couch play game. There was a variety of problems that made the development of this game challenging.

Powering Up

There are a variety of powerups in this game. To get the powerup, you had to be the last player to have hit the ball before the ball hits the powerup. Powerups included:

  • Bigger Paddle
  • Tiny Paddle
  • Tiny Ball
  • Stun Paddle (can’t move for 3 seconds)
  • Hold Paddle (hold the ball and relaunch it)
  • Fast Paddle (move the paddle much faster)
  • Fast Ball

These powerups added much more variety to the game and became something you could aim at other than the player’s goal.

Getting Physical…

The first challenge was physics. MonoGame is a framework for developing games, not an engine. All the physics had to be implemented by hand, including all the collisions. One the unique physics in pong is that the further away from the center of the paddle the ball hits, the sharper the angle the ball travels from the paddle. This is actually really easy to implement when you have only two paddles and two goals. However, this was much difficult when dealing with the square boundaries on the sides. If a ball hit the corner, it’s basically guarenteed to score even if the paddle is able to hit it.

bounce

One way to solve this is to just bounce off the wall just like a regular ball would, rather moving away from the center of the object. This however requires knowing which side of the box was hit and it ended up resulting in balls going through the wall if a frame skipped or something like that.

A longer paddle may seem like an advantage, but it also means that aiming the ball with the paddle has to be more precise the further away the ball is from the center of the paddle. This would often lead players into launching the ball into their own goal.

Queue the Battle Music

Honestly I was going to add a little spaceship that would just shoot balls, similar to the arcade game astroids, but instead I ended up with I giant moon that shoots balls at random directions and astroids all over the screen (you can turn these off). It was really fun to implement, especially the explosion effects when he dies.

Conclusion

Overall, I was really happy with this project and although I probably won’t come back to it anytime soon, I felt like I’ve learned a lot from having to implement physics, animations, collisions, etc… all by hand. Looking forward to the next adventure.

Recent Blogs