All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- New game: Realm
- New game: Alien City
- New game: Fanorona
- New game: Focus
- New game: Pulling Strings
- New game: Witch Stones
- New game: Complica
- New game: Robo Battle Pigs
- New game: Wizard's Garden
- New game: Generatorb
- New game: Mixtour
- New game: Crossway
- New game: Tintas
- New game: Streetcar Suburb
- New game: Phutball
- New game: Armadas
- New game: Flume
- New game: Boom & Zoom
- New game: Mirador
- New game: Clearcut
- New game: Agere
- New game: Bide
- New game: Dag en Nacht
- New game: Hexagonal Y
- Added
experimental
flag so games can be excluded in production, even if updated game code gets deployed to production. - Added
check
flag so the front end can signal to players when they're in a game-ending situation. - Added functionality to support multiple displays per game. Volcano and Mega-Volcano now supports a "3D" display, besides the original stack expanding one.
- Added a
notes
property to thegameinfo
schema to allow a discussion of implementation-specific details.
- Pikemen: Fixed bug where unnecessary reorientation was throwing an error instead of just being ignored.
- Volcano: Fixed bug causing Volcano
sameMove
errors in some situations. - Blam!: Changed the click handler so it autoselects your smallest piece unless you manually select from your stash.
- Fendo: Fixed a bug where an error was raised when a partial move is legal, but there are no available fence placements. We want to allow this in order to show the move so that you can get reasons for each fence placement being impossible.
- Fixed the default
sameMove
implementation. - The default
sameMove
was still not working for ambiguous ordo moves in Ordo. Implemented sortedReplacer. - Chase: Fix (and improve)
sameMove
. - Fendo: Embarrassingly, I missed an important rule. Moving is optional. I also started players with one too many pieces. Corrected.
- Homeworlds: Added
no-moves
descriptor to disable move generation on the front end. - Fix sameMove when move1 is a game ending move.
- Martian Chess: Fixed a bug that occurred when someone resigned.
- Fendo: Fixed edge case where a trapped piece couldn't build a wall.
- Fix/improve the Chase move validation and click handler.
- Cannon: Fixed bug where move list shows, correctly, that a cannon could capture the further of two adjacent pieces but the system ultimately wouldn't allow it.
- Martian Chess: allow "undo"ing captures.
- Cannon: Add a check for "checkmate" in the EOG check.
- Homeworlds: Fixed a miscommunication between the click handler and the front end that stopped some sacrifice moves from completing.
- Martian Chess: validation wasn't catching mirror moves. Nor was findPoints excluding them.
- Cannon: Some weird moves incorrectly validated. Including retreats to non-empty cells.
- Zola: Game ends when a player has no pieces left. Must pass if no available moves.
- LoA: Fixed over-validation issue that stopped games when selecting pieces with no valid moves.
- Homeworlds: Made it possible to trigger catastrophes in the middle of your turn.
- Chase: Fixed it so you can't bump pieces into the chamber.
- Alien City: Fixed bug that prevented domes from being placed on different colour tiles when legal.
- Tintas: Fixed it so the game terminates correctly when one person has "4 of 4" and the other cannot get "7 of 1" (Thank you, @dxdydz!!)
- Lines of Action: Original 8x8 back in as a variant.
- Taiji: Added sum of squares and products scoring variants.
- Homeworlds:
- No more "white screen of death" when abandoning your home system temporarily.
- Kamikaze draws are now supported.
- Catastrophes can now be more easily issued in the middle of a sacrifice chain.
- The new click handler now registers a move when you click on a friendly ship followed by any ship or star in a different system. It used to only get triggered by clicking on the background.
- Homeworlds: Sorted the move list a little more logically.
- Added piece counts to Cannon and Ordo.
- Homeworlds: Click handler adjusted to allow easier building and more intuitive use of sacrifice commands.
- Homeworlds: Renderer completely redone. New click handler deployed.
- Streetcar: Made lines just claimed dashed for easy identification.
- Streetcar: At designer's request, made the drawing of two lines mandatory if a legal second line can be drawn from the first.
- Alfred's Wyke: Added fill colour to button bar. The lighter colour is the move that will become available next turn.
Initial beta release.
- Added the game Archimedes, with move generation and AI.
- Added the game Zola, with move generation and AI.
- Added the game Monkey Queen, with move generation and AI.
- Added the game Dipole, with move generation and AI.
- Added the game Alfred's Wyke. No move generation or AI.
- Added
pie
flag to signal games where the front end should give the second player a chance to change seats after the first move.
- Added Accasta, with move generation and very slow AI (large move tree).
- Added Epaminondas, with move generation and slow AI. I also added the "stones" variant proposed by Néstor Romeral Andrés.
- Added Taiji (superior variant of Tonga), with three board sizes, three scoring options, and the "Tonga" variant that allows diagonal placement.
- Added Breakthrough, with move generation an stupid AI. Also included the "Bombardment" variant.
- Added Fabrik, including the "Arbeiter" variant. It includes move generation but no AI. The move tree is too big for too long.
- Added Manalath, including move generation but no AI.
- Added Urbino, with move generation but no AI. Includes the "Monuments" variant.
- Click handling, including extensive validation and localized error messages, has been added to all games!
- Added
renderColumn(col: number, row: number): APRenderRep
function to allstacking-expanding
games. This will return a separate JSON render for just the expanded stack. This should greatly improve performance.
- Added
flags
to thegameinfo
schema to signal to the front-end various features that may need special support. See documentation for details. - Added Abande, with move generation and AI.
- Added Attangle, with move generation and AI.
- Added Ordo, with move generation and very, very slow AI (need to optimize move generation).
- Added Cephalopod, with move generation and AI (and snubsquare board).
- Added Lines of Action. It's the 9x9 black hole variant, with an optional Scrambled Eggs initial layout. Supports move generation and stupid AI.
- Added Pikemen, with move generation and brain-dead AI.
-
Entropy game added. This includes move generation but not AI. Hopefully AI will be doable later.
This is the first simultaneous game. The engine itself does not accept partial moves. All players' moves must be submitted at the same time. This adds complexity to the API server, which must store partial moves for a time, but prevents the hidden information being stored and transmitted by the game state, which is visible to the client browser.
-
Added the modern Volcano, which differs from what was implemented on SDG (no move generation or AI).
-
Added the original Mega-Volcano (no move generation or AI).
-
Added Chase! Phew! (Includes move generation and rudimentary AI.)
- i18n is working! Error messages and game chat logs can now all be translated.
- Added a new
eject
move result to signal consequential movement (e.g., eruptions in Volcano). - Added the
showAnnotations
toggle to the playground. - Added click handler for Volcano and Mega-Volcano to the playground.
- Homeworlds now uses the expanded annotations feature of the renderer.
- There is now a move generator for Homeworlds! It's not particularly efficient, but it appears to at least function.
- A rudimentary AI has been added, but it's very uneven. The move tree for Homeworlds can balloon quickly with a lot of movement actions.
- Games now produce valid game reports.
- Homeworlds has been implemented. No move generation or AI.
- Public API tweaked a little to hide unnecessary details. The
serialize()
function will return a string that can now be handed to the constructor.
- The game "Amazons" has been implemented, including a rudimentary and very slow AI.
- The game "Blam!" has been implemented, including a rudimentary AI.
- The game "Cannon" has been implemented, including a rudimentary AI.
- The game "Martian Chess" (2-player only, including "Of Knights and Kings" variant) has been implemented, including a rudimentary AI.
- Playground added.
- Public API documented