Record final combined P1 Release reference and memory miss
Native and manual checks / native (ubuntu-24.04) (push) Failing after 34s
Native and manual checks / manual (push) Successful in 30s
Windows editor and software Vulkan / windows-graphics (push) Canceled after 0s
Native and manual checks / native (windows-2025) (push) Canceled after 0s

This commit is contained in:
Emil
2026-09-24 05:18:51 +03:00
parent cd36df2e4b
commit 74f584308c
37 changed files with 53815 additions and 8 deletions
@@ -83,10 +83,20 @@ budgets: frame 2.684/2.732 ms versus ≤4; GPU 0.579/0.600 ms versus ≤1; readb
0.633/0.608 ms versus ≤1; simulation 0.258/0.300 ms and snapshot 0.215/0.257 ms
versus ≤0.5 each. Explicit allocations were about 15.02/15.06 MiB versus
≤20 MiB; first-frame startup from `main()` was 265.5/260.8 ms versus ≤500 ms.
That baseline was an evolving working tree in September, not a fresh Release
measurement of `6c2e8fa`; its numbers are **historical** and are not compared with
this Debug workflow's timing. A current-revision, quiet-host Release rerun remains
needed before claiming the budgets again.
That baseline was an evolving earlier working tree. Its values are **historical**
and are not compared with this Debug workflow's timing.
The [fresh clean combined P1/P3 Release reference](final-release/README.md) at
`4a3453e` repeats these exact scenes on the same physical RTX 2080 Ti, now with
120-frame source-hidden relocation checks for C++ 2D/3D and Lua-only, plus
sequential 240-frame C++ 2D/3D profiles. The frame, GPU, readback, simulation,
snapshot and startup tracking budgets all pass. Explicit allocations instead
reach **43.022/43.118 MiB**, above the former ≤20 MiB budget because the new
renderer eagerly retains a 16 MiB sun atlas and a 16 MiB local atlas in both
scenes. The 2D sample casts no sun shadows and neither sample uses local shadow
faces. This is a measured tracking-budget miss, not a failed export or a reason
to redefine the counter silently. The linked dossier retains exact values,
atlas breakdown, raw profiles and source/toolchain provenance.
The [Lua-only Linux Release dossier](../lua-release-2026-09-24/README.md) separately
records a relocated package that validated and rendered 120 frames after hiding
@@ -104,19 +114,22 @@ checksums; [integration results](windows-4ac02ee/integration-result-2.json),
evidence. The parallel [native/manual CI](https://github.com/emil28092005/Faset_Engine/actions/runs/35937433211)
passed on Linux and Windows. This is **software** Vulkan; Windows did not have an
active Khronos validation layer (`validation_enabled: false`), and no physical
Windows GPU/driver performance claim follows. A later CI run must cover the
`d7a7a7c` real diagnostic-navigation assertion added after this export run.
Windows GPU/driver performance claim follows. The later [combined P1/P3 Windows
graphics CI](https://github.com/emil28092005/Faset_Engine/actions/runs/35942307579)
at `87230f3` passed 74/74 CTests, including real diagnostic navigation, real
Release export integration and all three relocated games. The physical-GPU
Linux reference above had active validation.
## P1 acceptance record
| Area | Evidence and current limit |
| --- | --- |
| Lua | Linux native and Release [relocated Lua result](../lua-release-2026-09-24/README.md); Windows CPU/SwiftShader 61-test suite and [relocated Lua-only Release report](windows-4ac02ee/playable-report.json), 120 completed frames. |
| Lua | Linux native and Release [relocated Lua result](../lua-release-2026-09-24/README.md), repeated in the [clean combined three-game Release reference](final-release/README.md); Windows CPU/SwiftShader [combined 74-test suite](https://github.com/emil28092005/Faset_Engine/actions/runs/35942307579) and [relocated Lua-only Release report](windows-4ac02ee/playable-report.json), 120 completed frames. |
| Cache and rollback | [Five verified hits](report.json), `build_cache` and `build_schema_publication` contracts for headers, toolchain, schema/shader corruption and source races; the raw failed/recovered build retains the previous pointer. |
| Diagnostics | `build_diagnostics` fixtures cover Clang, clang-cl, Lua, Unicode and unparseable output. The raw real failure above found a staged-source mapping gap; [the replay](diagnostic-replay.json), parser case, warning-flood case and real BuildService integration assertion cover the correction. |
| Starters/navigation | [Four runnable C++/Lua × 2D/3D starters](../p1-starters-linux-2026-09-24.md) plus launcher/CLI and source-open tests. |
| Autosave | `editor_session_settings`, UI tests and [workspace behavior](../../manual/editor/workspace.md#create-and-save-a-scene): idle coalescing, unnamed Save As, external/revision conflicts, Undo and recovery. |
| Iteration | This report, 179 raw files, 3,000-frame and seeded larger-scene profiles; no CI timing gates. |
| Iteration | This Debug report, 179 raw files, 3,000-frame and seeded larger-scene profiles, plus the [clean combined Release reference](final-release/README.md) with three relocated games and exact 2D/3D budgets. The allocation budget miss is recorded; no CI timing gates. |
| Documentation | The English Manual describes build/reload, templates, navigation, autosave and profile interpretation; strict MkDocs and full platform test totals are recorded in the implementation journal. |
The [profiling guide](../../manual/editor/profiling.md#measure-editor-c-and-lua-iteration)
@@ -0,0 +1,111 @@
# Final combined P1/P3 Release reference — 2026-09-24
This is the clean-source, physical-GPU reference for the checked-in playable
`collect-2d`, `collect-3d`, and Lua-only games at
`4a3453e2b1868555d833f578d43f48b8bc47d41a`. The real Release Editor
exported each project to a self-contained package. The packages were copied to
Unicode-named paths outside their disposable source projects, and those source
paths were hidden while each Player ran from an unrelated empty working
directory. The 3D export imported and packaged the Blender exit arch. All three
games passed standalone CPU validation and rendered **120/120** offscreen Vulkan
frames on the physical NVIDIA GeForce RTX 2080 Ti with the Khronos validation
layer active and **zero validation errors**. The [verifier report](report.json),
[2D manifest](evidence/collect-2d-manifest.json),
[3D manifest](evidence/collect-3d-manifest.json), and
[Lua manifest](evidence/lua-manifest.json) retain input, package and binary
hashes. The [toolchain supplement](provenance.json) binds the unmodified report
and 240-frame summary to the exact Editor, CMake, Ninja, Clang and Slang
binaries. The verifier recorded a clean checkout at its start, and the second
profiles used the same relocated Player binaries.
| Relocated package | Runtime | Frames | GPU validation | Source paths hidden |
| --- | --- | ---: | --- | --- |
| `collect-2d` | C++ | 120/120 | active, 0 errors | yes |
| `collect-3d` | C++ with Blender asset | 120/120 | active, 0 errors | yes |
| `lua` | Lua-only | 120/120 | active, 0 errors | yes |
The two **same relocated C++ executables** then ran a second, sequential
240-frame profile. For each run, the disposable source-project paths were again
hidden and restored afterward. These exact 2D/3D samples used default Direct
visibility and temporal Off, 1280×720 offscreen Vulkan, synchronous readback,
the active Khronos validation layer and synthetic fixed-step simulation. No
frame was discarded as a warm-up: the table uses nearest-rank p95 over all 240
completed frames, including the first. Both profiles report zero validation
errors. Raw [2D](reference-240/collect-2d-profile-240.json) and
[3D](reference-240/collect-3d-profile-240.json) profiles, exact
[2D invocation](reference-240/collect-2d-run-240.json) and
[3D invocation](reference-240/collect-3d-run-240.json), and the
[machine-readable budget comparison](reference-240/reference-summary.json)
support every value below.
| Exact-scene observation | Initial P1 tracking budget | 2D | 3D |
| --- | ---: | ---: | ---: |
| Frame wall p95 | ≤4 ms | 2.694 ms | 3.036 ms |
| GPU timestamp p95 | ≤1 ms | 0.573 ms | 0.617 ms |
| Readback CPU p95 | ≤1 ms | 0.559 ms | 0.561 ms |
| Simulation p95 | ≤0.5 ms | 0.242 ms | 0.300 ms |
| Scene snapshot p95 | ≤0.5 ms | 0.197 ms | 0.288 ms |
| `main()` to first frame | ≤500 ms | 295.4 ms | 248.3 ms |
| Maximum explicit Vulkan allocation | ≤20 MiB | **43.022 MiB — miss** | **43.118 MiB — miss** |
The memory miss is real, not a profile rounding artifact: 2D used 45,112,032
bytes and 3D used 45,212,272 bytes, while the earlier threshold was 20,971,520
bytes. Each run counted a **16 MiB sun atlas and a 16 MiB local-light atlas**
inside the live Vulkan allocation total. The 2D sprites produced no sun-shadow
raster work; the 3D meshes rendered four sun cascades. Neither sample used a
local shadow face. Both 2048² D32 atlases are currently allocated when the
Renderer is created, even when the scene never uses them. The remaining explicit
allocations were 11.022 MiB (2D) and 11.118 MiB (3D). Lazy local-atlas
allocation is a sensible follow-up, but alone it would still leave the 3D
scene above 20 MiB with its current 2048² sun atlas. We have kept the physical
counter and shadow resolution intact and recorded the miss rather than silently
changing either to satisfy an older threshold. The 20 MiB value is an initial
**tracking budget** for tiny pre-P3 scenes, not a functional export gate; any
revised shadow-memory budget needs its own measured baseline.
The Lua run establishes relocated Release execution, not a 2D/3D latency
budget. The [2026-09-18 Release reference](../../linux-release-2026-09-18/README.md)
used these scenes on the same GPU but an evolving earlier working tree; its
numbers are historical context, not this clean combined revision. This run
measures small scenes on one active Linux desktop and one driver (NVIDIA
595.84). GPU timestamps exclude CPU work, `renderer_readback_cpu` is a
map/copy/unmap duration inside the renderer call, and the explicit allocation
counter excludes driver-internal memory. It does not establish production-game
scaling, whole-process VRAM usage, display-paced FPS, physical Windows GPU
performance or absence of all leaks.
## Reproduce and inspect
From this repository with the dependencies configured:
```sh
cmake --preset linux-release
cmake --build --preset linux-release --target faset_editor --parallel 2
python3 tools/verify_playable_exports.py \
--editor build/linux-release/faset_editor \
--output /tmp/faset-p1-release-new \
--standalone-root /tmp/faset-p1-packages-new \
--include-lua
python3 docs/validation/p1-iteration-2026-09-24/final-release/profile_exact_scenes.py \
--verification /tmp/faset-p1-release-new/report.json \
--output /tmp/faset-p1-release-new/reference-240
```
Use **new, empty** output and standalone directories. The second helper
refuses an incomplete or dirty-tree verifier report, hides the disposable
source projects during each 240-frame run, checks exact settings and validation,
then restores them. The original [verifier log](verifier.log),
[240-frame log](reference-240.log), raw 120-frame profiles for
[2D](evidence/collect-2d-profile.json),
[3D](evidence/collect-3d-profile.json) and
[Lua](evidence/lua-profile.json), PPM captures, and the
[SHA-256 file list](SHA256SUMS.txt) are retained here. The
large disposable native build directories and relocated executable packages
remain under `/tmp`; their input, manifest and executable hashes are in the
reports.
![Relocated 2D sample](collect-2d.png)
![Relocated 3D sample with Blender asset](collect-3d.png)
![Relocated Lua sample](lua.png)
@@ -0,0 +1,35 @@
d5dca233d7ddbb7c32998ec920fda6cf67e6515c965372985c807ccd4ff54075 README.md
d23e8614c133938974d1c1a865100d24175242ab818573cb1416ba82d1e62260 collect-2d.png
f83799304917c2e0250605e83f69cbee4865818078ba3f9aed590c010f2b19b3 collect-3d.png
3ca7066843c2875c86a4917782a07f93358a44ebd220d25a3f2457ae542ec415 evidence/collect-2d-export.json
5f8de3eb000dc7207b256265f0fa20a29efe194dd1347ab4c3bf670cfdcfb2b0 evidence/collect-2d-manifest.json
c45dc33981db0c2038d22cda2be4151de46445a4f368259d6b0002c35e402633 evidence/collect-2d-profile.json
591329c7cb85c9fc0220deec7e76ca24e139037481d949c91882858c76c2621a evidence/collect-2d-run.json
af24b1c312e67b0e0cbe2b5871888db17b9bb47e95eca5028c9e07d72b2f1bea evidence/collect-2d-validate.json
f9d74067d87c1ebf30c6db372a26d93b7285791c8cb0307a24af5adb23bf201a evidence/collect-2d.ppm
a00c55bbda0242e924781b4ca9d73910741506dce4df93dafde8d729389511a8 evidence/collect-3d-export.json
7e09c5ae35c8f998510b83af51ded67bba0bc7483f8cfdb17a785368a8f9b2ca evidence/collect-3d-import.json
484eda90411c48277385a2f679561cfa6304965a7a7be6ec065bfbd9dace1722 evidence/collect-3d-manifest.json
96193de60cf7fa139fc110c99628e065779a378151e816ce947129ed4217f9a0 evidence/collect-3d-profile.json
17e2ea46f9811432018704fa2468850f015b113f3407525bf795c21cf44b4fcb evidence/collect-3d-run.json
f102446ff954cf1e9062726772a868ff1a30783da5ff77e2c3486227e8acc867 evidence/collect-3d-validate.json
2905891c9766b2f1f65d5b4284056cb3839f1faae195f9fea39a56e3ebf44363 evidence/collect-3d.ppm
737db5241ea2caba9393e18dbcf1e48ef6c106ae6f4fdc6ac3bfe0e2fc43325c evidence/lua-export.json
3caecdb756b289c2bd1f61ec4e5a8c5194b35166f34f332a1651a5a846e7f631 evidence/lua-manifest.json
eb985bd647266529ab98d0535150e20e7c54692a2546e0df935bbcfb71cbca66 evidence/lua-profile.json
acce29b23725fba6a54e2e70827b0bd92137408eacaec4f58f5dee37666a8d0c evidence/lua-run.json
f44cbe6db9ac6170c4db7f6f502fe09d62cc5da1e2535fe93cc474f6a28293ca evidence/lua-validate.json
e2f4c3b84de75dadd2e31d388d0ba51abc1861f1ec76eb7ba51a4a2dcac720a7 evidence/lua.ppm
5e395b08f275eadc6066697204abf2287e9a1ea124cba6cf6f5deca3924282aa evidence/vulkaninfo-summary.txt
19c9b2c5a401af52980604fa074f89fe9452cfa728a606ad937c509a1c4164eb lua.png
5d69428a1202c1e144779074c0ab88360c459e2dd99b22c1fcf8929dbeab2618 profile_exact_scenes.py
fa49dae530785e24fe028ee5d0ade949fab61d540b118d8bf96d787267e6f87b provenance.json
65858b1de2334d304ad3a0907180aaf4f79ead3da63762500e50b7298d922bfa reference-240/collect-2d-profile-240.json
0d117fc6571fc497271921e818c97c729aeb58da6613bb2b1f24c815ae171319 reference-240/collect-2d-run-240.json
b0c4c6b4020b1ded792917fff1f36510b76bb30864d89bd4e6e250b5693c5fe8 reference-240/collect-3d-profile-240.json
ebbc376e8788b11b31f1eb7a767142348bcc6a6986e0593e20b44cb0e2d1e65d reference-240/collect-3d-run-240.json
63da692b605621acc1cace00d4a3c9cf35de13abfd4351aea6653a88c870e03f reference-240/playable-report.json
f8297f3cb0578addee56c0b3cb9439b37ae37707b02d433d662b534620f329e9 reference-240/reference-summary.json
d97939ba5cee29ae237568c00714b68ab6849c4c506987cff05392750da5e0ca reference-240.log
63da692b605621acc1cace00d4a3c9cf35de13abfd4351aea6653a88c870e03f report.json
f4a0f3a487a5d7180caa08c8c254d2e39bad5d6cf5c4877d131af3dbd98fa777 verifier.log
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

File diff suppressed because one or more lines are too long
@@ -0,0 +1,269 @@
{
"asset_generations": {},
"build_fingerprint": "b2559255996b7990919d5aa15cbfa53c225a0ee299e6a43ffbf04cd8bbb606db",
"configuration": "Release",
"executable": "faset_player",
"files": [
{
"path": "README.txt",
"sha256": "82bf72bc542643f6c4090e0a5de69b0014ca3fa17c6f9dfb12cc41e44c8b8db6",
"size": 262
},
{
"path": "Notices/Faset-NOTICE.txt",
"sha256": "30c2e7e80f5153b31ab57675e07246aef9165965d64e36022b426a26449ece3f",
"size": 204
},
{
"path": "Notices/dependencies.json",
"sha256": "a54639ad2d9ad13c2e5f1ec90d6775f5dfc493656789b78c7e44debe2a378fdc",
"size": 2206
},
{
"path": "Notices/stb/LICENSE",
"sha256": "bebfe904b14301657e4e5d655c811d51fd31b97c455b9cc2d8600d6bac6cff63",
"size": 2510
},
{
"path": "Notices/json/LICENSE.MIT",
"sha256": "46a65cffd1ea955132d95a8dd921640714a8d6b537d2e4e482d31145ae95b603",
"size": 1076
},
{
"path": "Notices/box3d/LICENSE",
"sha256": "da5e31a26bf3cfd5ba5c96d6823e480128c81e76c107ef9d3ee5d94789184b90",
"size": 1067
},
{
"path": "Notices/box2d/LICENSE",
"sha256": "68a3e676d7e94093b102d5cba0d4e04af812040d6f230c3db67a6664574e43d2",
"size": 1067
},
{
"path": "Notices/entt/LICENSE",
"sha256": "0785027ce472d7c61f05fba664a1d3ba6639c1593ced351ad9e4bed868765d99",
"size": 1097
},
{
"path": "Notices/sdl3/LICENSE.txt",
"sha256": "97f35b302b361680ec1e891e95d2d52097bb95abff361434916d99dc1305f127",
"size": 884
},
{
"path": "shaders/gpuTemporalVertexMain.reflection.json",
"sha256": "7a8efe2645e7ce465ca44d19f8cfb2eb6c767abd1c3ce12ed69a149a50be8a8c",
"size": 3308
},
{
"path": "shaders/gpuTemporalVertexMain.spv",
"sha256": "dfe7309aafbd41974668b295e179354965db440e4156b9f12d6a67db16b357f9",
"size": 5996
},
{
"path": "shaders/temporalFragmentMain.reflection.json",
"sha256": "e36452227788f3703d7342b6d9a7a0efef74ce4da3aa96bb176a26e169ec3628",
"size": 3874
},
{
"path": "shaders/temporalFragmentMain.spv",
"sha256": "03adc6673276979b3ea46becf3a36940d3061af77cb8c965c7471feff8dbf89a",
"size": 30976
},
{
"path": "shaders/temporalVertexMain.reflection.json",
"sha256": "6f7812ce88b14bca62a6d2ad82a8657e2ee48c252558f34677c6a2bd980a7edb",
"size": 3935
},
{
"path": "shaders/temporalVertexMain.spv",
"sha256": "6cc3535c952a33ee46fd417fbec7fcad8f24357508b2119256b3077be3d60955",
"size": 1784
},
{
"path": "shaders/temporalCompositeFragmentMain.reflection.json",
"sha256": "44765a41fc362c9a97b1a19834f285e2e7facb24d8715e3d8559b8e9633a7a0e",
"size": 959
},
{
"path": "shaders/temporalCompositeFragmentMain.spv",
"sha256": "9e21c8534c0e70a58ae018fb2d143bf9cfb70112e71b67585f525eef0aecad1b",
"size": 768
},
{
"path": "shaders/temporalCompositeVertexMain.reflection.json",
"sha256": "a3a2ea858bd038423896043b0703704f707addceb5bd56721cd897f6bd092065",
"size": 956
},
{
"path": "shaders/temporalCompositeVertexMain.spv",
"sha256": "6b19f65b64f40d0a249660fdfba9dd5d95831ffab7314a307bf1f5cf39c6a248",
"size": 340
},
{
"path": "shaders/temporalResolveMain.reflection.json",
"sha256": "9407ee1522f32df231d996ea691224863c023c1ca42cc02ccd7e16de1d873082",
"size": 3179
},
{
"path": "shaders/temporalResolveMain.spv",
"sha256": "4c5fc0da7a4c424e5426694c2c2d9f3cd17d1a64066712f5defe882ad8776662",
"size": 22192
},
{
"path": "shaders/gpuPostCullMain.reflection.json",
"sha256": "19ce128388c7f88e0c517fb58a25e46f1382e35ae5f376b10eebe155a2811c4c",
"size": 3591
},
{
"path": "shaders/gpuHzbMain.reflection.json",
"sha256": "589818f670881c64f3aba726ee3bc82fe4b9d835a347f99134e0e157dc4a112e",
"size": 2050
},
{
"path": "shaders/gpuCullMain.reflection.json",
"sha256": "8986a45a8d29743d16f0caece9181b18c85d6490d93b4a56cdb4f53052890f3f",
"size": 3587
},
{
"path": "shaders/gpuShadowMain.reflection.json",
"sha256": "96b3620b163dadf214933cfba6600b1b6a835c4d98b75b1f83e6ccd3dedb2425",
"size": 2755
},
{
"path": "shaders/gpuVertexMain.reflection.json",
"sha256": "01a6cc1bbf3c11c558560d6f8557fd4582d392906ed20a8c729673d0ebf640ed",
"size": 3098
},
{
"path": "shaders/gpuPostCullMain.spv",
"sha256": "1f8edd3be1f99f9433494a6f7be68f1317d6e7099e19354a7b8130d5d932224d",
"size": 12548
},
{
"path": "shaders/gpuHzbMain.spv",
"sha256": "08682362ee2120ed19d260e613285071747c3e436bb09bb6238e46f9cedc2308",
"size": 4140
},
{
"path": "shaders/gpuCullMain.spv",
"sha256": "e5ea6589ddb3613b59f8e58420be95a534cf4149816bc65bae26b1395c638955",
"size": 16288
},
{
"path": "shaders/gpuShadowMain.spv",
"sha256": "f56e0ae3e9b31cb1e3f24e379c81e11c853f8a7102648aaaebc92a17c7e8e53c",
"size": 2492
},
{
"path": "shaders/gpuVertexMain.spv",
"sha256": "32421d4a91f3a88d5210fee7af34b48bcad83072f14e2ccb9ef2ff983e45f78f",
"size": 5016
},
{
"path": "shaders/shadowMain.reflection.json",
"sha256": "d39e2f83c797589296eac9dce139b9ad836a895d6685bc40f79dd2609d687fee",
"size": 3597
},
{
"path": "shaders/fragmentMain.reflection.json",
"sha256": "2b07af2aae7578bdb6c2aa22658538821608b1dd5aeddd7b06e42b2e78cedf12",
"size": 3596
},
{
"path": "shaders/vertexMain.reflection.json",
"sha256": "b3bdff863d53a0b385e06a36701a83a6ecafe9a93e97281a732cce8ff862c0db",
"size": 3591
},
{
"path": "shaders/lightTileMain.reflection.json",
"sha256": "bf6a9256aaa6d6edacfa1e1c265d7c8ce2c1e4ea4036e0bea078c22fd4b536ca",
"size": 1978
},
{
"path": "shaders/lightTileMain.spv",
"sha256": "92850edcc5ee5b586a90ce84ee69a98075a6fff3c13db4a57528d9431afe8b68",
"size": 6800
},
{
"path": "shaders/shadowMain.spv",
"sha256": "7643b4d688492b5ee923b9606f0b0e70343ca05fa67673838206119a6f86d8d8",
"size": 784
},
{
"path": "shaders/fragmentMain.spv",
"sha256": "fea4dd48664a510bad12b5e8582f2db798d4dbea62ce0de35dc2acfe32372733",
"size": 28960
},
{
"path": "shaders/vertexMain.spv",
"sha256": "1ad2631c35d654f48166321ae43d4165043e1b919b14f1dc61caf97b1ada0898",
"size": 1224
},
{
"path": "faset_player",
"sha256": "5936d8a1ceae9250c69f1b8ebccbadebc40b13e812bebeb9752da3d14d202a4a",
"size": 6154704
},
{
"path": "scene.fscene",
"sha256": "0d7b221abc1cae5e9f1d04357c684ac6993f5878d634b4b950eec66dd8e55b2a",
"size": 6214
}
],
"format": "faset.export",
"generation": "ca306aa8-a094-42bc-833f-a24a05cab73d",
"lua_enabled": false,
"lua_fingerprint": "",
"platform": "linux",
"prerequisites": [
"Linux x86_64",
"Vulkan 1.3 driver",
"Compatible glibc and libstdc++ runtime"
],
"renderer_profile": {
"api": "Vulkan 1.3",
"materials": [
"base-color factor and texture",
"metallic and roughness factors"
],
"required_features": [
"dynamicRendering",
"synchronization2"
],
"shadow_atlases": {
"caster_draw_limit": 4096,
"fallback_resolution": 1024,
"local_face_limit": 16,
"preferred_resolution": 2048,
"sampled_d32_required": true,
"sun_cascade_limit": 4
},
"texture_sampling": "linear clamp, one mip level",
"unsupported_material_features": [
"normal maps",
"metallic-roughness maps",
"emissive and occlusion maps",
"alpha mode selection",
"unlit mode",
"per-material face culling"
]
},
"scene_hash": "fdfa1c49cf78a1cf52cd41b201c35bb0b5f852c90b7626b2a7f17da3e2e3e24c",
"simulation": {
"fixed_delta": 0.016666666666666666,
"gravity": [
0,
-9.81,
0
],
"max_catch_up_ticks": 4,
"physics_substeps": 4
},
"units": {
"angle": "radian",
"coordinates": "right-handed Y-up",
"distance": "metre"
},
"validation_log": "{\"dimension\":2,\"validated\":true}\n",
"version": 1
}
@@ -0,0 +1,18 @@
{
"arguments": [
"/tmp/faset-p1-final-packages-4a3453e/Faset Café 世界/collect-2d/faset_player",
"--headless",
"--frames",
"120",
"--capture",
"/tmp/faset-p1-final-packages-4a3453e/Faset Café 世界/collect-2d/verification.ppm",
"--profile",
"/tmp/faset-p1-final-packages-4a3453e/Faset Café 世界/collect-2d/profile.json"
],
"cwd": "/tmp/faset-p1-final-packages-4a3453e/empty-working-directory",
"seconds": 0.6589637870201841,
"exit_code": 0,
"timed_out": false,
"stdout": "New round: collect the three gold cubes, then reach the green exit. E resets.\n{\"device\":\"NVIDIA GeForce RTX 2080 Ti\",\"dimension\":2,\"effective_temporal_mode\":\"off\",\"effective_visibility_mode\":\"direct\",\"frames\":120,\"gpu_visibility_active\":false,\"temporal_mode\":\"off\",\"ticks\":120,\"validation_errors\":0,\"visibility_mode\":\"direct\"}\n",
"stderr": ""
}
@@ -0,0 +1,12 @@
{
"arguments": [
"/tmp/faset-p1-final-packages-4a3453e/Faset Café 世界/collect-2d/faset_player",
"--validate"
],
"cwd": "/tmp/faset-p1-final-packages-4a3453e/empty-working-directory",
"seconds": 0.008382081025047228,
"exit_code": 0,
"timed_out": false,
"stdout": "{\"dimension\":2,\"validated\":true}\n",
"stderr": ""
}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,296 @@
{
"asset_generations": {
"5832763b-3ed0-44d6-9088-0b524f196a91": "4a5bfcc1437a7b4d65c388da2beace0308cceda8e16503d08ce676260f21d5c2"
},
"build_fingerprint": "bd02f95edc719dfab9193177d2839502f3322cd85b8fc8f6dcb4f9a2560362b1",
"configuration": "Release",
"executable": "faset_player",
"files": [
{
"path": "README.txt",
"sha256": "82bf72bc542643f6c4090e0a5de69b0014ca3fa17c6f9dfb12cc41e44c8b8db6",
"size": 262
},
{
"path": "Notices/Faset-NOTICE.txt",
"sha256": "30c2e7e80f5153b31ab57675e07246aef9165965d64e36022b426a26449ece3f",
"size": 204
},
{
"path": "Notices/dependencies.json",
"sha256": "a54639ad2d9ad13c2e5f1ec90d6775f5dfc493656789b78c7e44debe2a378fdc",
"size": 2206
},
{
"path": "Notices/stb/LICENSE",
"sha256": "bebfe904b14301657e4e5d655c811d51fd31b97c455b9cc2d8600d6bac6cff63",
"size": 2510
},
{
"path": "Notices/json/LICENSE.MIT",
"sha256": "46a65cffd1ea955132d95a8dd921640714a8d6b537d2e4e482d31145ae95b603",
"size": 1076
},
{
"path": "Notices/box3d/LICENSE",
"sha256": "da5e31a26bf3cfd5ba5c96d6823e480128c81e76c107ef9d3ee5d94789184b90",
"size": 1067
},
{
"path": "Notices/box2d/LICENSE",
"sha256": "68a3e676d7e94093b102d5cba0d4e04af812040d6f230c3db67a6664574e43d2",
"size": 1067
},
{
"path": "Notices/entt/LICENSE",
"sha256": "0785027ce472d7c61f05fba664a1d3ba6639c1593ced351ad9e4bed868765d99",
"size": 1097
},
{
"path": "Notices/sdl3/LICENSE.txt",
"sha256": "97f35b302b361680ec1e891e95d2d52097bb95abff361434916d99dc1305f127",
"size": 884
},
{
"path": "assets/5832763b-3ed0-44d6-9088-0b524f196a91/current.json",
"sha256": "b0732959808ce61ef5a3223fba2d9ad8c17a3ea7873d4a81c00aadee6c51032e",
"size": 134
},
{
"path": "assets/5832763b-3ed0-44d6-9088-0b524f196a91/generations/4a5bfcc1437a7b4d65c388da2beace0308cceda8e16503d08ce676260f21d5c2/manifest.json",
"sha256": "ee3f68794c6dc44ab492b1ba4640aa74e4de79a5ec10aed8dcdd45a03afc508e",
"size": 4532
},
{
"path": "assets/5832763b-3ed0-44d6-9088-0b524f196a91/generations/4a5bfcc1437a7b4d65c388da2beace0308cceda8e16503d08ce676260f21d5c2/meshes/mesh-93b5b3e52cb6bb120fefb80e2d8e222b-0.fmesh",
"sha256": "3875c16ea628d4126373ebfe07816621fbad3961596a2fcd112f1eec0e378071",
"size": 928
},
{
"path": "assets/5832763b-3ed0-44d6-9088-0b524f196a91/generations/4a5bfcc1437a7b4d65c388da2beace0308cceda8e16503d08ce676260f21d5c2/meshes/mesh-0961e2a3f92977836a3aa80cab09277e-0.fmesh",
"sha256": "98b38aca7d2786c58a2265ba4d1f2255123f03d31d947e239232cf55bfdc2c97",
"size": 928
},
{
"path": "assets/5832763b-3ed0-44d6-9088-0b524f196a91/generations/4a5bfcc1437a7b4d65c388da2beace0308cceda8e16503d08ce676260f21d5c2/meshes/mesh-fc069a07a87e0f831fd92efdbc4efa1f-0.fmesh",
"sha256": "98b38aca7d2786c58a2265ba4d1f2255123f03d31d947e239232cf55bfdc2c97",
"size": 928
},
{
"path": "shaders/gpuTemporalVertexMain.reflection.json",
"sha256": "7a8efe2645e7ce465ca44d19f8cfb2eb6c767abd1c3ce12ed69a149a50be8a8c",
"size": 3308
},
{
"path": "shaders/gpuTemporalVertexMain.spv",
"sha256": "dfe7309aafbd41974668b295e179354965db440e4156b9f12d6a67db16b357f9",
"size": 5996
},
{
"path": "shaders/temporalFragmentMain.reflection.json",
"sha256": "e36452227788f3703d7342b6d9a7a0efef74ce4da3aa96bb176a26e169ec3628",
"size": 3874
},
{
"path": "shaders/temporalFragmentMain.spv",
"sha256": "03adc6673276979b3ea46becf3a36940d3061af77cb8c965c7471feff8dbf89a",
"size": 30976
},
{
"path": "shaders/temporalVertexMain.reflection.json",
"sha256": "6f7812ce88b14bca62a6d2ad82a8657e2ee48c252558f34677c6a2bd980a7edb",
"size": 3935
},
{
"path": "shaders/temporalVertexMain.spv",
"sha256": "6cc3535c952a33ee46fd417fbec7fcad8f24357508b2119256b3077be3d60955",
"size": 1784
},
{
"path": "shaders/temporalCompositeFragmentMain.reflection.json",
"sha256": "44765a41fc362c9a97b1a19834f285e2e7facb24d8715e3d8559b8e9633a7a0e",
"size": 959
},
{
"path": "shaders/temporalCompositeFragmentMain.spv",
"sha256": "9e21c8534c0e70a58ae018fb2d143bf9cfb70112e71b67585f525eef0aecad1b",
"size": 768
},
{
"path": "shaders/temporalCompositeVertexMain.reflection.json",
"sha256": "a3a2ea858bd038423896043b0703704f707addceb5bd56721cd897f6bd092065",
"size": 956
},
{
"path": "shaders/temporalCompositeVertexMain.spv",
"sha256": "6b19f65b64f40d0a249660fdfba9dd5d95831ffab7314a307bf1f5cf39c6a248",
"size": 340
},
{
"path": "shaders/temporalResolveMain.reflection.json",
"sha256": "9407ee1522f32df231d996ea691224863c023c1ca42cc02ccd7e16de1d873082",
"size": 3179
},
{
"path": "shaders/temporalResolveMain.spv",
"sha256": "4c5fc0da7a4c424e5426694c2c2d9f3cd17d1a64066712f5defe882ad8776662",
"size": 22192
},
{
"path": "shaders/gpuPostCullMain.reflection.json",
"sha256": "19ce128388c7f88e0c517fb58a25e46f1382e35ae5f376b10eebe155a2811c4c",
"size": 3591
},
{
"path": "shaders/gpuHzbMain.reflection.json",
"sha256": "589818f670881c64f3aba726ee3bc82fe4b9d835a347f99134e0e157dc4a112e",
"size": 2050
},
{
"path": "shaders/gpuCullMain.reflection.json",
"sha256": "8986a45a8d29743d16f0caece9181b18c85d6490d93b4a56cdb4f53052890f3f",
"size": 3587
},
{
"path": "shaders/gpuShadowMain.reflection.json",
"sha256": "96b3620b163dadf214933cfba6600b1b6a835c4d98b75b1f83e6ccd3dedb2425",
"size": 2755
},
{
"path": "shaders/gpuVertexMain.reflection.json",
"sha256": "01a6cc1bbf3c11c558560d6f8557fd4582d392906ed20a8c729673d0ebf640ed",
"size": 3098
},
{
"path": "shaders/gpuPostCullMain.spv",
"sha256": "1f8edd3be1f99f9433494a6f7be68f1317d6e7099e19354a7b8130d5d932224d",
"size": 12548
},
{
"path": "shaders/gpuHzbMain.spv",
"sha256": "08682362ee2120ed19d260e613285071747c3e436bb09bb6238e46f9cedc2308",
"size": 4140
},
{
"path": "shaders/gpuCullMain.spv",
"sha256": "e5ea6589ddb3613b59f8e58420be95a534cf4149816bc65bae26b1395c638955",
"size": 16288
},
{
"path": "shaders/gpuShadowMain.spv",
"sha256": "f56e0ae3e9b31cb1e3f24e379c81e11c853f8a7102648aaaebc92a17c7e8e53c",
"size": 2492
},
{
"path": "shaders/gpuVertexMain.spv",
"sha256": "32421d4a91f3a88d5210fee7af34b48bcad83072f14e2ccb9ef2ff983e45f78f",
"size": 5016
},
{
"path": "shaders/shadowMain.reflection.json",
"sha256": "d39e2f83c797589296eac9dce139b9ad836a895d6685bc40f79dd2609d687fee",
"size": 3597
},
{
"path": "shaders/fragmentMain.reflection.json",
"sha256": "2b07af2aae7578bdb6c2aa22658538821608b1dd5aeddd7b06e42b2e78cedf12",
"size": 3596
},
{
"path": "shaders/vertexMain.reflection.json",
"sha256": "b3bdff863d53a0b385e06a36701a83a6ecafe9a93e97281a732cce8ff862c0db",
"size": 3591
},
{
"path": "shaders/lightTileMain.reflection.json",
"sha256": "bf6a9256aaa6d6edacfa1e1c265d7c8ce2c1e4ea4036e0bea078c22fd4b536ca",
"size": 1978
},
{
"path": "shaders/lightTileMain.spv",
"sha256": "92850edcc5ee5b586a90ce84ee69a98075a6fff3c13db4a57528d9431afe8b68",
"size": 6800
},
{
"path": "shaders/shadowMain.spv",
"sha256": "7643b4d688492b5ee923b9606f0b0e70343ca05fa67673838206119a6f86d8d8",
"size": 784
},
{
"path": "shaders/fragmentMain.spv",
"sha256": "fea4dd48664a510bad12b5e8582f2db798d4dbea62ce0de35dc2acfe32372733",
"size": 28960
},
{
"path": "shaders/vertexMain.spv",
"sha256": "1ad2631c35d654f48166321ae43d4165043e1b919b14f1dc61caf97b1ada0898",
"size": 1224
},
{
"path": "faset_player",
"sha256": "52fbe0067fc2be3807e60ffa5a77e819838dc50a4b723af51f16379b4a487e7c",
"size": 6163816
},
{
"path": "scene.fscene",
"sha256": "21c364140669ec82c6886102667b255df5ccdf0ec77e0ca64060f84dd7b86632",
"size": 8639
}
],
"format": "faset.export",
"generation": "004c6e18-969b-4ef5-95bb-5d7742f96564",
"lua_enabled": false,
"lua_fingerprint": "",
"platform": "linux",
"prerequisites": [
"Linux x86_64",
"Vulkan 1.3 driver",
"Compatible glibc and libstdc++ runtime"
],
"renderer_profile": {
"api": "Vulkan 1.3",
"materials": [
"base-color factor and texture",
"metallic and roughness factors"
],
"required_features": [
"dynamicRendering",
"synchronization2"
],
"shadow_atlases": {
"caster_draw_limit": 4096,
"fallback_resolution": 1024,
"local_face_limit": 16,
"preferred_resolution": 2048,
"sampled_d32_required": true,
"sun_cascade_limit": 4
},
"texture_sampling": "linear clamp, one mip level",
"unsupported_material_features": [
"normal maps",
"metallic-roughness maps",
"emissive and occlusion maps",
"alpha mode selection",
"unlit mode",
"per-material face culling"
]
},
"scene_hash": "ee12794145c14ba5b599c5d9ae21648cccdfa91c47ee7742549f60d5fe7bc3e0",
"simulation": {
"fixed_delta": 0.016666666666666666,
"gravity": [
0,
-9.81,
0
],
"max_catch_up_ticks": 4,
"physics_substeps": 4
},
"units": {
"angle": "radian",
"coordinates": "right-handed Y-up",
"distance": "metre"
},
"validation_log": "warning: material material-bb63b094febbf90bb7049c9bcf7587bc has features beyond the initial base-color/PBR renderer\n{\"dimension\":3,\"validated\":true}\n",
"version": 1
}
@@ -0,0 +1,18 @@
{
"arguments": [
"/tmp/faset-p1-final-packages-4a3453e/Faset Café 世界/collect-3d/faset_player",
"--headless",
"--frames",
"120",
"--capture",
"/tmp/faset-p1-final-packages-4a3453e/Faset Café 世界/collect-3d/verification.ppm",
"--profile",
"/tmp/faset-p1-final-packages-4a3453e/Faset Café 世界/collect-3d/profile.json"
],
"cwd": "/tmp/faset-p1-final-packages-4a3453e/empty-working-directory",
"seconds": 0.6575766110036056,
"exit_code": 0,
"timed_out": false,
"stdout": "New round: collect the three gold cubes, then reach the green exit. E resets.\n{\"device\":\"NVIDIA GeForce RTX 2080 Ti\",\"dimension\":3,\"effective_temporal_mode\":\"off\",\"effective_visibility_mode\":\"direct\",\"frames\":120,\"gpu_visibility_active\":false,\"temporal_mode\":\"off\",\"ticks\":120,\"validation_errors\":0,\"visibility_mode\":\"direct\"}\n",
"stderr": "warning: material material-bb63b094febbf90bb7049c9bcf7587bc has features beyond the initial base-color/PBR renderer\n"
}
@@ -0,0 +1,12 @@
{
"arguments": [
"/tmp/faset-p1-final-packages-4a3453e/Faset Café 世界/collect-3d/faset_player",
"--validate"
],
"cwd": "/tmp/faset-p1-final-packages-4a3453e/empty-working-directory",
"seconds": 0.00796160800382495,
"exit_code": 0,
"timed_out": false,
"stdout": "{\"dimension\":3,\"validated\":true}\n",
"stderr": "warning: material material-bb63b094febbf90bb7049c9bcf7587bc has features beyond the initial base-color/PBR renderer\n"
}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,294 @@
{
"asset_generations": {},
"build_fingerprint": "0bfae1f2850e06540c91a793a50673f53e9768434c02b5625dbe4839e27f23f0",
"configuration": "Release",
"executable": "faset_player",
"files": [
{
"path": "README.txt",
"sha256": "82bf72bc542643f6c4090e0a5de69b0014ca3fa17c6f9dfb12cc41e44c8b8db6",
"size": 262
},
{
"path": "Notices/Faset-NOTICE.txt",
"sha256": "30c2e7e80f5153b31ab57675e07246aef9165965d64e36022b426a26449ece3f",
"size": 204
},
{
"path": "Notices/dependencies.json",
"sha256": "262e8f63cf21c516829b1fedb0900ac90e76d62aa8f78d9ad02d8f24e0359e74",
"size": 2468
},
{
"path": "Notices/lua/LICENSE.txt",
"sha256": "e42d195c77d3ad7255ee9c874772d3c53998e7f60f9acf453d4630fa161e0bfe",
"size": 1126
},
{
"path": "Notices/stb/LICENSE",
"sha256": "bebfe904b14301657e4e5d655c811d51fd31b97c455b9cc2d8600d6bac6cff63",
"size": 2510
},
{
"path": "Notices/json/LICENSE.MIT",
"sha256": "46a65cffd1ea955132d95a8dd921640714a8d6b537d2e4e482d31145ae95b603",
"size": 1076
},
{
"path": "Notices/box3d/LICENSE",
"sha256": "da5e31a26bf3cfd5ba5c96d6823e480128c81e76c107ef9d3ee5d94789184b90",
"size": 1067
},
{
"path": "Notices/box2d/LICENSE",
"sha256": "68a3e676d7e94093b102d5cba0d4e04af812040d6f230c3db67a6664574e43d2",
"size": 1067
},
{
"path": "Notices/entt/LICENSE",
"sha256": "0785027ce472d7c61f05fba664a1d3ba6639c1593ced351ad9e4bed868765d99",
"size": 1097
},
{
"path": "Notices/sdl3/LICENSE.txt",
"sha256": "97f35b302b361680ec1e891e95d2d52097bb95abff361434916d99dc1305f127",
"size": 884
},
{
"path": "shaders/gpuTemporalVertexMain.reflection.json",
"sha256": "7a8efe2645e7ce465ca44d19f8cfb2eb6c767abd1c3ce12ed69a149a50be8a8c",
"size": 3308
},
{
"path": "shaders/gpuTemporalVertexMain.spv",
"sha256": "dfe7309aafbd41974668b295e179354965db440e4156b9f12d6a67db16b357f9",
"size": 5996
},
{
"path": "shaders/temporalFragmentMain.reflection.json",
"sha256": "e36452227788f3703d7342b6d9a7a0efef74ce4da3aa96bb176a26e169ec3628",
"size": 3874
},
{
"path": "shaders/temporalFragmentMain.spv",
"sha256": "03adc6673276979b3ea46becf3a36940d3061af77cb8c965c7471feff8dbf89a",
"size": 30976
},
{
"path": "shaders/temporalVertexMain.reflection.json",
"sha256": "6f7812ce88b14bca62a6d2ad82a8657e2ee48c252558f34677c6a2bd980a7edb",
"size": 3935
},
{
"path": "shaders/temporalVertexMain.spv",
"sha256": "6cc3535c952a33ee46fd417fbec7fcad8f24357508b2119256b3077be3d60955",
"size": 1784
},
{
"path": "shaders/temporalCompositeFragmentMain.reflection.json",
"sha256": "44765a41fc362c9a97b1a19834f285e2e7facb24d8715e3d8559b8e9633a7a0e",
"size": 959
},
{
"path": "shaders/temporalCompositeFragmentMain.spv",
"sha256": "9e21c8534c0e70a58ae018fb2d143bf9cfb70112e71b67585f525eef0aecad1b",
"size": 768
},
{
"path": "shaders/temporalCompositeVertexMain.reflection.json",
"sha256": "a3a2ea858bd038423896043b0703704f707addceb5bd56721cd897f6bd092065",
"size": 956
},
{
"path": "shaders/temporalCompositeVertexMain.spv",
"sha256": "6b19f65b64f40d0a249660fdfba9dd5d95831ffab7314a307bf1f5cf39c6a248",
"size": 340
},
{
"path": "shaders/temporalResolveMain.reflection.json",
"sha256": "9407ee1522f32df231d996ea691224863c023c1ca42cc02ccd7e16de1d873082",
"size": 3179
},
{
"path": "shaders/temporalResolveMain.spv",
"sha256": "4c5fc0da7a4c424e5426694c2c2d9f3cd17d1a64066712f5defe882ad8776662",
"size": 22192
},
{
"path": "shaders/gpuPostCullMain.reflection.json",
"sha256": "19ce128388c7f88e0c517fb58a25e46f1382e35ae5f376b10eebe155a2811c4c",
"size": 3591
},
{
"path": "shaders/gpuHzbMain.reflection.json",
"sha256": "589818f670881c64f3aba726ee3bc82fe4b9d835a347f99134e0e157dc4a112e",
"size": 2050
},
{
"path": "shaders/gpuCullMain.reflection.json",
"sha256": "8986a45a8d29743d16f0caece9181b18c85d6490d93b4a56cdb4f53052890f3f",
"size": 3587
},
{
"path": "shaders/gpuShadowMain.reflection.json",
"sha256": "96b3620b163dadf214933cfba6600b1b6a835c4d98b75b1f83e6ccd3dedb2425",
"size": 2755
},
{
"path": "shaders/gpuVertexMain.reflection.json",
"sha256": "01a6cc1bbf3c11c558560d6f8557fd4582d392906ed20a8c729673d0ebf640ed",
"size": 3098
},
{
"path": "shaders/gpuPostCullMain.spv",
"sha256": "1f8edd3be1f99f9433494a6f7be68f1317d6e7099e19354a7b8130d5d932224d",
"size": 12548
},
{
"path": "shaders/gpuHzbMain.spv",
"sha256": "08682362ee2120ed19d260e613285071747c3e436bb09bb6238e46f9cedc2308",
"size": 4140
},
{
"path": "shaders/gpuCullMain.spv",
"sha256": "e5ea6589ddb3613b59f8e58420be95a534cf4149816bc65bae26b1395c638955",
"size": 16288
},
{
"path": "shaders/gpuShadowMain.spv",
"sha256": "f56e0ae3e9b31cb1e3f24e379c81e11c853f8a7102648aaaebc92a17c7e8e53c",
"size": 2492
},
{
"path": "shaders/gpuVertexMain.spv",
"sha256": "32421d4a91f3a88d5210fee7af34b48bcad83072f14e2ccb9ef2ff983e45f78f",
"size": 5016
},
{
"path": "shaders/shadowMain.reflection.json",
"sha256": "d39e2f83c797589296eac9dce139b9ad836a895d6685bc40f79dd2609d687fee",
"size": 3597
},
{
"path": "shaders/fragmentMain.reflection.json",
"sha256": "2b07af2aae7578bdb6c2aa22658538821608b1dd5aeddd7b06e42b2e78cedf12",
"size": 3596
},
{
"path": "shaders/vertexMain.reflection.json",
"sha256": "b3bdff863d53a0b385e06a36701a83a6ecafe9a93e97281a732cce8ff862c0db",
"size": 3591
},
{
"path": "shaders/lightTileMain.reflection.json",
"sha256": "bf6a9256aaa6d6edacfa1e1c265d7c8ce2c1e4ea4036e0bea078c22fd4b536ca",
"size": 1978
},
{
"path": "shaders/lightTileMain.spv",
"sha256": "92850edcc5ee5b586a90ce84ee69a98075a6fff3c13db4a57528d9431afe8b68",
"size": 6800
},
{
"path": "shaders/shadowMain.spv",
"sha256": "7643b4d688492b5ee923b9606f0b0e70343ca05fa67673838206119a6f86d8d8",
"size": 784
},
{
"path": "shaders/fragmentMain.spv",
"sha256": "fea4dd48664a510bad12b5e8582f2db798d4dbea62ce0de35dc2acfe32372733",
"size": 28960
},
{
"path": "shaders/vertexMain.spv",
"sha256": "1ad2631c35d654f48166321ae43d4165043e1b919b14f1dc61caf97b1ada0898",
"size": 1224
},
{
"path": "faset_player",
"sha256": "6df88e53e4fff9376341fd3d049b4e047a268d0bf344184d903b6c17ff20bd0e",
"size": 6509384
},
{
"path": "project.faset.json",
"sha256": "e07b12047f8141c3c4cc8f0e7d0905a5c635375e4494755e34191db0859ab86f",
"size": 175
},
{
"path": "Scripts/util/motion.lua",
"sha256": "bad3dcdc1081fd1dec589c12dad8dc175b739d77ea52b957ead9ecb4b7cb88a3",
"size": 150
},
{
"path": "Scripts/player.lua",
"sha256": "1c51810574a3413c46a7cbd0ea2e84a9b802da1206a2b72bb78f6cc951367a11",
"size": 1376
},
{
"path": "Scripts/beacon.lua",
"sha256": "44d932ebedf66cadb9620f2d926177be2f8d43d71d56aa83611de686af026231",
"size": 820
},
{
"path": "scene.fscene",
"sha256": "641ba14a1f9c3966b9ec797814fdfa54f954dc5e0d53ab00c645598edef61baf",
"size": 1681
}
],
"format": "faset.export",
"generation": "92846e8b-d199-4679-8f6a-fb0686acba75",
"lua_enabled": true,
"lua_fingerprint": "a9261789bb1e0ca38bd40b08b0454165cd51454cba3ad4725dd357812ced6e35",
"platform": "linux",
"prerequisites": [
"Linux x86_64",
"Vulkan 1.3 driver",
"Compatible glibc and libstdc++ runtime"
],
"renderer_profile": {
"api": "Vulkan 1.3",
"materials": [
"base-color factor and texture",
"metallic and roughness factors"
],
"required_features": [
"dynamicRendering",
"synchronization2"
],
"shadow_atlases": {
"caster_draw_limit": 4096,
"fallback_resolution": 1024,
"local_face_limit": 16,
"preferred_resolution": 2048,
"sampled_d32_required": true,
"sun_cascade_limit": 4
},
"texture_sampling": "linear clamp, one mip level",
"unsupported_material_features": [
"normal maps",
"metallic-roughness maps",
"emissive and occlusion maps",
"alpha mode selection",
"unlit mode",
"per-material face culling"
]
},
"scene_hash": "143724a468d711cbdf9a9700310d7b0acef003ce1b21422ca5204e0e565fa02c",
"simulation": {
"fixed_delta": 0.016666666666666666,
"gravity": [
0,
-9.81,
0
],
"max_catch_up_ticks": 4,
"physics_substeps": 4
},
"units": {
"angle": "radian",
"coordinates": "right-handed Y-up",
"distance": "metre"
},
"validation_log": "{\"dimension\":2,\"validated\":true}\n",
"version": 1
}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,18 @@
{
"arguments": [
"/tmp/faset-p1-final-packages-4a3453e/Faset Café 世界/lua/faset_player",
"--headless",
"--frames",
"120",
"--capture",
"/tmp/faset-p1-final-packages-4a3453e/Faset Café 世界/lua/verification.ppm",
"--profile",
"/tmp/faset-p1-final-packages-4a3453e/Faset Café 世界/lua/profile.json"
],
"cwd": "/tmp/faset-p1-final-packages-4a3453e/empty-working-directory",
"seconds": 0.6108254339778796,
"exit_code": 0,
"timed_out": false,
"stdout": "{\"device\":\"NVIDIA GeForce RTX 2080 Ti\",\"dimension\":2,\"effective_temporal_mode\":\"off\",\"effective_visibility_mode\":\"direct\",\"frames\":120,\"gpu_visibility_active\":false,\"temporal_mode\":\"off\",\"ticks\":120,\"validation_errors\":0,\"visibility_mode\":\"direct\"}\n",
"stderr": "Lua player ready: A/D move, Space jump, E reset\n"
}
@@ -0,0 +1,12 @@
{
"arguments": [
"/tmp/faset-p1-final-packages-4a3453e/Faset Café 世界/lua/faset_player",
"--validate"
],
"cwd": "/tmp/faset-p1-final-packages-4a3453e/empty-working-directory",
"seconds": 0.009439726010896266,
"exit_code": 0,
"timed_out": false,
"stdout": "{\"dimension\":2,\"validated\":true}\n",
"stderr": ""
}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,82 @@
==========
VULKANINFO
==========
Vulkan Instance Version: 1.4.341
Instance Extensions: count = 27
-------------------------------
VK_EXT_acquire_drm_display : extension revision 1
VK_EXT_acquire_xlib_display : extension revision 1
VK_EXT_debug_report : extension revision 10
VK_EXT_debug_utils : extension revision 2
VK_EXT_direct_mode_display : extension revision 1
VK_EXT_display_surface_counter : extension revision 1
VK_EXT_headless_surface : extension revision 1
VK_EXT_layer_settings : extension revision 2
VK_EXT_surface_maintenance1 : extension revision 1
VK_EXT_swapchain_colorspace : extension revision 5
VK_KHR_device_group_creation : extension revision 1
VK_KHR_display : extension revision 23
VK_KHR_external_fence_capabilities : extension revision 1
VK_KHR_external_memory_capabilities : extension revision 1
VK_KHR_external_semaphore_capabilities : extension revision 1
VK_KHR_get_display_properties2 : extension revision 1
VK_KHR_get_physical_device_properties2 : extension revision 2
VK_KHR_get_surface_capabilities2 : extension revision 1
VK_KHR_portability_enumeration : extension revision 1
VK_KHR_surface : extension revision 25
VK_KHR_surface_maintenance1 : extension revision 1
VK_KHR_surface_protected_capabilities : extension revision 1
VK_KHR_wayland_surface : extension revision 6
VK_KHR_xcb_surface : extension revision 6
VK_KHR_xlib_surface : extension revision 6
VK_LUNARG_direct_driver_loading : extension revision 1
VK_NV_display_stereo : extension revision 1
Instance Layers: count = 12
---------------------------
VK_LAYER_INTEL_nullhw INTEL NULL HW 1.1.73 version 1
VK_LAYER_KHRONOS_validation Khronos Validation Layer 1.4.341 version 1
VK_LAYER_MESA_anti_lag Open-source implementation of the VK_AMD_anti_lag extension. 1.4.303 version 1
VK_LAYER_MESA_device_select Linux device selection layer 1.4.303 version 1
VK_LAYER_MESA_overlay Mesa Overlay layer 1.4.303 version 1
VK_LAYER_MESA_screenshot Mesa Screenshot layer 1.4.303 version 1
VK_LAYER_NV_optimus NVIDIA Optimus layer 1.4.329 version 1
VK_LAYER_NV_present NVIDIA Presentation Layer 1.4.329 version 1
VK_LAYER_VALVE_steam_fossilize_32 Steam Pipeline Caching Layer 1.3.207 version 1
VK_LAYER_VALVE_steam_fossilize_64 Steam Pipeline Caching Layer 1.3.207 version 1
VK_LAYER_VALVE_steam_overlay_32 Steam Overlay Layer 1.3.207 version 1
VK_LAYER_VALVE_steam_overlay_64 Steam Overlay Layer 1.3.207 version 1
Devices:
========
GPU0:
apiVersion = 1.4.329
driverVersion = 595.84.0.0
vendorID = 0x10de
deviceID = 0x1e04
deviceType = PHYSICAL_DEVICE_TYPE_DISCRETE_GPU
deviceName = NVIDIA GeForce RTX 2080 Ti
driverID = DRIVER_ID_NVIDIA_PROPRIETARY
driverName = NVIDIA
driverInfo = 595.84
conformanceVersion = 1.4.3.3
deviceUUID = 2c71c7ba-97ac-c78e-2c06-af362631f3fe
driverUUID = 027cbdd1-c478-513e-af69-ebc9eaa7de87
GPU1:
apiVersion = 1.4.335
driverVersion = 26.0.8
vendorID = 0x10005
deviceID = 0x0000
deviceType = PHYSICAL_DEVICE_TYPE_CPU
deviceName = llvmpipe (LLVM 21.1.8, 256 bits)
driverID = DRIVER_ID_MESA_LLVMPIPE
driverName = llvmpipe
driverInfo = Mesa 26.0.8-1ubuntu0.3 (LLVM 21.1.8)
conformanceVersion = 1.3.1.1
deviceUUID = 6d657361-3236-2e30-2e38-2d3175627500
driverUUID = 6c6c766d-7069-7065-5555-494400000000
WARNING: [Loader Message] Code 0 : ICD for selected physical device does not export vkGetPhysicalDeviceDisplayPlanePropertiesKHR!
WARNING: [Loader Message] Code 0 : ICD for selected physical device does not export vkGetPhysicalDeviceDisplayPropertiesKHR!
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

@@ -0,0 +1,167 @@
#!/usr/bin/env python3
"""Profile the two relocated Release samples retained by verify_playable_exports.py."""
import argparse
import hashlib
import json
from pathlib import Path
import platform
import shutil
import subprocess
import time
def digest(path: Path) -> str:
return hashlib.sha256(path.read_bytes()).hexdigest()
def read(path: Path) -> dict:
return json.loads(path.read_text(encoding="utf-8"))
def write(path: Path, value: object) -> None:
path.write_text(json.dumps(value, ensure_ascii=False, indent=2) + "\n", encoding="utf-8")
def require(condition: bool, message: str) -> None:
if not condition:
raise RuntimeError(message)
def run_source_hidden(source: dict, command: list[str], cwd: Path) -> subprocess.CompletedProcess:
projects = Path(source["project_workspace"]) / "Faset Café 世界"
disabled = projects.parent / "projects-offline-reference"
require(projects.is_dir() and not disabled.exists(),
"Disposable source projects must be available to hide")
projects.rename(disabled)
try:
require(not projects.exists(), "Source project paths remain available")
return subprocess.run(command, cwd=cwd, capture_output=True, text=True,
encoding="utf-8", errors="replace", timeout=300)
finally:
if disabled.exists() and not projects.exists():
disabled.rename(projects)
def main() -> None:
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument("--verification", type=Path, required=True,
help="Passed report.json from tools/verify_playable_exports.py")
parser.add_argument("--output", type=Path, required=True,
help="New/empty directory for raw 240-frame evidence")
args = parser.parse_args()
verification = args.verification.resolve()
output = args.output.resolve()
source = read(verification)
require(source.get("status") == "passed" and not source.get("engine_dirty"),
"A clean, passed export verification is required")
require(source.get("frames_per_game") == 120, "Expected a 120-frame verifier")
require(set(source.get("requested_projects", [])) ==
{"collect-2d", "collect-3d", "lua"} and
{item.get("name") for item in source.get("projects", [])} ==
{"collect-2d", "collect-3d", "lua"} and
all(item.get("status") == "passed" and
item.get("completed_frames") == 120 and
item.get("source_project_paths_unavailable") is True
for item in source["projects"]),
"Expected three source-hidden 120-frame Release games")
require(not output.exists() or not any(output.iterdir()),
"Output directory must be new or empty")
output.mkdir(parents=True, exist_ok=True)
shutil.copy2(verification, output / "playable-report.json")
cwd = Path(source["standalone_root"]) / "empty-working-directory"
require(cwd.is_dir(), "Verifier's unrelated working directory is missing")
limits = {"wall": 4.0, "gpu": 1.0, "renderer_readback_cpu": 1.0,
"simulation": 0.5, "snapshot": 0.5}
report = {"format": "faset.p1-release-reference", "version": 1,
"source_revision": source["engine_revision"],
"editor_sha256": source["editor_sha256"],
"verification_sha256": digest(verification),
"host": {"platform": platform.platform(), "machine": platform.machine(),
"processor": platform.processor()},
"method": "sequential relocated Release Player, default direct/temporal-off, "
"offscreen 1280x720, 240 completed frames including first; "
"nearest-rank p95, validation/readback enabled",
"projects": []}
for item in source["projects"]:
if item["name"] not in ("collect-2d", "collect-3d"):
continue
require(item.get("status") == "passed" and item.get("configuration") == "Release" and
item.get("source_project_paths_unavailable") is True,
f"Incomplete relocated export: {item['name']}")
name = item["name"]
package = Path(item["standalone_directory"])
player = package / item["executable"]
require(player.is_file() and not player.is_symlink(), f"Missing Player: {player}")
profile_path = output / f"{name}-profile-240.json"
command = [str(player), "--headless", "--frames", "240", "--profile",
str(profile_path)]
started = time.monotonic()
process = run_source_hidden(source, command, cwd)
invocation = {"arguments": command, "cwd": str(cwd),
"source_project_paths_unavailable": True,
"seconds": time.monotonic() - started,
"exit_code": process.returncode,
"stdout": process.stdout, "stderr": process.stderr}
write(output / f"{name}-run-240.json", invocation)
require(process.returncode == 0 and profile_path.is_file(),
f"240-frame Player failed; inspect {name}-run-240.json")
profile = read(profile_path)
require(profile.get("format") == "faset.player-profile" and
profile.get("completed_frames") == 240 and
len(profile.get("samples", [])) == 240 and
profile.get("dimension") == item["dimension"] and
profile.get("presentation_mode") == "offscreen" and
profile.get("width") == 1280 and profile.get("height") == 720 and
profile.get("visibility_mode") == "direct" and
profile.get("effective_visibility_mode") == "direct" and
profile.get("temporal_mode") == "off" and
profile.get("effective_temporal_mode") == "off" and
profile.get("percentile_method") ==
"nearest_rank_all_completed_frames_no_warmup_exclusion" and
profile.get("validation_enabled") is True and
profile.get("validation_errors") == 0,
f"Invalid reference profile: {profile_path}")
p95 = {key: profile["summary_ms"][key]["p95"] for key in limits}
allocated = max(sample["gpu_allocated_bytes"] for sample in profile["samples"])
sun_atlas = max(sample["sun_shadow_atlas_bytes"] for sample in profile["samples"])
local_atlas = max(sample["local_shadow_atlas_bytes"] for sample in profile["samples"])
startup = profile["startup_ms"]["main_to_first_frame"]
checks = {key: {"observed_ms": value, "limit_ms": limits[key],
"met": value is not None and value <= limits[key]}
for key, value in p95.items()}
checks["explicit_allocation"] = {"observed_bytes": allocated,
"limit_bytes": 20 * 1024 * 1024,
"met": allocated <= 20 * 1024 * 1024}
checks["startup"] = {"observed_ms": startup, "limit_ms": 500.0,
"met": startup <= 500.0}
result = {"name": name, "dimension": item["dimension"],
"device": profile["device"], "player_sha256": digest(player),
"manifest_sha256": digest(package / "manifest.json"),
"profile_sha256": digest(profile_path),
"requested_frames": profile["requested_frames"],
"completed_frames": profile["completed_frames"],
"summary_ms": profile["summary_ms"], "startup_ms": profile["startup_ms"],
"effective_lighting_path": profile.get("effective_lighting_path"),
"gpu_allocated_bytes_max": allocated,
"sun_shadow_atlas_bytes_max": sun_atlas,
"local_shadow_atlas_bytes_max": local_atlas,
"gpu_allocated_excluding_shadow_atlases_bytes_max": max(
sample["gpu_allocated_bytes"] -
sample["sun_shadow_atlas_bytes"] -
sample["local_shadow_atlas_bytes"]
for sample in profile["samples"]),
"effective_sun_cascades_max": max(
sample["effective_sun_cascades"] for sample in profile["samples"]),
"local_shadow_faces_max": max(
sample["local_shadow_faces"] for sample in profile["samples"]),
"budget_checks": checks}
report["projects"].append(result)
write(output / "reference-summary.json", report)
require({item["name"] for item in report["projects"]} == {"collect-2d", "collect-3d"},
"Both exact sample scenes are required")
print(output / "reference-summary.json")
if __name__ == "__main__":
main()
@@ -0,0 +1,111 @@
{
"format": "faset.p1-release-toolchain-provenance",
"version": 1,
"source_revision": "4a3453e2b1868555d833f578d43f48b8bc47d41a",
"source_clean_at_verifier_start": true,
"build_preset": "linux-release",
"configuration": "Release",
"host": {
"platform": "Linux-7.0.0-31-generic-x86_64-with-glibc2.43",
"machine": "x86_64",
"processor": "",
"logical_cpus": 16,
"cpu_model": "AMD Ryzen 7 1700 Eight-Core Processor",
"mem_total": "32784216 kB"
},
"report_sha256": "63da692b605621acc1cace00d4a3c9cf35de13abfd4351aea6653a88c870e03f",
"reference_summary_sha256": "f8297f3cb0578addee56c0b3cb9439b37ae37707b02d433d662b534620f329e9",
"editor_sha256": "73702e9f0fe015ef932db694400a0501048be2d602ab521ecc48c51767275d23",
"verifier_tool_sha256": "21485df78b81c22bce1f6dfc810997f3ac0505cacd8bc647786ce9d90a7c67e1",
"profile_helper_sha256": "5d69428a1202c1e144779074c0ab88360c459e2dd99b22c1fcf8929dbeab2618",
"selected_tools": {
"cmake": {
"selected": "/usr/bin/cmake",
"resolved": "/usr/bin/cmake",
"sha256": "6e1dccda39845415d68eabb934c598998949c99ec4668625d571aee1827b05c7",
"version_exit_code": 0,
"version_output": "cmake version 4.2.3\n\nCMake suite maintained and supported by Kitware (kitware.com/cmake).",
"version_flag": "--version"
},
"ninja": {
"selected": "/usr/bin/ninja",
"resolved": "/usr/bin/ninja",
"sha256": "91e9548850cda2799facfdaa7abe33f9e978832f85e98212255708a7bbe437f2",
"version_exit_code": 0,
"version_output": "1.13.2",
"version_flag": "--version"
},
"c_compiler": {
"selected": "clang",
"resolved": "/usr/lib/llvm-21/bin/clang",
"sha256": "412bbe8c60571a1eb06f48fde89635033621caeb01a9b4ee76d46711bae8e932",
"version_exit_code": 0,
"version_output": "Ubuntu clang version 21.1.8 (6ubuntu1)\nTarget: x86_64-pc-linux-gnu\nThread model: posix\nInstalledDir: /usr/lib/llvm-21/bin",
"version_flag": "--version"
},
"cxx_compiler": {
"selected": "clang++",
"resolved": "/usr/lib/llvm-21/bin/clang",
"sha256": "412bbe8c60571a1eb06f48fde89635033621caeb01a9b4ee76d46711bae8e932",
"version_exit_code": 0,
"version_output": "Ubuntu clang version 21.1.8 (6ubuntu1)\nTarget: x86_64-pc-linux-gnu\nThread model: posix\nInstalledDir: /usr/lib/llvm-21/bin",
"version_flag": "--version"
},
"slangc": {
"selected": "/home/emil/Desktop/.worktrees/Faset_Engine-p1-p3-integration/.cache/slang/bin/slangc",
"resolved": "/home/emil/Desktop/Faset_Engine/.cache/slang/bin/slangc",
"sha256": "ff47ad16a3110e43f96a45e90720e6f894371d27f5e47715b298159e395b75e8",
"version_exit_code": 0,
"version_output": "2026.18",
"version_flag": "-version"
}
},
"gpu": [
{
"project": "collect-2d",
"device": "NVIDIA GeForce RTX 2080 Ti",
"device_class": "physical",
"driver": {
"apiVersion": "1.4.329",
"driverVersion": "595.84.0.0",
"deviceName": "NVIDIA GeForce RTX 2080 Ti",
"driverID": "DRIVER_ID_NVIDIA_PROPRIETARY",
"driverName": "NVIDIA",
"driverInfo": "595.84"
},
"validation_enabled": true,
"validation_errors": 0
},
{
"project": "collect-3d",
"device": "NVIDIA GeForce RTX 2080 Ti",
"device_class": "physical",
"driver": {
"apiVersion": "1.4.329",
"driverVersion": "595.84.0.0",
"deviceName": "NVIDIA GeForce RTX 2080 Ti",
"driverID": "DRIVER_ID_NVIDIA_PROPRIETARY",
"driverName": "NVIDIA",
"driverInfo": "595.84"
},
"validation_enabled": true,
"validation_errors": 0
},
{
"project": "lua",
"device": "NVIDIA GeForce RTX 2080 Ti",
"device_class": "physical",
"driver": {
"apiVersion": "1.4.329",
"driverVersion": "595.84.0.0",
"deviceName": "NVIDIA GeForce RTX 2080 Ti",
"driverID": "DRIVER_ID_NVIDIA_PROPRIETARY",
"driverName": "NVIDIA",
"driverInfo": "595.84"
},
"validation_enabled": true,
"validation_errors": 0
}
],
"supplement_created_utc": "2026-09-24T02:15:34.021841+00:00"
}
@@ -0,0 +1 @@
/tmp/faset-p1-final-release-4a3453e/reference-240/reference-summary.json
@@ -0,0 +1,16 @@
{
"arguments": [
"/tmp/faset-p1-final-packages-4a3453e/Faset Café 世界/collect-2d/faset_player",
"--headless",
"--frames",
"240",
"--profile",
"/tmp/faset-p1-final-release-4a3453e/reference-240/collect-2d-profile-240.json"
],
"cwd": "/tmp/faset-p1-final-packages-4a3453e/empty-working-directory",
"source_project_paths_unavailable": true,
"seconds": 0.9077925750170834,
"exit_code": 0,
"stdout": "New round: collect the three gold cubes, then reach the green exit. E resets.\n{\"device\":\"NVIDIA GeForce RTX 2080 Ti\",\"dimension\":2,\"effective_temporal_mode\":\"off\",\"effective_visibility_mode\":\"direct\",\"frames\":240,\"gpu_visibility_active\":false,\"temporal_mode\":\"off\",\"ticks\":240,\"validation_errors\":0,\"visibility_mode\":\"direct\"}\n",
"stderr": ""
}
@@ -0,0 +1,16 @@
{
"arguments": [
"/tmp/faset-p1-final-packages-4a3453e/Faset Café 世界/collect-3d/faset_player",
"--headless",
"--frames",
"240",
"--profile",
"/tmp/faset-p1-final-release-4a3453e/reference-240/collect-3d-profile-240.json"
],
"cwd": "/tmp/faset-p1-final-packages-4a3453e/empty-working-directory",
"source_project_paths_unavailable": true,
"seconds": 0.969158330000937,
"exit_code": 0,
"stdout": "New round: collect the three gold cubes, then reach the green exit. E resets.\n{\"device\":\"NVIDIA GeForce RTX 2080 Ti\",\"dimension\":3,\"effective_temporal_mode\":\"off\",\"effective_visibility_mode\":\"direct\",\"frames\":240,\"gpu_visibility_active\":false,\"temporal_mode\":\"off\",\"ticks\":240,\"validation_errors\":0,\"visibility_mode\":\"direct\"}\n",
"stderr": "warning: material material-bb63b094febbf90bb7049c9bcf7587bc has features beyond the initial base-color/PBR renderer\n"
}
@@ -0,0 +1,577 @@
{
"format": "faset.playable-export-verification",
"version": 1,
"started_utc": "2026-09-24T02:01:24.205054+00:00",
"platform": "linux",
"engine": "/home/emil/Desktop/.worktrees/Faset_Engine-p1-p3-integration",
"editor": "/home/emil/Desktop/.worktrees/Faset_Engine-p1-p3-integration/build/linux-release/faset_editor",
"standalone_root": "/tmp/faset-p1-final-packages-4a3453e",
"engine_revision": "4a3453e2b1868555d833f578d43f48b8bc47d41a",
"engine_dirty": false,
"engine_git_status": [],
"engine_diff_sha256": null,
"editor_sha256": "73702e9f0fe015ef932db694400a0501048be2d602ab521ecc48c51767275d23",
"project_workspace": "/tmp/faset-p1-final-release-4a3453e",
"vulkaninfo_available": true,
"driver_override": null,
"frames_per_game": 120,
"status": "passed",
"projects": [
{
"name": "collect-2d",
"dimension": 2,
"language": "cpp",
"source_inputs": [
{
"path": ".gitignore",
"sha256": "53aa4d7124d4c8d93b8d7c4cb470b6c82b844e019a660d6243ffeadc50602de1"
},
{
"path": "README.md",
"sha256": "8cf5a2d6de849eb090b9ea6d5e27841f551bd06947e5054f0d2f59639a90edd0"
},
{
"path": "Scenes/main.scene.json",
"sha256": "be48a6d21385e717b6c8ebf9a3b4322eebbeff6bb067428e089ab5214be79854"
},
{
"path": "Scripts/Gameplay.cpp",
"sha256": "6b581b24da613e1915819de0a0f0ea820dd3333efa62c4b479a9ea7ffdbc6bcc"
},
{
"path": "Scripts/Gameplay.hpp",
"sha256": "4121587182ed4f74901b1c0757c53daadbf309af1d6bb5dd87fef142130ccbbe"
},
{
"path": "project.faset.json",
"sha256": "36e2acd32210f5489372a2331346a3294ead2395f0713e3e5fd2da4e83263689"
}
],
"generation": "ca306aa8-a094-42bc-833f-a24a05cab73d",
"configuration": "Release",
"standalone_directory": "/tmp/faset-p1-final-packages-4a3453e/Faset Café 世界/collect-2d",
"executable": "faset_player",
"package_file_count": 41,
"asset_generations": {},
"device": "NVIDIA GeForce RTX 2080 Ti",
"device_class": "physical",
"driver": {
"apiVersion": "1.4.329",
"driverVersion": "595.84.0.0",
"deviceName": "NVIDIA GeForce RTX 2080 Ti",
"driverID": "DRIVER_ID_NVIDIA_PROPRIETARY",
"driverName": "NVIDIA",
"driverInfo": "595.84"
},
"validation_enabled": true,
"validation_errors": 0,
"completed_frames": 120,
"summary_ms": {
"gpu": {
"max": 0.581984,
"min": 0.555552,
"p50": 0.5592,
"p95": 0.568896,
"samples": 120
},
"render_call": {
"max": 6.021328,
"min": 1.627681,
"p50": 1.892219,
"p95": 2.165605,
"samples": 120
},
"renderer_cpu": {
"max": 6.013313,
"min": 1.621609,
"p50": 1.883223,
"p95": 2.15763,
"samples": 120
},
"renderer_readback_cpu": {
"max": 2.645991,
"min": 0.386439,
"p50": 0.478583,
"p95": 0.582889,
"samples": 120
},
"simulation": {
"max": 0.332657,
"min": 0.135175,
"p50": 0.166364,
"p95": 0.244932,
"samples": 120
},
"snapshot": {
"max": 0.250653,
"min": 0.130637,
"p50": 0.153339,
"p95": 0.221498,
"samples": 120
},
"wall": {
"max": 6.632972,
"min": 1.913981,
"p50": 2.233333,
"p95": 2.59779,
"samples": 120
}
},
"capture": {
"width": 1280,
"height": 720,
"sampled_colors": 7,
"sha256": "f9d74067d87c1ebf30c6db372a26d93b7285791c8cb0307a24af5adb23bf201a"
},
"source_project_paths_unavailable": true,
"status": "passed"
},
{
"name": "collect-3d",
"dimension": 3,
"language": "cpp",
"source_inputs": [
{
"path": ".gitignore",
"sha256": "53aa4d7124d4c8d93b8d7c4cb470b6c82b844e019a660d6243ffeadc50602de1"
},
{
"path": "Assets/exit-arch/create.py",
"sha256": "9c7291124fb1498a3f992ef74afc39cd98f9cc3e2ff4687c633bece85d580905"
},
{
"path": "Assets/exit-arch/manifest.json",
"sha256": "7a13347adc89761fb02ebeab3c58ba87f319cd62f53ec87a3bb61bcd066ffa55"
},
{
"path": "Assets/exit-arch/manifest.json.faset-import.json",
"sha256": "ef4eef28a18a0cc40a40df75db34c97faa5d783b891265f862633f3aec514afc"
},
{
"path": "Assets/exit-arch/payload/ee6c748a212905fc9c465cbe95c033e94b80be643624f4f240ad5353761205b3.glb",
"sha256": "ee6c748a212905fc9c465cbe95c033e94b80be643624f4f240ad5353761205b3"
},
{
"path": "Assets/exit-arch/source.blend",
"sha256": "ff2676bec97ab778e531e87a185ad716049ea3b05b4a4f0027a6345737735035"
},
{
"path": "README.md",
"sha256": "2df5ca4df47ab5d3d05d41508201296d4ad5ec876245f19f061767ade6a30e8f"
},
{
"path": "Scenes/main.scene.json",
"sha256": "61b65baf79e52f07ac386a7f98acf985a1b09e88770cdde37ef461dc94b9dcd7"
},
{
"path": "Scripts/Extensions/Beacon.hpp",
"sha256": "c60d56161eead16f541835053ad32ac3333383d83015709c060b7d45e0af5a97"
},
{
"path": "Scripts/Gameplay.cpp",
"sha256": "5d419786a6861d7f14ed4eca54634694d8cd43be5dbbd60a2c6790db665c3a6a"
},
{
"path": "Scripts/Gameplay.hpp",
"sha256": "4121587182ed4f74901b1c0757c53daadbf309af1d6bb5dd87fef142130ccbbe"
},
{
"path": "project.faset.json",
"sha256": "43d273b1054ec9069369073f54cc1fc7efb3d6b699dcd342c552a2dc2ef852ef"
}
],
"import": {
"asset_id": "5832763b-3ed0-44d6-9088-0b524f196a91",
"cache_hit": false,
"diagnostics": [],
"generation": "4a5bfcc1437a7b4d65c388da2beace0308cceda8e16503d08ce676260f21d5c2",
"manifest": {
"asset_id": "5832763b-3ed0-44d6-9088-0b524f196a91",
"files": [
{
"path": "meshes/mesh-fc069a07a87e0f831fd92efdbc4efa1f-0.fmesh",
"sha256": "98b38aca7d2786c58a2265ba4d1f2255123f03d31d947e239232cf55bfdc2c97",
"size": 928
},
{
"path": "meshes/mesh-0961e2a3f92977836a3aa80cab09277e-0.fmesh",
"sha256": "98b38aca7d2786c58a2265ba4d1f2255123f03d31d947e239232cf55bfdc2c97",
"size": 928
},
{
"path": "meshes/mesh-93b5b3e52cb6bb120fefb80e2d8e222b-0.fmesh",
"sha256": "3875c16ea628d4126373ebfe07816621fbad3961596a2fcd112f1eec0e378071",
"size": 928
}
],
"generation": "4a5bfcc1437a7b4d65c388da2beace0308cceda8e16503d08ce676260f21d5c2",
"importer": "faset-gltf-1/cgltf-1.15",
"input_key": {
"bundle_sha256": "7a13347adc89761fb02ebeab3c58ba87f319cd62f53ec87a3bb61bcd066ffa55",
"dependencies": {},
"importer": "faset-gltf-1/cgltf-1.15",
"settings": {},
"source": "ee6c748a212905fc9c465cbe95c033e94b80be643624f4f240ad5353761205b3",
"target_profile": "desktop-static-pbr-v1",
"toolchain": {
"cgltf": "360db1a95480fe102ae9c69b27c5d101167ff5ba",
"stb": "2c980bb59875b0d32144a71867fbdebb2f77cd20"
}
},
"kind": "scene",
"materials": [
{
"alpha_cutoff": 0.5,
"alpha_mode": "OPAQUE",
"base_color": [
0.2199999988079071,
0.28999999165534973,
0.3400000035762787,
1.0
],
"base_color_texture": -1,
"double_sided": true,
"emissive": [
0.0,
0.0,
0.0
],
"emissive_texture": -1,
"format": "faset.material",
"id": "material-bb63b094febbf90bb7049c9bcf7587bc",
"metallic": 0.07999999821186066,
"metallic_roughness_texture": -1,
"name": "Weathered stone",
"normal_texture": -1,
"occlusion_texture": -1,
"roughness": 0.800000011920929,
"unlit": false,
"version": 1
}
],
"meshes": [
{
"id": "mesh-fc069a07a87e0f831fd92efdbc4efa1f",
"name": "Cube.001",
"primitives": [
{
"material": 0,
"path": "meshes/mesh-fc069a07a87e0f831fd92efdbc4efa1f-0.fmesh"
}
]
},
{
"id": "mesh-0961e2a3f92977836a3aa80cab09277e",
"name": "Cube.002",
"primitives": [
{
"material": 0,
"path": "meshes/mesh-0961e2a3f92977836a3aa80cab09277e-0.fmesh"
}
]
},
{
"id": "mesh-93b5b3e52cb6bb120fefb80e2d8e222b",
"name": "Cube.003",
"primitives": [
{
"material": 0,
"path": "meshes/mesh-93b5b3e52cb6bb120fefb80e2d8e222b-0.fmesh"
}
]
}
],
"nodes": [
{
"id": "node-cec6e8cea80cf5a98ba3263a0156bee4",
"local_transform": [
1.0,
0.0,
0.0,
0.0,
0.0,
1.0,
0.0,
0.0,
0.0,
0.0,
1.0,
0.0,
0.0,
1.4500000476837158,
1.2999999523162842,
1.0
],
"mesh": 0,
"name": "Left post",
"parent_id": "",
"stable_source_id": true
},
{
"id": "node-5f8a90a6c4d27020d20bd4fa81d1d958",
"local_transform": [
1.0,
0.0,
0.0,
0.0,
0.0,
1.0,
0.0,
0.0,
0.0,
0.0,
1.0,
0.0,
0.0,
1.4500000476837158,
-1.2999999523162842,
1.0
],
"mesh": 1,
"name": "Right post",
"parent_id": "",
"stable_source_id": true
},
{
"id": "node-482463e486a8d1fd741340c653cd128f",
"local_transform": [
1.0,
0.0,
0.0,
0.0,
0.0,
1.0,
0.0,
0.0,
0.0,
0.0,
1.0,
0.0,
0.0,
3.0,
0.0,
1.0
],
"mesh": 2,
"name": "Lintel",
"parent_id": "",
"stable_source_id": true
}
],
"outputs": [
"node-cec6e8cea80cf5a98ba3263a0156bee4",
"node-5f8a90a6c4d27020d20bd4fa81d1d958",
"node-482463e486a8d1fd741340c653cd128f",
"mesh-fc069a07a87e0f831fd92efdbc4efa1f",
"mesh-0961e2a3f92977836a3aa80cab09277e",
"mesh-93b5b3e52cb6bb120fefb80e2d8e222b",
"material-bb63b094febbf90bb7049c9bcf7587bc"
],
"payload_source": "/tmp/faset-p1-final-release-4a3453e/Faset Café 世界/collect-3d/Assets/exit-arch/payload/ee6c748a212905fc9c465cbe95c033e94b80be643624f4f240ad5353761205b3.glb",
"schema_version": 1,
"settings": {},
"source": "/tmp/faset-p1-final-release-4a3453e/Faset Café 世界/collect-3d/Assets/exit-arch/manifest.json",
"source_sha256": "ee6c748a212905fc9c465cbe95c033e94b80be643624f4f240ad5353761205b3",
"textures": []
},
"previous_generation": "",
"removed_output_ids": []
},
"generation": "004c6e18-969b-4ef5-95bb-5d7742f96564",
"configuration": "Release",
"standalone_directory": "/tmp/faset-p1-final-packages-4a3453e/Faset Café 世界/collect-3d",
"executable": "faset_player",
"package_file_count": 46,
"asset_generations": {
"5832763b-3ed0-44d6-9088-0b524f196a91": "4a5bfcc1437a7b4d65c388da2beace0308cceda8e16503d08ce676260f21d5c2"
},
"device": "NVIDIA GeForce RTX 2080 Ti",
"device_class": "physical",
"driver": {
"apiVersion": "1.4.329",
"driverVersion": "595.84.0.0",
"deviceName": "NVIDIA GeForce RTX 2080 Ti",
"driverID": "DRIVER_ID_NVIDIA_PROPRIETARY",
"driverName": "NVIDIA",
"driverInfo": "595.84"
},
"validation_enabled": true,
"validation_errors": 0,
"completed_frames": 120,
"summary_ms": {
"gpu": {
"max": 0.62432,
"min": 0.592032,
"p50": 0.593792,
"p95": 0.61008,
"samples": 120
},
"render_call": {
"max": 5.917472,
"min": 1.873163,
"p50": 2.209838,
"p95": 2.552535,
"samples": 120
},
"renderer_cpu": {
"max": 5.909758,
"min": 1.867162,
"p50": 2.201673,
"p95": 2.53905,
"samples": 120
},
"renderer_readback_cpu": {
"max": 2.530744,
"min": 0.388893,
"p50": 0.499071,
"p95": 0.636931,
"samples": 120
},
"simulation": {
"max": 0.608728,
"min": 0.172335,
"p50": 0.203934,
"p95": 0.284217,
"samples": 120
},
"snapshot": {
"max": 0.714438,
"min": 0.170371,
"p50": 0.191832,
"p95": 0.280138,
"samples": 120
},
"wall": {
"max": 6.969116,
"min": 2.24785,
"p50": 2.627506,
"p95": 3.081914,
"samples": 120
}
},
"capture": {
"width": 1280,
"height": 720,
"sampled_colors": 65,
"sha256": "2905891c9766b2f1f65d5b4284056cb3839f1faae195f9fea39a56e3ebf44363"
},
"source_project_paths_unavailable": true,
"status": "passed"
},
{
"name": "lua",
"dimension": 2,
"language": "lua",
"source_inputs": [
{
"path": "README.md",
"sha256": "8392da3c18916400ea628daed094c77c390c553cbdcf822da227bdcd3d86380c"
},
{
"path": "Scenes/main.scene.json",
"sha256": "f1ab54150a58b289c47bcc34566ad7ee3025ad931db81e7f5dce70d9fbcac8ab"
},
{
"path": "Scripts/beacon.lua",
"sha256": "44d932ebedf66cadb9620f2d926177be2f8d43d71d56aa83611de686af026231"
},
{
"path": "Scripts/player.lua",
"sha256": "1c51810574a3413c46a7cbd0ea2e84a9b802da1206a2b72bb78f6cc951367a11"
},
{
"path": "Scripts/util/motion.lua",
"sha256": "bad3dcdc1081fd1dec589c12dad8dc175b739d77ea52b957ead9ecb4b7cb88a3"
},
{
"path": "project.faset.json",
"sha256": "7e4c0781c1837208b4499a9991ffb702143edf1f933ae9c7e3d2543fd2577747"
}
],
"generation": "92846e8b-d199-4679-8f6a-fb0686acba75",
"configuration": "Release",
"standalone_directory": "/tmp/faset-p1-final-packages-4a3453e/Faset Café 世界/lua",
"executable": "faset_player",
"package_file_count": 46,
"asset_generations": {},
"device": "NVIDIA GeForce RTX 2080 Ti",
"device_class": "physical",
"driver": {
"apiVersion": "1.4.329",
"driverVersion": "595.84.0.0",
"deviceName": "NVIDIA GeForce RTX 2080 Ti",
"driverID": "DRIVER_ID_NVIDIA_PROPRIETARY",
"driverName": "NVIDIA",
"driverInfo": "595.84"
},
"validation_enabled": true,
"validation_errors": 0,
"completed_frames": 120,
"summary_ms": {
"gpu": {
"max": 0.589568,
"min": 0.551712,
"p50": 0.552416,
"p95": 0.570016,
"samples": 120
},
"render_call": {
"max": 6.280958,
"min": 1.607562,
"p50": 1.83424,
"p95": 2.180794,
"samples": 120
},
"renderer_cpu": {
"max": 6.273714,
"min": 1.602192,
"p50": 1.828289,
"p95": 2.169262,
"samples": 120
},
"renderer_readback_cpu": {
"max": 3.40345,
"min": 0.412939,
"p50": 0.503159,
"p95": 0.622655,
"samples": 120
},
"simulation": {
"max": 0.231888,
"min": 0.080883,
"p50": 0.103485,
"p95": 0.166965,
"samples": 120
},
"snapshot": {
"max": 0.136677,
"min": 0.046938,
"p50": 0.056226,
"p95": 0.083728,
"samples": 120
},
"wall": {
"max": 6.601142,
"min": 1.775219,
"p50": 2.019429,
"p95": 2.450732,
"samples": 120
}
},
"capture": {
"width": 1280,
"height": 720,
"sampled_colors": 4,
"sha256": "e2f4c3b84de75dadd2e31d388d0ba51abc1861f1ec76eb7ba51a4a2dcac720a7"
},
"source_project_paths_unavailable": true,
"status": "passed"
}
],
"requested_projects": [
"collect-2d",
"collect-3d",
"lua"
],
"finished_utc": "2026-09-24T02:07:41.244688+00:00"
}
@@ -0,0 +1,237 @@
{
"format": "faset.p1-release-reference",
"version": 1,
"source_revision": "4a3453e2b1868555d833f578d43f48b8bc47d41a",
"editor_sha256": "73702e9f0fe015ef932db694400a0501048be2d602ab521ecc48c51767275d23",
"verification_sha256": "63da692b605621acc1cace00d4a3c9cf35de13abfd4351aea6653a88c870e03f",
"host": {
"platform": "Linux-7.0.0-31-generic-x86_64-with-glibc2.43",
"machine": "x86_64",
"processor": ""
},
"method": "sequential relocated Release Player, default direct/temporal-off, offscreen 1280x720, 240 completed frames including first; nearest-rank p95, validation/readback enabled",
"projects": [
{
"name": "collect-2d",
"dimension": 2,
"device": "NVIDIA GeForce RTX 2080 Ti",
"player_sha256": "5936d8a1ceae9250c69f1b8ebccbadebc40b13e812bebeb9752da3d14d202a4a",
"manifest_sha256": "5f8de3eb000dc7207b256265f0fa20a29efe194dd1347ab4c3bf670cfdcfb2b0",
"profile_sha256": "65858b1de2334d304ad3a0907180aaf4f79ead3da63762500e50b7298d922bfa",
"requested_frames": 240,
"completed_frames": 240,
"summary_ms": {
"gpu": {
"max": 0.585248,
"min": 0.552064,
"p50": 0.557184,
"p95": 0.573056,
"samples": 240
},
"render_call": {
"max": 6.04885,
"min": 1.470684,
"p50": 1.795998,
"p95": 2.305238,
"samples": 240
},
"renderer_cpu": {
"max": 6.043249,
"min": 1.466045,
"p50": 1.79204,
"p95": 2.300209,
"samples": 240
},
"renderer_readback_cpu": {
"max": 2.620153,
"min": 0.398713,
"p50": 0.462312,
"p95": 0.559205,
"samples": 240
},
"simulation": {
"max": 0.357284,
"min": 0.130406,
"p50": 0.168848,
"p95": 0.242057,
"samples": 240
},
"snapshot": {
"max": 0.338358,
"min": 0.124996,
"p50": 0.157076,
"p95": 0.197363,
"samples": 240
},
"wall": {
"max": 6.47329,
"min": 1.746054,
"p50": 2.137342,
"p95": 2.693952,
"samples": 240
}
},
"startup_ms": {
"main_to_first_frame": 295.436243,
"renderer_initialization": 284.655357,
"scene_read": 0.410555,
"world_initialization": 0.64129
},
"effective_lighting_path": "forward",
"gpu_allocated_bytes_max": 45112032,
"sun_shadow_atlas_bytes_max": 16777216,
"local_shadow_atlas_bytes_max": 16777216,
"gpu_allocated_excluding_shadow_atlases_bytes_max": 11557600,
"effective_sun_cascades_max": 0,
"local_shadow_faces_max": 0,
"budget_checks": {
"wall": {
"observed_ms": 2.693952,
"limit_ms": 4.0,
"met": true
},
"gpu": {
"observed_ms": 0.573056,
"limit_ms": 1.0,
"met": true
},
"renderer_readback_cpu": {
"observed_ms": 0.559205,
"limit_ms": 1.0,
"met": true
},
"simulation": {
"observed_ms": 0.242057,
"limit_ms": 0.5,
"met": true
},
"snapshot": {
"observed_ms": 0.197363,
"limit_ms": 0.5,
"met": true
},
"explicit_allocation": {
"observed_bytes": 45112032,
"limit_bytes": 20971520,
"met": false
},
"startup": {
"observed_ms": 295.436243,
"limit_ms": 500.0,
"met": true
}
}
},
{
"name": "collect-3d",
"dimension": 3,
"device": "NVIDIA GeForce RTX 2080 Ti",
"player_sha256": "52fbe0067fc2be3807e60ffa5a77e819838dc50a4b723af51f16379b4a487e7c",
"manifest_sha256": "484eda90411c48277385a2f679561cfa6304965a7a7be6ec065bfbd9dace1722",
"profile_sha256": "b0c4c6b4020b1ded792917fff1f36510b76bb30864d89bd4e6e250b5693c5fe8",
"requested_frames": 240,
"completed_frames": 240,
"summary_ms": {
"gpu": {
"max": 0.628288,
"min": 0.590144,
"p50": 0.592224,
"p95": 0.616512,
"samples": 240
},
"render_call": {
"max": 5.902553,
"min": 1.958014,
"p50": 2.192415,
"p95": 2.551243,
"samples": 240
},
"renderer_cpu": {
"max": 5.89525,
"min": 1.949527,
"p50": 2.184501,
"p95": 2.543007,
"samples": 240
},
"renderer_readback_cpu": {
"max": 2.581069,
"min": 0.350231,
"p50": 0.454097,
"p95": 0.560908,
"samples": 240
},
"simulation": {
"max": 0.432225,
"min": 0.170772,
"p50": 0.191732,
"p95": 0.299776,
"samples": 240
},
"snapshot": {
"max": 0.745236,
"min": 0.171273,
"p50": 0.188084,
"p95": 0.287632,
"samples": 240
},
"wall": {
"max": 7.001186,
"min": 2.330556,
"p50": 2.605595,
"p95": 3.036327,
"samples": 240
}
},
"startup_ms": {
"main_to_first_frame": 248.272928,
"renderer_initialization": 237.578356,
"scene_read": 0.506575,
"world_initialization": 0.62037
},
"effective_lighting_path": "forward",
"gpu_allocated_bytes_max": 45212272,
"sun_shadow_atlas_bytes_max": 16777216,
"local_shadow_atlas_bytes_max": 16777216,
"gpu_allocated_excluding_shadow_atlases_bytes_max": 11657840,
"effective_sun_cascades_max": 4,
"local_shadow_faces_max": 0,
"budget_checks": {
"wall": {
"observed_ms": 3.036327,
"limit_ms": 4.0,
"met": true
},
"gpu": {
"observed_ms": 0.616512,
"limit_ms": 1.0,
"met": true
},
"renderer_readback_cpu": {
"observed_ms": 0.560908,
"limit_ms": 1.0,
"met": true
},
"simulation": {
"observed_ms": 0.299776,
"limit_ms": 0.5,
"met": true
},
"snapshot": {
"observed_ms": 0.287632,
"limit_ms": 0.5,
"met": true
},
"explicit_allocation": {
"observed_bytes": 45212272,
"limit_bytes": 20971520,
"met": false
},
"startup": {
"observed_ms": 248.272928,
"limit_ms": 500.0,
"met": true
}
}
}
]
}
@@ -0,0 +1,577 @@
{
"format": "faset.playable-export-verification",
"version": 1,
"started_utc": "2026-09-24T02:01:24.205054+00:00",
"platform": "linux",
"engine": "/home/emil/Desktop/.worktrees/Faset_Engine-p1-p3-integration",
"editor": "/home/emil/Desktop/.worktrees/Faset_Engine-p1-p3-integration/build/linux-release/faset_editor",
"standalone_root": "/tmp/faset-p1-final-packages-4a3453e",
"engine_revision": "4a3453e2b1868555d833f578d43f48b8bc47d41a",
"engine_dirty": false,
"engine_git_status": [],
"engine_diff_sha256": null,
"editor_sha256": "73702e9f0fe015ef932db694400a0501048be2d602ab521ecc48c51767275d23",
"project_workspace": "/tmp/faset-p1-final-release-4a3453e",
"vulkaninfo_available": true,
"driver_override": null,
"frames_per_game": 120,
"status": "passed",
"projects": [
{
"name": "collect-2d",
"dimension": 2,
"language": "cpp",
"source_inputs": [
{
"path": ".gitignore",
"sha256": "53aa4d7124d4c8d93b8d7c4cb470b6c82b844e019a660d6243ffeadc50602de1"
},
{
"path": "README.md",
"sha256": "8cf5a2d6de849eb090b9ea6d5e27841f551bd06947e5054f0d2f59639a90edd0"
},
{
"path": "Scenes/main.scene.json",
"sha256": "be48a6d21385e717b6c8ebf9a3b4322eebbeff6bb067428e089ab5214be79854"
},
{
"path": "Scripts/Gameplay.cpp",
"sha256": "6b581b24da613e1915819de0a0f0ea820dd3333efa62c4b479a9ea7ffdbc6bcc"
},
{
"path": "Scripts/Gameplay.hpp",
"sha256": "4121587182ed4f74901b1c0757c53daadbf309af1d6bb5dd87fef142130ccbbe"
},
{
"path": "project.faset.json",
"sha256": "36e2acd32210f5489372a2331346a3294ead2395f0713e3e5fd2da4e83263689"
}
],
"generation": "ca306aa8-a094-42bc-833f-a24a05cab73d",
"configuration": "Release",
"standalone_directory": "/tmp/faset-p1-final-packages-4a3453e/Faset Café 世界/collect-2d",
"executable": "faset_player",
"package_file_count": 41,
"asset_generations": {},
"device": "NVIDIA GeForce RTX 2080 Ti",
"device_class": "physical",
"driver": {
"apiVersion": "1.4.329",
"driverVersion": "595.84.0.0",
"deviceName": "NVIDIA GeForce RTX 2080 Ti",
"driverID": "DRIVER_ID_NVIDIA_PROPRIETARY",
"driverName": "NVIDIA",
"driverInfo": "595.84"
},
"validation_enabled": true,
"validation_errors": 0,
"completed_frames": 120,
"summary_ms": {
"gpu": {
"max": 0.581984,
"min": 0.555552,
"p50": 0.5592,
"p95": 0.568896,
"samples": 120
},
"render_call": {
"max": 6.021328,
"min": 1.627681,
"p50": 1.892219,
"p95": 2.165605,
"samples": 120
},
"renderer_cpu": {
"max": 6.013313,
"min": 1.621609,
"p50": 1.883223,
"p95": 2.15763,
"samples": 120
},
"renderer_readback_cpu": {
"max": 2.645991,
"min": 0.386439,
"p50": 0.478583,
"p95": 0.582889,
"samples": 120
},
"simulation": {
"max": 0.332657,
"min": 0.135175,
"p50": 0.166364,
"p95": 0.244932,
"samples": 120
},
"snapshot": {
"max": 0.250653,
"min": 0.130637,
"p50": 0.153339,
"p95": 0.221498,
"samples": 120
},
"wall": {
"max": 6.632972,
"min": 1.913981,
"p50": 2.233333,
"p95": 2.59779,
"samples": 120
}
},
"capture": {
"width": 1280,
"height": 720,
"sampled_colors": 7,
"sha256": "f9d74067d87c1ebf30c6db372a26d93b7285791c8cb0307a24af5adb23bf201a"
},
"source_project_paths_unavailable": true,
"status": "passed"
},
{
"name": "collect-3d",
"dimension": 3,
"language": "cpp",
"source_inputs": [
{
"path": ".gitignore",
"sha256": "53aa4d7124d4c8d93b8d7c4cb470b6c82b844e019a660d6243ffeadc50602de1"
},
{
"path": "Assets/exit-arch/create.py",
"sha256": "9c7291124fb1498a3f992ef74afc39cd98f9cc3e2ff4687c633bece85d580905"
},
{
"path": "Assets/exit-arch/manifest.json",
"sha256": "7a13347adc89761fb02ebeab3c58ba87f319cd62f53ec87a3bb61bcd066ffa55"
},
{
"path": "Assets/exit-arch/manifest.json.faset-import.json",
"sha256": "ef4eef28a18a0cc40a40df75db34c97faa5d783b891265f862633f3aec514afc"
},
{
"path": "Assets/exit-arch/payload/ee6c748a212905fc9c465cbe95c033e94b80be643624f4f240ad5353761205b3.glb",
"sha256": "ee6c748a212905fc9c465cbe95c033e94b80be643624f4f240ad5353761205b3"
},
{
"path": "Assets/exit-arch/source.blend",
"sha256": "ff2676bec97ab778e531e87a185ad716049ea3b05b4a4f0027a6345737735035"
},
{
"path": "README.md",
"sha256": "2df5ca4df47ab5d3d05d41508201296d4ad5ec876245f19f061767ade6a30e8f"
},
{
"path": "Scenes/main.scene.json",
"sha256": "61b65baf79e52f07ac386a7f98acf985a1b09e88770cdde37ef461dc94b9dcd7"
},
{
"path": "Scripts/Extensions/Beacon.hpp",
"sha256": "c60d56161eead16f541835053ad32ac3333383d83015709c060b7d45e0af5a97"
},
{
"path": "Scripts/Gameplay.cpp",
"sha256": "5d419786a6861d7f14ed4eca54634694d8cd43be5dbbd60a2c6790db665c3a6a"
},
{
"path": "Scripts/Gameplay.hpp",
"sha256": "4121587182ed4f74901b1c0757c53daadbf309af1d6bb5dd87fef142130ccbbe"
},
{
"path": "project.faset.json",
"sha256": "43d273b1054ec9069369073f54cc1fc7efb3d6b699dcd342c552a2dc2ef852ef"
}
],
"import": {
"asset_id": "5832763b-3ed0-44d6-9088-0b524f196a91",
"cache_hit": false,
"diagnostics": [],
"generation": "4a5bfcc1437a7b4d65c388da2beace0308cceda8e16503d08ce676260f21d5c2",
"manifest": {
"asset_id": "5832763b-3ed0-44d6-9088-0b524f196a91",
"files": [
{
"path": "meshes/mesh-fc069a07a87e0f831fd92efdbc4efa1f-0.fmesh",
"sha256": "98b38aca7d2786c58a2265ba4d1f2255123f03d31d947e239232cf55bfdc2c97",
"size": 928
},
{
"path": "meshes/mesh-0961e2a3f92977836a3aa80cab09277e-0.fmesh",
"sha256": "98b38aca7d2786c58a2265ba4d1f2255123f03d31d947e239232cf55bfdc2c97",
"size": 928
},
{
"path": "meshes/mesh-93b5b3e52cb6bb120fefb80e2d8e222b-0.fmesh",
"sha256": "3875c16ea628d4126373ebfe07816621fbad3961596a2fcd112f1eec0e378071",
"size": 928
}
],
"generation": "4a5bfcc1437a7b4d65c388da2beace0308cceda8e16503d08ce676260f21d5c2",
"importer": "faset-gltf-1/cgltf-1.15",
"input_key": {
"bundle_sha256": "7a13347adc89761fb02ebeab3c58ba87f319cd62f53ec87a3bb61bcd066ffa55",
"dependencies": {},
"importer": "faset-gltf-1/cgltf-1.15",
"settings": {},
"source": "ee6c748a212905fc9c465cbe95c033e94b80be643624f4f240ad5353761205b3",
"target_profile": "desktop-static-pbr-v1",
"toolchain": {
"cgltf": "360db1a95480fe102ae9c69b27c5d101167ff5ba",
"stb": "2c980bb59875b0d32144a71867fbdebb2f77cd20"
}
},
"kind": "scene",
"materials": [
{
"alpha_cutoff": 0.5,
"alpha_mode": "OPAQUE",
"base_color": [
0.2199999988079071,
0.28999999165534973,
0.3400000035762787,
1.0
],
"base_color_texture": -1,
"double_sided": true,
"emissive": [
0.0,
0.0,
0.0
],
"emissive_texture": -1,
"format": "faset.material",
"id": "material-bb63b094febbf90bb7049c9bcf7587bc",
"metallic": 0.07999999821186066,
"metallic_roughness_texture": -1,
"name": "Weathered stone",
"normal_texture": -1,
"occlusion_texture": -1,
"roughness": 0.800000011920929,
"unlit": false,
"version": 1
}
],
"meshes": [
{
"id": "mesh-fc069a07a87e0f831fd92efdbc4efa1f",
"name": "Cube.001",
"primitives": [
{
"material": 0,
"path": "meshes/mesh-fc069a07a87e0f831fd92efdbc4efa1f-0.fmesh"
}
]
},
{
"id": "mesh-0961e2a3f92977836a3aa80cab09277e",
"name": "Cube.002",
"primitives": [
{
"material": 0,
"path": "meshes/mesh-0961e2a3f92977836a3aa80cab09277e-0.fmesh"
}
]
},
{
"id": "mesh-93b5b3e52cb6bb120fefb80e2d8e222b",
"name": "Cube.003",
"primitives": [
{
"material": 0,
"path": "meshes/mesh-93b5b3e52cb6bb120fefb80e2d8e222b-0.fmesh"
}
]
}
],
"nodes": [
{
"id": "node-cec6e8cea80cf5a98ba3263a0156bee4",
"local_transform": [
1.0,
0.0,
0.0,
0.0,
0.0,
1.0,
0.0,
0.0,
0.0,
0.0,
1.0,
0.0,
0.0,
1.4500000476837158,
1.2999999523162842,
1.0
],
"mesh": 0,
"name": "Left post",
"parent_id": "",
"stable_source_id": true
},
{
"id": "node-5f8a90a6c4d27020d20bd4fa81d1d958",
"local_transform": [
1.0,
0.0,
0.0,
0.0,
0.0,
1.0,
0.0,
0.0,
0.0,
0.0,
1.0,
0.0,
0.0,
1.4500000476837158,
-1.2999999523162842,
1.0
],
"mesh": 1,
"name": "Right post",
"parent_id": "",
"stable_source_id": true
},
{
"id": "node-482463e486a8d1fd741340c653cd128f",
"local_transform": [
1.0,
0.0,
0.0,
0.0,
0.0,
1.0,
0.0,
0.0,
0.0,
0.0,
1.0,
0.0,
0.0,
3.0,
0.0,
1.0
],
"mesh": 2,
"name": "Lintel",
"parent_id": "",
"stable_source_id": true
}
],
"outputs": [
"node-cec6e8cea80cf5a98ba3263a0156bee4",
"node-5f8a90a6c4d27020d20bd4fa81d1d958",
"node-482463e486a8d1fd741340c653cd128f",
"mesh-fc069a07a87e0f831fd92efdbc4efa1f",
"mesh-0961e2a3f92977836a3aa80cab09277e",
"mesh-93b5b3e52cb6bb120fefb80e2d8e222b",
"material-bb63b094febbf90bb7049c9bcf7587bc"
],
"payload_source": "/tmp/faset-p1-final-release-4a3453e/Faset Café 世界/collect-3d/Assets/exit-arch/payload/ee6c748a212905fc9c465cbe95c033e94b80be643624f4f240ad5353761205b3.glb",
"schema_version": 1,
"settings": {},
"source": "/tmp/faset-p1-final-release-4a3453e/Faset Café 世界/collect-3d/Assets/exit-arch/manifest.json",
"source_sha256": "ee6c748a212905fc9c465cbe95c033e94b80be643624f4f240ad5353761205b3",
"textures": []
},
"previous_generation": "",
"removed_output_ids": []
},
"generation": "004c6e18-969b-4ef5-95bb-5d7742f96564",
"configuration": "Release",
"standalone_directory": "/tmp/faset-p1-final-packages-4a3453e/Faset Café 世界/collect-3d",
"executable": "faset_player",
"package_file_count": 46,
"asset_generations": {
"5832763b-3ed0-44d6-9088-0b524f196a91": "4a5bfcc1437a7b4d65c388da2beace0308cceda8e16503d08ce676260f21d5c2"
},
"device": "NVIDIA GeForce RTX 2080 Ti",
"device_class": "physical",
"driver": {
"apiVersion": "1.4.329",
"driverVersion": "595.84.0.0",
"deviceName": "NVIDIA GeForce RTX 2080 Ti",
"driverID": "DRIVER_ID_NVIDIA_PROPRIETARY",
"driverName": "NVIDIA",
"driverInfo": "595.84"
},
"validation_enabled": true,
"validation_errors": 0,
"completed_frames": 120,
"summary_ms": {
"gpu": {
"max": 0.62432,
"min": 0.592032,
"p50": 0.593792,
"p95": 0.61008,
"samples": 120
},
"render_call": {
"max": 5.917472,
"min": 1.873163,
"p50": 2.209838,
"p95": 2.552535,
"samples": 120
},
"renderer_cpu": {
"max": 5.909758,
"min": 1.867162,
"p50": 2.201673,
"p95": 2.53905,
"samples": 120
},
"renderer_readback_cpu": {
"max": 2.530744,
"min": 0.388893,
"p50": 0.499071,
"p95": 0.636931,
"samples": 120
},
"simulation": {
"max": 0.608728,
"min": 0.172335,
"p50": 0.203934,
"p95": 0.284217,
"samples": 120
},
"snapshot": {
"max": 0.714438,
"min": 0.170371,
"p50": 0.191832,
"p95": 0.280138,
"samples": 120
},
"wall": {
"max": 6.969116,
"min": 2.24785,
"p50": 2.627506,
"p95": 3.081914,
"samples": 120
}
},
"capture": {
"width": 1280,
"height": 720,
"sampled_colors": 65,
"sha256": "2905891c9766b2f1f65d5b4284056cb3839f1faae195f9fea39a56e3ebf44363"
},
"source_project_paths_unavailable": true,
"status": "passed"
},
{
"name": "lua",
"dimension": 2,
"language": "lua",
"source_inputs": [
{
"path": "README.md",
"sha256": "8392da3c18916400ea628daed094c77c390c553cbdcf822da227bdcd3d86380c"
},
{
"path": "Scenes/main.scene.json",
"sha256": "f1ab54150a58b289c47bcc34566ad7ee3025ad931db81e7f5dce70d9fbcac8ab"
},
{
"path": "Scripts/beacon.lua",
"sha256": "44d932ebedf66cadb9620f2d926177be2f8d43d71d56aa83611de686af026231"
},
{
"path": "Scripts/player.lua",
"sha256": "1c51810574a3413c46a7cbd0ea2e84a9b802da1206a2b72bb78f6cc951367a11"
},
{
"path": "Scripts/util/motion.lua",
"sha256": "bad3dcdc1081fd1dec589c12dad8dc175b739d77ea52b957ead9ecb4b7cb88a3"
},
{
"path": "project.faset.json",
"sha256": "7e4c0781c1837208b4499a9991ffb702143edf1f933ae9c7e3d2543fd2577747"
}
],
"generation": "92846e8b-d199-4679-8f6a-fb0686acba75",
"configuration": "Release",
"standalone_directory": "/tmp/faset-p1-final-packages-4a3453e/Faset Café 世界/lua",
"executable": "faset_player",
"package_file_count": 46,
"asset_generations": {},
"device": "NVIDIA GeForce RTX 2080 Ti",
"device_class": "physical",
"driver": {
"apiVersion": "1.4.329",
"driverVersion": "595.84.0.0",
"deviceName": "NVIDIA GeForce RTX 2080 Ti",
"driverID": "DRIVER_ID_NVIDIA_PROPRIETARY",
"driverName": "NVIDIA",
"driverInfo": "595.84"
},
"validation_enabled": true,
"validation_errors": 0,
"completed_frames": 120,
"summary_ms": {
"gpu": {
"max": 0.589568,
"min": 0.551712,
"p50": 0.552416,
"p95": 0.570016,
"samples": 120
},
"render_call": {
"max": 6.280958,
"min": 1.607562,
"p50": 1.83424,
"p95": 2.180794,
"samples": 120
},
"renderer_cpu": {
"max": 6.273714,
"min": 1.602192,
"p50": 1.828289,
"p95": 2.169262,
"samples": 120
},
"renderer_readback_cpu": {
"max": 3.40345,
"min": 0.412939,
"p50": 0.503159,
"p95": 0.622655,
"samples": 120
},
"simulation": {
"max": 0.231888,
"min": 0.080883,
"p50": 0.103485,
"p95": 0.166965,
"samples": 120
},
"snapshot": {
"max": 0.136677,
"min": 0.046938,
"p50": 0.056226,
"p95": 0.083728,
"samples": 120
},
"wall": {
"max": 6.601142,
"min": 1.775219,
"p50": 2.019429,
"p95": 2.450732,
"samples": 120
}
},
"capture": {
"width": 1280,
"height": 720,
"sampled_colors": 4,
"sha256": "e2f4c3b84de75dadd2e31d388d0ba51abc1861f1ec76eb7ba51a4a2dcac720a7"
},
"source_project_paths_unavailable": true,
"status": "passed"
}
],
"requested_projects": [
"collect-2d",
"collect-3d",
"lua"
],
"finished_utc": "2026-09-24T02:07:41.244688+00:00"
}
@@ -0,0 +1,11 @@
collect-2d-export: /home/emil/Desktop/.worktrees/Faset_Engine-p1-p3-integration/build/linux-release/faset_editor --engine /home/emil/Desktop/.worktrees/Faset_Engine-p1-p3-integration --project "/tmp/faset-p1-final-release-4a3453e/Faset Café 世界/collect-2d" --command "{\"name\": \"faset_export\", \"arguments\": {\"document\": \"example-collect-2d-scene\", \"output\": \"Exports\"}}" --wait
collect-3d-import: /home/emil/Desktop/.worktrees/Faset_Engine-p1-p3-integration/build/linux-release/faset_editor --engine /home/emil/Desktop/.worktrees/Faset_Engine-p1-p3-integration --project "/tmp/faset-p1-final-release-4a3453e/Faset Café 世界/collect-3d" --command "{\"name\": \"faset_import\", \"arguments\": {\"path\": \"Assets/exit-arch/manifest.json\"}}" --wait
collect-3d-export: /home/emil/Desktop/.worktrees/Faset_Engine-p1-p3-integration/build/linux-release/faset_editor --engine /home/emil/Desktop/.worktrees/Faset_Engine-p1-p3-integration --project "/tmp/faset-p1-final-release-4a3453e/Faset Café 世界/collect-3d" --command "{\"name\": \"faset_export\", \"arguments\": {\"document\": \"example-collect-3d-scene\", \"output\": \"Exports\"}}" --wait
lua-export: /home/emil/Desktop/.worktrees/Faset_Engine-p1-p3-integration/build/linux-release/faset_editor --engine /home/emil/Desktop/.worktrees/Faset_Engine-p1-p3-integration --project "/tmp/faset-p1-final-release-4a3453e/Faset Café 世界/lua" --command "{\"name\": \"faset_export\", \"arguments\": {\"document\": \"example-lua-scene\", \"output\": \"Exports\"}}" --wait
collect-2d-validate: "/tmp/faset-p1-final-packages-4a3453e/Faset Café 世界/collect-2d/faset_player" --validate
collect-2d-run: "/tmp/faset-p1-final-packages-4a3453e/Faset Café 世界/collect-2d/faset_player" --headless --frames 120 --capture "/tmp/faset-p1-final-packages-4a3453e/Faset Café 世界/collect-2d/verification.ppm" --profile "/tmp/faset-p1-final-packages-4a3453e/Faset Café 世界/collect-2d/profile.json"
collect-3d-validate: "/tmp/faset-p1-final-packages-4a3453e/Faset Café 世界/collect-3d/faset_player" --validate
collect-3d-run: "/tmp/faset-p1-final-packages-4a3453e/Faset Café 世界/collect-3d/faset_player" --headless --frames 120 --capture "/tmp/faset-p1-final-packages-4a3453e/Faset Café 世界/collect-3d/verification.ppm" --profile "/tmp/faset-p1-final-packages-4a3453e/Faset Café 世界/collect-3d/profile.json"
lua-validate: "/tmp/faset-p1-final-packages-4a3453e/Faset Café 世界/lua/faset_player" --validate
lua-run: "/tmp/faset-p1-final-packages-4a3453e/Faset Café 世界/lua/faset_player" --headless --frames 120 --capture "/tmp/faset-p1-final-packages-4a3453e/Faset Café 世界/lua/verification.ppm" --profile "/tmp/faset-p1-final-packages-4a3453e/Faset Café 世界/lua/profile.json"
3 relocated Release game(s) passed: /tmp/faset-p1-final-release-4a3453e/report.json