Ah, Pong. One of the earliest and perhaps simplest video games out there. Just slap on a few sticks, throw a ball in the middle of the screen, and you’ve got yourself a video game. I mean, that is all there is to it, right?

Wrong!

Many beginning game makers seem to think that they’ve reinvented a classic by, in the course of about half an hour, slapping together some paddles, bouncing ball objects, collision events, and “updated” graphics.

The truth is, there’s a lot more to this deceptively simple game than meets the eye. How fast should the ball travel? How quickly should the paddles move? How should the ball bounce off the walls and paddles? And, most importantly, how can a paddle ball game actually be enjoyable in the era of the Xbox?

To this day, Pong has maintained its position as a classic in video game history. It is still as challenging and addictive as it ever was, despite being made using very primitive ‘70’s computer technology. This is entirely due to its simplistic yet challenging gameplay. It is one of those games that takes a minute to learn, but a long time to master.

Similarly, though you could whip up a Pong-like game in a few minutes, it'll take some time to make one that's worth playing.

So if you want to rip the intestines from this beast and make a hat out of them, here are a few suggestions:


1) Don’t use default movement on the paddles.

What’s the point? They only move in two directions, right? Instead, use the following events:

For moving up:

Y pos of (Paddle) is greater than (# top stopping point)
+ Repeat as (“up arrow”) is pressed
--set (Paddle) to Y pos of (Paddle) – 8
(last # determines how fast the paddle will move)

For moving down:

Y Pos of (Paddle) is less than (# bottom stopping point)
+ Repeat as (“down arrow”) is pressed
--set (Paddle) to Y pos of (Paddle) + 8

Do likewise with events for the other paddle, changing the keys involved.

That’ll give you much better control over how the paddles move, and how far up or down the screen they can go.

Similar events can be used to create a one-player version of the game. Here’s a simple example of how to have the computer control a paddle:

Y Pos of (Ball) is greater than Y Pos of (Paddle)
--set (Paddle) to Y pos of (Paddle) + 8

Y Pos of (Ball) is less than Y Pos of (Paddle)
--set (Paddle) to Y pos of (Paddle) - 8

You may want to use a “compare to # of objects in a zone” event, so that the paddle is not still moving when the ball is on the other side of the screen.

So that basically takes care of the paddles, but what about the ball? Well, it can be moved without using “bouncing ball” movement, but I use it anyway.

That brings me to my next point.


2) Don’t use “bounce.”

Although it seems like the easiest way to go, the “bounce” event is actually more trouble than its worth. You will often have instances where the ball will bounce aimlessly from wall to wall, or, worst of all, bounce straight up and down.

You want to have control over how the ball bounces at all times. Here’s how to do it:

Create a global value that represents which player’s turn it currently is (we’ll call it GV1). We’ll have the value “0” represent player 1, and “1” represent player 2. Now set the following event:

When (ball) collides with (Paddle 1)
--change (GV1) to “1”
--change (ball) direction to (right), (upper right), or (lower right)

When (ball) collides with (Paddle 2)
--change (GV1) to “0”
--change (ball) direction to (left), (upper left), or (lower left)

That takes care of the movement of the ball hitting the paddle. Now, create a new active object (a wall) at the top of the screen, and call it “top”. Do the same for the bottom, and enter these events:

GV1=0
+ When (ball) collides with (top)

--change (ball) direction to (lower left)

GV1=1
+ When (ball) collides with (top)
--change (ball) direction to (lower right)

GV1=0
+ When (ball) collides with (bottom)
--change (ball) direction to (upper left)

GV1=1
+ When (ball) collides with (bottom)
--change (ball) direction to (lower right)

This way, the ball will only move in 45 degree directions, to minimize the number of times the ball hits the wall, and keep your players busy.

Also, at the beginning of each round of Pong, the ball would start in the direction of the last player who was scored against. To do that:

GV1=0
+Start of level
-- change (ball) direction to (right), (upper right), or (lower right)

GV1=1
+Start of level
--change (ball) direction to (left), (upper left), or (lower left)

That should take care of the basic movement of the ball. Note that at no time are “up” or “down” moves involved. The ball should never bounce straight up or down.


3) Make it customizable.

Remember, this is the most primitive kind of video game there is. If you’re going to keep players coming back for more, it helps to give them options that change how the game plays. This could be the ability to change the number of players, paddle size, ball speed, number of balls in play, etc. All of these can be done using global values.


4) Make it special.

Add something to the game that sets it apart from the myriad of other pong clones. This may be adding weapons (lasers, missiles, etc.), power ups, obstacles, space ships, ninjas, chickens, ketchup... let your imagination run wild.

For example, I am currently working on two paddle ball games, a serious one and a silly one. The serious one, “Paddle Pixel”, was made to graphically resemble the original Pong. However, when the ball hits the paddle, a section of the paddle disappears. Thus, as each round progresses, it gets harder to hit the ball. The silly one is called “Pig Pong”, and it will take place in the mouth of a pig, with the pig’s tooth and uvula as the paddles, and an apple as the ball. It will also feature cartoon graphics and a theme song.

My last suggestion is perhaps the most important:


5) Play Pong!

You may think you know the basic concept, but to really get the feel for how Pong actually played, you gotta play it! It wasn’t just a dot bouncing randomly around the screen with a few sticks creeping up and down the sides. It was well-controlled, quickly-paced, and challenging even for experienced players.


And there you have it! Not as simple as you thought, now is it?* Either you get it and are on your way to making a decent paddle ball game, or you’re completely confused and frustrated and ready to give up on this ball of wax altogether. Either way, it’ll be one less poorly executed game to come into our graces. Thank you very much for reading and good luck!


*Actually, it really is pretty simple, but like anything else, it takes knowledge, experience and practice.