Pong Wars
May 31, 2026 ยท View on GitHub
It's the eternal battle between day and night, good and bad. Written in JavaScript with some HTML & CSS in one index.html. Feel free to reuse the code and create your own version.
https://github.com/vnglst/pong-wars/assets/3457693/4eae12fa-bdc1-49ee-8b39-c94deb7cb2c8
Development
Run:
npx serve
Open up the link and you're ready to start.
Credits
I saw this first here, but it appears to be a much older idea. There's some more information on the history in the Hacknernews discussion.
The colors are based on the Mindful Palette by Alex Cristache.
Submitting PRs
I love getting feedback and PRs with improvements for this, but I also want to keep this simple and the code minimal. If you want to extend the game, feel free to create your own. If you found a way to improve the collision detection (or a better way to add some randomness), feel free to open a PR.
Links
- Original post on Mastodon: https://hachyderm.io/@vnglst/111828811496422610
- On Twitter: https://twitter.com/vnglst/status/1751278052154179770
Alternate version
If you've created an alternate version of Pong Wars and would like to share it, please feel free to create a pull request to add the link here.
The alternate versions are listed below in alphabetical order:
- ASCII Python
- Atari 2600
- BBC Micro Bot
- C version
- C# (Cross-platform on iOS, Android, WebAssembly, MacOS, Linux, and Windows)
- C# with DIKUArcade
- C++
- C++ with SFML
- Combat Pong
- Earlier version with padels
- Eternal Bounce Battle (GDevelop)
- Flutter
- Framework 16 LED Matrix
- Godot
- Gold Wars (This version has an end!)
- Java
- Kotlin/Wasm
- Land-Or-Water
- Pico8
- Pong-Wars Fireballs
- Pong Wars Reloaded (Multiplayer with rackets, powerups, AI)
- Processing
- Pygame version
- Python
- Rock, Paper, Scissors, Lizard & Spock
- React Native
- Rust/Wasm
- Scratch
- Seasons Pong
- SwiftUI (Native)
- Swift (SpriteKit)
- Tag-Team (Live)
- Yin-Yang Pong
- Ying Yang
- M5Stack version
- Hex version
- Bevy
- Atari ST
- Three.js
- Svelte (State is shared across all viewers)