Skip to content

Commit 1dd7cba

Browse files
author
DavidQ
committed
Collapse Asteroids vector geometry to one manifest source and restore older object maps - PR_26133_118-asteroids-single-vector-geometry-source
1 parent eb7c9e7 commit 1dd7cba

10 files changed

Lines changed: 396 additions & 407 deletions
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
# PR_26133_118-asteroids-single-vector-geometry-source Report
2+
3+
## Scope
4+
- Fixed duplicate/ambiguous Asteroids vector geometry by using Object Vector Studio V2 object geometry as the single active geometry source for ship, medium asteroid, small asteroid, large UFO, and small UFO.
5+
- Removed conflicting legacy vector-map geometry entries from the Asteroids manifest.
6+
- Kept bullet/title vector maps because they do not duplicate Object Vector object geometry in this PR.
7+
- Did not restore old runtime code and did not add fallback/default vector maps.
8+
9+
## Duplicate Geometry Removed
10+
- `vector.asteroids.ship`
11+
- `vector.asteroids.asteroid.medium`
12+
- `vector.asteroids.asteroid.small`
13+
- `vector.asteroids.ufo.large`
14+
- `vector.asteroids.ufo.small`
15+
16+
## Runtime Lookup Path
17+
- Before: `AsteroidsWorld` loaded ship and UFO collision geometry through `vectorMaps.vectorsById` and `requireAsteroidsVectorPoints(...)`; `AsteroidsGameScene.drawLives()` rendered lives from `vector.asteroids.ship`.
18+
- Before: Asteroid collision/render geometry already used manifest Object Vector objects through role bindings and geometry profiles.
19+
- After: `AsteroidsWorld` loads ship and UFO collision geometry through `objectVectorRoles -> objectVectorMapsById -> Object Vector object geometry`.
20+
- After: `AsteroidsGameScene.drawLives()` renders the ship life icon through `drawObjectVectorAsset(...)` using the manifest `ship` role.
21+
- After: required role-bound object geometry is validated during manifest load and fails with a named Object Vector role/object error when missing or empty.
22+
23+
## Git Commits Checked
24+
- `31ca1521eaa26473d5133794324ac9a5d5971615` - original Asteroids runtime ship/UFO vector geometry.
25+
- `3fc7bbce7d6375c8e396b8107c1351bb8f39e216` - pre-Object-Vector manifest asteroid vector-map geometry.
26+
- `9d81680fd08b99ee70567d1d86fb655ac3ee96eb` - Object Vector Studio V2 Asteroids asset introduction boundary.
27+
- `526dbdf9f53a67cfb27026f40119f71fc1ac02b6` - prior Object Vector geometry SSoT runtime migration boundary.
28+
- `eb7c9e744183e3140882888e42e4830022bda37e` - PR117 prior delta baseline.
29+
30+
## Selected Source Commits
31+
- Ship: `31ca1521eaa26473d5133794324ac9a5d5971615`, `games/Asteroids/entities/Ship.js`, `SMALL_VECTOR_MAP`.
32+
- Large UFO: `31ca1521eaa26473d5133794324ac9a5d5971615`, `games/Asteroids/entities/Ufo.js`, `VECTOR_MAPS.large`.
33+
- Small UFO: `31ca1521eaa26473d5133794324ac9a5d5971615`, `games/Asteroids/entities/Ufo.js`, `VECTOR_MAPS.small`.
34+
- Medium asteroid: `3fc7bbce7d6375c8e396b8107c1351bb8f39e216`, `games/Asteroids/game.manifest.json`, `vector.asteroids.asteroid.medium`.
35+
- Small asteroid: `3fc7bbce7d6375c8e396b8107c1351bb8f39e216`, `games/Asteroids/game.manifest.json`, `vector.asteroids.asteroid.small`.
36+
37+
## Changed Files
38+
- `games/Asteroids/game.manifest.json`
39+
- `games/Asteroids/game/AsteroidsAttractAdapter.js`
40+
- `games/Asteroids/game/AsteroidsGameScene.js`
41+
- `games/Asteroids/game/AsteroidsWorld.js`
42+
- `games/Asteroids/game/asteroidsVectorMaps.js`
43+
- `tests/games/AsteroidsAssetReferenceAdoption.test.mjs`
44+
- `tests/games/AsteroidsPlatformDemo.test.mjs`
45+
- `tests/games/AsteroidsValidation.test.mjs`
46+
- `tests/games/AsteroidsVectorTransforms.test.mjs`
47+
48+
## Validation
49+
- PASS: `node --check games/Asteroids/game/asteroidsVectorMaps.js`
50+
- PASS: `node --check games/Asteroids/game/AsteroidsWorld.js`
51+
- PASS: `node --check games/Asteroids/game/AsteroidsGameScene.js`
52+
- PASS: `node --check games/Asteroids/game/AsteroidsAttractAdapter.js`
53+
- PASS: `node --check tests/games/AsteroidsValidation.test.mjs`
54+
- PASS: `node --check tests/games/AsteroidsVectorTransforms.test.mjs`
55+
- PASS: `node --check tests/games/AsteroidsAssetReferenceAdoption.test.mjs`
56+
- PASS: `node --check tests/games/AsteroidsPlatformDemo.test.mjs`
57+
- PASS: targeted Asteroids manifest single-geometry validation:
58+
- manifest loads successfully
59+
- five duplicate legacy vector IDs are absent
60+
- ship, medium asteroid, small asteroid, large UFO, and small UFO resolve through Object Vector role/object geometry
61+
- all five restored objects render through `ObjectVectorRuntimeAssetService.createSvgString(...)`
62+
- missing small UFO object geometry fails with a role/object-specific manifest error
63+
- empty ship geometry fails with an actionable minimum-point manifest error
64+
- PASS: `node -e "import('./tests/games/AsteroidsValidation.test.mjs').then(async (m) => { await m.run(); console.log('PASS AsteroidsValidation'); })"`
65+
- PASS: `node -e "import('./tests/games/AsteroidsVectorTransforms.test.mjs').then(async (m) => { await m.run(); console.log('PASS AsteroidsVectorTransforms'); })"`
66+
- PASS: `node -e "import('./tests/games/AsteroidsAssetReferenceAdoption.test.mjs').then(async (m) => { await m.run(); console.log('PASS AsteroidsAssetReferenceAdoption'); })"`
67+
- PASS: `node -e "import('./tests/games/AsteroidsPlatformDemo.test.mjs').then(async (m) => { await m.run(); console.log('PASS AsteroidsPlatformDemo'); })"`
68+
- PASS: `git diff --check` with line-ending warnings only.
69+
70+
## Skipped Validation
71+
- Skipped `npm run test:workspace-v2` because PR118 requested targeted Asteroids manifest-load validation only.
72+
- Skipped full regression and full samples smoke tests as requested.
73+
- Playwright impacted: No Workspace V2/tool UI was changed; this PR is Asteroids manifest/runtime lookup wiring.
74+
- Playwright V8 coverage was not produced because the requested validation was limited to targeted Asteroids manifest-load validation.
75+
76+
## Manual Validation
77+
- Open Asteroids through the usual game entry after applying the delta.
78+
- Start gameplay and verify the ship, medium asteroid, small asteroid, large UFO, and small UFO appear with the restored vector silhouettes.
79+
- Verify ship lives render as ship icons and gameplay continues without missing vector-map fallback errors.
80+
- Intentionally remove a required Object Vector object from `games/Asteroids/game.manifest.json` in a throwaway copy and confirm Asteroids manifest loading reports the missing role/object path.
81+

0 commit comments

Comments
 (0)