Skip to content
KingAlexGilbertPublic

About

Retro Pong-inspired arcade campaign game for browsers, Android, Linux, and Windows, with online multiplayer, progressive paddle shapes, and a secret ending.

Topics

Resources

Contributing

Security policy

Stars

6 stars

Watchers

2 watching

Forks

Repository files navigation

King Pong app icon

King Pong

King Pong is a retro arcade Pong game featuring an 18-level campaign, custom power-ups, local, LAN, and cross-platform online multiplayer, progressive paddle shapes, save slots, multiple languages, and a secret ending.

Play directly in your browser or download King Pong for Windows, Linux, and Android.

The project was developed with AI-assisted coding and packaging help, then manually tested, debugged, and polished to give it that human touch.

Feel free to test it out, play around with it, and modify it. Hope you enjoy it!

Made by: King Alex Gilbert

Play King Pong

King Pong can now be played directly in your web browser with no installation required!

Choose Play Online to find another player automatically, or create/join a private room with a room code. Browser, Android, Windows, and Linux players use the same queue. Choose Campaign for single-player games against the computer.

Browser Version

Play King Pong on GitHub Pages

The browser version supports keyboard, controller, and touch controls. For the best mobile experience, use landscape mode.

Browser save data is stored locally and is separate from the Android, Windows, and Linux versions.

Gameplay Demo

King Pong Gameplay Demo

Watch the official King Pong gameplay demo:

King Pong - Android and Windows Gameplay Demo

Screenshots

Redesigned Main Menu

King Pong v2.0.0 redesigned main menu with Play Online and Campaign

Online Multiplayer

King Pong online matchmaking, private rooms, paddle and arena selection

Royal Powerups in Gameplay

King Pong gameplay featuring the Royal Split powerup

Advanced Campaign Gameplay

King Pong advanced campaign arena with obstacles, multiple balls, and a Royal Powerup

Downloads

Android

F-Droid — Recommended

Get it on F-Droid

Install King Pong from the official F-Droid repository. Installing through the F-Droid app provides update notifications when new versions become available.

Direct APK

Download the developer-signed Android APK from the latest GitHub release and install it on your Android device.

You may need to allow installation from unknown sources depending on your device settings.

Save data note: To preserve your save data, install updates over the existing app from the same source. Do not uninstall first, because uninstalling may remove local save data.

Important: The F-Droid edition and the GitHub/itch.io APK are signed with different keys. Android cannot update one edition over the other. Switching editions requires uninstalling the currently installed version first, which may erase local save data.

Windows

Download one of the Windows versions from the latest GitHub release.

  • KingPongSetup.exe - recommended Windows installer
  • KingPong-WebView2-Portable.zip - portable Windows version

For the portable version, extract the ZIP folder first, then run the King Pong EXE inside it.

Windows Note

The Windows installer is currently unsigned, so Windows may show an unknown publisher or SmartScreen warning. This is normal for unsigned indie releases.

If you trust this official GitHub release, choose More info → Run anyway if SmartScreen appears.

Linux

Download one of the Linux versions from the latest GitHub release. The exact version number in the filename depends on the release.

  • King-Pong-Linux-v2.0.0-all.deb — for Linux Mint, Ubuntu, Debian, and other Debian-based distributions
  • King-Pong-Linux-v2.0.0-thin-x86_64.AppImage — thin x86-64 version that uses the system WebKitGTK runtime

Install the Debian Package

Download the .deb file, open it with your distribution's software installer, or install it from a terminal:

sudo apt install ./King-Pong-Linux-*.deb

The package manager will automatically install the required GTK and WebKitGTK dependencies.

Run the Thin AppImage

The thin AppImage does not bundle an entire browser engine. The system must already have Python GObject, GTK 3, upower, and WebKitGTK installed.

On Linux Mint 22 or Ubuntu 24.04:

sudo apt install python3 python3-gi gir1.2-gtk-3.0 gir1.2-webkit2-4.1 upower

On an older Debian-based distribution that does not provide WebKitGTK 4.1, install gir1.2-webkit2-4.0 instead.

Make the AppImage executable and run it:

chmod +x King-Pong-Linux-*.AppImage
./King-Pong-Linux-*.AppImage

The thin AppImage is much smaller than a fully self-contained AppImage because it uses the WebKitGTK libraries already installed on the computer.

Itch.io

You can also play King Pong in your browser or download the desktop and Android versions from itch.io:

Play or download King Pong on itch.io

Build From Source

Android

If you want to build King Pong yourself:

  1. Download or clone this repository.
  2. Open the android folder in Android Studio.
  3. Let Android Studio sync the Gradle project.
  4. Build the APK using: Build → Generate App Bundles or APKs → Build APK(s)
  5. The generated APK should appear in: android/app/build/outputs/apk/debug/

Windows

If you want to build the Windows version yourself:

  1. Download or clone this repository.
  2. Go to the windows/webview-2 folder.
  3. Run build-windows.bat.
  4. The portable Windows build should be generated in the dist folder.

To build the Windows installer:

  1. Install Inno Setup 6.
  2. Go to the windows/installer exe folder.
  3. Run build-installer.bat.
  4. The installer should appear in the Output folder.

Linux

Important Linux Build Notes

Build King Pong from a native Linux filesystem, preferably somewhere inside your home folder, such as:

~/Projects/king-pong

Building directly from an NTFS, exFAT, or other Windows-mounted drive may fail. These filesystems may not preserve Linux executable permissions correctly and may be mounted with restrictions that prevent build tools or AppImages from running.

If the repository is stored on a Windows drive, copy the entire repository to your Linux home folder before running the build scripts.

Fully extract the repository before building. Do not run the scripts from inside a ZIP archive.

Run the following commands from the Linux directory. The scripts use relative paths and may report “No such file or directory” if run from a different folder.

Linux paths are case-sensitive, so use the exact capitalization shown in the instructions.

Build the Debian Package

  1. Download or clone this repository.
  2. Go to the Linux folder.
  3. Install the Debian package build tools using: sudo apt install dpkg-dev
  4. Run ./build-deb.sh.
  5. The generated .deb package should appear in the dist folder.

Build the Thin Linux AppImage

  1. Download the x86-64 version of appimagetool.
  2. Make it executable using: chmod +x appimagetool-x86_64.AppImage
  3. Go to the Linux folder.
  4. Run: APPIMAGETOOL="/path/to/appimagetool-x86_64.AppImage" ./build-appimage.sh
  5. The generated AppImage should appear in the dist folder.

Source Code

The primary shared game source is in game/.

Make shared gameplay, rendering, audio, and UI changes here. Run node tools/sync-gameplay.mjs from the repository root to copy them into the Android, Windows, Linux, and browser HTML files. Do not edit the embedded shared blocks directly; synchronization replaces them.

The platform HTML files still contain the legacy engine and platform-specific code outside those shared blocks. game/serve-integration.mjs owns the regular serve acceleration. game/polish-integration.mjs owns their shared polish hooks and the synchronized simulateHazardStep and drawBackground functions. Other changes there must be applied to each affected platform. Keep windows/webview-2/index.html and Linux/assets/index.html byte-identical.

The Android application and packaging files are in android/. Its game HTML is located at:

android/app/src/main/assets/index.html

The Android WebView wrapper is located at:

android/app/src/main/java/com/kingalex/kingpong/MainActivity.java

Windows application and installer files are in windows/. The WebView2 version is located at:

windows/webview-2/

The Windows installer project is located at:

windows/installer exe/

The Linux WebKitGTK launcher and packaging files are located in:

Linux/

The Linux launcher is located at:

Linux/src/king-pong.py

The Linux .deb and thin AppImage build scripts are located at:

Linux/build-deb.sh

Linux/build-appimage.sh

Browser and GitHub Pages deployment files are in docs/. The website is located at:

docs/index.html

The browser demo is located at:

docs/demo/index.html

Online multiplayer signaling is in signaling/. Its test/ folder covers signaling and browser integration. Other tests are explained in tests/README.md.

Source synchronization tools are explained in tools/README.md. Platform notes are in android/, windows/, Linux/, and docs/. After editing the game, check the generated copies and run the tests:

node tools/sync-gameplay.mjs --check
node --test tests/*.mjs

Third-Party Libraries

King Pong uses two open-source libraries for QR code pairing:

  • jsQR — Apache License 2.0
  • QR Creator — MIT License

Both libraries and their license information are included in game/vendor/.

Documentation & History

This repository includes additional documentation for people who want to explore how King Pong was built and how the project evolved.

  • development-history/ — prompt-history documents and reconstructed making-of notes covering the creation of King Pong, the HTML game development process, and the Android/Windows conversion work.
  • archive/early-builds/ — early HTML prototypes that helped inspire King Pong, including the original Pong-style base and the first expanded difficulty version.

These files are not required to play or build the current version of King Pong. They are included for transparency, project history, and documentation.

Credits

Special thanks to Madelee for their work on the secret ending soundtrack, King Pong's first non-procedurally generated music track!

License

King Pong is released under the GNU Affero General Public License v3.0 (AGPL-3.0-only).

See LICENSE for the full terms or read the official online license. Modified versions used over a network must also follow the AGPLv3 source-sharing requirements.

Copyright (C) 2026 King Alex Gilbert

About

Retro Pong-inspired arcade campaign game for browsers, Android, Linux, and Windows, with online multiplayer, progressive paddle shapes, and a secret ending.

Topics

Resources

Contributing

Security policy

Stars

6 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages