|
| 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