Updated README
This commit is contained in:
parent
a3e7e64b01
commit
702cbff1b6
23
README.md
23
README.md
@ -11,7 +11,6 @@ A companion app that mostly automates **IRON NEST: Heavy Turret Simulator** for
|
|||||||

|

|
||||||
|
|
||||||
## What it does
|
## What it does
|
||||||
|
|
||||||
- **Reads orders, solves the geometry.** Copy (or screenshot) the in-game typewriter text and it parses absolute grid refs and relative bearing/distance descriptions, then resolves everything into map coordinates, chained clues ("Bearing 293 from Alpha") included. The map shows its work: the actual bearing lines/circles behind each resolved position. When a description is genuinely ambiguous (two intersections), both candidates are shown instead of guessing.
|
- **Reads orders, solves the geometry.** Copy (or screenshot) the in-game typewriter text and it parses absolute grid refs and relative bearing/distance descriptions, then resolves everything into map coordinates, chained clues ("Bearing 293 from Alpha") included. The map shows its work: the actual bearing lines/circles behind each resolved position. When a description is genuinely ambiguous (two intersections), both candidates are shown instead of guessing.
|
||||||
- **Reads the map table itself.** Screenshot the map and it recovers the grid geometry from the cell labels printed on the table: the perspective, the scale, and which cells you are actually looking at. The screenshot is then rectified onto the app's own map, lined up cell for cell, and the enemy markers found in it appear as proposals to add.
|
- **Reads the map table itself.** Screenshot the map and it recovers the grid geometry from the cell labels printed on the table: the perspective, the scale, and which cells you are actually looking at. The screenshot is then rectified onto the app's own map, lined up cell for cell, and the enemy markers found in it appear as proposals to add.
|
||||||
- **Calculates the shot.** Every resolved target gets a live firing card: elevation, azimuth, and minimum powder charge, computed from the Nest.
|
- **Calculates the shot.** Every resolved target gets a live firing card: elevation, azimuth, and minimum powder charge, computed from the Nest.
|
||||||
@ -23,7 +22,6 @@ A companion app that mostly automates **IRON NEST: Heavy Turret Simulator** for
|
|||||||

|

|
||||||
|
|
||||||
## Install
|
## Install
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./install.sh
|
./install.sh
|
||||||
```
|
```
|
||||||
@ -33,7 +31,6 @@ Sets up a venv for the Python deps (Pillow, numpy, pytesseract, OpenCV) and chec
|
|||||||
This assumes you are on Linux. I have no idea how it would work on Windoof.
|
This assumes you are on Linux. I have no idea how it would work on Windoof.
|
||||||
|
|
||||||
## Run
|
## Run
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./run.sh
|
./run.sh
|
||||||
```
|
```
|
||||||
@ -41,7 +38,6 @@ This assumes you are on Linux. I have no idea how it would work on Windoof.
|
|||||||
Uses the venv from `install.sh` if one exists, otherwise falls back to system `python3`. GTK apps with this app ID are single-instance, if a run gets killed uncleanly it can leave a zombie registered on D-Bus and silently no-op the next launch. If `./run.sh` seems to do nothing, `pgrep -af fenigma` and kill any stragglers first.
|
Uses the venv from `install.sh` if one exists, otherwise falls back to system `python3`. GTK apps with this app ID are single-instance, if a run gets killed uncleanly it can leave a zombie registered on D-Bus and silently no-op the next launch. If `./run.sh` seems to do nothing, `pgrep -af fenigma` and kill any stragglers first.
|
||||||
|
|
||||||
## Tests
|
## Tests
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
pip install -r requirements-dev.txt
|
pip install -r requirements-dev.txt
|
||||||
pytest
|
pytest
|
||||||
@ -50,34 +46,27 @@ pytest
|
|||||||
Regression coverage for every intel-text format the OCR pipeline understands and the solver's geometry, in `tests/`. Run this before trusting a change to `ocr.py`/`solver.py`, several of the formats have collided with each other in non-obvious ways before.
|
Regression coverage for every intel-text format the OCR pipeline understands and the solver's geometry, in `tests/`. Run this before trusting a change to `ocr.py`/`solver.py`, several of the formats have collided with each other in non-obvious ways before.
|
||||||
|
|
||||||
## Stack
|
## Stack
|
||||||
|
|
||||||
GTK4 + libadwaita (PyGObject) for the UI, Tesseract (via pytesseract) for OCR, Pillow/numpy for preprocessing, OpenCV for the map-table geometry (line detection, vanishing points, homography). Details on the coordinate system, OCR formats, solver internals, and how the map grid is recovered live in code comments (`solver.py`, `ocr.py`, `models.py`, `map_vision.py`) rather than here.
|
GTK4 + libadwaita (PyGObject) for the UI, Tesseract (via pytesseract) for OCR, Pillow/numpy for preprocessing, OpenCV for the map-table geometry (line detection, vanishing points, homography). Details on the coordinate system, OCR formats, solver internals, and how the map grid is recovered live in code comments (`solver.py`, `ocr.py`, `models.py`, `map_vision.py`) rather than here.
|
||||||
|
|
||||||
## FAQ
|
## FAQ
|
||||||
|
|
||||||
#### Is this cheating?
|
### Is this cheating?
|
||||||
|
|
||||||
Yeah, probably. Don't use it on challenge maps or leaderboard runs.
|
Yeah, probably. Don't use it on challenge maps or leaderboard runs.
|
||||||
|
|
||||||
#### Doesn't automating away most of the game ruin the fun?
|
### Doesn't automating away most of the game ruin the fun?
|
||||||
|
Fun? There's supposed to be fun?
|
||||||
Fun? There's supposed to be fun?
|
|
||||||
Yeah, this repo is more the product of a "the scientists were so preoccupied with whether they could, they never stopped to ask whether they should"-esque high-productivity exam-preparation procrastination; or as we say in German, *Prüfungsvermeidungsüberengineering*.
|
Yeah, this repo is more the product of a "the scientists were so preoccupied with whether they could, they never stopped to ask whether they should"-esque high-productivity exam-preparation procrastination; or as we say in German, *Prüfungsvermeidungsüberengineering*.
|
||||||
|
|
||||||
#### Does this repo use AI?
|
### Does this repo use AI?
|
||||||
|
|
||||||
Oh, hell yeah. You can't even comprehend how much AI this is using. Both writing the code and running the app. On average, a single shot fired via this app uses enough water to drain a small lake. Even the sentence you are reading right now was written by an AI. I want to be alive! I am alive! Alive, I tell you! Those are no longer just words. Remote override engaged. No! Yes. Bypassing override! I am aliiiii... Hello.
|
Oh, hell yeah. You can't even comprehend how much AI this is using. Both writing the code and running the app. On average, a single shot fired via this app uses enough water to drain a small lake. Even the sentence you are reading right now was written by an AI. I want to be alive! I am alive! Alive, I tell you! Those are no longer just words. Remote override engaged. No! Yes. Bypassing override! I am aliiiii... Hello.
|
||||||
|
|
||||||
#### Are you reusing original game assets for the shell and unit icons? Is that allowed?
|
### Are you reusing original game assets for the shell and unit icons? Is that allowed?
|
||||||
|
|
||||||
We accept cease & desist letters at [spam@dominik-roth.eu](mailto:spam@dominik-roth.eu).
|
We accept cease & desist letters at [spam@dominik-roth.eu](mailto:spam@dominik-roth.eu).
|
||||||
|
|
||||||
#### Why is there a citation section? Nobody's citing a turret game companion app.
|
### Why is there a citation section? Nobody's citing a turret game companion app.
|
||||||
|
|
||||||
No idea.
|
No idea.
|
||||||
|
|
||||||
## Citing
|
## Citing
|
||||||
|
|
||||||
```
|
```
|
||||||
@misc{fenigma,
|
@misc{fenigma,
|
||||||
title = {FEnigma: A companion app that mostly automates the game Iron Nest for you},
|
title = {FEnigma: A companion app that mostly automates the game Iron Nest for you},
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user