Buff and Green is an implementation of a game also known as Checkers, Draughts, Dama, Damas, Dame. These other names besides Buff and Green are used here to refer to the game in more general scope. Like when discussing specific rule variants or if the whole family of Checkers games is meant. The family of Checkers games is played on rectangular game boards and game pieces called checkers. These are placed and moved on squares representing the game board. Checkers claims to be a successor of Alquerque.
Alquerque is a medieval Spanish board game. Both, Checkers and Alquerque, are 2-player, abstract, strategic, perfect information, traditional board games.
Objective of the game is to be the last player performing a valid move according to the rules. Meaning the player being not able to move will lose the game. This may occur when either all own checkers have been captured by the opponent or all remaining own checkers have no valid moves left.
Draw situations might occur.
The draw clock reaches a draw after 80 half-moves (or 40 full moves) without a capture and without a promotion. A half-move is called a ply, too.
This is defined by the DRAW_HALF_MOVES constant in board.js:
const DRAW_HALF_MOVES = 80;Players' turns alternate between players. The player controlling red checkers (dark checkers) moves first in Buff and Green. A player either
- must capture opponent’s pieces if possible or
- must perform a normal non-capturing move otherwise.
Passing a turn is not allowed.
A Checker's non-capturing move is performed by moving the checker in diagonally forward direction onto a free adjacent board position. A non-capturing move of a Checker is not allowed in diagonally backwards direction.
Per default Kings move by performing long jumps. A King moves in any diagonally forward and diagonally backward direction in a straight line across any amount of free board positions. A King's move ends on one of those free board positions. If the option is switched off, Kings move only to an adjacent free square in any diagonal direction.
A checker reaching the base row of the opponent on the far side of the game board is promoted to King status.
If a checker is reaching this far side of the game board by performing a capture and is still able to consecutively capture as a checker it must perform the capture without being promoted to king.
Capturing is mandatory. A checker of your color captures an opponent's game piece being adjacent to your checker by jumping directly behind it onto a free adjacent board position in straight line diagonally.
Per default, normal unpromoted Checkers may capture in any valid diagonally forward and diagonally backward direction. If the backward-capture option is switched off, normal unpromoted Checkers may capture only in diagonally forward direction.
Only a single opponent's game piece can be captured at a time. Meaning you can't jump over two or more adjacent opponent's game pieces to capture these at once.
The captured opponent's checker or king is removed immediately while the capture takes place. Thus in multi-jumps such a checker of king is not available to be jumped more than once. It's already removed.
If the capturing game piece is able to consecutively perform further capturing from it's target board position the player must continue to capture with this game piece.
Per default Kings perform long jump captures. A King may travel across empty diagonal squares until reaching the first opponent piece on that line and, if the square directly behind it is free, captures by landing on that adjacent square. If the option is switched off, Kings capture only by jumping an adjacent opponent piece to the adjacent free square behind it.
On availability of multiple consecutive capturing paths on a player's turn it is not necessary to capture on the longest capturing path. The player can freely choose among given capturing paths but still has to continue capturing until no further capture is available on a path.
Buff and Green is a Progressive Web App (PWA), which means you can install it on your device for a native app-like experience. The PWA includes offline support, allowing you to continue playing even without an internet connection.
- Installable: Install the app on your home screen or application menu
- Offline Play: Play games offline after the app is first loaded
- Fast Loading: Cached assets load quickly on repeat visits
- Native Look and Feel: Runs in standalone mode without browser UI
- Works Across Platforms: Install on desktop, tablet, or mobile devices
- Visit Play Buff and Green online
- Look for the install prompt in the address bar (if available) or click the menu icon ⋯
- Select "Install app" or "Install Buff and Green"
- Confirm the installation
- The app will appear on your desktop or in your applications menu
Alternatively, open the browser menu and navigate to Settings → Apps → Install this site as an app.
- Visit Play Buff and Green online
- Tap the browser menu (⋯ or ⋮)
- Select "Install app" or "Add to Home Screen"
- Confirm by tapping "Install" or "Add"
- The app icon will appear on your home screen
- Visit Play Buff and Green online in Safari
- Tap the Share button (box with arrow ⬆)
- Scroll down and select "Add to Home Screen"
- Enter a name for the app (or use the default "Buff and Green")
- Tap "Add" in the top-right corner
- The app icon will appear on your home screen
Once installed and loaded at least once, Buff and Green works offline:
- All game assets (board, pieces, UI) are cached
- You can start new games without an internet connection
- Your game progress is preserved locally
- The app will sync any changes when you reconnect
The PWA is built with:
- Service Worker (
sw.js): Handles offline caching and network requests - Web App Manifest (
manifest.json): Defines app metadata, icons, and display settings - PWA Meta Tags: Ensures cross-platform compatibility and proper app installation
The automated tests live in the HTML5 project under javascript/html5/src.
Quick path: install dependencies, run unit tests, then run E2E tests.
From the repository root, run tests using npm's --prefix option:
npm --prefix javascript/html5/src testRun Vitest in watch mode during development:
npm --prefix javascript/html5/src run test:watchGenerate unit-test coverage output:
npm --prefix javascript/html5/src run test:coverageRun the end-to-end browser tests with Playwright:
npm --prefix javascript/html5/src run test:e2eRun the full test suite in one command:
npm --prefix javascript/html5/src run test:allPlaywright starts the local test server automatically on http://localhost:4173.
Unit tests are located in tests/unit/*.test.js and end-to-end tests are
located in tests/e2e/*.spec.js.
- Association for the Advancement of Artificial Intelligence
- HTML Living Standard, Web Workers
- Portable Draughts Notation (PDN) 3.0 standard 1.0 documentation
Mind that official tournament rules of the listed organizations differ from each other. Buff and Green is independent development from any work of these organizations.
- Official FMJD tournament rules of International Draughts
- Official FMJD Section 64 IDF tournament rules of Draughts-64
- Official Confederação Brasileira de Jogo de Damas tournament rules of Brazilian Draughts
- FMJD published rules of Turkish Dama
- Official WCDF tournament rules of Draughts-64
- Official APCA tournament rules of American Pool
Mind that official tournament rules of the listed organizations differ from each other. Buff and Green is independent development from any work of these organizations.
- Fédération Mondiale du Jeu de Dames (FMJD), founded in 1947
- Variants listed at FMJD: 100 International, 64 Brazilian, 64 Checkers, 64 Czech, 64 Italian, 64 Pool, 64 Russian, 64 Spanish, 144 squares, Turkish Dama
- World Draughts Federation (Federation Mondiale Du Jeu De Dames) FMJD Section 64, accepted section in FMJD since 1984
- The International Draughts Federation (IDF), founded in 2012 / 2013
- Confederação Brasileira de Jogo de Damas (CBD)
- World Checkers Draughts Federation (WCDF)
- American Pool Checkers Association (APCA)
- Oliver Merkel
All logos, brands and trademarks mentioned belong to their respective owners.