Skip to content

Features Guide

ddyer0 edited this page Aug 25, 2024 · 16 revisions

General Guide to the features of Boardspace

Supported Platforms

  • Desktop mode, running java code directly, works on Windows, MacOs and Linux - wherever java runs.
  • Android and IOS mobile platforms are supported by a Codenameone port. The sources are 95% the same, and individual games are almost 100% the same. Here is the Slide Deck from a presentation about the process.
  • use directly in a Browser - supported for desktop browsers. It's a miracle thanks to Cheerpj

Play modes (real time)

  • Online play from your desktop or mobile is the primary mode. It's possible to spectate in online games, and also to rejoin or restart games that were interrupted for any reason. Completed games are permanently archived for later review.
  • Offline review of completed games is available for all games.
  • Offline pass-and-play is supported for all games, although it doesn't make for sensible game play in a few cases.
  • Offline table play (on Playtable, GameBoard, or Infinity game table, or similar devices) is supported, with optional use as a companion app. Table play with companion app

Play modes (turn based)

  • Supported. Turn based games are launched using a third "main interface" (The other two are the online lobby and the offline game launcher). Games are archived alongside real time games, but the is a parallel universe of rankings for turn based games.

Game Server

A custom server, written in C, listens on a TCP socket and acts as a multiplexer among the game clients. The communication protocols above the raw tcp socket levels are ad-hoc and do not conform to any particular standard. The game server also serves as a nexus for logging errors and other activity, saving completed game records, and maintaining a restartable game state for all the active games.

Networking

  • Online play at Boardspace has a custom server (written in C) for the actual games, and uses TCP sockets for communication.
  • HTTP based services handle ancillary tasks such as registration, login, scoring, tournaments, and leader boards.
  • For companion app functionality in table based games, the the client itself acts as a TCP server, and copies of the client connect over the LAN using TCP. This mode uses a UDP beacon to help the host and clients find one another. No central web server is needed.

Game Client

The game client is written in Java. There is a large body of "standard game support" code to handle things such as graphics, board layout, networking, input gestures, robot players, time keeping, generic board representation and so on, such that the code for individual games can be quite small. The same game code can be used for both online and offline games (generally, the game doesn't even know if it is online or offline).

Game List

The set of available games is maintained as instances of a "GameInfo" structure. In principle, adding or removing items from the list can be done any time the client is rebuilt, so it would be possible for instance to build a client with a completely new set of games.

Lobby

The online branch of the project uses a "lobby" model to set up games from the game list and allow potential players to communicate . Online Game Lobby

Offline Launcher

The offline launcher uses the same game list as the online game list, but presents appropriately for pass and play or for games around a table. Offline Launcher

Companion applications.

The main client acts as it's own companion for table games which require it, so another copy of the same client, running on a separate device, can be used to display private information.

Individual games

Individual games can be launched directly, or from the online lobby, or from the offline launcher.

Robot players

Multiple different types of robots are supported. There is a common framework for Alpha-Beta and for MCTS based searches.

Game Archives

All completed online games are saved and can be reviewed online or offline. There is a chronological archive, and a searchable database to help locate games of interest.

Leader Boards

  • There is an ELO type ranking system for online games, with ad-hoc tweaks to prevent excessive gaming the system.
  • There is also a "king of the hill" ladder ranking system.

Custom Launcher

The preferred method for launching boardspace on a desktop provides similar functionality to Java Web Start, but without the picky formatting, and without requiring signed jar files. This guarantees the code the users are using is always up to date.

Language Localization

There is a web based system for maintaining translations of all the text used in the games.