anyCreature README

The project's README from github.com/Ariescar/anyCreature. As one markdown file: README.md.

anyCreature

Text → a game-ready 3D creature, in one session.

An AI session takes an order like "make me a menacing mountain giant", asks at most two questions, and delivers a skinned, animated, vertex-coloured, AO-baked GLB plus an offline showroom viewer.

License: MIT Version Engine Output Tooling

anyCreature — a winged creature compiled from a one-line order

Every creature is compiled from one JSON spec. No mesh files, no downloaded art packs, no photogrammetry. The worked example that ships with this repo, example/wolf.json, is 2,211 vertices and 31 joints written out by the engine from plain text.


Quick start

bash setup.sh                              # deps + red/green ruler calibration
node engine/cli.js example/wolf.json out/wolf.glb

setup.sh must print calibrate OK before you trust anything else: it builds one spec that has to pass and two that have to be blocked, so you know the rulers separate good from bad on your machine.

To run the full text-to-creature session, give your agent (Claude Code, Cursor, a VM agent — anything that runs shell commands) EXACTLY this:

Read MANUAL.md in this folder and follow it exactly — the cards in cards/ are the pipeline, do not improvise around them. First run bash setup.sh and confirm it prints "calibrate OK". Then make me: <describe your creature>. Real-world height: <e.g. 1.8 m>. Ask me exactly one question — card 01's — and nothing else. Not cost, not token budget, not how long, not whether to publish. Decide the rest and tell me what you chose when you deliver.

Three things that make or break the result:

Driving it harder

Knob Where What it changes
smooth_angle spec root, or per volume/part Crease threshold in degrees, default 50. Higher = smoother body, lower = more facets.
shading spec root Whole-body vertical colour ramp and grain — {gradient:{top,bottom}, noise:{size,amount}}.
build: "rigid" spec root The only way to get a fully faceted body past the checker. For robots and crystals, not for animals.
ao spec root Per-vertex ambient occlusion; false to skip the bake.
embed_spec spec root Every GLB embeds its own authored spec (asset.extras.source_spec) + a parts manifest — any agent can extract, edit, recompile, or graft parts between creatures (harness/graft.py). false opts out.
harness/claims.json QC The one claims sheet — signature presence, 6:3:1 hierarchy, focal contrast, saturated area, rig/animations, triangle budget. Everything is judged at boss standard; adjust tri_budget for cheap creatures.

What is actually in here

Folder What it holds
engine/ The ACS engine. One JSON spec in, one skinned GLB out. Zero runtime dependencies — node engine/cli.js spec.json out.glb is the whole interface.
cards/ The five stage cards the executing session reads, plus the spec syntax on one page.
harness/ Measuring tools (silhouettes, mask metrics, claims judge), the delivery packer and the publisher.
example/ A bred, approved light quadruped to read and copy from.
calibration/ One sample that must build and two that must be blocked — proof the rulers separate good from bad.

How it works

flowchart LR
    A[Order<br/>one sentence] --> B[Interview<br/>≤ 2 questions] --> C[Silhouette<br/>brief] --> D[LOW<br/>design free]
    D --> E{Gate 1<br/>RECOGNISED}
    E -->|fail| D
    E -->|pass| F{Gate 2<br/>PUNCHIER}
    F -->|reverted| D
    F -->|pass| G[MID<br/>all parts] --> H[HIGH<br/>colour + anims] --> I[SHIP<br/>stamp · deliver]

The two gates

Neither gate is self-graded. The session that designed the creature is the worst possible judge of whether it reads, because it already knows what it drew. So the silhouettes go to a context-free reader agent that has never seen the order, and the only question is "what is this?"

Gate 1 is RECOGNISED: all four views have to land. Gate 2 is PUNCHIER: a new round may only make the silhouette bolder than the last one — a round that tames the shape is reverted, even if it is "more correct". LOW's deliverable is an exaggerated silhouette, not an accurate one.

The engine floors

The compiler talks in three registers, and they mean different things:

Prefix Meaning
BLOCK: The build stops. A hard floor was crossed — faceted body, part floating off its host, a mirrored twin distorted past 30%, an attack that never reaches.
warn: It built, but something is probably wrong. Read it.
info: A number you asked for, or an assumption the compiler made on your behalf — like which way an anchored fin ended up facing.

Floors are not style opinions. They are the failures that survive review and ship broken: a body that renders in hard facets, a horn that hovers a centimetre off the skull, a right thigh collapsed to 40% depth by mirrored skinning.

What gets measured

four silhouette views the blind reader is shown

Every round renders these four views, reduces them to masks, and computes the numbers the design card declared a target for — width over height, mass thirds, torso depth contrast, leg fraction, silhouette turn count, zigzag alignment, and IoU against the previous round as a regression guard. The 24px thumbnail is what the blind reader actually sees; if it does not read at 24px, it does not read.

The doctrine in one paragraph

Head-to-head experiments showed the model designs BOLDLY when left free, and every attempt to teach it design upfront made the output tamer — so this harness ships a clean painter and a strict inspector. The creation side gets only the order, the engine syntax, and a short pit-map of engine-local traps; ALL quality control lives in gates read by context-free reader agents, never self-graded. Form beats obedience, everywhere.

Honesty about limits

Scripts

Script Role
engine/cli.js Spec → GLB. The whole engine interface.
harness/silmetrics.mjs Renders the four silhouettes and the 24px thumbnail; emits the layout metrics.
harness/maskmetrics.py Per-view mask measures and dullness flags (sq_fill, mirror_sym, straight_max).
harness/judge.mjs Claims judge — part shares, focal contrast, saturated area, rig/anim/triangle budgets.
harness/hero.mjs hero.png (1024² transparent, 45°) and hero.jpg over studio grey.
harness/deliver.py Stamps identity into the GLB, writes the offline showroom viewer, builds the upload pack.
harness/publish.mjs Gobkit publisher. Only runs after an explicit yes, and always tries the upload before offering the manual page.
harness/calibrate.py The red/green self-check setup.sh runs.

Requirements

Node 18+ and Python 3.9+. Windows: run setup.ps1 in PowerShell (or setup.sh in Git Bash/WSL). setup.sh installs three, playwright, numpy, pillow and scipy, then runs the calibration self-check. The engine alone needs nothing but Node; the dependencies are for the measuring and render tools.

Output contract

Every GLB this harness writes satisfies docs/OUTPUT_CONTRACT.md — two chunks, no trailing bytes, no external URIs, no textures (colour is baked into vertex colours), semantic material names, convention bone names. Verify any file with node harness/glbcheck.mjs <file.glb>; the same module runs as a dependency-free import inside a server or Worker.

Security

Short-lived local servers used by the render tools bind to 127.0.0.1 only, and Chromium runs with its OS sandbox enabled. The Gobkit submission key in harness/gobkit.json is public by design — it authorises posting to the community wall and nothing else. Details and reporting: SECURITY.md.

Licence

MIT — see LICENSE. One third-party component is bundled (harness/assets/three-bundle.js, three.js, MIT); attributions for it and for everything setup.sh installs are in THIRD-PARTY-NOTICES.md.


About

Gobkit: AI-native 3D infrastructure for agents and vibe coders. Stream game-ready 3D assets straight into your workflows via API. Agent-friendly. Studio-quality. Built by a team of artists and engineers.

Author: Ariescar | Alsomindtech

👹 gobkit.com · 📖 Devlog

anyCreature (Ariescar/anyCreature)

Searching Database…

这是什么?anyCreature 把诸如「一只凶猛的山地巨人」这样的自然语言描述变成可直接用于游戏的 3D 生物——一个带蒙皮、动画和顶点色的 GLB 文件,外加一个离线查看器——全部在一次 AI 智能体会话中完成。
这是独立应用,还是由我的编码智能体替我运行的东西?它是一个命令行流水线(一个引擎加上一组分阶段的「卡片」和一个测试装置),旨在由 Claude Code 或 Cursor 这类 AI 编码智能体驱动——没有图形界面,只有 `node engine/cli.js spec.json out.glb`。
怎么开始生成生物?运行 `bash setup.sh`(Windows 上是 `setup.ps1`),直到它输出「calibrate OK」,然后让你的智能体阅读 MANUAL.md,并按照卡片流水线生成你描述的生物。
运行之前需要安装什么?Node 18+ 和 Python 3.9+。setup.sh 还会额外安装用于渲染和测量的 three.js 工具、playwright、numpy、pillow 和 scipy——引擎本身只需要 Node。
有哪些已知的失败模式需要注意?单独部件的盲读可能误读某些单独展示的头部(大象/鸟类);在引擎 1.2.0 版本之前编写的规格现在可能无法通过新检查;为每个流水线阶段运行各自短命的子智能体,比让一个智能体从头做到尾更慢、成本更高。
它能在 Windows 上运行吗,还是只支持 Mac/Linux?三者都支持——Windows 通过 PowerShell 中的 setup.ps1(或在 Git Bash/WSL 下运行 setup.sh)提供支持,同时原生支持 macOS 和 Linux。
这里有什么会连接远程服务器吗?渲染和测量工具只会启动绑定到 127.0.0.1 的短命本地服务器;唯一对外的动作是一个可选且明确的步骤:把完成的生物发布到 Gobkit 社区墙。
Gobkit 是什么?Gobkit 是作者的 AI 原生 3D 资产基础设施/API,用于向智能体和「氛围编程者」流式交付可用于游戏的模型。anyCreature 是其背后的开源引擎,完成的生物可以选择发布到它的社区墙。
embedspec 选项实际能给我带来什么?它让导出的 GLB 在文件内部携带自己的 JSON 规格说明和部件清单,之后任何智能体都可以提取、编辑、重新编译或在生物之间移植部件。
为什么要用两个独立的质量关卡而不是一个?设计该生物的会话最不适合评判自己的剪影。第一关(RECOGNISED)检查一个无上下文的阅读智能体能否从四个视角认出这个生物;第二关(PUNCHIER)会阻止任何让剪影不如上一轮醒目的修改,即使那样更「正确」。
自带的示例狼具体展示了什么?example/wolf.json 是一个 2,211 顶点、31 关节的四足动物,纯粹作为语法参考——它只附带 idle 和 move 动画,没有攻击动画;而且引擎会主动拦截那些只是改了几个数字就照搬这只狼的构建。
Creator
Ariescar
Size
1.1 MB
Stars
467
Age
2mo
Commits · 90 Days