FeNigma/README.md
Dominik Roth 07c89c5be4 Rewrite README short, rename project to FeNigma, add icon/showcase
Shorter pitch focused on what the app actually automates for the
player: screenshot orders -> geo puzzle + trajectory solved -> ready
fire commands; screenshot the field log -> kills/new contacts picked
up automatically; strike planning with blast-radius preview. Mentions
the map's geometric derivation overlays and ambiguous-intersection
handling. Drops the old deep technical dump in favor of pointing at
code comments for internals. Adds icon.png (used in the header) and
showcase.png (embedded screenshot); icon_alt.png kept as an unused
alternate for now.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-08 20:15:14 +02:00

2.2 KiB


FeNigma

Fe (iron) + enigma — we solve the geo puzzles.

A companion app that mostly automates IRON NEST: Heavy Turret Simulator for you. Screenshot the game's typewriter orders and it solves the geo puzzle and the trajectory math, handing you ready-to-fire commands — elevation, azimuth, number of powder charges. Screenshot the field log and it picks up kills and newly-spotted units automatically. You can also plan strikes of your own, picking a shell for the blast radius you need. Pure screen-reading — no game files touched, no input injected.

Showcase

What it does

  • Reads orders, solves the geometry. Paste/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.
  • Calculates the shot. Every resolved target gets a live firing card: elevation, azimuth, and minimum powder charge, computed from the Nest.
  • Tracks the battle. A second screenshot of the field log marks units destroyed and folds in newly-spotted contacts, merging with what's already known instead of duplicating it.
  • Plans strikes. Drop a strike anywhere on the map and pick a shell to preview its blast radius before committing.

Run

./run.sh

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 ironnest_assist and kill any stragglers first.

Stack

GTK4 + libadwaita (PyGObject) for the UI, Tesseract (via pytesseract) for OCR, Pillow/numpy for preprocessing. Details on the coordinate system, OCR formats, and solver internals live in code comments (solver.py, ocr.py, models.py) rather than here.