GoPong is a Pong-inspired game made in Go using the graphical library Ebitengine
GoPong was made starting from this youtube video to start practicing with game programming, design and go development. The result is a modified version of Pong featuring Solo, Computer, and Multiplayer modes, along with high scores and various customization options, that was developed over the course of one year with approximately five months of active development
There are currently three available game modes
Solo Mode
soloGameplay.mp4
In Solo Mode you play against yourself with the ball bouncing on the wall. Every 5 points, the ball increases its speed
Computer Mode
computerGameplay.mp4
In Computer Mode you can play against the computer: you can choose between easy normal and hard difficulties, or manually adjusted in settings. The computer will try to catch your ball, and then return to the center of the game area to always try to be the nearest to the next impact point. The best way to beat the computer is by making shots with great angles as it is more difficult for it to predict them
Multiplayer Mode
multiplayerGameplay.mp4
In Multiplayer mode two players can play against each other: the right player will play with the arrows and the left one with W S
GoPong features a highscores section: here it is possible to view the top 10 scores divided by Gamemode (and difficulty: in Computer highscores there are three different leaderboards for the three difficulties). You can move through the tables with Left/Right arrow and between the difficulties with Up/Down arrows (when in the Computer mode tab). Tables report data like time, player name, points and mode of the record
GoPong features many settings that can be adjusted to customize your game experience. The available settings are the following
Game Options
- Ball Speed
- Ball Size
- Paddle Height
- Paddle Width
- Paddle Distance: Distance of the paddle from the wall
- Enemy Difficulty: Difficulty of the computer in computer mode, where Easy = 0.2, Normal = 0.5, Hard = 0.8. You can customize your difficulty with every value between 0 and 1
- Reset to default: Sets all Game Options to default values
Screen Options
- Text Dimension: Dimension of Menu Text
- Screen Size: Various Screen dimensions, if not fullscreen
- Fullscreen: If set to true the game launches in fullscreen, else it launches in "Screen Size" option
- Reset to default : Sets all Screen Options to default values
| Action | Key |
|---|---|
| Paddle Up | W/Up |
| Paddle Down | S/Down |
| Fullscreen/Window Mode | ESC |
| Confirm/Select/Pause | ENTER |
Installers are available for Windows and Debian-based distributions (.deb)
Launch the installer on your Windows/Linux system to start the install process
If your platform is different from Windows or Deb, or you simply want to compile the code from source, you will need to install
Requirements:
go 1.25+Once done so, you can clone the repository with
git clone https://github.com/IncredibleLego/GoPong.gitOnce you enter the project folder, you can simply launch the game with
go run .Go will download all the needed packages using the go.mod file. Alternatively, you can compile the project with
go buildAnd obtain a goPong executable that you can launch
There are some known limitations and future plans for the game. In particular the mouse support is not very effective, it can be used in the main menus but not in the option menus. Some features that might be added in the future include
- Multiplayer online
- Change default buttons for controls
- Game Presets: ex. Fast Ball Small Paddle etc.
- Different color themes to choose from
- Inspired by Pong (Atari, 1972)
- Built with Go using Ebitengine
- Developed by Francesco Corrado/IncredibleLego
- Tested and influenced by friends and family suggestions
- Font used: Press Start 2P
- Sounds used: Free Pong Sounds
Pull requests and issue reports are appreciated to make the game better
This project is open source and distributed under the MIT License. Feel free to use it for learning, modification or personal projects. Full license text available in the LICENSE file.
© 2026 Francesco Corrado


