- balance.js: ARENA={w:1560,h:2960} 有界竞技场(中心对称原点)
- sim.js: 玩家走位 clamp 到场内(边距含岩壁内沿,贴边不站黑墙/不出屏)
- render.js: 镜头 clampCam + drawPlayer 解耦屏心 + drawGround 一档接整幅背景图(二档视差瓦片兜底)+ 四边自然暗角 + 背景降颗粒
- art.js: 登记 bg-map1-arena-01 + 后台拉起预载 + tiles 降懒载(不增首屏网络字节)
- assets/bg/bg-map1-arena-01.jpg: 矿彩国风裂谷原整图(1560x2960,AI 草图创始人审)
- 墙角死角作为有界竞技场设计保留;⑧win 重跑留下检查点
225 lines
6.6 KiB
JSON
225 lines
6.6 KiB
JSON
{
|
|
"checkpoint": "round-11 竞技场边界 + 接大图 bg-map1-arena-01 + CDP 截实际效果",
|
|
"utc": "2026-07-25T06:40:50.500Z",
|
|
"machine": "lili-mac.local(开发机,非 mini-desktop)",
|
|
"node": "v22.22.3",
|
|
"url": "http://127.0.0.1:4517/?engine=stub&mode=evidence&seed=777",
|
|
"dpr": 2,
|
|
"viewport": {
|
|
"w": 390,
|
|
"h": 844
|
|
},
|
|
"arena": {
|
|
"w": 1560,
|
|
"h": 2960
|
|
},
|
|
"collector": "/tmp/arena-e2e.mjs(临时脚本,置 /tmp 不入仓)",
|
|
"shots": [
|
|
{
|
|
"name": "01-arena-center-panorama.png",
|
|
"desc": "全景:玩家场心(0,0),镜头居中,竞技场整幅背景中心区",
|
|
"sha256": "8d3f74d92ff0161167ad2d2e5dc51d41c50024028001edd4bfd5e0082b943f21",
|
|
"bytes": 1717505,
|
|
"utc": "2026-07-25T06:41:00.803Z",
|
|
"phase": "play",
|
|
"pos": {
|
|
"x": 0,
|
|
"y": 0
|
|
},
|
|
"timeS": 1.6,
|
|
"score": 0,
|
|
"enemies": 1,
|
|
"expectedScreen": {
|
|
"camX": -195,
|
|
"camY": -422,
|
|
"sx": 195,
|
|
"sy": 422
|
|
},
|
|
"brightness": {
|
|
"ok": true,
|
|
"width": 780,
|
|
"height": 1688,
|
|
"bright": 27467,
|
|
"total": 47190,
|
|
"ratio": 0.582
|
|
}
|
|
},
|
|
{
|
|
"name": "02-arena-edge-right.png",
|
|
"desc": "右边缘:玩家贴右界(x≈768),镜头clamp,玩家屏内偏右+右岩壁压边",
|
|
"sha256": "448552645aaeb73ee98db14c0fb9d2dd35c0a13155c517380502a423d1c4e4ce",
|
|
"bytes": 1343707,
|
|
"utc": "2026-07-25T06:41:01.213Z",
|
|
"phase": "play",
|
|
"pos": {
|
|
"x": 768,
|
|
"y": 0
|
|
},
|
|
"timeS": 8.7,
|
|
"score": 4,
|
|
"hp": 100,
|
|
"enemies": 3,
|
|
"level": 1,
|
|
"expectedScreen": {
|
|
"camX": 390,
|
|
"camY": -422,
|
|
"sx": 378,
|
|
"sy": 422
|
|
},
|
|
"brightness": {
|
|
"ok": true,
|
|
"width": 780,
|
|
"height": 1688,
|
|
"bright": 11469,
|
|
"total": 47190,
|
|
"ratio": 0.243
|
|
}
|
|
},
|
|
{
|
|
"name": "03-arena-edge-top.png",
|
|
"desc": "上边缘:玩家贴上界(y≈-1468),上岩壁压边",
|
|
"sha256": "0a5299271de8c2c6c4039d023b56c1956130f00332812054950f7a62674f97a1",
|
|
"bytes": 1122250,
|
|
"utc": "2026-07-25T06:41:01.760Z",
|
|
"phase": "play",
|
|
"pos": {
|
|
"x": 768,
|
|
"y": -1468
|
|
},
|
|
"timeS": 21.7,
|
|
"score": 14,
|
|
"hp": 100,
|
|
"enemies": 5,
|
|
"level": 2,
|
|
"expectedScreen": {
|
|
"camX": 390,
|
|
"camY": -1480,
|
|
"sx": 378,
|
|
"sy": 12
|
|
},
|
|
"brightness": {
|
|
"ok": true,
|
|
"width": 780,
|
|
"height": 1688,
|
|
"bright": 2525,
|
|
"total": 47190,
|
|
"ratio": 0.054
|
|
}
|
|
},
|
|
{
|
|
"name": "04-arena-edge-left.png",
|
|
"desc": "左边缘:玩家贴左界(x≈-768),左岩壁压边",
|
|
"sha256": "5401057127be6519615fbea21f6f8258865f15783783782a1e153081920eb7ef",
|
|
"bytes": 1066428,
|
|
"utc": "2026-07-25T06:41:02.307Z",
|
|
"phase": "play",
|
|
"pos": {
|
|
"x": -768,
|
|
"y": -1468
|
|
},
|
|
"timeS": 34.8,
|
|
"score": 24,
|
|
"hp": 100,
|
|
"enemies": 7,
|
|
"level": 2,
|
|
"expectedScreen": {
|
|
"camX": -780,
|
|
"camY": -1480,
|
|
"sx": 12,
|
|
"sy": 12
|
|
},
|
|
"brightness": {
|
|
"ok": true,
|
|
"width": 780,
|
|
"height": 1688,
|
|
"bright": 2663,
|
|
"total": 47190,
|
|
"ratio": 0.056
|
|
}
|
|
},
|
|
{
|
|
"name": "05-arena-edge-bottom.png",
|
|
"desc": "下边缘:玩家贴下界(y≈1468),下岩壁压边",
|
|
"sha256": "5a4a97f58def0e323cbf0aecad2a56fa97b962cbe1a52acde5bc05032a9b99bd",
|
|
"bytes": 1127024,
|
|
"utc": "2026-07-25T06:41:02.852Z",
|
|
"phase": "play",
|
|
"pos": {
|
|
"x": -768,
|
|
"y": 1468
|
|
},
|
|
"timeS": 59.9,
|
|
"score": 42,
|
|
"hp": 100,
|
|
"enemies": 20,
|
|
"level": 2,
|
|
"expectedScreen": {
|
|
"camX": -780,
|
|
"camY": 636,
|
|
"sx": 12,
|
|
"sy": 832
|
|
},
|
|
"brightness": {
|
|
"ok": true,
|
|
"width": 780,
|
|
"height": 1688,
|
|
"bright": 2412,
|
|
"total": 47190,
|
|
"ratio": 0.051
|
|
}
|
|
},
|
|
{
|
|
"name": "06-arena-corner-br.png",
|
|
"desc": "右下角:同时贴右+下界,两面岩壁 + 角落暗角收口",
|
|
"sha256": "2cb36e2838df4953f6e4fbd9d2a2c783a79ad32e013db31c1b47aafdbe681d51",
|
|
"bytes": 1365807,
|
|
"utc": "2026-07-25T06:41:03.415Z",
|
|
"phase": "play",
|
|
"pos": {
|
|
"x": 768,
|
|
"y": 1468
|
|
},
|
|
"timeS": 78.4,
|
|
"score": 56,
|
|
"hp": 64,
|
|
"enemies": 52,
|
|
"level": 3,
|
|
"expectedScreen": {
|
|
"camX": 390,
|
|
"camY": 636,
|
|
"sx": 378,
|
|
"sy": 832
|
|
},
|
|
"brightness": {
|
|
"ok": true,
|
|
"width": 780,
|
|
"height": 1688,
|
|
"bright": 5774,
|
|
"total": 47190,
|
|
"ratio": 0.122
|
|
}
|
|
}
|
|
],
|
|
"boot": {
|
|
"ok": true
|
|
},
|
|
"arenaBgAssetProbe": "ready 1560x2960",
|
|
"startState": {
|
|
"phase": "play",
|
|
"pos": {
|
|
"x": 0,
|
|
"y": 0
|
|
}
|
|
},
|
|
"pageErrors": [],
|
|
"consoleErrors": [
|
|
"2026-07-25T06:40:58.330Z [error] Failed to load resource: the server responded with a status of 404 (File not found)",
|
|
"2026-07-25T06:41:00.436Z [warning] Canvas2D: Multiple readback operations using getImageData are faster with the willReadFrequently attribute set to true. See: https://html.spec.whatwg.org/multipage/canvas.html#concept-canvas-will-read-frequently",
|
|
"2026-07-25T06:41:00.897Z [warning] Canvas2D: Multiple readback operations using getImageData are faster with the willReadFrequently attribute set to true. See: https://html.spec.whatwg.org/multipage/canvas.html#concept-canvas-will-read-frequently",
|
|
"2026-07-25T06:41:01.371Z [warning] Canvas2D: Multiple readback operations using getImageData are faster with the willReadFrequently attribute set to true. See: https://html.spec.whatwg.org/multipage/canvas.html#concept-canvas-will-read-frequently",
|
|
"2026-07-25T06:41:02.006Z [warning] Canvas2D: Multiple readback operations using getImageData are faster with the willReadFrequently attribute set to true. See: https://html.spec.whatwg.org/multipage/canvas.html#concept-canvas-will-read-frequently",
|
|
"2026-07-25T06:41:02.549Z [warning] Canvas2D: Multiple readback operations using getImageData are faster with the willReadFrequently attribute set to true. See: https://html.spec.whatwg.org/multipage/canvas.html#concept-canvas-will-read-frequently",
|
|
"2026-07-25T06:41:03.087Z [warning] Canvas2D: Multiple readback operations using getImageData are faster with the willReadFrequently attribute set to true. See: https://html.spec.whatwg.org/multipage/canvas.html#concept-canvas-will-read-frequently"
|
|
]
|
|
}
|