@bitmagic/cli 0.1.83-dev.1 → 0.1.83-dev.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +69 -0
- package/assets/skills/publishing-to-steam/SKILL.md +218 -0
- package/dist/assets/vxl-summary.d.ts +6 -20
- package/dist/assets/vxl-summary.js +9 -100
- package/dist/assets/vxl-summary.js.map +1 -1
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +2 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/check.js +5 -0
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/forge.js +1 -1
- package/dist/commands/forge.js.map +1 -1
- package/dist/commands/ios.js +88 -136
- package/dist/commands/ios.js.map +1 -1
- package/dist/commands/steam-build.d.ts +67 -0
- package/dist/commands/steam-build.js +286 -0
- package/dist/commands/steam-build.js.map +1 -0
- package/dist/commands/steam-portal.d.ts +1 -0
- package/dist/commands/steam-portal.js +319 -0
- package/dist/commands/steam-portal.js.map +1 -0
- package/dist/commands/steam-upload.d.ts +37 -0
- package/dist/commands/steam-upload.js +172 -0
- package/dist/commands/steam-upload.js.map +1 -0
- package/dist/commands/steam.d.ts +1 -0
- package/dist/commands/steam.js +502 -0
- package/dist/commands/steam.js.map +1 -0
- package/dist/commands/verify.js +6 -0
- package/dist/commands/verify.js.map +1 -1
- package/dist/editor/asset-viewer.js +5 -4
- package/dist/editor/asset-viewer.js.map +1 -1
- package/dist/editor/server.js +1 -1
- package/dist/editor/server.js.map +1 -1
- package/dist/editor/shell-page.js +3 -3
- package/dist/forge/browser-host.d.ts +1 -1
- package/dist/ios/native-overrides.d.ts +27 -0
- package/dist/ios/native-overrides.js +87 -0
- package/dist/ios/native-overrides.js.map +1 -0
- package/dist/ios/record-validate.d.ts +1 -33
- package/dist/ios/record-validate.js +2 -100
- package/dist/ios/record-validate.js.map +1 -1
- package/dist/ios/store-bridge.d.ts +26 -0
- package/dist/ios/store-bridge.js +224 -0
- package/dist/ios/store-bridge.js.map +1 -0
- package/dist/ios/storekit-config.d.ts +15 -0
- package/dist/ios/storekit-config.js +106 -0
- package/dist/ios/storekit-config.js.map +1 -0
- package/dist/ios/xcode-template.d.ts +12 -3
- package/dist/ios/xcode-template.js +158 -27
- package/dist/ios/xcode-template.js.map +1 -1
- package/dist/package/collect-urls.d.ts +1 -1
- package/dist/package/collect-urls.js +10 -2
- package/dist/package/collect-urls.js.map +1 -1
- package/dist/package/offline-payload.d.ts +35 -0
- package/dist/package/offline-payload.js +142 -0
- package/dist/package/offline-payload.js.map +1 -0
- package/dist/package/packaged-check.d.ts +39 -0
- package/dist/package/packaged-check.js +104 -0
- package/dist/package/packaged-check.js.map +1 -0
- package/dist/package/transform.d.ts +4 -4
- package/dist/package/transform.js +3 -3
- package/dist/project/published-three.d.ts +14 -0
- package/dist/project/published-three.js +93 -0
- package/dist/project/published-three.js.map +1 -0
- package/dist/publish/bundle.js +6 -0
- package/dist/publish/bundle.js.map +1 -1
- package/dist/scaffold/project-files.js +5 -2
- package/dist/scaffold/project-files.js.map +1 -1
- package/dist/scaffold/project.js +2 -0
- package/dist/scaffold/project.js.map +1 -1
- package/dist/scaffold/skill-files.js +3 -1
- package/dist/scaffold/skill-files.js.map +1 -1
- package/dist/scaffold/steam-skill-files.d.ts +2 -0
- package/dist/scaffold/steam-skill-files.js +7 -0
- package/dist/scaffold/steam-skill-files.js.map +1 -0
- package/dist/steam/art-generate.d.ts +55 -0
- package/dist/steam/art-generate.js +173 -0
- package/dist/steam/art-generate.js.map +1 -0
- package/dist/steam/art-render.d.ts +25 -0
- package/dist/steam/art-render.js +157 -0
- package/dist/steam/art-render.js.map +1 -0
- package/dist/steam/art-use.d.ts +20 -0
- package/dist/steam/art-use.js +84 -0
- package/dist/steam/art-use.js.map +1 -0
- package/dist/steam/art.d.ts +98 -0
- package/dist/steam/art.js +243 -0
- package/dist/steam/art.js.map +1 -0
- package/dist/steam/check.d.ts +21 -0
- package/dist/steam/check.js +113 -0
- package/dist/steam/check.js.map +1 -0
- package/dist/steam/config.d.ts +57 -0
- package/dist/steam/config.js +145 -0
- package/dist/steam/config.js.map +1 -0
- package/dist/steam/electron-cache.d.ts +11 -0
- package/dist/steam/electron-cache.js +105 -0
- package/dist/steam/electron-cache.js.map +1 -0
- package/dist/steam/fuses.d.ts +16 -0
- package/dist/steam/fuses.js +75 -0
- package/dist/steam/fuses.js.map +1 -0
- package/dist/steam/icon-files.d.ts +16 -0
- package/dist/steam/icon-files.js +70 -0
- package/dist/steam/icon-files.js.map +1 -0
- package/dist/steam/image-info.d.ts +16 -0
- package/dist/steam/image-info.js +89 -0
- package/dist/steam/image-info.js.map +1 -0
- package/dist/steam/launch-check.d.ts +12 -0
- package/dist/steam/launch-check.js +101 -0
- package/dist/steam/launch-check.js.map +1 -0
- package/dist/steam/media.d.ts +48 -0
- package/dist/steam/media.js +151 -0
- package/dist/steam/media.js.map +1 -0
- package/dist/steam/package-macos.d.ts +52 -0
- package/dist/steam/package-macos.js +268 -0
- package/dist/steam/package-macos.js.map +1 -0
- package/dist/steam/package-windows.d.ts +24 -0
- package/dist/steam/package-windows.js +84 -0
- package/dist/steam/package-windows.js.map +1 -0
- package/dist/steam/paths.d.ts +37 -0
- package/dist/steam/paths.js +45 -0
- package/dist/steam/paths.js.map +1 -0
- package/dist/steam/playtest-shots.d.ts +18 -0
- package/dist/steam/playtest-shots.js +83 -0
- package/dist/steam/playtest-shots.js.map +1 -0
- package/dist/steam/portal-recipes.d.ts +25 -0
- package/dist/steam/portal-recipes.js +61 -0
- package/dist/steam/portal-recipes.js.map +1 -0
- package/dist/steam/portal.d.ts +58 -0
- package/dist/steam/portal.js +340 -0
- package/dist/steam/portal.js.map +1 -0
- package/dist/steam/raster.d.ts +59 -0
- package/dist/steam/raster.js +285 -0
- package/dist/steam/raster.js.map +1 -0
- package/dist/steam/shell-files.d.ts +17 -0
- package/dist/steam/shell-files.js +268 -0
- package/dist/steam/shell-files.js.map +1 -0
- package/dist/steam/specs.d.ts +61 -0
- package/dist/steam/specs.js +103 -0
- package/dist/steam/specs.js.map +1 -0
- package/dist/steam/steampipe.d.ts +46 -0
- package/dist/steam/steampipe.js +170 -0
- package/dist/steam/steampipe.js.map +1 -0
- package/dist/steam/store-copy.d.ts +89 -0
- package/dist/steam/store-copy.js +221 -0
- package/dist/steam/store-copy.js.map +1 -0
- package/dist/steam/tags.d.ts +9 -0
- package/dist/steam/tags.js +49 -0
- package/dist/steam/tags.js.map +1 -0
- package/dist/steam/trailer.d.ts +34 -0
- package/dist/steam/trailer.js +141 -0
- package/dist/steam/trailer.js.map +1 -0
- package/dist/verify/browser.d.ts +11 -0
- package/dist/verify/browser.js +195 -152
- package/dist/verify/browser.js.map +1 -1
- package/dist/verify/classify.d.ts +11 -2
- package/dist/verify/classify.js +16 -4
- package/dist/verify/classify.js.map +1 -1
- package/dist/verify/mobile-parity.d.ts +1 -1
- package/dist/verify/mobile-parity.js +1 -1
- package/package.json +5 -4
package/README.md
CHANGED
|
@@ -229,6 +229,8 @@ browser reloads itself on every change and the assets panel shows each generatio
|
|
|
229
229
|
| `bitmagic tools <list\|path\|install> [bundle]` | The script bundles the CLI ships for skills that drive Blender, Python or Node (`blender-level`, `unity-import`, `metahuman`): what they are, where this install keeps them, and `install` to copy one into the project's `tools/`. Local, no network, no sparks. |
|
|
230
230
|
| `bitmagic event <setup\|claude\|codex\|status\|env\|clear> ...` | **Sponsored events only.** `setup --key sk-…` stores the API key from your event card and checks it works; `claude` / `codex` start that agent pointed at the event endpoint; `status` shows what is left of your budget. Nothing you own is modified: Claude Code is configured purely through the environment of the process it starts, and Codex gets a separate profile of ours (your `~/.codex/config.toml` is untouched and still applies when you run `codex` yourself). `clear` removes both. `env` prints the variables for wiring an agent up by hand, in your shell's syntax (`--shell posix\|powershell\|cmd`). Plain `claude` keeps using your own account — the event endpoint is only used when you start the agent through `bitmagic event`. Works on macOS, Linux and native Windows; participants who have no Node or agent at all are set up in one command by the bootstrap at `portal/public/event/install.sh` (`install.ps1` on Windows). |
|
|
231
231
|
| `bitmagic levels <list\|add\|rename\|set-start\|remove> ...` | Manage the levels `forge` creates: which one boots, their names, registering a bake you already have, deleting one. Local, no network, no sparks. See **Managing levels** below. |
|
|
232
|
+
| `bitmagic ios <build\|submit\|storekit> ...` | Ship the game as a native iOS app (Mac with Xcode). `build` packages every asset into the app, proves it boots offline on WebGPU and WebGL, and builds a Simulator app (`--run` launches it) or, with `--ipa --team <TEAMID>`, a signed store build; `submit` uploads that to App Store Connect / TestFlight. The game can sell App Store consumables through `engine.getInAppStore()` (the engine credits each purchase to its wallet exactly once); `storekit <id...>` writes `ios/StoreKit.storekit`, the local catalogue a run from Xcode buys from with no Apple account — run from `.bitmagic/ios/App/App.xcodeproj`, not `--run`. Everything under `.bitmagic/ios/` is regenerated each build; native code of your own goes in `ios/Sources/*.swift` and is compiled in every time. The Apple Developer account, agreements, banking and the products in App Store Connect are yours to set up. |
|
|
233
|
+
| `bitmagic steam <init\|art\|screenshots\|trailer\|check\|build\|play\|login\|upload\|portal> ...` | Put the game on Steam. `init`, `art`, `screenshots`, `trailer` and `check` make the store page kit — every capsule, library image and icon at Steam's exact size from AI key art and a keyed logo, 1920x1080 gameplay screenshots, a 1080p trailer ending on the logo, and the store copy, held to Valve's rules. `build` makes the Windows depot and a signed, notarized universal macOS app (a Mac is needed for it), each proven to reach gameplay with no network; `play` opens it. `login` (the creator, once, in a terminal) and `upload` ship it with SteamPipe. `portal` drives the Steamworks website in a Chrome window the creator logs in to. See **Steam** below. |
|
|
232
234
|
|
|
233
235
|
Every command exits non-zero on failure with a single-line message (no stack trace) and, where a
|
|
234
236
|
distinction is useful to an automated caller, a specific exit code — see **Exit codes** below.
|
|
@@ -1767,6 +1769,73 @@ override a stale or failed source record but cannot bypass ZIP validation. Exit
|
|
|
1767
1769
|
engine/config needs upgrading; exit 7 means package validation failed and the previous successful
|
|
1768
1770
|
ZIP is retained. These meanings are specific to the Poki target.
|
|
1769
1771
|
|
|
1772
|
+
### Steam
|
|
1773
|
+
|
|
1774
|
+
`bitmagic steam` takes the game to Steam for Windows and macOS. Ask your agent to "put the game on
|
|
1775
|
+
Steam"; the shipped `publishing-to-steam` skill walks it through. The creator does the parts only
|
|
1776
|
+
an account holder can: handles Valve's app fee and account onboarding at
|
|
1777
|
+
[partner.steamgames.com](https://partner.steamgames.com/), logs in, picks the price and the date,
|
|
1778
|
+
and approves anything that submits, publishes or releases. When asked, the agent can create the
|
|
1779
|
+
app using a purchased credit and save private drafts in an existing signed-in browser session.
|
|
1780
|
+
|
|
1781
|
+
```sh
|
|
1782
|
+
bitmagic steam init # .bitmagic/steam/store.json (copy) and art.json (layouts)
|
|
1783
|
+
bitmagic steam art generate wide|tall|hero|logo|icon # AI candidates (sparks); look, then:
|
|
1784
|
+
bitmagic steam art use <candidate> --as <source>
|
|
1785
|
+
bitmagic steam art render # every capsule at Steam's exact size, plus .ico/.icns
|
|
1786
|
+
bitmagic steam screenshots --playtest <script.mjs> # real play, scripted, shot at 1920x1080
|
|
1787
|
+
bitmagic steam screenshots --video <gameplay.mp4> # or the sharpest frame of each shot of a video
|
|
1788
|
+
bitmagic steam trailer --video <cut> --tagline "..." # 1080p H.264/AAC, ending on the logo
|
|
1789
|
+
bitmagic steam check # Valve's rules; exit 4 until the kit passes
|
|
1790
|
+
|
|
1791
|
+
bitmagic steam init --app-id <id> --windows-depot <id> --mac-depot <id> # use IDs confirmed in Steamworks
|
|
1792
|
+
bitmagic steam build # Windows .exe + signed, notarized universal .app
|
|
1793
|
+
bitmagic steam play # open the build as a player would
|
|
1794
|
+
bitmagic steam login --account <name> # the creator, in their own terminal, once
|
|
1795
|
+
bitmagic steam upload # SteamPipe; setting it live is a Steamworks click
|
|
1796
|
+
|
|
1797
|
+
bitmagic steam portal open # Steamworks in its own Chrome window
|
|
1798
|
+
bitmagic steam portal look | fill | upload | click # what an agent drives that window with
|
|
1799
|
+
```
|
|
1800
|
+
|
|
1801
|
+
**The store kit** lives in `.bitmagic/steam/`, outside the publish fingerprint, so making it never
|
|
1802
|
+
invalidates a verify. Key art is generated through the same image lane as `bitmagic cover` (drawn
|
|
1803
|
+
against the cover or the accepted reference image, never written into `world.json`); the logo is
|
|
1804
|
+
drawn on a flat colour and keyed to transparency, or authored as `.html`/`.svg`. Every capsule is
|
|
1805
|
+
then laid out from `art.json` in headless Chrome, so moving a logo or a crop is a number edit and a
|
|
1806
|
+
re-render. The trailer you upload must not be the one that ends on "Play free at bitmagic.ai" — start
|
|
1807
|
+
from the cut without that end card. `steam check` refuses copy longer than Steam allows, links off
|
|
1808
|
+
Steam, tags Steam does not have, an empty AI-content disclosure (Valve requires one, and every
|
|
1809
|
+
Bitmagic game has AI-made content), wrong image sizes, fewer than five screenshots and a trailer
|
|
1810
|
+
outside Steam's limits.
|
|
1811
|
+
|
|
1812
|
+
**The builds** are Electron shells around the self-contained bundle, with every asset inside: the
|
|
1813
|
+
payload is proven to boot with no network on WebGPU and WebGL exactly as `bitmagic ios build`
|
|
1814
|
+
proves its own, and then the finished app is launched and must reach gameplay. Electron is
|
|
1815
|
+
downloaded once per machine (`~/.bitmagic/cache/electron/`, checksum-verified, pinned to one
|
|
1816
|
+
version). The game loads from a `bitmagic://` origin, so its saves persist per player; the window
|
|
1817
|
+
opens fullscreen (F11 or Alt+Enter toggles it). The Windows build can be made on any OS. The
|
|
1818
|
+
macOS build needs a Mac with a **Developer ID Application** certificate and notarization
|
|
1819
|
+
credentials — the App Store Connect API key in `~/.bitmagic/ios-submit.json` that `bitmagic ios
|
|
1820
|
+
submit` uses, or `--notary-profile` after `xcrun notarytool store-credentials` — because Steam
|
|
1821
|
+
requires notarized macOS apps. Steam DRM must not be applied: it breaks Chromium.
|
|
1822
|
+
|
|
1823
|
+
**Uploading** downloads Valve's steamcmd on first use (`~/.bitmagic/tools/steamcmd/`; on Apple
|
|
1824
|
+
Silicon it needs Rosetta 2). `steam login` asks for the Steam password and a Steam Guard code in the
|
|
1825
|
+
terminal — run it yourself; agents never type those — and steamcmd remembers the login, so
|
|
1826
|
+
`steam upload` then runs unattended and stops with that remedy if it ever asks again. A build is
|
|
1827
|
+
never public until it is set live on the default branch in Steamworks.
|
|
1828
|
+
|
|
1829
|
+
**The Steamworks window** (`steam portal`) is your Chrome on its own profile under
|
|
1830
|
+
`~/.bitmagic/steam-portal/`, so you log in there once and your everyday browser is untouched. Your
|
|
1831
|
+
agent reads the page (`look` numbers every control), fills fields from `store.json`, uploads the kit
|
|
1832
|
+
and clicks Save. It cannot type into a login page or a password field, it stays on Valve's sites,
|
|
1833
|
+
and a button that submits, publishes, releases, pays or deletes is refused until it passes
|
|
1834
|
+
`--approved`, which the skill reserves for after you said yes. `steam portal close` closes it.
|
|
1835
|
+
|
|
1836
|
+
Not included yet: the Steamworks SDK (overlay, achievements, Steam Cloud) and a native Linux
|
|
1837
|
+
build. Test the Windows build under Proton before claiming Steam Deck or Linux compatibility.
|
|
1838
|
+
|
|
1770
1839
|
### Testing it on a phone
|
|
1771
1840
|
|
|
1772
1841
|
Publish draws the URL it just printed as a QR code, so you can point a phone at the terminal
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: publishing-to-steam
|
|
3
|
+
description: Use when the creator wants this game on Steam — a Steam store page, capsule art or a library hero, Steam screenshots or a Steam trailer, Windows or macOS builds for Steam, SteamPipe uploads, setting up Steamworks, or sending the game to Valve for review.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Shipping this game on Steam
|
|
7
|
+
|
|
8
|
+
First read `bitmagic steam --help`. If the CLI has no `steam` command, follow the project's
|
|
9
|
+
`bitmagic self-update` guidance and check help again.
|
|
10
|
+
|
|
11
|
+
## Who does what
|
|
12
|
+
|
|
13
|
+
The creator handles Valve's app fee and account onboarding, logs
|
|
14
|
+
in (Steamworks, and `bitmagic steam login` for uploads — passwords and Steam Guard codes are
|
|
15
|
+
theirs to type), decides the price and the release date, and approves every step that submits
|
|
16
|
+
for review, publishes or releases. Everything else is yours: the art, the screenshots, the
|
|
17
|
+
trailer, the store copy, the builds, the uploads, and — when they ask — filling in Steamworks.
|
|
18
|
+
An explicit request to create the app authorizes redeeming an already purchased app credit.
|
|
19
|
+
First check the partner's app list to avoid creating a duplicate. Record the actual app ID and
|
|
20
|
+
depot IDs in `steam init`; a store item ID and a package ID are different identifiers.
|
|
21
|
+
Developer and publisher may be different names. Ask once for missing support contact, price,
|
|
22
|
+
release timing and browser preference, while preparing the kit independently.
|
|
23
|
+
|
|
24
|
+
Tell them the calendar on day one, because it decides everything else:
|
|
25
|
+
|
|
26
|
+
- The store page review takes 3–5 business days. Submit at least a week before the page should go up.
|
|
27
|
+
- The page must be visible as "Coming Soon" for at least two weeks before release.
|
|
28
|
+
- Submit the store page for review before submitting the build for review; both need approval.
|
|
29
|
+
- Read the app dashboard's earliest-release restrictions and current
|
|
30
|
+
[release documentation](https://partner.steamgames.com/doc/store/releasing). Do not calculate
|
|
31
|
+
a promised release date from an assumed fee waiting period.
|
|
32
|
+
|
|
33
|
+
## 1. The store kit — no Steam account needed
|
|
34
|
+
|
|
35
|
+
```sh
|
|
36
|
+
bitmagic steam init # scaffolds .bitmagic/steam/store.json and art.json
|
|
37
|
+
bitmagic steam art generate wide|tall|hero|logo|icon # one AI candidate each (sparks); --prompt to steer
|
|
38
|
+
bitmagic steam art use <candidate> --as <source> # the logo is keyed off its flat background
|
|
39
|
+
bitmagic steam art render # every capsule, library image and icon at Steam's sizes
|
|
40
|
+
bitmagic steam screenshots --playtest <script.mjs> # real play, shot at 1920x1080 (after `steam build`)
|
|
41
|
+
bitmagic steam screenshots --video <gameplay.mp4> # or: the sharpest frame of each shot of a video
|
|
42
|
+
bitmagic steam trailer --video <cut> --tagline "..." # 1080p, H.264/AAC, ends on the game's logo
|
|
43
|
+
bitmagic steam check # exit 4 until everything meets Valve's rules
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
**Look at every image you make** before you show it to anyone. Write a `--prompt` that names the
|
|
47
|
+
hero, the setting and the palette from GAME-DESIGN.md; the wide art should leave a calm area
|
|
48
|
+
(sky, ground) where the logo can sit without covering the hero. Valve's rules, which review enforces:
|
|
49
|
+
|
|
50
|
+
- Capsules carry the game's logo and no other text — no slogans, quotes, awards or prices. The
|
|
51
|
+
small capsule is shown as small as 120x45, so its logo nearly fills it.
|
|
52
|
+
- The library hero carries NO text at all; Steam draws the library logo over it.
|
|
53
|
+
- The library logo is the logo alone on transparency. Generated logos are drawn on flat green;
|
|
54
|
+
pass `--key-color magenta` when the logo itself is green. You may instead author the logo as
|
|
55
|
+
`.html` or `.svg` and `art use` it.
|
|
56
|
+
- Render, then tune `layouts` in `.bitmagic/steam/art.json` (logo position and size, crop focus,
|
|
57
|
+
scrim) and render again until every capsule reads at a glance.
|
|
58
|
+
|
|
59
|
+
**Screenshots** show gameplay only: no menus, title cards, watermarks or concept art; at least 5,
|
|
60
|
+
each a different moment, ideally across every world or mode, with the HUD a player sees. The best
|
|
61
|
+
source is real play: write `export default async ({ page, shot, wait }) => { … }` that drives the
|
|
62
|
+
game with its own controls (or its debug hooks) through several levels and calls `shot()` mid-run;
|
|
63
|
+
it runs the packaged build offline. Any file the run had to refuse is listed — that file is
|
|
64
|
+
MISSING from the Steam build, which is how a later world's sky or music gets caught. A trailer cut
|
|
65
|
+
without title cards (`--video`) or stills you captured (`--images`) work too.
|
|
66
|
+
|
|
67
|
+
**A trailer is required to release.** The `bitmagic trailer` render usually ends on "Play free at
|
|
68
|
+
bitmagic.ai" and carries a watermark — never upload that to Steam. Start from the cut without the
|
|
69
|
+
end card; `steam trailer` adds one with the store logo. No links, prices or other stores in it.
|
|
70
|
+
|
|
71
|
+
**The copy is yours to write** in `.bitmagic/steam/store.json`, from GAME-DESIGN.md and the game
|
|
72
|
+
as it actually plays — read the code when the design doc is out of date:
|
|
73
|
+
|
|
74
|
+
- `shortDescription` (≤ 300 characters, plain text) and `about` in Steam BBCode (`[h2]`, `[list]`, `[b]`).
|
|
75
|
+
- Only what exists at launch: count the levels, characters and modes in the code.
|
|
76
|
+
- No links off Steam, no "free" for a paid game, no mention of other stores.
|
|
77
|
+
- `tags`: up to 20 of Steam's own tags, most important first (`check` validates the names).
|
|
78
|
+
- `developer`, `publisher`, `supportUrl` and/or `supportEmail`: use the creator's confirmed
|
|
79
|
+
public identities and support destination. Support links belong in Basic Info, not the description.
|
|
80
|
+
- `ai.preGenerated` is mandatory — Valve requires disclosing AI-made content, and a Bitmagic game
|
|
81
|
+
is made with generative AI. Say plainly what was generated. Fill `ai.liveGenerated` only when
|
|
82
|
+
the game calls a model while it runs, and say what keeps that output safe.
|
|
83
|
+
- `controllerSupport` is a claim players rely on: `full` only if every menu works on a gamepad.
|
|
84
|
+
- `contentNotes` drafts the mature-content survey answers for the creator to confirm.
|
|
85
|
+
- Treat minimum hardware requirements as claims needing evidence. Do not invent or save
|
|
86
|
+
untested CPU/RAM/GPU minimums just to turn a checklist green; present estimates for explicit
|
|
87
|
+
draft approval and retain the hardware-validation task before release.
|
|
88
|
+
If the creator explicitly asks you to estimate, that is approval to save clearly labeled
|
|
89
|
+
estimates in the private draft. Inspect the packaged runtime's actual OS floor (on macOS,
|
|
90
|
+
`Contents/Info.plist` → `LSMinimumSystemVersion`) and installed size; do not copy an older
|
|
91
|
+
scaffold's OS or storage defaults. Keep local store copy aligned with saved Steam fields.
|
|
92
|
+
|
|
93
|
+
Show the creator the copy, capsules, screenshots and playable build together before asking for
|
|
94
|
+
version-specific approval to publish. A request to set up Steamworks permits saving private
|
|
95
|
+
drafts and uploading the prepared media; it does not approve making that version public.
|
|
96
|
+
|
|
97
|
+
## 2. Builds and SteamPipe
|
|
98
|
+
|
|
99
|
+
```sh
|
|
100
|
+
bitmagic steam init --app-id <id> [--windows-depot <id>] [--mac-depot <id>]
|
|
101
|
+
bitmagic steam build # Windows .exe + signed, notarized universal macOS .app
|
|
102
|
+
bitmagic steam login --account <name> # the creator, in their own terminal, once per machine
|
|
103
|
+
bitmagic steam upload # SteamPipe; --branch <beta> sets a beta branch live
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
- `build` packages the self-contained bundle with every asset inside, proves it reaches gameplay
|
|
107
|
+
with NO network on WebGPU and WebGL (exit 5 names what it still fetched), then launches the
|
|
108
|
+
finished app to prove the shell works. Online features (multiplayer, AI) need a network; the
|
|
109
|
+
rest of the game must not.
|
|
110
|
+
- The macOS build needs a Mac, a "Developer ID Application" certificate in its keychain, and
|
|
111
|
+
notarization credentials: an App Store Connect API key in `~/.bitmagic/ios-submit.json` (the same
|
|
112
|
+
file `bitmagic ios submit` reads), or `--notary-profile <name>` after the creator runs
|
|
113
|
+
`xcrun notarytool store-credentials <name>`. Steam requires notarized macOS apps.
|
|
114
|
+
An earlier iOS upload may instead have used Xcode's signed-in account with
|
|
115
|
+
`xcodebuild -exportArchive`; that does not imply an App Store Connect API-key file exists.
|
|
116
|
+
With the creator's signed-in Apple browser, inspect Users and Access → Integrations →
|
|
117
|
+
App Store Connect API → Team Keys. Existing private keys are downloadable only once;
|
|
118
|
+
search the creator's known credential locations by filename without exposing key contents.
|
|
119
|
+
If a new key is necessary, prepare the name and Developer role, obtain confirmation before
|
|
120
|
+
generating persistent access, then download once and store outside the project with
|
|
121
|
+
owner-only permissions. Never include the private key in screenshots, logs or source control.
|
|
122
|
+
- `login` asks for a password and a Steam Guard code: never run it for the creator, never type
|
|
123
|
+
into it. Ask them to run it in their terminal; `upload` then works without a password.
|
|
124
|
+
Explain that SteamCMD is Valve's build uploader and its login is separate from Steamworks
|
|
125
|
+
in the browser. For a creator unfamiliar with terminals, prepare a double-click launcher
|
|
126
|
+
that changes to the game project, asks for the account name, and invokes `steam login`.
|
|
127
|
+
Use verified absolute executable paths and retain the window with a readable result;
|
|
128
|
+
never embed a password or Steam Guard code. Let the creator launch it themselves.
|
|
129
|
+
- Uploading never makes a build public. For an unreleased app, assigning the initial default
|
|
130
|
+
build enables private testing and the build checklist; it does not release the game.
|
|
131
|
+
When the creator requested complete Steam setup, perform this step within that authorization
|
|
132
|
+
after verifying the exact build, both depots and the unreleased state. For released apps,
|
|
133
|
+
changing the default build affects customers and requires version-specific approval.
|
|
134
|
+
|
|
135
|
+
In Steamworks, once per app: the Windows depot's OS is Windows and the macOS depot's is macOS
|
|
136
|
+
(SteamPipe → Depots); launch options are `<Game>.exe` for Windows and `<Game>.app` for macOS
|
|
137
|
+
(Installation → General); tick "App Bundles Are Notarized" for macOS; never apply Valve's DRM
|
|
138
|
+
wrapper — it breaks the Chromium the game runs in. Add the new Mac depot to the developer,
|
|
139
|
+
beta-testing and store packages: creating a depot does not add it to those packages. Confirm
|
|
140
|
+
the actual depot IDs rather than assuming the second is app ID + 2. Set the notarization flag
|
|
141
|
+
only after the shipped app has been notarized. Test the installed app through Steam on both
|
|
142
|
+
platforms; a Mac build machine cannot establish Windows gameplay or minimum hardware support.
|
|
143
|
+
Also set Windows/macOS under General Application Settings and the actual included CPU
|
|
144
|
+
architectures. Depot OS and launch settings alone do not populate the app's platform flags.
|
|
145
|
+
Before the first upload, inspect the pending Steamworks configuration diff. A newly created
|
|
146
|
+
depot can reject SteamPipe with `Failed to initialize build on server (Access Denied)` until
|
|
147
|
+
the depot metadata is applied through the application's Publish tab. Confirm the diff contains
|
|
148
|
+
only the intended settings and keeps an unreleased app's `ReleaseState` as `unavailable`.
|
|
149
|
+
Steamworks explains that applying configuration to an unreleased app does not release it;
|
|
150
|
+
this private setup is distinct from publishing the store page or releasing a playable game.
|
|
151
|
+
For an already released app, configuration publication can affect customers and needs the
|
|
152
|
+
creator's version-specific approval. Do not solve this error by changing account permissions
|
|
153
|
+
or asking for another login before checking whether the depot configuration is still pending.
|
|
154
|
+
|
|
155
|
+
## 3. Steamworks in a browser
|
|
156
|
+
|
|
157
|
+
Store-page setup uses Steamworks in a browser; SteamPipe handles build uploads. Prefer the
|
|
158
|
+
agent's supported browser tools and the creator's chosen signed-in tab when available. The
|
|
159
|
+
CLI browser is an alternative for agents without those tools, not a reason to ask for another
|
|
160
|
+
login. When the creator wants you to fill it in:
|
|
161
|
+
|
|
162
|
+
```sh
|
|
163
|
+
bitmagic steam portal open # a Chrome window of its own; the creator logs in there
|
|
164
|
+
bitmagic steam portal look --screenshot # the page's controls, numbered e1, e2, …
|
|
165
|
+
bitmagic steam portal fill e12 --store about
|
|
166
|
+
bitmagic steam portal upload e7 <file,file>
|
|
167
|
+
bitmagic steam portal click e3
|
|
168
|
+
bitmagic steam portal run <recipe> # use only recipes listed by --help
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
- Never type a password, a Steam Guard code or payment details, and never accept an agreement on
|
|
172
|
+
the creator's behalf: the window refuses to fill login pages and password fields.
|
|
173
|
+
- Save drafts freely. A click that submits, publishes, releases, pays or deletes is refused until
|
|
174
|
+
you pass `--approved` — use it only after the creator said yes to that exact step.
|
|
175
|
+
- After every save, wait for completion and read the page's notices. Reopen the edited section
|
|
176
|
+
to confirm persisted values, uploads and processing state. A click or initial thumbnail is
|
|
177
|
+
not evidence of a completed upload. The description editor can switch from visual to BBCode.
|
|
178
|
+
Capsule uploads may expose a drag-and-drop area rather than a clickable file chooser.
|
|
179
|
+
- The `descriptions` recipe saves and reopens both descriptions to verify persistence. Some
|
|
180
|
+
legacy fields synchronize on change/blur: filling visible text alone can save an empty
|
|
181
|
+
value. If this occurs, use normal typing or native paste, Tab out, let autocomplete finish,
|
|
182
|
+
then save. Developer/publisher entries use "Save and add another".
|
|
183
|
+
- If form values appear correct but saving still loses them, use the browser tool's native
|
|
184
|
+
typing and native Save click, then reopen to verify. The same issue can affect the AI
|
|
185
|
+
disclosure and trailer-name field. Do not keep repeating a failed fill method.
|
|
186
|
+
- If the available browser tool cannot supply files to a drag-only uploader, prepare and open
|
|
187
|
+
the exact files for the creator to drop, then handle classification, saving and verification.
|
|
188
|
+
Record the blocker rather than claiming the assets were uploaded. Keep a local progress
|
|
189
|
+
record of IDs, verified drafts, pending uploads and decisions so another session can resume.
|
|
190
|
+
- Recheck transient pricing-access failures after app creation. The package page links to
|
|
191
|
+
the bulk pricing editor: filter to the exact package, include unreleased packages, enter
|
|
192
|
+
the agreed USD base price, inspect regional conversions, and keep publication manual.
|
|
193
|
+
Submitted pricing and published pricing are separate checklist items.
|
|
194
|
+
- Read the effect of each final button. The content survey explains that completing its
|
|
195
|
+
generated ratings for an unreleased app exposes nothing until the store becomes visible.
|
|
196
|
+
Tags have their own final Publish confirmation. Respect the creator's approval policy for
|
|
197
|
+
that exact result; never confuse a completed private setup with launching the store page.
|
|
198
|
+
- If extension file upload is blocked, follow the browser tool's instructions for file-URL
|
|
199
|
+
access or use its native file picker. Native macOS Go to Folder fields may require
|
|
200
|
+
`setValue` instead of paste. Verify the selected file and the upload's saved result.
|
|
201
|
+
- Make drag-and-drop handoffs easy: copy the final media into one visible folder with numbered
|
|
202
|
+
subfolders named for Steam's Store Assets, Screenshots, Library Assets and Trailers sections.
|
|
203
|
+
Name each capsule/library file for its exact slot and include direct links and brief instructions.
|
|
204
|
+
- Library Assets has five checklist items although there are four image files. Open the logo
|
|
205
|
+
Placement Tool, inspect the logo against the hero, and save its position and size. Reopen the
|
|
206
|
+
library section and verify the dashboard checkmark. A trailer upload remains incomplete
|
|
207
|
+
while Steam is converting it; verify processing and any required trailer metadata afterward.
|
|
208
|
+
- When a recipe stops because the page changed, finish that step with `look`/`fill`/`upload`.
|
|
209
|
+
|
|
210
|
+
## What Steam players get
|
|
211
|
+
|
|
212
|
+
- Windows 10+ and macOS 13+ with the current Electron runtime. The game opens fullscreen (F11 or Alt+Enter toggles it) and saves
|
|
213
|
+
progress per player. A game can offer "Quit" and a fullscreen option where
|
|
214
|
+
`window.bitmagicDesktop` exists.
|
|
215
|
+
- No Steam overlay, achievements or cloud saves yet: those need the Steamworks SDK, which the shell
|
|
216
|
+
does not include.
|
|
217
|
+
- The Windows build can be tested under Proton for Steam Deck/Linux. Do not claim compatibility
|
|
218
|
+
or verification until that test has actually passed.
|
|
@@ -1,24 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
boundingBox: {
|
|
5
|
-
minX: number;
|
|
6
|
-
minY: number;
|
|
7
|
-
minZ: number;
|
|
8
|
-
maxX: number;
|
|
9
|
-
maxY: number;
|
|
10
|
-
maxZ: number;
|
|
11
|
-
};
|
|
12
|
-
fragmentCount: number;
|
|
13
|
-
/** Absent when the fragment table could not be walked to its end. */
|
|
14
|
-
voxelCount?: number;
|
|
15
|
-
}
|
|
16
|
-
/** True when the first four bytes are the VXL3 magic — cheap, no copy, no decompression. */
|
|
17
|
-
export declare function isVxl3(bytes: Uint8Array): boolean;
|
|
1
|
+
import { isVxl3, type VxlV3Summary } from '@bitmagic/asset-core';
|
|
2
|
+
export { isVxl3 };
|
|
3
|
+
export type VxlSummary = VxlV3Summary;
|
|
18
4
|
/**
|
|
19
|
-
* Read a VXL3 file's header. Returns `null` for anything that is not a well-formed VXL3
|
|
20
|
-
* JSON `.vxl`, a truncated file, an unknown compression id — so the
|
|
21
|
-
* instead of writing an asset entry the engine would then fail to load.
|
|
5
|
+
* Read a VXL3 file's header. Returns `null` for anything that is not a well-formed VXL3 the engine
|
|
6
|
+
* reads — a legacy JSON `.vxl`, a truncated file, an unknown compression id or version — so the
|
|
7
|
+
* caller can name the problem instead of writing an asset entry the engine would then fail to load.
|
|
22
8
|
*/
|
|
23
9
|
export declare function summarizeVxl(bytes: Uint8Array): VxlSummary | null;
|
|
24
10
|
/**
|
|
@@ -1,111 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The metadata a `.vxl` file carries in its own header, read here so `bitmagic assets add x.vxl`
|
|
3
3
|
* can record `boundingBox` / `voxelSize` / `voxelCount` the way the Creator's upload does — the
|
|
4
|
-
* Creator gets them from game-play-agent's `/api/analyze-asset
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* Only what the fixed 48-byte body header states outright is trusted unconditionally: bounds,
|
|
8
|
-
* LOD-0 voxel size and fragment count. `voxelCount` is the sum of the LOD-0 fragments' leaf counts,
|
|
9
|
-
* found by walking the fragment table (its stride is `16 + leafCount × (7 + paletteIdxBytes)` for
|
|
10
|
-
* every version through v12 — every addition since v5 changed what is INSIDE a fragment and what
|
|
11
|
-
* FOLLOWS the table, never its size; the v10 rig's bone column is per leaf but lives in its own
|
|
12
|
-
* trailing section). Should a future version change that, the walk runs off the end and the count
|
|
13
|
-
* is simply omitted rather than reported wrong.
|
|
14
|
-
*
|
|
15
|
-
* Layout reference: game/src/engine/VxlV3Format.ts (the wire-format doc comment at its top).
|
|
4
|
+
* Creator gets them from game-play-agent's `/api/analyze-asset`, which a CLI project cannot reach.
|
|
5
|
+
* Both read the same bytes through one reader, `readVxlV3Summary` in `@bitmagic/asset-core`, whose
|
|
6
|
+
* version ceiling the engine's tests pin to the engine's own codec.
|
|
16
7
|
*/
|
|
17
8
|
import * as zlib from 'zlib';
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
const WRAPPER_BYTES = 5;
|
|
21
|
-
const BODY_HEADER_BYTES = 48;
|
|
22
|
-
/**
|
|
23
|
-
* The versions the engine's own decoder accepts (`VxlV3Format.ts`: 3 no-LOD, 4 LOD trailer,
|
|
24
|
-
* 5 columnar, 6 emissive, 7 slots, 8 per-LOD material columns, 9 block types, 10 rig,
|
|
25
|
-
* 11 material classes).
|
|
26
|
-
*
|
|
27
|
-
* Checked rather than merely recorded: this header parse only reads the fixed 48-byte prologue,
|
|
28
|
-
* which a FUTURE version could keep byte-compatible while changing what follows. Accepting such a
|
|
29
|
-
* file would write an `assets[]` entry the vendored engine then throws on at load — the exact
|
|
30
|
-
* outcome returning `null` exists to prevent.
|
|
31
|
-
*
|
|
32
|
-
* KEEP THIS IN STEP with the engine's version ladder. The cost of lagging is silent and one-sided:
|
|
33
|
-
* the engine happily loads a version this file has not heard of, so a stale ceiling refuses a
|
|
34
|
-
* perfectly good asset — `bitmagic assets add` reports the file as malformed, with nothing to
|
|
35
|
-
* suggest that the file is fine and the CLI is behind.
|
|
36
|
-
*/
|
|
37
|
-
const MIN_SUPPORTED_VERSION = 3;
|
|
38
|
-
const MAX_SUPPORTED_VERSION = 12;
|
|
39
|
-
/** True when the first four bytes are the VXL3 magic — cheap, no copy, no decompression. */
|
|
40
|
-
export function isVxl3(bytes) {
|
|
41
|
-
if (bytes.byteLength < 4)
|
|
42
|
-
return false;
|
|
43
|
-
return new DataView(bytes.buffer, bytes.byteOffset, 4).getUint32(0, true) === VXL3_MAGIC;
|
|
44
|
-
}
|
|
9
|
+
import { isVxl3, readVxlV3Summary } from '@bitmagic/asset-core';
|
|
10
|
+
export { isVxl3 };
|
|
45
11
|
/**
|
|
46
|
-
* Read a VXL3 file's header. Returns `null` for anything that is not a well-formed VXL3
|
|
47
|
-
* JSON `.vxl`, a truncated file, an unknown compression id — so the
|
|
48
|
-
* instead of writing an asset entry the engine would then fail to load.
|
|
12
|
+
* Read a VXL3 file's header. Returns `null` for anything that is not a well-formed VXL3 the engine
|
|
13
|
+
* reads — a legacy JSON `.vxl`, a truncated file, an unknown compression id or version — so the
|
|
14
|
+
* caller can name the problem instead of writing an asset entry the engine would then fail to load.
|
|
49
15
|
*/
|
|
50
16
|
export function summarizeVxl(bytes) {
|
|
51
|
-
|
|
52
|
-
// measured after decompression below. A gzipped body compresses well under 48 bytes for a
|
|
53
|
-
// near-empty asset, and gating on the raw length here rejected such files as malformed.
|
|
54
|
-
if (!isVxl3(bytes) || bytes.byteLength < WRAPPER_BYTES)
|
|
55
|
-
return null;
|
|
56
|
-
const compressionId = bytes[4];
|
|
57
|
-
const payload = bytes.subarray(WRAPPER_BYTES);
|
|
58
|
-
let body;
|
|
59
|
-
if (compressionId === 1) {
|
|
60
|
-
try {
|
|
61
|
-
body = new Uint8Array(zlib.gunzipSync(payload));
|
|
62
|
-
}
|
|
63
|
-
catch {
|
|
64
|
-
return null;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
else if (compressionId === 0) {
|
|
68
|
-
body = payload;
|
|
69
|
-
}
|
|
70
|
-
else {
|
|
71
|
-
return null;
|
|
72
|
-
}
|
|
73
|
-
if (body.byteLength < BODY_HEADER_BYTES)
|
|
74
|
-
return null;
|
|
75
|
-
const view = new DataView(body.buffer, body.byteOffset, body.byteLength);
|
|
76
|
-
const version = view.getUint32(0, true);
|
|
77
|
-
if (version < MIN_SUPPORTED_VERSION || version > MAX_SUPPORTED_VERSION)
|
|
78
|
-
return null;
|
|
79
|
-
const minVoxelSize = view.getFloat32(4, true);
|
|
80
|
-
const boundingBox = {
|
|
81
|
-
minX: view.getFloat32(16, true),
|
|
82
|
-
minY: view.getFloat32(20, true),
|
|
83
|
-
minZ: view.getFloat32(24, true),
|
|
84
|
-
maxX: view.getFloat32(28, true),
|
|
85
|
-
maxY: view.getFloat32(32, true),
|
|
86
|
-
maxZ: view.getFloat32(36, true),
|
|
87
|
-
};
|
|
88
|
-
const paletteIdxBytes = body[41];
|
|
89
|
-
if (paletteIdxBytes !== 1 && paletteIdxBytes !== 2)
|
|
90
|
-
return null;
|
|
91
|
-
const paletteCount = view.getUint16(42, true);
|
|
92
|
-
const fragmentCount = view.getUint16(44, true);
|
|
93
|
-
const summary = { version, minVoxelSize, boundingBox, fragmentCount };
|
|
94
|
-
// Best-effort leaf total. Every fragment header is 16 bytes (leafCount + aabb) followed by
|
|
95
|
-
// leafCount records of 7 + paletteIdxBytes bytes, however those bytes are arranged inside.
|
|
96
|
-
const leafBytes = 7 + paletteIdxBytes;
|
|
97
|
-
let cursor = BODY_HEADER_BYTES + paletteCount * 2;
|
|
98
|
-
let voxelCount = 0;
|
|
99
|
-
for (let f = 0; f < fragmentCount; f++) {
|
|
100
|
-
if (cursor + 16 > body.byteLength)
|
|
101
|
-
return summary;
|
|
102
|
-
const leafCount = view.getUint32(cursor, true);
|
|
103
|
-
voxelCount += leafCount;
|
|
104
|
-
cursor += 16 + leafCount * leafBytes;
|
|
105
|
-
if (cursor > body.byteLength)
|
|
106
|
-
return summary;
|
|
107
|
-
}
|
|
108
|
-
return { ...summary, voxelCount };
|
|
17
|
+
return readVxlV3Summary(bytes, (payload) => new Uint8Array(zlib.gunzipSync(payload)));
|
|
109
18
|
}
|
|
110
19
|
/** "glTF" little-endian — the magic every binary GLB starts with (`VoxelMessageHandlers` checks it too). */
|
|
111
20
|
const GLB_MAGIC = 0x46546c67;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vxl-summary.js","sourceRoot":"","sources":["../../src/assets/vxl-summary.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"vxl-summary.js","sourceRoot":"","sources":["../../src/assets/vxl-summary.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAqB,MAAM,sBAAsB,CAAC;AAEnF,OAAO,EAAE,MAAM,EAAE,CAAC;AAGlB;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,KAAiB;IAC5C,OAAO,gBAAgB,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACxF,CAAC;AAED,4GAA4G;AAC5G,MAAM,SAAS,GAAG,UAAU,CAAC;AAE7B;;;;;;;GAOG;AACH,MAAM,UAAU,KAAK,CAAC,KAAiB;IACrC,IAAI,KAAK,CAAC,UAAU,GAAG,EAAE;QAAE,OAAO,KAAK,CAAC;IACxC,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,SAAS,CAAC;AAC1F,CAAC"}
|
package/dist/cli.d.ts
CHANGED
package/dist/cli.js
CHANGED
|
@@ -36,6 +36,7 @@ import { judgeCommand } from './commands/judge.js';
|
|
|
36
36
|
import { forgeCommand } from './commands/forge.js';
|
|
37
37
|
import { publishCommand } from './commands/publish.js';
|
|
38
38
|
import { iosCommand } from './commands/ios.js';
|
|
39
|
+
import { steamCommand } from './commands/steam.js';
|
|
39
40
|
import { toolsCommand } from './commands/tools.js';
|
|
40
41
|
// citty's runMain() catches every error thrown from a command's `run()` internally and calls
|
|
41
42
|
// process.exit() itself — it never rejects the promise it returns, so the `.catch()` below
|
|
@@ -233,6 +234,7 @@ const rawCommands = {
|
|
|
233
234
|
forge: forgeCommand,
|
|
234
235
|
publish: publishCommand,
|
|
235
236
|
ios: iosCommand,
|
|
237
|
+
steam: steamCommand,
|
|
236
238
|
tools: toolsCommand,
|
|
237
239
|
};
|
|
238
240
|
export const subCommands = Object.fromEntries(Object.entries(rawCommands).map(([name, command]) => [name, withCleanErrors(command, name)]));
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/check.js
CHANGED
|
@@ -3,6 +3,7 @@ import { CliError } from '../errors.js';
|
|
|
3
3
|
import { loadProjectContext, projectBin } from '../project/context.js';
|
|
4
4
|
import { spawnBinSync } from '../project/spawn-bin.js';
|
|
5
5
|
import { createOutput } from '../output.js';
|
|
6
|
+
import { describeDevOnlyThreeUses, scanWorkForDevOnlyThree } from '../project/published-three.js';
|
|
6
7
|
export const checkCommand = defineCommand({
|
|
7
8
|
meta: { name: 'check', description: 'Type-check the game against the vendored engine.' },
|
|
8
9
|
args: {
|
|
@@ -24,6 +25,10 @@ export const checkCommand = defineCommand({
|
|
|
24
25
|
// tsc already printed the diagnostics; add nothing but the exit code.
|
|
25
26
|
throw new CliError('Type check failed.', result.status ?? 1);
|
|
26
27
|
}
|
|
28
|
+
// tsc cannot see this one: the `three` types it checks against describe the full build.
|
|
29
|
+
const devOnlyThree = scanWorkForDevOnlyThree(context.root);
|
|
30
|
+
if (devOnlyThree.length > 0)
|
|
31
|
+
throw new CliError(describeDevOnlyThreeUses(devOnlyThree));
|
|
27
32
|
output.info('Type check passed.');
|
|
28
33
|
// tsc's own diagnostics went straight to the inherited stdio, so a --json run's stdout is
|
|
29
34
|
// clean only on SUCCESS. A failure throws above and the wrapper emits the error document —
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAElG,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAAC;IACxC,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,kDAAkD,EAAE;IACxF,IAAI,EAAE;QACJ,IAAI,EAAE;YACJ,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,kEAAkE;SAChF;KACF;IACD,GAAG,CAAC,EAAE,IAAI,EAAE;QACV,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,kBAAkB,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC5C,4FAA4F;QAC5F,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QACxF,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,IAAI,QAAQ,CAAC,0CAA0C,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACvF,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,sEAAsE;YACtE,MAAM,IAAI,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;QAC/D,CAAC;QACD,wFAAwF;QACxF,MAAM,YAAY,GAAG,uBAAuB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3D,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,QAAQ,CAAC,wBAAwB,CAAC,YAAY,CAAC,CAAC,CAAC;QACxF,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAClC,0FAA0F;QAC1F,2FAA2F;QAC3F,yFAAyF;QACzF,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAClD,CAAC;CACF,CAAC,CAAC"}
|
package/dist/commands/forge.js
CHANGED
|
@@ -308,7 +308,7 @@ async function runBrowserSteps(options) {
|
|
|
308
308
|
gamePort: port,
|
|
309
309
|
gameId: context.metadata.gameId,
|
|
310
310
|
gameData: readProjectGameData(context.root, context.metadata),
|
|
311
|
-
// api-server, NOT game-play-agent: the engine reads this back
|
|
311
|
+
// api-server, NOT game-play-agent: the engine reads this back through `getAgentUrl()` and
|
|
312
312
|
// uses it to reach `POST /api/cli/v1/uploads/signed-url` for every GLB and .vwld it writes.
|
|
313
313
|
// The LOCAL proxy, not api-server directly. The engine calls a hardcoded
|
|
314
314
|
// `${agentUrl}/api/generate-upload-url` with no Authorization header, which api-server
|