thumb|300px|right|Arcade Pong An analysis of Pong as a general game, in all it's various versions. This was originally written as notes for how it should be designed for beginning designers as practice. Pong is an extremely simple video game. This does not mean that it is easy to implement correctly. Getting the basics right is always the most important part of a good game.
There are exactly three moving parts in this design: Two paddles and a ball. In the original, both paddles were controlled by humans, and in it's usual (modern) implementation, one paddle can be controlled by the AI and the other by the player. The paddles occupy space on the right and left hand side of the screen, and the ball is placed at the center. The ball will (sometimes randomly) be served towards one player or the other, and it is the player's objective to block the ball from passing his paddle, sending it back towards the other side of the screen. If the ball is not blocked and it passes the edge of the screen, a point is scored for the opposing player.
Typically the player will control his paddle using either a rotating knob controller, like it was on the atari or in arcades, or in modern PC versions, using a mouse. This means that the player can move his paddle very swiftly across the screen, giving an advantage over the AI, who is typically limited to a maximum velocity. The AI's precision in following the ball can make up for this.
The ball typically moves at a given velocity along the x axis, and can have "english", or more y-velocity applied depending on what part of a paddle the ball strikes, or in other versions, how much y velocity the paddle currently has.
This leads to the core mechanic of the game, whereby an astute player will apply a strong english to the ball, sending it winging at a fast velocity between the top and bottom of the screen, outpacing the AI's ability to keep up. This is the most surefire way to beat most AI. Of course, this can also backfire because the faster overall velocity of the ball can make it hard for the human player to keep up with the bounces if it comes back. This can be self-balancing difficulty, because players of moderate skill level will learn to apply a moderate amount of english, maintaining control, while also beating the AI.
Difficulty can be ramped up by directly increasing the AI paddle's speed. Lower difficulty means lower speed. As a game progresses (the player scores more points), perhaps the AI's speed cap should also increase, making it harder to score. The ball's x-velocity could also increase in speed, requiring faster reaction time.
The design, in it's simplicity, can be sort of brilliant. There are several details to watch for. Velocity as I've just said is paramount in this game. Be careful in your implementation of the input, as the first thing a player will notice is how responsive the controls are. If you opt for mouse control, be careful of things like the operating system's mouse sensitivity, as it may interfere depending on your platform.
The input/output system you are creating is not just in code, it also resides between the keyboard and the chair. The main loop you are creating is always about balancing for the average reaction time and skill of the player. In Pong, this will mean balancing the speed of the game at the early stages for the slowest, least experienced reaction times, and adjusting for experienced players so they do not become bored. This is a difficult balance. I will reiterate: pay attention to how the input feels. There is only one control, and only one thing you spend time doing in this game, and that is moving a paddle up and down. It is a one dimensional control. Take the time to get it right.
All multiplayer games typically come down to a portion of the game that is higher level than the mechanics themselves, called yomi. The mechanics should always be designed with this in mind.
There isn't much you can do with a game like Pong to assist this, other than making reading the game state on the screen easier, which will assist the gameplay anyway.