jgbrwn/cannonsmash-web — explained in plain English
Analysis updated 2026-05-18
Play a full 3D table tennis match on a phone or tablet using touch gestures.
Study the project as an example of adapting an old open source game's physics to touch controls.
Deploy the static build behind nginx to self-host the game.
| jgbrwn/cannonsmash-web | 4ssh1/mine-sweeper | achawla19/intuitcode-extension | |
|---|---|---|---|
| Stars | 2 | 2 | 2 |
| Language | TypeScript | TypeScript | TypeScript |
| Last pushed | — | 2026-01-31 | — |
| Maintenance | — | Maintained | — |
| Setup difficulty | easy | moderate | moderate |
| Complexity | 2/5 | 2/5 | 4/5 |
| Audience | general | vibe coder | developer |
Figures from each repo's GitHub metadata at analysis time.
Playable instantly online, local development just needs npm install.
CannonSmash Web is a browser based remake of Cannon Smash, an older open source 3D table tennis game, rebuilt for touch screens and mobile phones. The goal is to keep the original's physics and its assisted control feel while making it playable with a finger instead of a keyboard and mouse. You can try it directly at the project's live link without installing anything. The controls are all gesture based. Dragging left or right moves your paddle sideways. A flick upward swings and hits the ball, where the angle of the flick aims the shot, the speed and length of the flick set the power, and an upward flick adds topspin. A flick downward gives a backspin push. On your own serve, a flick tosses the ball and serves it. There is an X button at the top to quit a match and a simple tap to return to the menu afterward. The game is faithful to the original in one important way: the ball must actually be within reach of your paddle when it arrives, so being out of position means you will whiff the shot. When you are not actively dragging, the game gently nudges your position toward where the ball is predicted to land, similar to how the original game auto positioned players during the backswing. This assist becomes weaker at higher difficulty settings, so manual positioning matters more as you improve. Matches follow standard table tennis style rules: games to eleven points, win by two, serve rotating every two points except at deuce, and a match is best of three games. The project is written in TypeScript and uses Vite for development and building, with a simple typecheck command and two headless simulation scripts for automated testing. In production it is served as a static build through nginx with caching rules for fast repeat loads. It is licensed under the GNU General Public License version 2, with credit given to the original Cannon Smash game and to the three.js library it depends on for its 3D rendering.
A touch-friendly browser remake of the classic 3D table tennis game Cannon Smash, playable instantly at a live link.
Mainly TypeScript. The stack also includes TypeScript, three.js, Vite.
You can use and modify this freely, but any modified version you distribute must also be open source under the same license.
Setup difficulty is rated easy, with roughly 5min to a first successful run.
Mainly general.
This repo across BitVibe Labs
double-check against the repo, no cap.