feat(entitlement): pivot to paid app ownership

Check Steam ownership of the paid app with BIsSubscribedApp; keep Debug fake ownership out of Release. Ref: https://partner.steamgames.com/doc/api/ISteamApps#BIsSubscribedApp
This commit is contained in:
2026-11-02 09:18:03 -08:00
parent 54902cb838
commit ff5e8d94ae
17 changed files with 229 additions and 217 deletions
+9 -10
View File
@@ -5,10 +5,11 @@ you are about to re-open one of them. **Live commercial rules (prices, entitleme
signing, support, promo) are in [`commercial.md`](commercial.md)**; the other live rules live in
the subsystem files. This is the graveyard with cause of death.
## The business model — one price, settled 2026-11-01
## The business model — one paid app plus a free Demo, settled 2026-11-02
**$79 one-time, raising to $99 on a stated date. Sold only on Steam, as a DLC on the free app.**
The website publishes the model and links the store page; it never takes payment.
**$79 one-time during the announced launch period, then $99 on the announced date.** Sold only on
Steam as one paid app, with an associated free Demo using the same code. Demo ownership checks the
paid app's Steam App ID. The website links the store page; it never takes payment or hosts binaries.
**What died the same day:**
@@ -49,10 +50,10 @@ overlay.
remote is Gitea). The route is a separate **`llamacasty-releases`** Gitea repo push-mirrored to a
public GitHub repo: issues and assets public, code private, one publish direction.
## Distribution — Steam exclusive (2026-10-31, final)
## Distribution — Steam exclusive (2026-10-31; app structure updated 2026-11-02)
**Steam is the only vector.** A free app on Steam with the paid edition as a Steam **DLC**; the
monthly plan is sold outside Steam and never purchasable in a Steam build. Live rules:
**Steam is the only vector.** One paid app and its associated free Demo; same code, no GitHub
download, subscription, or second paid SKU. Live rules:
[`commercial.md`](commercial.md).
**Why the other vectors died, all on the same day:**
@@ -68,10 +69,8 @@ monthly plan is sold outside Steam and never purchasable in a Steam build. Live
- **The public `llamacasty-releases` repo** survives only as the **issue tracker**; it holds no
binaries, no manifest and no version file.
**The constraint that shapes the app:** Steamworks requires in-app purchases to use the **Steam
Wallet**. Therefore the monthly is *stated*, never *sold*, inside the Steam build — no checkout, no
price, no payment fields. The lifetime is plain DLC bought on the store page, so it needs no
transaction code at all.
**The purchase happens on the paid app's Steam store page.** The Demo links there; Steam owns
checkout, delivery, updates, and the paid-app ownership result. The app contains no checkout flow.
## Support — decided 2026-10-31