Skip to main content

Boost

Original description of Boost:

Boost is a turn-based abstract strategy board game like checkers, chess, Xiangqi, or Arimaa. It was designed to be new and interesting for humans to play while still admitting a simple AI and supporting various homework assignments on algorithms and data structures in the SOFT 260 course at UNL.

Boost was designed and first implemented by Dr. Brady J. Garvin. The original implementation was a Progressive Web App made with React.js.

This is a Python implementation that closely conforms to the original rules of the game. It can run interactively in a terminal session, or as a Discord bot.

For a transcription of the rules, see RULES.md.

Installation

pip install boost-game

For graphics on Discord, install librsvg (on Arch-based systems) or librsvg2-bin (on Debian-based systems). Alternatively, if Chromium or Chrome is installed and available on your PATH, it can be used instead, although browser-based rendering is more resource intensive.

Usage

Terminal

boost

To see a list of game commands, enter help in-game.

For more usage information:

boost --help

Discord Bot

To serve the Boost Discord bot, you must first create a bot account via the Discord Developer Portal. This is a standard process and you can find documentation for it online.

Then:

  • Save your Discord bot token to a file named token.txt in the repo directory.
  • Run ./bot.sh (or ./bot.sh& to run the bot in the background).
  • Invite the bot to the server(s) you wish to use it (via the developer portal).

The bot needs the following permissions:

  • View Channels
  • Send Messages
  • Attach Files (optional; required for graphics support)

After inviting the bot to a server, you can view a list of commands by sending /boost help in a channel the bot can read and send messages in.

Troubleshooting

If you're using RSVG and the Discord bot is displaying a board with no pieces, try setting XLINK to True in graphics/board_svg.py. (Change the line with XLINK = False to XLINK = True.) Eventually, this will be made into a command line switch.

Contributing

This Boost implementation is being developed by Aaron Friesen as a fun side project, so don't expect incredible levels of polish. However, I am open to issues and pull requests!

If you want to submit a PR, please follow these guidelines:

  • Run the game (both CLI and Discord bot if possible) to check for bugs. You can utilize the debug rulesets in boost.py to check certain hard-to-test cases, such as victory.
  • Copy the license notice from boost.py into any new Python files you create.
  • Run some Python linters on the files you've changed and ensure there are as few lint issues as possible.

If you want to contribute but aren't sure what to work on, you can find some ideas in TODO.md.

License

This Boost implementation is licensed under the GNU Affero General Public License. The original implementation was closed source and unlicensed, but this implementation has received written permission from Dr. Garvin to be publicly distributed.

Among other things, the AGPL implies that if you want to fork the repo and run your own derivative Discord bot, you need to disclose the source code of your implementation. To do this, I recommend adding a command to the bot (similar to the /boost info for this bot) that provides a link back to your repository.

Metadata

Release files for boost-game 1.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for boost-game 1.2.0
File Size Uploaded
boost-game-1.2.0.tar.gz 36.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for boost-game 1.2.0
File Interpreter ABI Platform
boost_game-1.2.0-py2.py3-none-any.whl Python 3, Python 2 none any Details

Total release size: 85.0 kB

Release files / boost-game-1.2.0.tar.gz

Download URL boost-game-1.2.0.tar.gz
Size 36.2 kB
Tags Source
SHA-256 checksum
How to use checksums
3396d4a0e68eb71495d83699d092ff52e6be52dd6e083ae158aa1ccd42467a25
BLAKE2b-256 checksum
How to use checksums
6b7ccc6de8272512e890906864f6ab95f382a109c4d6f0ea1bd1c6cbc1155416
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via python-requests/2.27.1

Release files / boost_game-1.2.0-py2.py3-none-any.whl

Download URL boost_game-1.2.0-py2.py3-none-any.whl
Size 48.8 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
bdc0729bc746428ccf7cdac8a509be8d5eef1620635afab3bd260c28f6486dc0
BLAKE2b-256 checksum
How to use checksums
ae44dd5f945690d26e02759db98ec976be7b8e69ec119511bf84edf87493d8c4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via python-requests/2.27.1

Release history Release notifications | RSS feed

This release

1.2.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page