@bitmagic/cli 0.1.64-dev.8 → 0.1.64
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 +29 -6
- package/assets/blender-level/README.md +6 -1
- package/assets/blender-level/bmlevel/core.py +78 -1
- package/assets/blender-level/review.py +106 -11
- package/assets/blender-level/tests/test_core.py +49 -0
- package/dist/cli.d.ts +8 -0
- package/dist/commands/forge.d.ts +8 -2
- package/dist/commands/forge.js +10 -4
- package/dist/commands/forge.js.map +1 -1
- package/dist/commands/generate.d.ts +2 -0
- package/dist/commands/generate.js +6 -0
- package/dist/commands/generate.js.map +1 -1
- package/dist/commands/publish.d.ts +5 -0
- package/dist/commands/publish.js +29 -3
- package/dist/commands/publish.js.map +1 -1
- package/dist/editor/design.d.ts +1 -0
- package/dist/editor/design.js +7 -3
- package/dist/editor/design.js.map +1 -1
- package/dist/editor/game-info-panel.d.ts +33 -0
- package/dist/editor/game-info-panel.js +179 -0
- package/dist/editor/game-info-panel.js.map +1 -0
- package/dist/editor/game-info.d.ts +55 -0
- package/dist/editor/game-info.js +126 -0
- package/dist/editor/game-info.js.map +1 -0
- package/dist/editor/server.js +59 -3
- package/dist/editor/server.js.map +1 -1
- package/dist/editor/shell-page.js +196 -11
- package/dist/editor/shell-page.js.map +1 -1
- package/dist/forge/two-d-gate.d.ts +10 -0
- package/dist/forge/two-d-gate.js +35 -1
- package/dist/forge/two-d-gate.js.map +1 -1
- package/dist/ios/collect-urls.d.ts +2 -0
- package/dist/ios/collect-urls.js +2 -2
- package/dist/ios/collect-urls.js.map +1 -1
- package/dist/publish/client.d.ts +18 -0
- package/dist/publish/client.js.map +1 -1
- package/dist/publish/record.d.ts +9 -1
- package/dist/publish/record.js +2 -0
- package/dist/publish/record.js.map +1 -1
- package/dist/publish/urls.d.ts +29 -0
- package/dist/publish/urls.js +39 -0
- package/dist/publish/urls.js.map +1 -0
- package/dist/scaffold/blender-level-skill-files.d.ts +7 -0
- package/dist/scaffold/blender-level-skill-files.js +129 -21
- package/dist/scaffold/blender-level-skill-files.js.map +1 -1
- package/dist/scaffold/project-files.js +2 -2
- package/dist/scaffold/skill-files.js +18 -1
- package/dist/scaffold/skill-files.js.map +1 -1
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -199,7 +199,7 @@ browser reloads itself on every change and the assets panel shows each generatio
|
|
|
199
199
|
| `bitmagic reload [--port <port>]` | Tell a running `bitmagic dev` to reload the browser now. For agents: run it when you finish a round of edits. Exits 0 and does nothing when no dev server is running. Reaches only this project's own server — never another project's, whatever port that happens to be on. |
|
|
200
200
|
| `bitmagic verify [--timeout <ms>] [--renderer webgpu\|webgl] [--platform desktop\|mobile\|both] [--fast] [--watch]` | Build, boot the game in a headless browser, start the game the way a player would, and report what broke. That means clicking through whatever the pre-play screen asks for — a level chooser or any other `hud.startScreen.selections` step is answered with its first option, the same default the engine takes when a flow skips it — and then pressing the Play button. A game without the button passes as long as gameplay starts by itself (auto-starting genres, custom start UIs); a run where gameplay never starts fails. The settle is adaptive: the run ends as soon as the live engine proves stable gameplay (state, rendered frames, no fresh errors, player standing), with `--timeout` as the cap. The verdict includes live engine state — actual GPU backend, fps, player position, physics body count, gameplay events (see **Gameplay events** below) — recorded in `result.json`. `--renderer` pins the pipeline (default `webgpu`, what players run; a silent WebGPU→WebGL2 fallback **fails** the run, and `--renderer webgl` is the deliberate escape hatch). A run failing on a lost WebGL context retries once on software rendering automatically. `--fast` skips the screenshot pipeline (then there is no thumbnail candidate from this run). `--watch` keeps everything warm — incremental `tsc --watch`, one vite, one browser — and re-verifies on file change in seconds; `--fast` is the watch default (`--no-fast` restores the screenshot). `--platform` picks what the run emulates — see **Verifying the mobile path** below. Only one verify drives a browser at a time on a machine: a second one, from any project, waits its turn and says whom it is waiting for (see **One verify at a time** below). Every run also reports the engine's mobile-parity check: a desktop action with no touch button is a warning, and a **failure** when `game.json` declares `primaryPlatform: "mobile"`. Writes the artifacts the publish gate reads (see below). |
|
|
201
201
|
| `bitmagic build [--single-file]` | Bundle the game into a single `.bitmagic/build/index.html`. The engine, your game and its data are inlined; three.js, Rapier and the other third-party packages load from a CDN at the versions your import map pins — the same shape a game published from bitmagic.ai has. `--single-file` inlines those too, for a game that has to run with no network (offline, `file://`, a packaged shell); the file is several megabytes bigger. Rarely needs to be run by hand — `publish` builds automatically when the project changed. |
|
|
202
|
-
| `bitmagic publish [--visibility public\|private] [--name <name>] [--description <desc>] [--force] [--single-file] [--no-qr]` | Verify-gate, build if needed, and upload straight to GCS. `--single-file` publishes the offline bundle described under `bitmagic build`; switching the flag between runs always rebuilds, since it changes nothing on disk for the reuse check to notice. **Keeps the game's current visibility**; a new game is private until published with `--visibility public`. Shows the
|
|
202
|
+
| `bitmagic publish [--visibility public\|private] [--name <name>] [--description <desc>] [--force] [--single-file] [--version-url] [--no-qr]` | Verify-gate, build if needed, and upload straight to GCS. `--single-file` publishes the offline bundle described under `bitmagic build`; switching the flag between runs always rebuilds, since it changes nothing on disk for the reuse check to notice. **Keeps the game's current visibility**; a new game is private until published with `--visibility public`. Prints the link worth sharing: `bitmagic.ai/play/<ID>/` — the game's page, with its name, cover and comments — for a public game, and `bitmagic.ai/games/<ID>/` for a private one. Both always serve the newest publish, so a link handed out today keeps working after tomorrow's publish; `--version-url` also prints the URL of this one build (`.../indexN.html`), for pinning a bug report to it. Shows the shared URL as a QR code so you can scan it onto a phone — drawn in the terminal, or written to `.bitmagic/publish-qr.png` when it cannot be. `--no-qr` skips both. |
|
|
203
203
|
| `bitmagic self-update [--tag latest\|dev]` | Update the **CLI itself** to the newest build of its line, installing into the place this CLI actually lives rather than wherever the `npm` on your `PATH` would put it — which under nvm is routinely somewhere else. Reads the project's line from `bitmagic.json` when there is one, so it also fixes a wrong-line install; `--tag` overrides. Verifies the version on disk moved, and refuses (naming the path) for an `npx` run, a source checkout, or an install shape it cannot recognise. Not to be confused with `upgrade`, which is about the project's engine. |
|
|
204
204
|
| `bitmagic upgrade [--engine <version>] [--force]` | Refresh vendored platform files and the CLI's own skills to the currently published engine. Refuses a dirty git tree unless `--force`. Also records the project's `environment` in `bitmagic.json` if it has none yet — the engine it just vendored came from that api-server — and says so when it does. |
|
|
205
205
|
| `bitmagic generate <skybox\|background\|block-type\|sound\|music\|image\|video\|character\|animation\|model\|prop\|vehicle> ...` | Generate one asset directly into `src/work/world.json`. Costs sparks. `model` mints a **new** 3D object from a prompt, `prop` upgrades an existing placeholder **in place** (both produce voxels directly; `--mesh` takes the older mesh path; a low-poly project keeps the mesh as a `glb` asset — see **Art style**), `vehicle` adds a new drivable one, `animation` takes a parameter spec rather than a prompt, `block-type` registers a custom voxel block, `video` makes a short clip for a cutscene (played with `engine.playVideo("<id>")`) — see **Cutscene clips** below. `skybox` and `background` write the **same** field: pick one. |
|
|
@@ -558,7 +558,8 @@ the critic compared, and the level's notes record the final match — and each s
|
|
|
558
558
|
"Using the project's reference image" when it does. `--no-reference` skips it for one call,
|
|
559
559
|
`--reference-image <file>` or `--reference-image-url <url>` substitutes another image for one
|
|
560
560
|
call, `bitmagic reference show` shows what is accepted, and `bitmagic reference clear` stops
|
|
561
|
-
using it.
|
|
561
|
+
using it. If `bitmagic dev` is open, the accepted image is also on screen there — click the game's
|
|
562
|
+
name in the top bar (see **The top bar** below).
|
|
562
563
|
|
|
563
564
|
**Your own picture works everywhere a generated one does.** "Create a world like this" with a
|
|
564
565
|
photo in hand is `bitmagic forge --prompt "..." --reference-image ./that-photo.jpg` — the file
|
|
@@ -695,10 +696,20 @@ The bar starts by saying **whose** view this is, because with two games open —
|
|
|
695
696
|
CLIs, one from each line — two dev views look identical otherwise. After the wordmark comes a
|
|
696
697
|
badge: **DEV BUILD**, in the warning tint, for a CLI installed from `@bitmagic/cli@dev`, or
|
|
697
698
|
**RELEASE** for the release line (hover for the exact version). Then the game by its name — the
|
|
698
|
-
`gameName` in `src/work/game.json`, or the folder's name until it has one
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
699
|
+
`gameName` in `src/work/game.json`, or the folder's name until it has one. The browser tab's title
|
|
700
|
+
leads with the game's name too, and says `(dev build)` on the dev line, so the tab strip tells them
|
|
701
|
+
apart before you click.
|
|
702
|
+
|
|
703
|
+
Click the name for the rest of the answer: the game's id, the environment it talks to (`dev` or
|
|
704
|
+
`prod`), its genre and physics mode, the art style every generation inherits, the platform it is
|
|
705
|
+
built for, its engine version — and the two pictures that decide how the whole project looks, the
|
|
706
|
+
**accepted reference image** and the **cover art**, side by side. Both were previously visible only
|
|
707
|
+
in a terminal (`bitmagic reference show`, `bitmagic cover`); the dialog draws them from the local
|
|
708
|
+
copies under `.bitmagic/`, so they are there whether or not the recorded URL still resolves. Click
|
|
709
|
+
either thumbnail to see it full size — a couple of hundred pixels of an image generated at 1024 is
|
|
710
|
+
not enough to judge the look it exists to fix; click anywhere, or press Escape, and the dialog is
|
|
711
|
+
still underneath. A project missing one is told which command makes it. The reference's caption warns you when it was
|
|
712
|
+
never re-hosted, because that URL — the one every later generation inherits — will expire.
|
|
702
713
|
|
|
703
714
|
What you reach for all session sits in the bar: the **Game / Editor** tabs, **Auto-reload**, the
|
|
704
715
|
status light, **Assets** (which shows whether the panel is open), **Screenshot** and **Reload**.
|
|
@@ -1268,6 +1279,18 @@ read by everything that used to assume cubes:
|
|
|
1268
1279
|
| `bitmagic judge` with no `## Art direction` | grades the style it sees | judges within low-poly |
|
|
1269
1280
|
| the engine on load | sunset hemisphere light and a faint bloom | neither; a `MeshLevel` brings its own lighting |
|
|
1270
1281
|
|
|
1282
|
+
In a low-poly game the textured rig IS the product, so `bitmagic generate character` forges it with
|
|
1283
|
+
`runware-meshy-6`: an even remesh with symmetric limbs and an enforced A-pose, rather than a TRELLIS
|
|
1284
|
+
reconstruction that is only as low-poly as the concept image happened to be. **That costs about
|
|
1285
|
+
$0.80 and six minutes per character**, against fractions of a cent and forty seconds — pass
|
|
1286
|
+
`--mesh-model unified-trellis` to put one back on the cheap lane. A voxel game does not get it: the
|
|
1287
|
+
body is rebuilt out of cubes, so the remesh, the pose and the texture are all thrown away.
|
|
1288
|
+
|
|
1289
|
+
Its wall time is why the forge job budget is 20 minutes and api-server's in-handler generation
|
|
1290
|
+
deadline is 29: at the old 8-minute and 280s ceilings a Meshy character was killed about three
|
|
1291
|
+
seconds before it finished, after being billed. Cloud Run's own 1800s request timeout was already
|
|
1292
|
+
high enough and is set in roleverse-infra.
|
|
1293
|
+
|
|
1271
1294
|
Both commands print `Art style: … (game.json)` so a transcript shows which medium drove them, and a
|
|
1272
1295
|
value that is neither word is reported once and treated as voxel. The web Creator does not read
|
|
1273
1296
|
the field: its planner builds voxel games only.
|
|
@@ -15,10 +15,15 @@ skill's step 1 tells an agent how to copy them into a project's `tools/blender-l
|
|
|
15
15
|
| `bmlevel/` | Blender, or python3 for a dry run | the authoring vocabulary (`__init__.py`), the bpy-free maths and JSON writers (`core.py`), the Blender backend (`scene_bpy.py`) and the recording backend (`scene_null.py`) |
|
|
16
16
|
| `example_level.py` | either | a complete hut-and-courtyard level using every helper; the tests' fixture |
|
|
17
17
|
| `audit.py` | Blender | ray-cast audit of the COLLIDERS: floor continuity, door and route clearance, sealed envelopes, z-fighting candidates |
|
|
18
|
-
| `review.py` | Blender | deterministic review renders (overview, every door, every stair, every room) and a contact sheet |
|
|
18
|
+
| `review.py` | Blender | deterministic review renders (overview, every door, every stair, every room) and a contact sheet; `--shot 'FROM -> TO'` aims a frame anywhere, `--only` renders just those, `--lighting game` swaps the review fill for the engine's interior preset and the level's own lamps |
|
|
19
19
|
| `sync_world.py` | python3 | carries the doors, spawn and `terrain.shape: 'none'` into `src/work/world.json` |
|
|
20
20
|
| `tests/` | python3 | `python3 -m unittest discover -s tests` — no Blender needed; `cli`'s `pnpm test` runs it |
|
|
21
21
|
|
|
22
|
+
`review.py` and `audit.py` are the skill's **inner loop**: with the build they answer every
|
|
23
|
+
geometric and (under `--lighting game`) every lighting question about a level for a few seconds
|
|
24
|
+
and no network, which is what lets the engine handoff — `bitmagic assets add`, `sync_world.py`,
|
|
25
|
+
`bitmagic verify`, `bitmagic judge` — happen once per design pass instead of once per edit.
|
|
26
|
+
|
|
22
27
|
The JSON contract is owned by the engine (`game/src/engine/meshlevel/MeshLevelSchema.ts`,
|
|
23
28
|
documented in `game/agent-docs/mesh-level.md`); `core.py` writes exactly that shape, and the
|
|
24
29
|
engine's validator is the arbiter when the two disagree. The intended end state is a
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
"""The bpy-free half of bmlevel: coordinates, records, collider math
|
|
1
|
+
"""The bpy-free half of bmlevel: coordinates, records, collider math, the JSON writers and the
|
|
2
|
+
review cameras — both the standard set (`review_cameras`) and the ad-hoc `--shot` specs
|
|
3
|
+
(`resolve_point`, `custom_shot`) review.py aims from a level JSON.
|
|
2
4
|
|
|
3
5
|
Everything a level script says is in GAME coordinates — metres, Y up, +Z forward, yaw in radians
|
|
4
6
|
about +Y so that an entity's forward at yaw θ is (sin θ, 0, cos θ) (engine/agent-docs/
|
|
@@ -436,3 +438,78 @@ def review_cameras(level: dict, doors: Sequence[dict] = ()) -> list[dict]:
|
|
|
436
438
|
fx, fz = rotate_xz(0.0, 1.0, yaw) if long_axis_z else rotate_xz(1.0, 0.0, yaw)
|
|
437
439
|
shots.append({'name': f"volume-{v['name']}", 'kind': 'persp', 'position': (p[0] + ox, eye_y, p[2] + oz), 'target': (p[0] + ox + fx * 4, eye_y - 0.3, p[2] + oz + fz * 4)})
|
|
438
440
|
return shots
|
|
441
|
+
|
|
442
|
+
|
|
443
|
+
# ---------------------------------------------------------------- ad-hoc shots
|
|
444
|
+
|
|
445
|
+
EYE_HEIGHT = 1.6
|
|
446
|
+
"""Where a standing player's camera is above the floor — the height every review shot uses."""
|
|
447
|
+
|
|
448
|
+
|
|
449
|
+
def level_center(level: dict) -> Vec3:
|
|
450
|
+
"""The centre of the collider bounds, at eye height above their floor: what a shot with no
|
|
451
|
+
target looks at."""
|
|
452
|
+
pts: list[Vec3] = []
|
|
453
|
+
for c in level.get('colliders', []):
|
|
454
|
+
if c['shape'] == 'box':
|
|
455
|
+
pts.extend(box_corners(c['position'], c['size'], c.get('yaw', 0.0)))
|
|
456
|
+
else:
|
|
457
|
+
pts.extend(flat_to_points(c['vertices']))
|
|
458
|
+
b = aabb(pts)
|
|
459
|
+
if not b:
|
|
460
|
+
return (0.0, EYE_HEIGHT, 0.0)
|
|
461
|
+
return ((b[0][0] + b[1][0]) / 2, b[0][1] + EYE_HEIGHT, (b[0][2] + b[1][2]) / 2)
|
|
462
|
+
|
|
463
|
+
|
|
464
|
+
def resolve_point(spec: str, level: dict, doors: Sequence[dict] = (), *, as_eye: bool = False) -> Vec3:
|
|
465
|
+
"""A game-space point from one end of a `--shot` spec.
|
|
466
|
+
|
|
467
|
+
`landmark:<name>`, `volume:<name>`, `door:<id>` or a raw `x,y,z`. Landmarks, doors and volumes
|
|
468
|
+
are recorded at the floor, the door's centre and the room's centre respectively, so `as_eye`
|
|
469
|
+
(the FROM end) lifts each to a standing camera and the TO end aims at the thing itself. Raw
|
|
470
|
+
coordinates are used exactly as written, either end — they are the escape hatch.
|
|
471
|
+
"""
|
|
472
|
+
spec = spec.strip()
|
|
473
|
+
kind, _, rest = spec.partition(':')
|
|
474
|
+
kind, rest = kind.strip().lower(), rest.strip()
|
|
475
|
+
if kind == 'landmark':
|
|
476
|
+
for l in level.get('landmarks', []):
|
|
477
|
+
if l['name'] == rest:
|
|
478
|
+
x, y, z = l['position']
|
|
479
|
+
return (x, y + (EYE_HEIGHT if as_eye else 1.0), z)
|
|
480
|
+
known = ', '.join(sorted(l['name'] for l in level.get('landmarks', []))) or '(none)'
|
|
481
|
+
raise ValueError(f'no landmark named {rest!r} — the level has: {known}')
|
|
482
|
+
if kind == 'volume':
|
|
483
|
+
for v in level.get('volumes', []):
|
|
484
|
+
if v['name'] == rest:
|
|
485
|
+
x, y, z = v['position']
|
|
486
|
+
return (x, y - v['size'][1] / 2 + EYE_HEIGHT, z) if as_eye else (x, y, z)
|
|
487
|
+
known = ', '.join(sorted(v['name'] for v in level.get('volumes', []))) or '(none)'
|
|
488
|
+
raise ValueError(f'no volume named {rest!r} — the level has: {known}')
|
|
489
|
+
if kind == 'door':
|
|
490
|
+
for d in doors:
|
|
491
|
+
if d['id'] == rest:
|
|
492
|
+
p = d['position']
|
|
493
|
+
x, y, z = (p['x'], p['y'], p['z']) if isinstance(p, dict) else tuple(p)
|
|
494
|
+
return (x, y - d['height'] / 2 + EYE_HEIGHT, z) if as_eye else (x, y, z)
|
|
495
|
+
known = ', '.join(sorted(d['id'] for d in doors)) or '(none)'
|
|
496
|
+
raise ValueError(f'no door with id {rest!r} — the level has: {known}')
|
|
497
|
+
parts = [p for p in spec.replace(' ', '').split(',') if p]
|
|
498
|
+
if len(parts) == 3:
|
|
499
|
+
try:
|
|
500
|
+
return (float(parts[0]), float(parts[1]), float(parts[2]))
|
|
501
|
+
except ValueError:
|
|
502
|
+
pass
|
|
503
|
+
raise ValueError(f'cannot read shot point {spec!r} — use landmark:<name>, volume:<name>, door:<id> or x,y,z')
|
|
504
|
+
|
|
505
|
+
|
|
506
|
+
def custom_shot(spec: str, index: int, level: dict, doors: Sequence[dict] = (), fov: float | None = None) -> dict:
|
|
507
|
+
"""One `--shot` argument as a review shot. `'FROM -> TO'`, or `'FROM'` to look at the level's
|
|
508
|
+
centre. `index` numbers the frame (`shot-1`, `shot-2`, …)."""
|
|
509
|
+
frm, arrow, to = spec.partition('->')
|
|
510
|
+
position = resolve_point(frm, level, doors, as_eye=True)
|
|
511
|
+
target = resolve_point(to, level, doors) if arrow else level_center(level)
|
|
512
|
+
shot = {'name': f'shot-{index}', 'kind': 'persp', 'position': position, 'target': target, 'spec': spec.strip()}
|
|
513
|
+
if fov is not None:
|
|
514
|
+
shot['fov'] = fov
|
|
515
|
+
return shot
|
|
@@ -1,14 +1,23 @@
|
|
|
1
1
|
"""Headless review renders of a built level, run inside Blender:
|
|
2
2
|
|
|
3
3
|
"$BLENDER" -b --python tools/blender-level/review.py -- build/level/hut.blend build/level/hut.mesh-level.json build/level/review/
|
|
4
|
+
[--lighting review|game] [--shot 'FROM -> TO']... [--only] [--fov <degrees>]
|
|
4
5
|
|
|
5
6
|
Opens the .blend (named parts intact) and renders a deterministic set of shots from the level
|
|
6
7
|
JSON — `overview` (top-down), `door-<id>-a/b` (both approaches of every door), `stairs-<name>`
|
|
7
8
|
(from the foot), `volume-<name>` (inside every room) — into the output directory, plus
|
|
8
9
|
`contact-sheet.png` with all of them. Read the sheet, then the shots that look wrong.
|
|
9
10
|
|
|
10
|
-
|
|
11
|
-
|
|
11
|
+
`--shot` adds a frame you aim yourself: both ends are `landmark:<name>`, `volume:<name>`,
|
|
12
|
+
`door:<id>` or a raw `x,y,z` in game coordinates, and `'FROM'` alone looks at the level's centre.
|
|
13
|
+
Repeat it; `--only` renders just those and skips the standard set and the sheet, which is the
|
|
14
|
+
one-render look at the thing you just changed.
|
|
15
|
+
|
|
16
|
+
`--lighting review` (the default) mounts a camera fill and a sun so nothing hides in shadow: this
|
|
17
|
+
is a look at the GEOMETRY. `--lighting game` instead runs the engine's `interior` preset and the
|
|
18
|
+
`lamp()`s and `spot()`s the level JSON declares, so the lighting pass can be judged here rather
|
|
19
|
+
than through a `bitmagic verify`. EEVEE is not three.js — trust "too dark" and "too bright", not
|
|
20
|
+
an exact colour.
|
|
12
21
|
"""
|
|
13
22
|
import json
|
|
14
23
|
import math
|
|
@@ -19,14 +28,40 @@ import bpy
|
|
|
19
28
|
from mathutils import Vector
|
|
20
29
|
|
|
21
30
|
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
|
|
22
|
-
from bmlevel.core import review_cameras, to_blender # noqa: E402
|
|
31
|
+
from bmlevel.core import custom_shot, review_cameras, to_blender # noqa: E402
|
|
23
32
|
|
|
24
33
|
argv = sys.argv[sys.argv.index('--') + 1:] if '--' in sys.argv else sys.argv[1:]
|
|
25
|
-
if
|
|
34
|
+
positional = [a for a in argv if not a.startswith('--')]
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def flag_value(name: str, default: str | None = None) -> str | None:
|
|
38
|
+
return argv[argv.index(name) + 1] if name in argv and argv.index(name) + 1 < len(argv) else default
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def flag_values(name: str) -> list[str]:
|
|
42
|
+
return [argv[i + 1] for i, a in enumerate(argv) if a == name and i + 1 < len(argv)]
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
# `--shot`, `--lighting` and `--fov` each consume the token after them, which would otherwise read
|
|
46
|
+
# as a positional path.
|
|
47
|
+
consumed = {argv[i + 1] for i, a in enumerate(argv) if a in ('--shot', '--lighting', '--fov') and i + 1 < len(argv)}
|
|
48
|
+
positional = [a for a in positional if a not in consumed]
|
|
49
|
+
if len(positional) < 3:
|
|
26
50
|
print(__doc__)
|
|
27
51
|
sys.exit(2)
|
|
28
|
-
BLEND, LEVEL_PATH, OUT =
|
|
52
|
+
BLEND, LEVEL_PATH, OUT = positional[0], positional[1], positional[2]
|
|
53
|
+
LIGHTING = (flag_value('--lighting', 'review') or 'review').lower()
|
|
54
|
+
if LIGHTING not in ('review', 'game'):
|
|
55
|
+
print(f"--lighting takes 'review' or 'game', not {LIGHTING!r}")
|
|
56
|
+
sys.exit(2)
|
|
57
|
+
SHOT_SPECS = flag_values('--shot')
|
|
58
|
+
ONLY = '--only' in argv
|
|
59
|
+
FOV = float(flag_value('--fov')) if flag_value('--fov') else None
|
|
60
|
+
if ONLY and not SHOT_SPECS:
|
|
61
|
+
print('--only needs at least one --shot')
|
|
62
|
+
sys.exit(2)
|
|
29
63
|
WIDTH, HEIGHT = 960, 540
|
|
64
|
+
DEFAULT_LENS = 24.0
|
|
30
65
|
|
|
31
66
|
level = json.load(open(LEVEL_PATH))
|
|
32
67
|
doors_path = LEVEL_PATH.replace('.mesh-level.json', '.doors.json')
|
|
@@ -47,7 +82,10 @@ if scene.world is None:
|
|
|
47
82
|
scene.world.use_nodes = True
|
|
48
83
|
bg = scene.world.node_tree.nodes['Background']
|
|
49
84
|
bg.inputs[0].default_value = (0.35, 0.4, 0.5, 1)
|
|
50
|
-
|
|
85
|
+
# The engine's `interior` preset holds environment at 0.22 and the skybox at 0.3 against an
|
|
86
|
+
# ambient floor of 0.8 (engine/agent-docs/mesh-level.md); a world background is EEVEE's nearest
|
|
87
|
+
# equivalent to that plus the retargeted HemisphereLight. `review` lights it flat instead.
|
|
88
|
+
bg.inputs[1].default_value = 0.6 if LIGHTING == 'review' else 0.35
|
|
51
89
|
|
|
52
90
|
cam_data = bpy.data.cameras.new('review')
|
|
53
91
|
cam = bpy.data.objects.new('review', cam_data)
|
|
@@ -59,10 +97,57 @@ fill_data.shadow_soft_size = 2
|
|
|
59
97
|
fill = bpy.data.objects.new('review-fill', fill_data)
|
|
60
98
|
scene.collection.objects.link(fill)
|
|
61
99
|
sun_data = bpy.data.lights.new('review-sun', 'SUN')
|
|
62
|
-
|
|
100
|
+
# The engine dims its sun to 8% indoors; `review` keeps a full one so geometry reads everywhere.
|
|
101
|
+
sun_data.energy = 2.5 if LIGHTING == 'review' else 2.5 * 0.08
|
|
63
102
|
sun = bpy.data.objects.new('review-sun', sun_data)
|
|
64
103
|
scene.collection.objects.link(sun)
|
|
65
104
|
sun.rotation_euler = (math.radians(50), math.radians(15), math.radians(30))
|
|
105
|
+
if LIGHTING == 'game':
|
|
106
|
+
fill.hide_render = True
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
def hex_rgb(value) -> tuple[float, float, float]:
|
|
110
|
+
"""`#rrggbb` (or a three.js colour number) to linear-ish rgb. The level JSON writes hex."""
|
|
111
|
+
if isinstance(value, str):
|
|
112
|
+
h = value.lstrip('#')
|
|
113
|
+
n = int(h, 16) if h else 0xFFFFFF
|
|
114
|
+
else:
|
|
115
|
+
n = int(value)
|
|
116
|
+
return (((n >> 16) & 255) / 255, ((n >> 8) & 255) / 255, (n & 255) / 255)
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
def add_level_lights() -> int:
|
|
120
|
+
"""The JSON's own lamps and spots as real EEVEE lights. three.js intensities are unitless and
|
|
121
|
+
Blender's are watts; 30 W per unit puts a default `lamp(intensity=8)` where the eye expects a
|
|
122
|
+
room light. The engine pools point lights (a room with eight lamps gets four in game) — this
|
|
123
|
+
lights all of them, so read brightness, not count."""
|
|
124
|
+
for light in level.get('lights', []):
|
|
125
|
+
color = hex_rgb(light.get('color', '#ffffff'))
|
|
126
|
+
if light['type'] == 'point':
|
|
127
|
+
data = bpy.data.lights.new(light['name'], 'POINT')
|
|
128
|
+
data.energy = light.get('intensity', 8.0) * 30
|
|
129
|
+
data.shadow_soft_size = 0.25
|
|
130
|
+
obj = bpy.data.objects.new(light['name'], data)
|
|
131
|
+
obj.location = to_blender(light['position'])
|
|
132
|
+
else:
|
|
133
|
+
data = bpy.data.lights.new(light['name'], 'SPOT')
|
|
134
|
+
data.energy = light.get('intensity', 20.0) * 30
|
|
135
|
+
# three.js `angle` is the half-cone; Blender's `spot_size` is the full one.
|
|
136
|
+
data.spot_size = min(light.get('angle', math.pi / 4) * 2, math.pi)
|
|
137
|
+
data.spot_blend = light.get('penumbra', 0.3)
|
|
138
|
+
data.shadow_soft_size = 0.1
|
|
139
|
+
data.use_shadow = bool(light.get('castShadow', True))
|
|
140
|
+
obj = bpy.data.objects.new(light['name'], data)
|
|
141
|
+
pos = Vector(to_blender(light['position']))
|
|
142
|
+
obj.location = pos
|
|
143
|
+
obj.rotation_euler = (Vector(to_blender(light['target'])) - pos).to_track_quat('-Z', 'Y').to_euler()
|
|
144
|
+
data.color = color
|
|
145
|
+
scene.collection.objects.link(obj)
|
|
146
|
+
return len(level.get('lights', []))
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
if LIGHTING == 'game':
|
|
150
|
+
print(f'LIGHTING game — interior preset, {add_level_lights()} level lights, emissive materials as authored')
|
|
66
151
|
|
|
67
152
|
|
|
68
153
|
def render(shot: dict) -> str:
|
|
@@ -77,8 +162,14 @@ def render(shot: dict) -> str:
|
|
|
77
162
|
fill.hide_render = True
|
|
78
163
|
else:
|
|
79
164
|
cam_data.type = 'PERSP'
|
|
80
|
-
|
|
81
|
-
|
|
165
|
+
fov = shot.get('fov', FOV)
|
|
166
|
+
if fov:
|
|
167
|
+
cam_data.lens_unit = 'FOV'
|
|
168
|
+
cam_data.angle = math.radians(fov)
|
|
169
|
+
else:
|
|
170
|
+
cam_data.lens_unit = 'MILLIMETERS'
|
|
171
|
+
cam_data.lens = DEFAULT_LENS
|
|
172
|
+
fill.hide_render = LIGHTING == 'game'
|
|
82
173
|
fill.location = pos + Vector((0, 0, 0.6))
|
|
83
174
|
path = os.path.join(OUT, f"{shot['name']}.png")
|
|
84
175
|
scene.render.filepath = path
|
|
@@ -86,10 +177,14 @@ def render(shot: dict) -> str:
|
|
|
86
177
|
return path
|
|
87
178
|
|
|
88
179
|
|
|
89
|
-
shots = review_cameras(level, doors)
|
|
180
|
+
shots = [] if ONLY else review_cameras(level, doors)
|
|
181
|
+
shots += [custom_shot(spec, i + 1, level, doors, FOV) for i, spec in enumerate(SHOT_SPECS)]
|
|
90
182
|
paths = [render(s) for s in shots]
|
|
91
183
|
for s, p in zip(shots, paths):
|
|
92
|
-
print(f
|
|
184
|
+
print(f"SHOT {s['name']} -> {p}" + (f" ({s['spec']})" if 'spec' in s else ''))
|
|
185
|
+
|
|
186
|
+
if ONLY:
|
|
187
|
+
sys.exit(0)
|
|
93
188
|
|
|
94
189
|
# Contact sheet: every shot at half size, four per row, labelled by file name in the log.
|
|
95
190
|
import numpy as np # Blender bundles numpy # noqa: E402
|
|
@@ -185,5 +185,54 @@ class SyncWorldTests(unittest.TestCase):
|
|
|
185
185
|
self.assertEqual({d['id'] for d in merged}, {'front', 'gone', 'new'})
|
|
186
186
|
|
|
187
187
|
|
|
188
|
+
class ShotSpecTests(unittest.TestCase):
|
|
189
|
+
"""`--shot` specs: the ad-hoc camera review.py aims from the level JSON."""
|
|
190
|
+
|
|
191
|
+
LEVEL = {
|
|
192
|
+
'colliders': [{'shape': 'box', 'position': [0, 0, 0], 'size': [10, 1, 10], 'yaw': 0}],
|
|
193
|
+
'landmarks': [{'name': 'spawn', 'position': [1, 0.1, 2], 'yaw': 0, 'tags': []}],
|
|
194
|
+
'volumes': [{'name': 'hall', 'position': [0, 1.75, 0], 'size': [12, 3.5, 8], 'yaw': 0, 'tags': []}],
|
|
195
|
+
}
|
|
196
|
+
DOORS = [{'id': 'north', 'position': {'x': 0, 'y': 1.1, 'z': -4}, 'rotationY': 0, 'width': 1.4, 'height': 2.2}]
|
|
197
|
+
|
|
198
|
+
def test_landmark_is_an_eye_at_the_from_end_and_the_thing_at_the_to_end(self):
|
|
199
|
+
self.assertEqual(core.resolve_point('landmark:spawn', self.LEVEL, as_eye=True), (1, 0.1 + core.EYE_HEIGHT, 2))
|
|
200
|
+
self.assertEqual(core.resolve_point('landmark:spawn', self.LEVEL), (1, 1.1, 2))
|
|
201
|
+
|
|
202
|
+
def test_volume_from_is_eye_height_above_its_floor_and_to_is_its_centre(self):
|
|
203
|
+
self.assertEqual(core.resolve_point('volume:hall', self.LEVEL, as_eye=True), (0, 1.75 - 1.75 + core.EYE_HEIGHT, 0))
|
|
204
|
+
self.assertEqual(core.resolve_point('volume:hall', self.LEVEL), (0, 1.75, 0))
|
|
205
|
+
|
|
206
|
+
def test_door_from_is_eye_height_above_its_threshold(self):
|
|
207
|
+
self.assertEqual(core.resolve_point('door:north', self.LEVEL, self.DOORS, as_eye=True), (0, 1.1 - 1.1 + core.EYE_HEIGHT, -4))
|
|
208
|
+
self.assertEqual(core.resolve_point('door:north', self.LEVEL, self.DOORS), (0, 1.1, -4))
|
|
209
|
+
|
|
210
|
+
def test_raw_coordinates_are_used_exactly_at_either_end(self):
|
|
211
|
+
self.assertEqual(core.resolve_point('3, -1.5,7', self.LEVEL, as_eye=True), (3.0, -1.5, 7.0))
|
|
212
|
+
self.assertEqual(core.resolve_point('3,-1.5,7', self.LEVEL), (3.0, -1.5, 7.0))
|
|
213
|
+
|
|
214
|
+
def test_an_unknown_name_lists_the_known_ones(self):
|
|
215
|
+
with self.assertRaises(ValueError) as raised:
|
|
216
|
+
core.resolve_point('landmark:altar', self.LEVEL)
|
|
217
|
+
self.assertIn('spawn', str(raised.exception))
|
|
218
|
+
with self.assertRaises(ValueError):
|
|
219
|
+
core.resolve_point('nonsense', self.LEVEL)
|
|
220
|
+
|
|
221
|
+
def test_a_shot_without_a_target_looks_at_the_level_centre(self):
|
|
222
|
+
shot = core.custom_shot('landmark:spawn', 1, self.LEVEL, self.DOORS)
|
|
223
|
+
self.assertEqual(shot['name'], 'shot-1')
|
|
224
|
+
self.assertEqual(shot['kind'], 'persp')
|
|
225
|
+
self.assertEqual(shot['target'], core.level_center(self.LEVEL))
|
|
226
|
+
self.assertNotIn('fov', shot)
|
|
227
|
+
|
|
228
|
+
def test_a_from_to_shot_carries_both_ends_and_the_fov(self):
|
|
229
|
+
shot = core.custom_shot('landmark:spawn -> volume:hall', 2, self.LEVEL, self.DOORS, fov=70)
|
|
230
|
+
self.assertEqual(shot['name'], 'shot-2')
|
|
231
|
+
self.assertEqual(shot['position'], (1, 0.1 + core.EYE_HEIGHT, 2))
|
|
232
|
+
self.assertEqual(shot['target'], (0, 1.75, 0))
|
|
233
|
+
self.assertEqual(shot['fov'], 70)
|
|
234
|
+
self.assertEqual(shot['spec'], 'landmark:spawn -> volume:hall')
|
|
235
|
+
|
|
236
|
+
|
|
188
237
|
if __name__ == '__main__':
|
|
189
238
|
unittest.main()
|
package/dist/cli.d.ts
CHANGED
|
@@ -471,6 +471,10 @@ declare const rawCommands: {
|
|
|
471
471
|
readonly type: "boolean";
|
|
472
472
|
readonly description: "Build a custom place (arena, fortress, camp).";
|
|
473
473
|
};
|
|
474
|
+
readonly vessel: {
|
|
475
|
+
readonly type: "boolean";
|
|
476
|
+
readonly description: "Build a ship as the level (longship, galleon, space barge deck).";
|
|
477
|
+
};
|
|
474
478
|
readonly 'make-start': {
|
|
475
479
|
readonly type: "boolean";
|
|
476
480
|
readonly description: "Boot the game into this level. Without it, only a game's FIRST forge becomes the start level, so a later forge lands in the level list unseen.";
|
|
@@ -505,6 +509,10 @@ declare const rawCommands: {
|
|
|
505
509
|
readonly type: "boolean";
|
|
506
510
|
readonly description: "Skip the post-publish render check. The game still publishes; it is simply not confirmed to render.";
|
|
507
511
|
};
|
|
512
|
+
readonly 'version-url': {
|
|
513
|
+
readonly type: "boolean";
|
|
514
|
+
readonly description: string;
|
|
515
|
+
};
|
|
508
516
|
readonly 'no-qr': {
|
|
509
517
|
readonly type: "boolean";
|
|
510
518
|
readonly description: "Do not draw the published URL as a QR code. `BITMAGIC_NO_QR` does the same for every run.";
|
package/dist/commands/forge.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type CatalogEntry, type ForgeJobInput } from '@bitmagic/world-forger/pipeline/index.js';
|
|
2
2
|
import { type CommandRunDeps } from './run-deps.js';
|
|
3
|
-
/** The
|
|
4
|
-
declare const MODE_FLAGS: readonly ["city", "dungeon", "platformer", "freeform"];
|
|
3
|
+
/** The five scene approaches the forger supports. Exactly one may be chosen; none = terrain. */
|
|
4
|
+
declare const MODE_FLAGS: readonly ["city", "dungeon", "platformer", "freeform", "vessel"];
|
|
5
5
|
type ModeFlag = (typeof MODE_FLAGS)[number];
|
|
6
6
|
/**
|
|
7
7
|
* The level's name. Always sent EXPLICITLY to the server, even when derived: api-server's
|
|
@@ -35,6 +35,8 @@ export declare function resolveJobInput(options: {
|
|
|
35
35
|
referenceImageUrl?: string;
|
|
36
36
|
/** `--match-rounds`, already parsed; omitted = the server's default (2 with a reference). */
|
|
37
37
|
referenceMatchRounds?: number;
|
|
38
|
+
/** The project collides on the engine's ground plane (top-down 2D physics) — forge FLAT terrain. */
|
|
39
|
+
groundPlane?: boolean;
|
|
38
40
|
}): ForgeJobInput;
|
|
39
41
|
/**
|
|
40
42
|
* The request body for `POST /api/cli/v1/forge/stream`.
|
|
@@ -134,6 +136,10 @@ export declare const forgeCommand: import("citty").CommandDef<{
|
|
|
134
136
|
readonly type: "boolean";
|
|
135
137
|
readonly description: "Build a custom place (arena, fortress, camp).";
|
|
136
138
|
};
|
|
139
|
+
readonly vessel: {
|
|
140
|
+
readonly type: "boolean";
|
|
141
|
+
readonly description: "Build a ship as the level (longship, galleon, space barge deck).";
|
|
142
|
+
};
|
|
137
143
|
readonly 'make-start': {
|
|
138
144
|
readonly type: "boolean";
|
|
139
145
|
readonly description: "Boot the game into this level. Without it, only a game's FIRST forge becomes the start level, so a later forge lands in the level list unseen.";
|
package/dist/commands/forge.js
CHANGED
|
@@ -39,7 +39,7 @@ import { buildProject } from '../forge/voxelize-session.js';
|
|
|
39
39
|
import { classifyAssetMaterialsQuietly } from '../assets/materials.js';
|
|
40
40
|
import { isJsonObject, readWorldJson } from '../project/world-json.js';
|
|
41
41
|
import { projectWorldJsonPath } from '../forge/run-pipeline.js';
|
|
42
|
-
import { assertNotOpenWater, describeSideonRegistryLoss, readCharacterRunSpeed, readVoxelBlockSize, resolveForgeLaneForRun, } from '../forge/two-d-gate.js';
|
|
42
|
+
import { assertNotOpenWater, describeSideonRegistryLoss, readCharacterRunSpeed, readGroundPlane, readVoxelBlockSize, resolveForgeLaneForRun, } from '../forge/two-d-gate.js';
|
|
43
43
|
import { reserveLanePort } from '../local-port.js';
|
|
44
44
|
import { createForgeProgressTracker } from '../forge/progress.js';
|
|
45
45
|
import { createLocalForgeStorage } from '../forge/local-store.js';
|
|
@@ -55,8 +55,8 @@ const JOB_ID_PATTERN = /^[A-Za-z0-9_-]{1,64}$/;
|
|
|
55
55
|
function resumeCommand(jobId) {
|
|
56
56
|
return `bitmagic forge --resume ${jobId}`;
|
|
57
57
|
}
|
|
58
|
-
/** The
|
|
59
|
-
const MODE_FLAGS = ['city', 'dungeon', 'platformer', 'freeform'];
|
|
58
|
+
/** The five scene approaches the forger supports. Exactly one may be chosen; none = terrain. */
|
|
59
|
+
const MODE_FLAGS = ['city', 'dungeon', 'platformer', 'freeform', 'vessel'];
|
|
60
60
|
/** `cityMode`, `dungeonMode`, … — the body fields `ForgeJobInput` declares. */
|
|
61
61
|
function modeField(mode) {
|
|
62
62
|
return `${mode}Mode`;
|
|
@@ -96,7 +96,7 @@ export function selectMode(args) {
|
|
|
96
96
|
* invocation. Reading the frozen copy back removes that divergence rather than documenting it.
|
|
97
97
|
*/
|
|
98
98
|
export function resolveJobInput(options) {
|
|
99
|
-
const { frozen, prompt, name, mode, gameId, resumeJobId, makeStartLevel, referenceImageUrl, referenceMatchRounds } = options;
|
|
99
|
+
const { frozen, prompt, name, mode, gameId, resumeJobId, makeStartLevel, referenceImageUrl, referenceMatchRounds, groundPlane } = options;
|
|
100
100
|
if (frozen !== null && prompt === undefined)
|
|
101
101
|
return frozen;
|
|
102
102
|
if (prompt === undefined || prompt.trim().length === 0) {
|
|
@@ -118,6 +118,10 @@ export function resolveJobInput(options) {
|
|
|
118
118
|
...(referenceImageUrl !== undefined ? { referenceImageUrl } : {}),
|
|
119
119
|
// Only when asked: absent means "the pipeline's default", which the server owns.
|
|
120
120
|
...(referenceMatchRounds !== undefined ? { referenceMatchRounds } : {}),
|
|
121
|
+
// Resolved from the project's own metadata, not a flag: the game either plays
|
|
122
|
+
// on the ground plane or it does not, and a flat-terrain level is what that
|
|
123
|
+
// lane can actually play.
|
|
124
|
+
...(groundPlane ? { groundPlane: true } : {}),
|
|
121
125
|
...(mode ? { [modeField(mode)]: true } : {}),
|
|
122
126
|
// Omitted unless asked for: the persist step reads absent as "first forge on
|
|
123
127
|
// this game becomes the start, later ones keep the current start", and
|
|
@@ -502,6 +506,7 @@ async function prepareForgeRequest(args, deps) {
|
|
|
502
506
|
makeStartLevel: args['make-start'] === true,
|
|
503
507
|
referenceImageUrl: reference.url,
|
|
504
508
|
referenceMatchRounds,
|
|
509
|
+
groundPlane: lane === 'sideon' ? false : readGroundPlane(context.root),
|
|
505
510
|
});
|
|
506
511
|
// Side-on fresh runs carry the game's own run speed — the number the plan's
|
|
507
512
|
// jumps are reach-verified against — and its voxel block size, which fixes
|
|
@@ -598,6 +603,7 @@ export const forgeCommand = defineCommand({
|
|
|
598
603
|
dungeon: { type: 'boolean', description: 'Build an enclosed dungeon of rooms and corridors.' },
|
|
599
604
|
platformer: { type: 'boolean', description: 'Build a third-person platformer journey.' },
|
|
600
605
|
freeform: { type: 'boolean', description: 'Build a custom place (arena, fortress, camp).' },
|
|
606
|
+
vessel: { type: 'boolean', description: 'Build a ship as the level (longship, galleon, space barge deck).' },
|
|
601
607
|
'make-start': {
|
|
602
608
|
type: 'boolean',
|
|
603
609
|
description: 'Boot the game into this level. Without it, only a game\'s FIRST forge becomes the start level, so a later forge lands in the level list unseen.',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forge.js","sourceRoot":"","sources":["../../src/commands/forge.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"forge.js","sourceRoot":"","sources":["../../src/commands/forge.ts"],"names":[],"mappings":"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"}
|
|
@@ -64,6 +64,8 @@ export interface CharacterArgs {
|
|
|
64
64
|
library?: boolean;
|
|
65
65
|
/** Absent = the generator's default (true); the command fills it from the project's art style. */
|
|
66
66
|
voxelize?: boolean;
|
|
67
|
+
/** Asset Forger image-to-mesh model; absent = the Forger default. */
|
|
68
|
+
meshModel?: string;
|
|
67
69
|
}
|
|
68
70
|
export declare function buildCharacterBody(args: CharacterArgs): Record<string, unknown>;
|
|
69
71
|
export interface AnimationArgs {
|