Exapunks HACK*MATCH Bot
Project description
Cross-platform Exapunks HACK*MATCH bot
Yet another bot for Exapunks' amazing (and annoyingly hard) HACK*MATCH arcade minigame.
Want to score 100,000 points and grab the hardest of its achievements and join the 0,7% club? Look no further!
Don't feel frustrated if you, like me, have no skills for a NES-like reflex game and think such arcade game have no place in a logic/puzzle programming game such as Exapunks.
Why create another bot? Well, I felt it would not be cheating if I programmed the bot myself! Exapunks is all about coding and hacking, so creating a bot to hack it fits in perfectly!
Features
- Cross Platform, works on Windows, macOS and Linux
- Works on several resolutions, from 1920x1200 to 1366x768
- Read and write game settings to get user's current keyboard mapping and to automatically turn off CRT effects.
- Launch the game if needed, using Steam's
steam://rungameid/716490
game URI. - Pure Python: easy to understand, install and run, no compiler or other tools needed.
- Command-line arguments to benchmark, debug, watch-only and more.
Heavily inspired by and adapted from:
-
Fidel-solver's exapunks-hack-match bot
- C++, X11 and 1600x900 only, requires custom keys, has fuzzy tolerance on colors.
- Arguably the most well-known reference, possibly the first bot published.
- +500K points recorded on YouTube.
-
- Rust, X11 and 1920x1080 only, requires default keys and no CRT, no fuzziness.
- An elegant code with great insights on image parsing and board solving.
- +8M points recorded on YouTube.
Special thanks to Dissecting fidelSolver's Game Bot for Playing Hack*Match, an amazing presentation by Alan Shen that helped me understand the basic concepts and building blocks of both above projects.
Installing
Run this to install the bot and its dependencies, preferably in a virtual environment:
pip3 install hackmatch
This bot is written in Python and uses PyAutoGUI, which has some pre-requisites
beyond its pip
install. For Debian, Ubuntu and derivatives, just run:
sudo apt install python3-tk
For instructions on all platforms, see the PyAutoGUI documentation.
I've also included a tool to automatically create the python virtual environment,
apt
-install the requirements and pip
-install dependencies and the bot itself,
all in a single step:
./install.sh
Note: even if code itself is compatible with earlier Python versions, some dependencies require Python 3.7. It was fully tested on Python 3.8.
Usage
For basic usage, just run:
hackmatch-bot
- If the game is installed in Steam, it will automatically launch Exapunks if not already running.
- Keep the bot running (i.e., leave the terminal open), and manually enter and start the HACK*MATCH minigame.
- Profit!
Debugging, testing or fine-tuning?
$ hackmatch-bot --help
usage: hackmatch-bot [-h] [-q | -v] [--benchmark] [--watch] [--solve-time TIME]
[--board TEXT | IMAGE]
positional arguments:
IMAGE Ignore game window and solve IMAGE instead.
Useful when debugging with --verbose.
optional arguments:
-h, --help show this help message and exit
-q, --quiet Suppress informative messages.
-v, --verbose Verbose mode, output extra info.
--benchmark Benchmark mode, run for 30 seconds.
Best used with --quiet and game already launched.
--watch Watch mode, read and solve board but do not play.
--solve-time TIME Time in milliseconds to solve each parsed board,
0 for unlimited. [Default: 850 ms]
--board TEXT Ignore game window and solve TEXT instead.
Copyright (C) 2023 Rodrigo Silva (MestreLion) <linux@rodrigosilva.com>
License: GPLv3 or later, at your choice. See <http://www.gnu.org/licenses/gpl>
Contributing
Patches are welcome! Fork, hack, request pull!
See the To-Do List for more updated technical information and planned features.
If you find a bug or have any enhancement request, please to open a new issue
Author
Rodrigo Silva (MestreLion) linux@rodrigosilva.com
License and Copyright
Copyright (C) 2023 Rodrigo Silva (MestreLion) <linux@rodrigosilva.com>.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file hackmatch-1.1.tar.gz
.
File metadata
- Download URL: hackmatch-1.1.tar.gz
- Upload date:
- Size: 34.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.8.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4ec64673972939e4d070330e81db0c6b495fce4c830cc04d1e0d3a0024e1e615 |
|
MD5 | 5f59afebca6f4fe4f375bdd7024dacec |
|
BLAKE2b-256 | a145d114ae6141431d2478d4d1e0b06cb53dffb31e37bb57a0018cf9d9074b44 |
File details
Details for the file hackmatch-1.1-py3-none-any.whl
.
File metadata
- Download URL: hackmatch-1.1-py3-none-any.whl
- Upload date:
- Size: 35.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.8.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f0627d510577bfc465d8f0c29170b280272ff5c2a8c6f3e00a62e4bd7c858c01 |
|
MD5 | b071b235a2c80d70febb868db34c8e49 |
|
BLAKE2b-256 | 687fbf44eed7e964b3ca4ec4bb115875f79d1f6863e0831b3bd46d612ba1462a |