Desdemona

Would you like to play a game? In your terminal? How about Othello? You know, the game with the light and dark discs that isn't Go?

text a b c d e f g h 1 · · · · · · · · 2 · · · · · · · · 3 · · · · · · · · 4 · · · ● ○ · · · 5 · · · ○ ● · · · 6 · · · · · · · · 7 · · · · · · · · 8 · · · · · · · ·

Desdemona provides both a game you can play, as well as a simulation framework for developing your own strategies to play against each other.

Installing

Desdemona requires a working Rust development environment to build and run. For more information, head over to rust-lang.org.

Once you have that sorted out:

bash cargo install desdemona

Running

desdemona will start a game. For help, add the --help flag.

The current ASCII graphics are accurate for a dark color scheme terminal, where "○" renders as a dark disc with a light outline, and "●" renders as a solid light disc. If you're using a light color scheme, just pretend they're the opposite.

Binaries

Available Strategies

Desdemona has a simple framework for building your own game play strategies, and includes five different (and very basic) strategies in the src/strategies directory:

To play against a particular strategy, use the -s flag. For example, to play against the Monte strategy:

desdemona -s monte

Notes on Strategies

You can use the desvs ("desdemona verses") program to compare the strengths of different strategies.

None of these strategies are particularly effective when playing against skilled humans; they have no concept of strategy involving corner values, static pieces, etc. If you'd like to contribute something more interesting, please do!

Benchmarks

Currently plays a full random game in ~85µs, and can be parallelized to ~25µs (see bin/desstress above). This isn't important for casual play, but it's handy for analysis!

Copyright, License

Copyright 2021, Peat Bakke peat@peat.org.

"Othello" is a registered trademark and copyright of MegaHouse Corporation.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.