All notable changes to this project are documented in this file. The format is based on Keep a Changelog,
The x.y.z
version is tracked in gradle.properties to enable programmatic updating via the Gradle release
task.
The version should always be in sync with the GUI and have a tag in both repositories.
- The major version
x
corresponds to the year of the contest and thus only changes once a year y
is bumped for any major updates or backwards-incompatible changes.
Ay
version of 0 marks the beta of the current year and likely contains breaking changes between patches.
- ease player template IDE import
- Remove round number from GameState
- End game with turn 60
- Update CI Pipeline
- Always finish the round even if one player is already in the goal
- Emit proper GameResult when game ends regularly through implementing WinCondition
- revamp a few internal helper methods
- fix GameResult
- expand testing
- Requirements for swap carrots card properly implemented
- XML Serialization Revamped
- Allow other player to move on when one is disqualified
- Allow player to move on when other is stuck (now for clarification: crashed) or finished -> need to adjust score to account for earlier arrival
- Improve XML protocol
- Immediately end game when one player gets stuck
- Fix incorrect winner for edge cases involving segment distance
- Disqualify ship that cannot move because it is too fast
- Fully rename simpleclient to playertemplate
- Fix segment bounds special cases
- moveIterator should now generate all possible Moves
- Reduce usage of magic numbers
- Fix some test cases and update kotest
- Fix oversight in SimplePlayer template
- Make SimplePlayer template more convenient
- Clarify game over edge case conditions
- Properly handle consecutive advances
- Fix ScoreDefinition
- Revamp calculation structure for available Moves
- Add some helpers and documentation
- Fix revealing of Segments including nextDirection
- Fix passing on of nextDirection in Board
- Properly deep copy board
- Allow picking up passengers at speed 2 in current
- Skip player turn if ship is immovable
- Extend tests
- Fix Orientation of Coordinates and Directions for Cartesian, DoubledHex and Cube
- Implement basic version of Mississippi Queen - XML and Rules are subject to change!
- Fix Deep Cloning of GameState
- Update Board generation counts to prevent missing ice floes
23.0.2 New Board generation - 2022-08-21
- Update Board generation: The Board is now mirrored with holes, with more holes in the middle and more fish at the edge.
- Improve automated checks
23.0.1 Proper Penguins - 2022-08-06
- Proper rule implementation for Penguins with some helpers
- Improve XML
23.0.0 Rough Penguins - 2022-07-28
- Generify some plugin functionality to the SDK (RectangularBoard, Team.color)
- Initial version of game "Hey, Danke für den Fisch" (Codename Penguins) with simplified game rules (can only move to adjacent fields)
- Switch from unavailable maven repo for jargs
22.1.0 Polish - 2021-11-15
- Ensure compatibility beyond Java 16
- Fix game ending a turn too late on round limit (7b096f105)
- Fix irritating error messages at game end
- Release TestClient
22.0.3 - 2021-07-26
- Fix simpleclient setup
- Only end game after full rounds
22.0.2 Protocol Revamp - 2021-07-16
- Update documentation links
- Various improvements around testing
- Reworked GameResult XML (add player information, include winner as team)
- Simpler Player XML (team as attribute)
- Join without specifying a gameType
- Removed test mode - add up the GameResults instead (#385)
- Do not send repeated MoveRequests when pausing/unpausing
- Stop terminating client connections upon protocol issues (6c6d6fa51)
22.0.1 Adjust Ostseeschach plugin - 2021-06-25
- Implemented proper winner calculation
- Added some utility methods
- Adjusted XML
22.0.0 - 2021-06-11
- Restructured folders to follow JVM standards
- Simplified interface for player development
21.4.0 - 2021-05-28
- Enable preparing games without reservations
- Implement generic replay saving & loading
- Create an AdminClient to interface more conveniently with the server
- Distinguish RoomMessages from ProtocolPackets
- Send GamePaused message after a Game has been paused
21.3.3 - 2021-03-01
- Game: Refactor turn advancing logic (#391)
- Networking: Improve Exception handling within games and rooms (#383)
21.3.2 - 2021-02-12
- GameState: Alignment of round number with turn number (49676b64c)
- TestClient: Prevent a race-condition that could occur when getting the results of the first game (4f33fc01f)
21.3.1 - 2021-02-11
- Fix GameState clone, hashCode and equals to include undeployedPieceShapes and validColors
- Remove superfluous
class
attributes from GameState XML - Synchronize XML packet sending to prevent messages from interleaving (219466c0a)
- Extend GameState XML (#381) and Network tests (#363)
- Setup GitHub Actions (#384)
21.3.0 - 2021-01-29
- Send final Gamestate to listeners when a game ends (#364)
- Remove extra field from Move/Piece XML (23589a153)
- Player dependency declarations (#373)
- TestClient: Make it work (#372) & load current Game id from classpath (#367)
- Implement cloning for GameState & Board (#356)
- Add README for player (#373)
- Create CONTRIBUTING & GUIDELINES (#360)
- Modularize XStream initialization using ServiceLoader (#352)
21.2.1 - 2020-12-18
- Improve internal build logic (#343)
- Improve & translate toString messages
- Use MoveMistakes to construct InvalidMoveExceptions (#321)
21.2.0 - 2020-12-14
- converted lots of classes to Kotlin
- internal Protocol updates & game flow adjustments
- updated many tests