#solver #game #strong-solver

app gamesman-nova

System for computing the solution set of finite, deterministic, complete-information, abstract-strategy games

6 releases

0.1.5 Dec 19, 2023
0.1.4 Dec 7, 2023
0.1.3 Nov 9, 2023

#685 in Math

Download history 3/week @ 2024-07-25 3/week @ 2024-09-19 1/week @ 2024-09-26

57 downloads per month

GPL-3.0 license

105KB
1.5K SLoC

Nova

This is a re-focused spinoff of Dr. Dan Garcia's GamesmanClassic, a system for strongly solving (takes a deep breath) complete-information turn-based deterministic abstract strategy games, such as Tic-Tac-Toe, Connect4, and Chess (if it weren't so darn big). In particular, the purpose of Nova is to take learnings and ambitions from GamesmanClassic and provide a software system with an architecture that can accommodate them through meaningful, equally performant, and safe abstractions. 

Installation

Before doing anything, you will want to install the Rust compiler and toolchain. GamesmanNova is on crates.io, so to get the nova executable, you can then run:

$ cargo install gamesman-nova

Otherwise, if you would like to build Nova from source, you can also:

  1. Clone this repository to your preferred location.
$ git clone https://github.com/GamesCrafters/GamesmanNova.git location
  1. Go to your installation (cd location), and install the executable:
$ cargo install --path .

This will add the nova executable to your list of cargo binaries.

Development

Important Fronts

The current big objectives for this project are:

  • Supporting transferrable utility coalitional games (i.e., games where you can re-distribute winnings at the end among those who helped you win).
  • Creating a memory-efficient and thread-safe implementation of GamesmanClassic's database engine.
  • Designing a database file serialization protocol to make GamesmanClassic's databases compatible with Nova.
  • Building a wonderful terminal user interface and expanding the current command-line interface.
  • Implementing and wrapping a distributed MPI controller for solves on the Savio cluster.

Subprojects

Smaller modules currently being built:

Contributing

This project was created in affiliation with GamesCrafters, a computational game theory applied research group at UC Berkeley. If you would like to contribute as someone outside the GamesCrafters org, feel free to fork the repository and open a PR. If you are part of the org, create a branch anytime and code away (but do let others know, so we can help or thank you). Some light CI is set up to ensure some loose measure of quality on the main branch (namely compilation, testing, and formatting checks).

-- Max Fierro, maxfierro@berkeley.edu

Dependencies

~7–18MB
~204K SLoC