Fish.Com, a Plan
Goal
We choose here to pivot from the original design, in order to meet our now-diminished launch window. We will still squat on the name Fish.Com, but we will produce a tournament-less local-machine only version of the game. This will allow human viewers to watch a game played by some mix of human and AI players, but without any network interaction.
Software Components
Our original design would have necessitated a communication layer and (when it reaches a certain size) a database. We have elided those components.
The description of Fish suggests the following software components:
A player-croupier interface (protocol) to which the creators of players program. The player interface must spell out all phases of Fish: how to place their avatars on the initial board; how to take turns; and how/whether to receive information about the end of a game and tournament. Given the goal, this must come be formulated in both logical and communication terms.
A player implementation to validate the interface.
A croupier supervises an individual game after being handed a
number of players. The croupier sets up a board Remember from Fish that some other component may be in charge of specifying the dimensions. and interacts with the
players according to the interface protocol. It removes a
player—
Finally, the game logic calls for data representations of tiles, avatars, and boards plus a component that can check the rules, on behalf of both the croupier (does the player’s action satisfy the rules?) and the players (which actions is the player component legally allowed to perform?).
The player interface and these game pieces make up the common ontology that players and croupiers use to communicate.
Building It
The goal of the first phase is to build a complete game implementation, including game observers and possibly GUI-based players. This phase will thus implement the core of the system, including our AI players.
the basic game pieces: tiles, avatars, and the board;
a rule checker, needed by both players and croupiers;
the player interface and basic implementations; and
the croupier.
Once we have a player interface, we will ask some early adopters to write one or more player implementations in our language.