Name | hackmatch JSON |
Version |
1.3
JSON |
| download |
home_page | |
Summary | Exapunks HACK*MATCH Bot |
upload_time | 2023-09-08 07:28:25 |
maintainer | |
docs_url | None |
author | |
requires_python | >=3.7 |
license | GPL-3.0-or-later |
keywords |
exapunks
hackmatch
game
bot
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# Cross-platform Exapunks HACK*MATCH bot
Yet another bot for [Exapunks][1]' amazing (and annoyingly hard)
**HACK*MATCH** arcade minigame.
Want to score 100,000 points and grab the [hardest of its achievements][2]
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!
<div>
<a href="https://www.youtube.com/watch?v=h5jue7T-gXk">
<img src ="https://img.youtube.com/vi/h5jue7T-gXk/maxresdefault.jpg" />
<p align="center">See it in action!</p>
</a>
</div>
---
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](https://github.com/fidel-solver/exapunks-hack-match)
- 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.
- [Laelath's hack-match-bot](https://github.com/laelath/hack-match-bot)
- 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][3],
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][4].
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?
```console
$ 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][5] for more updated technical information and planned features.
If you find a bug or have any enhancement request, please to open a [new issue][6]
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.
```
[1]: https://store.steampowered.com/app/716490/EXAPUNKS/
[2]: https://steamcommunity.com/stats/716490/achievements
[3]: https://sunzenshen.github.io/presentations/2018/12/08/dissecting-hackmatch-solver.html
[4]: https://pyautogui.readthedocs.io/en/latest/install.html
[5]: https://github.com/MestreLion/hackmatch/blob/main/TODO.md
[6]: https://github.com/MestreLion/hackmatch/issues
Raw data
{
"_id": null,
"home_page": "",
"name": "hackmatch",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": "",
"keywords": "exapunks,hackmatch,game,bot",
"author": "",
"author_email": "\"Rodrigo Silva (MestreLion)\" <linux@rodrigosilva.com>",
"download_url": "https://files.pythonhosted.org/packages/e1/bb/39c2818474a1ef07c52db09cbe047618edb34370181e018618d0fe234d9e/hackmatch-1.3.tar.gz",
"platform": null,
"description": "# Cross-platform Exapunks HACK*MATCH bot\n\nYet another bot for [Exapunks][1]' amazing (and annoyingly hard)\n**HACK*MATCH** arcade minigame.\n\nWant to score 100,000 points and grab the [hardest of its achievements][2]\nand join the 0,7% club? Look no further!\n\nDon't feel frustrated if you, like me, have no skills for a NES-like reflex game\nand think such arcade game have no place in a logic/puzzle _programming_ game\nsuch as Exapunks.\n\nWhy create another bot? Well, I felt it would not be cheating if I\n_programmed_ the bot myself! Exapunks is all about coding and hacking,\nso creating a bot to hack _it_ fits in perfectly!\n\n<div>\n <a href=\"https://www.youtube.com/watch?v=h5jue7T-gXk\">\n <img src =\"https://img.youtube.com/vi/h5jue7T-gXk/maxresdefault.jpg\" />\n <p align=\"center\">See it in action!</p>\n </a>\n</div>\n\n---\nFeatures\n--------\n- Cross Platform, works on Windows, macOS and Linux\n- Works on several resolutions, from 1920x1200 to 1366x768\n- Read and write game settings to get user's current keyboard mapping and to\n automatically turn off CRT effects.\n- Launch the game if needed, using Steam's `steam://rungameid/716490` game URI.\n- Pure Python: easy to understand, install and run, no compiler or other tools needed.\n- Command-line arguments to benchmark, debug, watch-only and more.\n\n### Heavily inspired by and adapted from:\n\n- [Fidel-solver's exapunks-hack-match bot](https://github.com/fidel-solver/exapunks-hack-match)\n - C++, X11 and 1600x900 only, requires custom keys, has fuzzy tolerance on colors.\n - Arguably the most well-known reference, possibly the first bot published.\n - +500K points recorded on YouTube.\n\n- [Laelath's hack-match-bot](https://github.com/laelath/hack-match-bot)\n - Rust, X11 and 1920x1080 only, requires default keys and no CRT, no fuzziness.\n - An elegant code with great insights on image parsing and board solving.\n - +8M points recorded on YouTube.\n\nSpecial thanks to [Dissecting fidelSolver's Game Bot for Playing Hack*Match][3],\nan amazing presentation by Alan Shen that helped me understand the basic concepts\nand building blocks of both above projects.\n\n---\nInstalling\n----------\n\nRun this to install the bot and its dependencies, preferably in a virtual environment:\n\n pip3 install hackmatch\n\nThis bot is written in Python and uses PyAutoGUI, which has some pre-requisites\nbeyond its `pip` install. For Debian, Ubuntu and derivatives, just run:\n\n sudo apt install python3-tk\n\nFor instructions on all platforms, see the [PyAutoGUI documentation][4].\n\nI've also included a tool to automatically create the python virtual environment,\n`apt`-install the requirements and `pip`-install dependencies and the bot itself,\nall in a single step:\n\n ./install.sh\n\n> _**Note**: even if code itself is compatible with earlier Python versions,\n> some dependencies require **Python 3.7**. It was fully tested on Python 3.8._\n\nUsage\n-----\n\nFor basic usage, just run:\n\n hackmatch-bot\n\n- If the game is installed in Steam, it will automatically launch Exapunks\nif not already running.\n- Keep the bot running (i.e., leave the terminal open), and manually enter and\nstart the HACK*MATCH minigame.\n- Profit!\n\nDebugging, testing or fine-tuning?\n\n```console\n$ hackmatch-bot --help\nusage: hackmatch-bot [-h] [-q | -v] [--benchmark] [--watch] [--solve-time TIME]\n [--board TEXT | IMAGE]\n\npositional arguments:\n IMAGE Ignore game window and solve IMAGE instead.\n Useful when debugging with --verbose.\n\noptional arguments:\n -h, --help show this help message and exit\n -q, --quiet Suppress informative messages.\n -v, --verbose Verbose mode, output extra info.\n --benchmark Benchmark mode, run for 30 seconds.\n Best used with --quiet and game already launched.\n --watch Watch mode, read and solve board but do not play.\n --solve-time TIME Time in milliseconds to solve each parsed board,\n 0 for unlimited. [Default: 850 ms]\n --board TEXT Ignore game window and solve TEXT instead.\n\nCopyright (C) 2023 Rodrigo Silva (MestreLion) <linux@rodrigosilva.com>\nLicense: GPLv3 or later, at your choice. See <http://www.gnu.org/licenses/gpl>\n```\n\n---\nContributing\n------------\n\nPatches are welcome! Fork, hack, request pull!\n\nSee the [To-Do List][5] for more updated technical information and planned features.\n\nIf you find a bug or have any enhancement request, please to open a [new issue][6]\n\n\nAuthor\n------\n\nRodrigo Silva (MestreLion) <linux@rodrigosilva.com>\n\nLicense and Copyright\n---------------------\n```\nCopyright (C) 2023 Rodrigo Silva (MestreLion) <linux@rodrigosilva.com>.\nLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.\nThis is free software: you are free to change and redistribute it.\nThere is NO WARRANTY, to the extent permitted by law.\n```\n\n[1]: https://store.steampowered.com/app/716490/EXAPUNKS/\n[2]: https://steamcommunity.com/stats/716490/achievements\n[3]: https://sunzenshen.github.io/presentations/2018/12/08/dissecting-hackmatch-solver.html\n[4]: https://pyautogui.readthedocs.io/en/latest/install.html\n[5]: https://github.com/MestreLion/hackmatch/blob/main/TODO.md\n[6]: https://github.com/MestreLion/hackmatch/issues\n",
"bugtrack_url": null,
"license": "GPL-3.0-or-later",
"summary": "Exapunks HACK*MATCH Bot",
"version": "1.3",
"project_urls": {
"Homepage": "https://github.com/MestreLion/hackmatch",
"Issue Tracker": "https://github.com/MestreLion/hackmatch/issues",
"Source Code": "https://github.com/MestreLion/hackmatch"
},
"split_keywords": [
"exapunks",
"hackmatch",
"game",
"bot"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "dbbdb07de94f04abe2670607c2e42518343d84518cab89c5a74cacbee66a1df5",
"md5": "687ca1dcea5a410deb39f6550f002339",
"sha256": "7a88f60fedcd6f78f3bd301511c1711f1bee346197ab912336902a094b189cdc"
},
"downloads": -1,
"filename": "hackmatch-1.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "687ca1dcea5a410deb39f6550f002339",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 36482,
"upload_time": "2023-09-08T07:28:22",
"upload_time_iso_8601": "2023-09-08T07:28:22.634268Z",
"url": "https://files.pythonhosted.org/packages/db/bd/b07de94f04abe2670607c2e42518343d84518cab89c5a74cacbee66a1df5/hackmatch-1.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "e1bb39c2818474a1ef07c52db09cbe047618edb34370181e018618d0fe234d9e",
"md5": "ebf48904a099cfc34b1cebf51ff1ab86",
"sha256": "ef6a639a949bc3eee1b972ca81dcd5e80e9e97e7009476d811c17860c0b1b9d0"
},
"downloads": -1,
"filename": "hackmatch-1.3.tar.gz",
"has_sig": false,
"md5_digest": "ebf48904a099cfc34b1cebf51ff1ab86",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 35939,
"upload_time": "2023-09-08T07:28:25",
"upload_time_iso_8601": "2023-09-08T07:28:25.214427Z",
"url": "https://files.pythonhosted.org/packages/e1/bb/39c2818474a1ef07c52db09cbe047618edb34370181e018618d0fe234d9e/hackmatch-1.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-09-08 07:28:25",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "MestreLion",
"github_project": "hackmatch",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "hackmatch"
}