Skip to content

Releases: TinBane/facehard

FACEHARD 1.1.2 — curved plate, soft-cap zone and armour parameters in the GUI/CLI

Choose a tag to compare

@TinBane TinBane released this 07 Sep 05:39

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 --curved on 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 only facehard emulate asked 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|fails on 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(), and curved/armor_overrides/soft_cap_works on penetration().

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

Choose a tag to compare

@TinBane TinBane released this 01 Sep 03:13

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

Choose a tag to compare

@TinBane TinBane released this 31 Aug 23:41

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 gui subcommand / facehard-gui entry 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 as facehard 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

Choose a tag to compare

@TinBane TinBane released this 21 Aug 06:48

First release on PyPI: pipx install facehardhttps://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 wizard
  • facehard emulate — verbatim clone of the original interactive program
  • facehard run / pen / list — modern CLI
  • Library API: calc, results, render_results, penetration, plus named IntEnums 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.