算法艺术创作
algorithmic-art
通过代码和可调参数创作生成艺术与交互式视觉效果。
auditing-game-screen-readability【设计与创意】Audits what a running game's screen shows at the moments that matter, by capturing frames at gameplay events and at forced coincidences and checking them for overlapping or occluded text, indicators too faint, too small, or too brief to read, HUD elements whose meaning an isolated reader cannot name, and labels no decision depends on. Use when a game…
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
Find display defects that tests of game state cannot see. A score popup is emitted with the right value and drawn under a HUD panel. Two notices are each correct and land on the same line. A warning line exists and is dimmer than the background dots. A counter is accurate and nobody can say what it counts. Each passes every state assertion and fails the player.
These defects appear only at particular moments, so the audit is organised around moments, not around screens.
gating-intent-legibility.directing-game-visuals.Enumerate from the code, not from memory. Read moments.md for the catalogue. At minimum:
Arrange each moment by state injection or a scripted run, and capture at the game's native resolution and at the smallest display scale it supports. For transient elements capture the first frame, a middle frame, and the last. Record how each frame was produced so it can be re-captured.
Have the game report, per captured frame, the rectangle and draw order of every text draw, indicator, and HUD panel — from the same data the renderer uses, never from a hand-kept list. Write them to a manifest and run:
node <skill-dir>/scripts/check-screen-frames.mjs <manifest.json>
The manifest format and thresholds are in frame-manifest.md. The script reports:
overlap — two readable elements intersect;occluded — a readable element is drawn before an opaque panel that covers it. This needs a
distinct draw order for both; when it is missing or tied, including for a panel's own children,
the script lists the intersection as a REVIEW line to inspect in the frame instead of failing;offscreen — any part of a readable element is outside the viewport;small — glyph height at the smallest display scale is below the floor;faint — contrast between an element and what is behind it is below the floor;brief — a transient element is visible for less time than its length needs.A passing run prints the manifest it read and the counts it checked. If it prints nothing, it did
not run. Run --self-test once per environment; it must report every defect class on its
built-in bad manifest.
When the project cannot emit rectangles, apply the same six checks by inspecting the frames, and
label the result inspected, not checked.
Two checks need pixels and are done on the frames themselves:
Give an agent that has seen neither the design nor the source two or three ordinary play frames with each HUD element numbered. For each, ask: what does it count, what makes it change, and is more of it good or bad? Compare with the design.
An element the reader cannot name is a finding even if its value is correct. If no isolated reader
can be spawned, answer the questions yourself and label the result self-audit; it is weaker
evidence, because you already know the answers.
For every label, number, and symbol, name the decision that depends on it. If there is none, it is a candidate for removal: a mode name that never changes, a marker repeating what an animation already shows, a count the player cannot act on.
Give coinciding notices separate lines, and fold a rapid series of popups into one running total.
Re-run steps 2 and 3 on the changed moments only, and repeat step 4 only for elements whose meaning was the finding.
REVIEW line was resolved by looking at the frame; none is reported as a pass unseen.self-audit results.A table of findings (element, moment, check, repair, status), the manifest or frames behind it, and a list of moments that could not be captured.
This audit says an element can be seen and named. It does not say the game is understood, that the layout is attractive, or that the display reads well on hardware the capture did not use. Colour vision deficiency and very small physical screens need a person or a dedicated simulation.