Archipelago icon indicating copy to clipboard operation
Archipelago copied to clipboard

ChecksMate: implement new game

Open chesslogic opened this issue 2 years ago • 3 comments

What is this fixing or adding?

ChecksMate is a client for Chess played against a computer-controlled engine. Unique features include pocket pieces, fairy pieces, and random starting positions.

The client is available here: https://github.com/chesslogic/chessv

How was this tested?

The Archipelago community has never played this in any Unsupported multiworld hosted on the Discord server.

Some automated tests are available in the repository regarding some specific settings.

The author has played ChecksMate in 2 "mid-sized" multiworlds (6-15 games), 1 "large-ish" multiworld (30-40 games), and one or two dozen XS multiworlds (2-5 games). The non-XS multiworlds were async, and the XS multiworlds were sync.

Many of these multiworlds involved multiple copies of ChecksMate. ChecksFinder was common to many XS multiworlds.

If this makes graphical changes, please attach screenshots.

The following images have descriptive alt text.

A Windows Forms client for Archipelago showing a successful connection and adding the DeathLink tag The home screen of the ChessV client with a Connect to AP button added to the bottom left corner A list of games in the ChessV index where Archipelago Multiworld is highlighted An opening knight move by a White player facing several unusual chess pieces of a Black player who has more pieces set aside A victory screen involving a Queen and a fairy chess piece which appears to be capable of moving like a knight A cursor holding a ball-shaped piece while a diagonal move option is highlighted A description of a Berolina Pawn, which can move two spaces diagonally or capture forward A player with two kings and many Black fairy chess pieces against a standard army A player with no obvious king and only two pieces and two pawns against a White player making an initial pawn move

chesslogic avatar Nov 25 '23 18:11 chesslogic

Thanks for the review. The comments helped me a lot with style and even performance, and I continue to appreciate your advice.

I expect to leave this in draft until the game is involved in an Unsupported multiworld on the Discord, at which point I will be glad to receive a thorough review.

chesslogic avatar Nov 26 '23 19:11 chesslogic

This relies on a client provided separately. I've been able to finish some dozens of multiworlds.

The base and world tests are passing. 2 world tests under the LADX folder are failing. Since my changes are limited to my folder and CODEOWNERS, it's not obvious to me what to change to support LADX. I humbly suggest that this PR may be useful in determining a style recommendation.

chesslogic avatar Jul 13 '24 18:07 chesslogic

Haven't checked the code yet - only here because of the discord post about test failures, but Python file names are module names and PEP8 wants them the be all lower case.

black-sliver avatar Jul 13 '24 20:07 black-sliver

All review comments are resolved. Tests are passing. I am going to review recent player and historical maintainer feedback one more time.

I plan to move this PR from draft state to review in the near to immediate future.

I am aware of some client issues (in particular that DeathLink doesn't function), but those issues would not impact the generator implementation.

chesslogic avatar Nov 17 '24 17:11 chesslogic

Hi.

I just had a quick look at some of the code, and I see a few #TODOs in the custom state code. Without diving into the code, that gives me some pause about giving this a review yet as a core maintainer Are these #TODOs just things that would "improve" the logic for the player, or are these actual bugs/holes that could break our fill code?

By that last thing, I mean things like:

  • access decreasing when an item is collected
  • state.remove not being the exact inverse of state.collect
  • different collection order resulting in different access

I.e. any of the things that violate the axioms that our fill code is based on

NewSoupVi avatar Sep 03 '25 01:09 NewSoupVi

Hi.

I just had a quick look at some of the code, and I see a few #TODOs in the custom state code. Without diving into the code, that gives me some pause about giving this a review yet as a core maintainer Are these #TODOs just things that would "improve" the logic for the player, or are these actual bugs/holes that could break our fill code?

By that last thing, I mean things like:

  • access decreasing when an item is collected
  • state.remove not being the exact inverse of state.collect
  • different collection order resulting in different access

I.e. any of the things that violate the axioms that our fill code is based on

Hello to you Vi. Thank you for taking a look at my project.

I have some automated testing which has demonstrated to me that I think it is fairly robust. Although I did not share my results directly, some additional testing I did with the fuzzer on recommendation did not turn up further concerns.

Please feel free to suggest improvements if you think the test suite could be more exhaustive. I prefer demonstrations over claims where possible, so I would refer you to the tests. However, I would claim it has been suitable in this case.

chesslogic avatar Sep 03 '25 02:09 chesslogic