Releases: TinBane/facehard
Release list
FACEHARD 1.1.2 — curved plate, soft-cap zone and armour parameters in the GUI/CLI
FACEHARD 1.1.2 exposes the three questions the original program asks that the desktop GUI and the run/pen commands were silently skipping: the curved-plate rule, the 15–20° soft-cap/hood answer, and the manual armour-parameter screen. Thanks to mike1880 who asked where the curved plate option had gone.
Downloads
| File | Platform | SHA-256 |
|---|---|---|
FACEHARD-1.1.2-windows-x64.zip |
Windows x64 | 7520a3fc92c57fe33bd9543dbb1f2b7ab5d56835938d1adff6c252ea83104458 |
FACEHARD-1.1.2-macos-arm64.app.zip |
macOS (Apple Silicon), signed & notarized | b19c00039b2a84ebce9079bdfb8ab001ce84518e2c5b4c231bbd48c9321bc8e3 |
Windows: extract the zip and run facehard.exe from inside the extracted folder. Keep the folder together — the exe needs the files alongside it and will not run on its own. Double-click for the GUI; run it from a terminal with arguments for the full CLI (facehard.exe run …, pen, list, emulate, gui).
macOS: unzip and open FACEHARD.app. It is Developer ID signed and notarized by Apple, so it opens without Gatekeeper warnings. Apple Silicon only.
Changes
- Strongly curved plate (dome, cylinder, ellipse): a checkbox in the GUI's armour section and
--curvedon the CLI. Enables Okun's curved-plate body-damage rule above 45° obliquity, exactly as answering Y to "Is plate strongly curved?" in the original. Previously onlyfacehard emulateasked this. - Soft AP cap / hood in the 15–20° "zone of mixed results": a dropdown in the GUI's projectile section and
--soft-cap works|failson the CLI. The result header now says when the zone applies to the current impact; outside it the setting has no effect, just as the original only asks inside the zone. - Armour plate parameters: a "Parameters…" button in the GUI opens the original's "modify armor plate's parameters" screen (UB, Q, QDAM, CARTWL, CMPND, THNCHL, SOFTSHAT, THKTHN) with the defaults shown alongside;
--set NAME=VALUE(repeatable) on the CLI. Values are validated to the original's ranges. Overrides clear when you change the armour type, as in the original, and the active values are printed in the result header. - Rule notes: the effective-limit line sometimes ends in "(SEE BELOW)", but nothing was printed below. The notes the original shows there (curved-plate rule, soft-cap nose-only-shatter rule, below-Navy-BL damage note) now appear under the prediction and in the JSON output.
- Saved shells and armour configs include the new fields. Library users get
Results.notes,zomr_applies(), andcurved/armor_overrides/soft_cap_worksonpenetration().
The ballistic model itself is unchanged; these inputs were always implemented and validated, they just had no way in from the GUI or CLI. Re-fuzzed against the original FACEHARD 8.0 QuickBASIC oracle with the new options exercised (6000 limit cases, 6000 narrative cases, 2000 full sessions, 800 lock-step sessions): no divergences beyond the known display-rounding artefacts. Still pure stdlib, zero dependencies. Noncommercial use only — see LICENSE/NOTICE.
FACEHARD 1.1.1 — penetration output + saved shells/armours
FACEHARD 1.1.1 adds a penetration-thickness output and saveable presets to the desktop GUI.
Downloads
| File | Platform | SHA-256 |
|---|---|---|
FACEHARD-1.1.1-windows-x64.zip |
Windows x64 | d6545dd5ff5c695269dc2300d4c6f57de13b63bc0c5300f3c501fd2670dab3c2 |
FACEHARD-1.1.1-macos-arm64.app.zip |
macOS (Apple Silicon), signed & notarized | 3386b1c593b581ff4c526d195a3f72e41851784bc576894c87e6155d3740d3cf |
Windows: extract the zip and run facehard.exe from inside the extracted folder. Keep the folder together — the exe needs the files alongside it and will not run on its own. Double-click for the GUI; run it from a terminal with arguments for the full CLI (facehard.exe run …, pen, list, emulate, gui).
macOS: unzip and open FACEHARD.app. It is Developer ID signed and notarized by Apple, so it opens without Gatekeeper warnings. Apple Silicon only.
The Windows build is scanned clean by all 71 engines on VirusTotal. (An earlier single-file .exe build of this same release was flagged as a false positive by several machine-learning scanners — Chrome blocked it with "virus detected" — because single-file packaging unpacks itself at startup, which heuristics mistake for malware behaviour. That artifact has been replaced by the zip above; if you downloaded it, delete it and use this one. Same program, different packaging.)
Changes
- New penetration output form: shows the maximum thickness of the selected armour the shell defeats at the entered velocity and obliquity (same inverse lookup as
facehard pen). Also appended to the all output. - Saved shells and armour configs: name and save the current projectile (nation, type, calibre, weights, nose-covering state) or armour setup (type, thickness, backing) and recall either from a dropdown. Stored per-user (
~/Library/Application Support/FACEHARD/on macOS,%APPDATA%\FACEHARD\on Windows), so presets survive app updates.
Still pure stdlib, zero dependencies; the ballistic model is unchanged from 1.0.0 (byte-exact against the original FACEHARD 8.0 QuickBASIC). Noncommercial use only — see LICENSE/NOTICE.
FACEHARD 1.1.0 — desktop GUI + self-contained binaries
FACEHARD 1.1.0 adds a desktop GUI and ships self-contained desktop builds — no Python install needed.
Downloads
| File | Platform | SHA-256 |
|---|---|---|
facehard-1.1.0-windows-x64.exe |
Windows x64, single file | b3ddfe646ffb8549d15f18c38d6d0779ed02d83c4a06cf36b9d5f68ec1836a79 |
FACEHARD-1.1.0-macos-arm64.app.zip |
macOS (Apple Silicon), signed & notarized | 773d2653105ca742117b1bfdd5a9ce96c859542c210181cc963d5710141cd488 |
Double-click to open the GUI scenario builder. The same binary is also the full CLI: run it from a terminal with arguments (facehard.exe run ..., pen, list, emulate, gui) and it behaves exactly like the facehard command from PyPI.
The macOS app is Developer ID signed and notarized by Apple, so it opens without Gatekeeper warnings. The Windows exe is unsigned, so SmartScreen will warn on first launch (More info → Run anyway).
Changes
- New
facehard guisubcommand /facehard-guientry point: a single-window tkinter front end (armour, projectile, backing, nose-covering inputs; narrative/limits/metrics/JSON output). Output text is rendered by the same code asfacehard run, so GUI and CLI results are identical. - Pure stdlib as before — the package still has zero dependencies.
Also on PyPI: pip install facehard (model unchanged from 1.0.0; still byte-exact against the original FACEHARD 8.0 QuickBASIC oracle). Noncommercial use only — see LICENSE/NOTICE.
v1.0.0 — first PyPI release
First release on PyPI: pipx install facehard — https://pypi.org/project/facehard/1.0.0/
A faithful Python port of Nathan Okun's FACEHARD 8.0 (QuickBASIC, 2018), reproducing both the numbers and the exact text output of the original, validated against a compiled BASIC oracle by differential fuzzing. Standard library only, Python 3.10+.
facehard— guided wizardfacehard emulate— verbatim clone of the original interactive programfacehard run/pen/list— modern CLI- Library API:
calc,results,render_results,penetration, plus namedIntEnums for every menu choice
Versioning: the package is versioned independently of the model. This is package 1.0.0, reproducing FACEHARD 8.0; facehard --version and facehard.MODEL_VERSION report both.
Noncommercial use only — the underlying model and data are © the estate of Nathan Okun (see NavWeaps); this port is under PolyForm Noncommercial 1.0.0. See port/LICENSE and port/NOTICE.