three.js vs Bevy
three.js
three.js contributors (mrdoob)
three.js wins · 14–11 (22 drawn)
Agenticness — how well agents can access and operate the productAgenticness
How well agents can access and operate the product
Agent access
ai-native userPoint an agent at llms.txt or agent-oriented docs
weight 2 · round to three.jsthree.js publishes a llms.txt at its site root (HTTP 200 confirmed by probe) with an explicit 'Instructions for Large Language Models' section and a 363KB llms-full.txt covering complete docs, giving agents a direct machine-readable path. missing for 10: independent/community confirmation that agents actually use this llms.txt successfully in practice, and per-page markdown docs are hash-routed rather than statically addressable.
- [probe] “PROBE llms.txt: HTTP 200 at https://threejs.org/llms.txt # Three.js > Three.js is a cross-browser JavaScript library for creating 3D graphi…”
- [probe] “PROBE runtime (recorded 2026-09-15): threejs.org publishes llms.txt at the site root pointing to a docs llms.txt that carries a literal '## …”
- [claimed-docs] “TSL benefits: - Works with both WebGL and WebGPU backends - No string manipulation or onBeforeCompile hacks”
- [claimed-docs] “TSL benefits: - Works with both WebGL and WebGPU backends - No string manipulation or onBeforeCompile hacks - Type-safe, composable shader n…”
Bevynone0/10Direct probes confirm no llms.txt exists (404) and no agent-oriented docs endpoint is served; docs.rs/crates.io provide standard human docs but nothing tailored for agent consumption per the story.
ai-native userRun the product headlessly / in CI for automation
weight 2 · round drawnthree.jsnone0/10Three.js is fundamentally a browser WebGL/WebGPU library requiring a GPU-backed rendering context; the evidence pack contains no mention of headless rendering, Node.js server-side use, headless-gl/puppeteer integration, or CI automation support. This is a fair question for a rendering engine (other engines in this space document headless CI paths), so absence of evidence means 'none' rather than 'na'.
Bevynone0/10The evidence pack contains no mention of headless mode, CI integration, or automated/scripted execution of Bevy apps; only rendering, ECS, editor-live-reload and general community sentiment are covered. Running headless in CI is a reasonable ask for a game engine, but nothing in the pack demonstrates it.
ai-native userConnect an agent via an official MCP server
weight 3 · round drawnthree.jsnone0/10The axis applies to this product kind (peer products hold positive or none verdicts on this story), so lack of evidence for an applicable capability is "none", never "na". (na/none harmonized at arena bring-up — see pipeline/scripts/na-harmonize.ts.)
Bevynone0/10Bevy is a game engine/library, not itself an AI agent, so an MCP server axis applies as a fair question, but evidence explicitly shows no official MCP server exists — only nascent third-party tooling (bevy_brp) built on the Bevy Remote Protocol. No official MCP server is documented.
ai-native userUse an official CLI
weight 2 · round drawnthree.jsnone0/10The axis applies to this product kind (peer products hold positive or none verdicts on this story), so lack of evidence for an applicable capability is "none", never "na". (na/none harmonized at arena bring-up — see pipeline/scripts/na-harmonize.ts.)
ai-native userDrive the product through a documented public API
weight 3 · round to three.jsthree.js exposes a well-documented JS API (WebGLRenderer/WebGPURenderer, TSL, GLTFLoader, controls) and even publishes llms.txt/llms-full.txt files explicitly aimed at LLM consumption, which supports AI-native driving of the library via npm. However this is a client-side JS library API, not a service with an OpenAPI/REST spec or an MCP server, and probes confirm no OpenAPI endpoints and no official MCP server exist. missing for 10: OpenAPI/machine-readable API spec, official MCP server, per-page static doc URLs (docs are hash-routed, only llms.txt is the structured machine path).
- [probe] “PROBE llms.txt: HTTP 200 at https://threejs.org/llms.txt # Three.js > Three.js is a cross-browser JavaScript library for creating 3D graphi…”
- [probe] “PROBE runtime (recorded 2026-09-15): threejs.org publishes llms.txt at the site root pointing to a docs llms.txt that carries a literal '## …”
- [probe] “PROBE openapi: all candidate paths 404 (https://threejs.org/openapi.json, https://threejs.org/swagger.json, https://threejs.org/api/openapi.…”
- [claimed-docs] “TSL benefits: - Works with both WebGL and WebGPU backends - No string manipulation or onBeforeCompile hacks”
- [claimed-docs] “[GLTFLoader](https://threejs.org/docs/#examples/en/loaders/GLTFLoader)”
- [github] “const renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setSize( width, height );”
Bevy ships a documented Rust API (in-depth reference docs, docs.rs) and even a first-party 'Bevy Remote Protocol' that a nascent community tool (bevy_brp) uses to drive the engine externally, but there is no AI-oriented public API surface: no llms.txt, no OpenAPI/swagger spec, and no official MCP server, and the remote-protocol tooling is described as nascent/community-only rather than a robust public API for programmatic driving. Missing for 10: an official machine-readable API spec (OpenAPI/llms.txt), first-party remote-control docs beyond community wrappers, and evidence of stable AI-agent usage against the API.
- [claimed-docs] “Learn how to use Bevy's types, traits and methods using the in-depth reference documentation, complete with inline examples.”
- [probe] “PROBE llms.txt: HTTP 404 at https://bevy.org/llms.txt”
- [probe] “PROBE openapi: all candidate paths 404 (https://bevy.org/openapi.json, https://bevy.org/swagger.json, https://bevy.org/api/openapi.json, htt…”
- [probe] “PROBE runtime negative (recorded 2026-09-15): bevy.org serves no llms.txt (HTTP 404; docs.rs likewise) and no official MCP exists — communit…”
ai-native userBuild against official SDKs
weight 2 · round to Bevythree.js publishes an llms.txt/llms-full.txt with explicit LLM instructions and is consumable directly via npm, and it is an official, well-documented SDK (WebGL/WebGPU renderers, TSL, GLTFLoader, controls). However, this is a library/API rather than an 'agentic' SDK with tool-calling or agent-specific integration hooks, and there is no official MCP server or agent-oriented tooling beyond docs formatted for LLM consumption. missing for 10: no agent-specific SDK features (e.g., function-calling schemas, MCP server), no independent verification of llms.txt actually improving agent code generation, human docs are hash-routed rather than crawlable per-page.
- [probe] “PROBE runtime (recorded 2026-09-15): threejs.org publishes llms.txt at the site root pointing to a docs llms.txt that carries a literal '## …”
- [probe] “PROBE llms.txt: HTTP 200 at https://threejs.org/llms.txt # Three.js > Three.js is a cross-browser JavaScript library for creating 3D graphi…”
- [claimed-docs] “TSL benefits: - Works with both WebGL and WebGPU backends - No string manipulation or onBeforeCompile hacks”
- [claimed-docs] “[GLTFLoader](https://threejs.org/docs/#examples/en/loaders/GLTFLoader)”
- [probe] “PROBE runtime (recorded 2026-09-15): `npm view three version` → 0.186.0, and the public npm downloads API reports 12,206,532 weekly download…”
Bevy itself ships as an official, versioned Rust SDK (the `bevy` crate on crates.io) with first-party API reference docs, quick-start guides, and migration guides, which is what an AI-native developer would build against (bevy-docs-21, bevy-docs-27, bevy-docs-15, bevy-probe-rt-1). However, pre-1.0 status with breaking changes on nearly every release, community complaints about docs being thin once you leave the intro book, and confirmed absence of llms.txt/AI-consumable doc formats make it harder for AI agents to reliably target the 'official SDK' surface (bevy-probe-rt-1, bevy-comm-12, bevy-comm-14, bevy-probe-1, bevy-probe-rt-2). Missing for 10: llms.txt/AI-friendly doc export, stability guarantees across versions, and independent evidence of AI agents successfully building against the SDK.
- [claimed-docs] “Bevy is just a normal Rust dependency. You can either add it to an existing Rust project or create a new one.”
- [claimed-docs] “Learn how to use Bevy's types, traits and methods using the in-depth reference documentation, complete with inline examples.”
- [claimed-docs] “Every Bevy update brings new functionality and improvements. Follow these guides to migrate your project to the latest Bevy has to offer!”
- [probe] “PROBE runtime (recorded 2026-09-15): bevy resolves on crates.io — `cargo search bevy` → 'bevy = "0.19.1" # A refreshingly simple data-driven…”
- [community] “Things have started to stabilize, but unless you're willing to get your hands dirty and deal with regular breaking changes, I don't yet reco…”
- [community] “I'm put off by the limited docs. I've read the Bevy book, only takes a few minutes, and just like that I'm out of resources to turn to when …”
- [probe] “PROBE llms.txt: HTTP 404 at https://bevy.org/llms.txt”
- [probe] “PROBE runtime negative (recorded 2026-09-15): bevy.org serves no llms.txt (HTTP 404; docs.rs likewise) and no official MCP exists — communit…”
Agentic features
ai-native userGet AI-generated insights and suggestions from my data inside the product
weight 2 · round drawnthree.jsnone0/10The axis applies to this product kind (peer products hold positive or none verdicts on this story), so lack of evidence for an applicable capability is "none", never "na". (na/none harmonized at arena bring-up — see pipeline/scripts/na-harmonize.ts.)
ai-native userSet up automations that run autonomously in the background
weight 2 · round drawnthree.jsnone0/10The axis applies to this product kind (peer products hold positive or none verdicts on this story), so lack of evidence for an applicable capability is "none", never "na". (na/none harmonized at arena bring-up — see pipeline/scripts/na-harmonize.ts.)
ai-native userDelegate tasks to a built-in AI assistant inside the product
weight 3 · round drawnthree.jsnone0/10The axis applies to this product kind (peer products hold positive or none verdicts on this story), so lack of evidence for an applicable capability is "none", never "na". (na/none harmonized at arena bring-up — see pipeline/scripts/na-harmonize.ts.)
ai-native userOperate the product with natural-language commands
weight 2 · round to three.jsthree.js publishes an llms.txt/llms-full.txt specifically to let AI coding agents generate code that drives the library, which is a step toward AI-native operability, but there is no natural-language command interface, chat layer, or MCP server that lets a user directly 'command' the renderer in natural language — an agent still has to write and run JavaScript. Missing for 10: a direct natural-language control layer, an MCP server or agent API, and independent evidence of agents successfully operating three.js purely via NL commands.
- [probe] “PROBE runtime (recorded 2026-09-15): threejs.org publishes llms.txt at the site root pointing to a docs llms.txt that carries a literal '## …”
- [probe] “PROBE llms.txt: HTTP 200 at https://threejs.org/llms.txt # Three.js > Three.js is a cross-browser JavaScript library for creating 3D graphi…”
- [claimed-docs] “TSL benefits: - Works with both WebGL and WebGPU backends - No string manipulation or onBeforeCompile hacks”
Bevynone0/10Bevy is a Rust game engine/library with no evidence of any natural-language command interface; probes confirm no llms.txt, no MCP server, and only nascent third-party remote-protocol tooling (bevy_brp), not a natural-language control layer.
Api quality
ai-native userExplore an interactive API reference with runnable examples
weight 2 · round to three.jsthree.js has a documented interactive examples gallery (threejs.org/examples) and an extensive docs/manual with API references, plus an llms.txt/llms-full.txt tailored for AI agents to consume the API reference programmatically. However, the examples are not runnable/editable inline within the docs reference itself in an AI-native interactive way, there's no API playground or embedded live code editor tied to reference pages, and human doc pages are hash-routed rather than having stable per-page URLs, limiting agentic navigation. missing for 10: inline runnable/editable examples embedded in API reference pages, stable per-page doc URLs for agent navigation, and any dedicated interactive playground/sandbox tool.
- [claimed-docs] “three.js examples”
- [claimed-docs] “[docs](manual/#en/creating-a-scene) [examples](examples/#webgl_animation_keyframes)”
- [probe] “PROBE runtime (recorded 2026-09-15): threejs.org publishes llms.txt at the site root pointing to a docs llms.txt that carries a literal '## …”
- [probe] “PROBE llms.txt: HTTP 200 at https://threejs.org/llms.txt # Three.js > Three.js is a cross-browser JavaScript library for creating 3D graphi…”
- [community] “the three.js examples are good (if a little sloppy in coding style). I think the main thing that helps is some kind of previous knowledge ab…”
Bevy advertises 'in-depth reference documentation, complete with inline examples' and a separate gallery of wasm-compiled examples that run directly in the browser, giving some interactive/runnable exploration of the API surface. But these are two disconnected resources rather than a unified interactive API reference, docs.rs is static/crawlable with no live-run capability, and there's no llms.txt, MCP, or agent-facing interactive console. Missing for 10: a single integrated interactive reference (e.g. rustdoc playground-style 'run' buttons on API docs), agent-facing tooling (llms.txt/MCP) to programmatically explore it, and independent confirmation the wasm examples are tied to the API reference itself.
- [claimed-docs] “Learn how to use Bevy's types, traits and methods using the in-depth reference documentation, complete with inline examples.”
- [claimed-docs] “Browse bevy examples compiled to wasm and running directly in your browser!”
- [probe] “PROBE runtime negative (recorded 2026-09-15): bevy.org serves no llms.txt (HTTP 404; docs.rs likewise) and no official MCP exists — communit…”
- [probe] “PROBE llms.txt: HTTP 404 at https://bevy.org/llms.txt”
ai-native userDownload a machine-readable API spec (OpenAPI or equivalent)
weight 2 · round to three.jsThree.js has no OpenAPI/Swagger spec (explicit probe of openapi.json/swagger.json paths all 404), but it does publish an 'equivalent' machine-readable artifact for AI consumption: a root-level llms.txt with an explicit 'Instructions for Large Language Models' section and a 363KB llms-full.txt covering the full API surface. This is a documentation-style machine-readable spec rather than a structured, typed API schema (no parameter/type schema, no endpoint-like structure). Missing for 10: a structured schema format (OpenAPI-equivalent with typed signatures), and any indication the llms.txt is treated as a formal versioned spec rather than prose docs.
- [probe] “PROBE llms.txt: HTTP 200 at https://threejs.org/llms.txt # Three.js > Three.js is a cross-browser JavaScript library for creating 3D graphi…”
- [probe] “PROBE openapi: all candidate paths 404 (https://threejs.org/openapi.json, https://threejs.org/swagger.json, https://threejs.org/api/openapi.…”
- [probe] “PROBE runtime (recorded 2026-09-15): threejs.org publishes llms.txt at the site root pointing to a docs llms.txt that carries a literal '## …”
ai-native userTest against a sandbox environment without touching production data
weight 1 · round drawnthree.jsnone0/10The axis applies to this product kind (peer products hold positive or none verdicts on this story), so lack of evidence for an applicable capability is "none", never "na". (na/none harmonized at arena bring-up — see pipeline/scripts/na-harmonize.ts.)
ai-native userRely on versioned APIs with a documented deprecation policy
weight 2 · round to three.jsThere is a Migration Guide and per-release notes documenting breaking changes between versions (e.g. 185→186), and npm shows a clear version number (0.186.0), but nothing describes a formal deprecation policy (notice periods, stable API guarantees, semver commitments) — three.js is known for frequent breaking changes on its own rolling release cadence. missing for 10: explicit deprecation policy statement, semver/API-stability guarantees, notice period before removals.
- [claimed-docs] “[Migration Guide](/mrdoob/three.js/wiki/Migration-Guide)”
- [claimed-docs] “https://github.com/mrdoob/three.js/wiki/Migration-Guide#185--186”
- [probe] “PROBE runtime (recorded 2026-09-15): `npm view three version` → 0.186.0, and the public npm downloads API reports 12,206,532 weekly download…”
Bevydisputedcontradicted3/10Bevy publishes migration guides for each release (bevy-docs-15) implying some versioning discipline, but there is no documented deprecation policy, and hands-on evidence shows the API is pre-1.0 with frequent breaking changes each release requiring real rework (bevy-comm-12, bevy-comm-13, bevy-probe-rt-1), directly undercutting reliability for an AI agent trained on prior APIs. Missing for 10: an explicit deprecation/versioning policy document, semver guarantees, and evidence that breaking changes are flagged/deprecated before removal rather than silently changed.
- [claimed-docs] “Every Bevy update brings new functionality and improvements. Follow these guides to migrate your project to the latest Bevy has to offer!”
- [community] “Things have started to stabilize, but unless you're willing to get your hands dirty and deal with regular breaking changes, I don't yet reco…”
- [community] “On the last update 0.10 -> 0.11, I had to make quite a few changes on my app, but this time it compiled out of the box!”
- [probe] “PROBE runtime (recorded 2026-09-15): bevy resolves on crates.io — `cargo search bevy` → 'bevy = "0.19.1" # A refreshingly simple data-driven…”
Ai workflows — AI in the engine loop — agent-driven editors, copilots, codegen-friendly APIs, runtime inferenceAi workflows
AI in the engine loop — agent-driven editors, copilots, codegen-friendly APIs, runtime inference
Agent editor
ai-native userAn agent can drive the editor and project programmatically — create scenes and nodes, edit properties, trigger builds — through a documented scriptable interface
weight 3 · round to three.jsThree.js's core JS API lets an agent create scenes, nodes, meshes, and materials and edit properties programmatically (documented in llms.txt for LLM consumption), but this is just using the library — there's no evidence of a documented scripting/automation interface for the standalone three.js editor app itself, nor any 'trigger build' concept or API. Missing for 10: documented editor automation/scripting API, evidence of programmatic control of the editor UI, and any build/export trigger mechanism.
- [claimed-docs] “three.js editor”
- [probe] “PROBE runtime (recorded 2026-09-15): threejs.org publishes llms.txt at the site root pointing to a docs llms.txt that carries a literal '## …”
- [github] “This code creates a scene, a camera, and a geometric cube, and it adds the cube to the scene. It then creates a `WebGL` renderer for the sce…”
- [claimed-docs] “[docs](manual/#en/creating-a-scene) [examples](examples/#webgl_animation_keyframes)”
Bevy has a first-party Bevy Remote Protocol that could support programmatic scene/entity manipulation, and a community tool (bevy_brp) built on it, but there is no official documentation, no llms.txt, and no official MCP server — the community tooling itself is described as nascent (70 stars). Since Bevy is a code-first Rust crate, most 'scripting' is done by writing/recompiling Rust code rather than through a documented runtime scriptable interface for driving an editor. Missing for 10: first-party documented API/schema for the Remote Protocol, official MCP or agent-facing tooling, evidence of hands-on agent use creating scenes/nodes and triggering builds via that interface.
- [probe] “PROBE runtime negative (recorded 2026-09-15): bevy.org serves no llms.txt (HTTP 404; docs.rs likewise) and no official MCP exists — communit…”
- [probe] “PROBE llms.txt: HTTP 404 at https://bevy.org/llms.txt”
- [claimed-docs] “Create, save, and load ECS worlds using Bevy's Scene system”
Codegen
ai-native userLLM-generated code mostly works on the first try — stable, well-documented APIs with abundant public examples the models have seen
weight 2 · round to three.jsThree.js is hugely popular (12M weekly npm downloads) with abundant public examples and even a dedicated llms.txt/llms-full.txt tailored for LLM consumption, which strongly favors first-try LLM code generation. However, community evidence and the docs themselves point to real friction: frequent breaking API changes requiring per-version migration guides, explicit warnings to use 'CORRECT - modern pattern' import maps (implying old LLM-trained patterns break), and hands-on reports that seemingly simple tasks (loading a model) were unexpectedly hard, undermining 'mostly works on the first try.' Missing for 10: independent benchmark/report of LLM-generated three.js code success rate, and stronger evidence that API stability (not just doc richness) prevents version-mismatch failures.
- [probe] “PROBE runtime (recorded 2026-09-15): `npm view three version` → 0.186.0, and the public npm downloads API reports 12,206,532 weekly download…”
- [probe] “PROBE runtime (recorded 2026-09-15): threejs.org publishes llms.txt at the site root pointing to a docs llms.txt that carries a literal '## …”
- [claimed-docs] “CORRECT - modern pattern (always use latest version): html <script type="importmap">”
- [claimed-docs] “[Migration Guide](/mrdoob/three.js/wiki/Migration-Guide)”
- [community] “I've tried to follow three.js's own tutorials, and slip into coma every time. These are a vast improvement!”
- [community] “I was super excited to use Three.js and thought it would be easy to do what I wanted. What I wanted to do was load a simple .obj model and d…”
- [community] “there are some function signatures that don't match what's in the code using @types/three, and mrdoob does not want to maintain this. This g…”
Bevydisputedcontradicted4/10Bevy has abundant examples and reference docs (bevy-docs-16, bevy-docs-22, bevy-docs-27) which help LLM familiarity, but concrete community evidence shows the API is unstable pre-1.0 with breaking changes almost every release, requiring real migration work each time (bevy-comm-12, bevy-comm-13, bevy-probe-rt-1) — meaning LLMs trained on older versions likely generate code that fails to compile against current APIs. Docs are also reported as thin/outdated relative to the pace of change (bevy-comm-14, bevy-comm-15), and there's no llms.txt or first-party AI-consumption docs (bevy-probe-1, bevy-probe-rt-2). missing for 10: evidence of first-try success rate for LLM-generated Bevy code, stable API surface across versions, and first-party AI-friendly documentation.
- [community] “Things have started to stabilize, but unless you're willing to get your hands dirty and deal with regular breaking changes, I don't yet reco…”
- [community] “On the last update 0.10 -> 0.11, I had to make quite a few changes on my app, but this time it compiled out of the box!”
- [community] “I'm put off by the limited docs. I've read the Bevy book, only takes a few minutes, and just like that I'm out of resources to turn to when …”
- [community] “There's an unofficial complement to the docs... Unfortunately it's somewhat out of date... The effort to keep it up to date is somewhat low …”
- [probe] “PROBE runtime (recorded 2026-09-15): bevy resolves on crates.io — `cargo search bevy` → 'bevy = "0.19.1" # A refreshingly simple data-driven…”
- [probe] “PROBE runtime negative (recorded 2026-09-15): bevy.org serves no llms.txt (HTTP 404; docs.rs likewise) and no official MCP exists — communit…”
- [claimed-docs] “Examples that show how to use the various features of Bevy.”
Copilot
ai-native userAn official AI assistant inside the engine helps with engine tasks — generating scripts, answering API questions, scaffolding scenes or assets
weight 2 · round drawnthree.jsnone0/10Evidence shows only LLM-friendly documentation (llms.txt) and no in-engine AI assistant, chat copilot, or code-generation assistant feature; probe explicitly notes no MCP server or agent integration exists, official or community.
- [probe] “PROBE runtime (recorded 2026-09-15): threejs.org publishes llms.txt at the site root pointing to a docs llms.txt that carries a literal '## …”
- [probe] “PROBE llms.txt: HTTP 200 at https://threejs.org/llms.txt # Three.js > Three.js is a cross-browser JavaScript library for creating 3D graphi…”
Bevynone0/10Bevy is a Rust game engine/library with no evidence of an official in-engine AI assistant; probes confirm no llms.txt, no official MCP, and only nascent third-party tooling (bevy_brp).
Asset pipeline — getting content in — automated import, formats, marketplacesAsset pipeline
Getting content in — automated import, formats, marketplaces
Formats
technical artistStandard interchange formats — glTF, FBX, USD — import cleanly
weight 2 · round to three.jsOnly GLTFLoader is explicitly evidenced as a documented import path; there is no mention of FBX or USD loaders in the evidence pack, and a community report describes friction loading even a simple OBJ model, undercutting the 'imports cleanly' framing. Missing for 10: FBXLoader/USDLoader documentation or examples, first-party guidance on interchange-format fidelity, and independent confirmation that glTF/FBX/USD assets import without manual fixes.
- [claimed-docs] “[GLTFLoader](https://threejs.org/docs/#examples/en/loaders/GLTFLoader)”
- [community] “I was super excited to use Three.js and thought it would be easy to do what I wanted. What I wanted to do was load a simple .obj model and d…”
Bevynone0/10No evidence anywhere in the pack mentions glTF, FBX, USD, or any interchange-format import/asset-pipeline support; only glTF is a commonly known Bevy asset format but it's not cited here. Missing for 10: any docs or community mention of glTF/FBX/USD import, format fidelity, or asset-pipeline tooling.
Import
technical artistAsset import is automatable — import hooks, presets, and pipeline scripts process incoming assets without hand-clicking each one
weight 2 · round to Bevythree.jsnone0/10three.js is a rendering library with a GLTFLoader and asset loaders, but there is no evidence of automatable asset-import pipelines, import hooks, presets, or scripted batch-processing of incoming assets — everything in the evidence pack concerns runtime rendering APIs, TSL/WebGPU, and manual loader usage rather than pipeline automation.
- [claimed-docs] “[GLTFLoader](https://threejs.org/docs/#examples/en/loaders/GLTFLoader)”
- [github] “The current builds only include WebGL and WebGPU renderers but SVG and CSS3D renderers are also available as addons.”
Bevy's Asset V2 system does support preprocessing and .meta files, which one community commenter calls 'super useful' for pipeline automation, but no first-party docs describe import hooks, presets, or scripting workflows for batch/automated asset processing. missing for 10: official documentation on asset import hooks/presets, evidence of scripted/batch pipeline tooling, and independent confirmation beyond a single community mention.
- [community] “Bevy is one of my favorite game engines, especially for larger projects. Asset V2 preprocessing and .meta files look super useful.”
Marketplace
game developerA large asset store or package ecosystem gives me ready-made models, tools, and plugins
weight 2 · round to Bevythree.jsnone0/10Evidence only shows three.js's own built-in addons (GLTFLoader, OrbitControls, editor, devtools) and npm package popularity, not a third-party asset store or plugin marketplace comparable to Unity/Unreal ecosystems; community commentary even notes basic model loading (.obj) was painful. missing for 10: any evidence of a dedicated asset store, marketplace, or curated third-party plugin ecosystem for game assets/tools.
- [claimed-docs] “[GLTFLoader](https://threejs.org/docs/#examples/en/loaders/GLTFLoader)”
- [claimed-docs] “[OrbitControls](https://threejs.org/docs/#examples/en/controls/OrbitControls) - [TransformControls](https://threejs.org/docs/#examples/en/co…”
- [claimed-docs] “three.js editor”
- [claimed-docs] “[devtools](https://chromewebstore.google.com/detail/threejs-devtools/jechbjkglifdaldbdbigibihfaclnkbo)”
- [community] “I was super excited to use Three.js and thought it would be easy to do what I wanted. What I wanted to do was load a simple .obj model and d…”
- [probe] “PROBE runtime (recorded 2026-09-15): `npm view three version` → 0.186.0, and the public npm downloads API reports 12,206,532 weekly download…”
Bevy explicitly maintains an official third-party 'Assets' page listing community plugins, tools, and learning resources (bevy-docs-17), and community comments confirm an active ecosystem contributing new features and crates (bevy-comm-19). However, this is a curated links page rather than an integrated in-engine asset store, and the ecosystem is described as young/fragmented with docs gaps and frequent breaking changes affecting third-party plugin compatibility (bevy-comm-12, bevy-comm-15). Missing for 10: evidence of a large volume/maturity of ready-made models or marketplace-scale assets, integrated store UI, and quantified ecosystem size or quality assurance for third-party plugins.
- [claimed-docs] “A collection of third-party Bevy assets, plugins, learning resources, and apps made by the community.”
- [community] “Something delightful about this update: it has a lot of new features, some very early, but all by different authors. Seems like such a commu…”
- [community] “Things have started to stabilize, but unless you're willing to get your hands dirty and deal with regular breaking changes, I don't yet reco…”
- [community] “There's an unofficial complement to the docs... Unfortunately it's somewhat out of date... The effort to keep it up to date is somewhat low …”
Automation depth — how much of the product can run unattendedAutomation depth
How much of the product can run unattended
ai-native userPerform bulk operations across many items at once
weight 2 · round drawnthree.jsnone0/10No evidence describes batch/bulk APIs (e.g., instancing, scene-graph batch edits) or automation tooling for operating on many items at once; the evidence pack only covers renderer setup, TSL, loaders, and controls.
ai-native userDefine rules that trigger actions automatically on events
weight 3 · round drawnthree.jsnone0/10The axis applies to this product kind (peer products hold positive or none verdicts on this story), so lack of evidence for an applicable capability is "none", never "na". (na/none harmonized at arena bring-up — see pipeline/scripts/na-harmonize.ts.)
Bevynone0/10The evidence pack describes Bevy's ECS, rendering, audio, and UI features but never mentions an event/trigger/rule system (e.g., Bevy Events, Observers, or ECS hooks) that would let a user define rules firing automatically on events. While such automation is plausible for a game engine's ECS, no evidence in the pack substantiates it.
ai-native userVersion, review, and roll back my automations
weight 1 · round drawnthree.jsnone0/10The axis applies to this product kind (peer products hold positive or none verdicts on this story), so lack of evidence for an applicable capability is "none", never "na". (na/none harmonized at arena bring-up — see pipeline/scripts/na-harmonize.ts.)
Core engine — the engine core — rendering, 2D, physics, performance at scaleCore engine
The engine core — rendering, 2D, physics, performance at scale
2d
game developer2D is a first-class workflow — sprites, tilemaps, 2D physics — not a 3D afterthought
weight 2 · round to Bevythree.jsnone0/10The evidence pack shows three.js is positioned and documented purely as a 3D graphics library (WebGL/WebGPU renderers, TSL shaders, GLTFLoader, OrbitControls) with no mention of sprites, tilemaps, or 2D physics as first-class citizens; 2D is at best an afterthought achievable via workarounds, consistent with community comments about needing workarounds for things it wasn't built for.
- [probe] “PROBE llms.txt: HTTP 200 at https://threejs.org/llms.txt # Three.js > Three.js is a cross-browser JavaScript library for creating 3D graphi…”
- [github] “The current builds only include WebGL and WebGPU renderers but SVG and CSS3D renderers are also available as addons.”
- [claimed-docs] “**Use WebGPURenderer** when you need: - Custom shaders/materials using TSL (Three.js Shading Language) - Compute shaders - Advanced node-bas…”
- [community] “Three.js is insane, in a good way. Great abstraction of WebGL, very user friendly, and surprisingly few things that it can't do, as long as …”
Bevy's official docs explicitly list 2D rendering as a first-class feature alongside 3D (bevy-docs-2, bevy-docs-3), suggesting parity rather than a 3D-only focus, and community feedback confirms active engine use for real projects. However, there is no evidence in the pack of built-in tilemap support or first-party 2D physics (these are known to be third-party crates in the Bevy ecosystem), so the story's specific claims about tilemaps and 2D physics being first-class are unconfirmed. Missing for 10: evidence of native/first-party tilemap support, evidence of native/first-party 2D physics integration, and any community confirmation of 2D-specific workflow maturity.
- [claimed-docs] “Render real-time 2D graphics for games and apps”
- [claimed-docs] “A modern and flexible 3D renderer”
- [claimed-docs] “Extensible: custom shaders, materials, and render pipelines”
Performance
game developerProfile and scale — a real profiler, plus data-oriented paths (ECS, jobs, instancing) when scenes get heavy
weight 2 · round to Bevythree.jsnone0/10No evidence of a built-in profiler, ECS, job system, or GPU/CPU instancing tooling in the pack — only renderer setup, TSL/WebGPU shading, loaders, and controls are documented. Three.js is a rendering library, not a full engine, so profiling and data-oriented scaling primitives fall to external tools (Chrome DevTools extension is mentioned but that's a generic browser profiler, not a real-time engine profiler), and no ECS/jobs/instancing capability is cited.
- [claimed-docs] “[devtools](https://chromewebstore.google.com/detail/threejs-devtools/jechbjkglifdaldbdbigibihfaclnkbo)”
Bevy's data-oriented ECS is well documented as the foundation for all engine/game logic (bevy-docs-1, bevy-docs-14, bevy-docs-20), and community accounts corroborate its data-driven, ECS-first workflow (bevy-comm-17). However, the evidence pack contains no mention of a built-in profiler/diagnostics tool, explicit job/parallel-system scheduling, or GPU instancing for heavy scenes — core parts of the story. Missing for 10: dedicated profiler tooling (e.g. tracing/diagnostics plugin), explicit job-system/parallelism documentation, and instancing support evidence.
- [claimed-docs] “All engine and game logic uses Bevy ECS, a custom Entity Component System”
- [claimed-docs] “Components: Rust structs that implement the Component trait”
- [claimed-docs] “Unlike other Rust ECS implementations, which often require complex lifetimes, traits, builder patterns, or macros, Bevy ECS uses normal Rust…”
- [community] “Pros: Very nice to work in Rust engine + Rust game. Once you get your brain thinking ECS it's tough to go back, feels very flexible. Very li…”
Physics
game developerBuilt-in physics — rigid bodies, collisions, raycasts — works out of the box
weight 2 · round drawnthree.jsnone0/10three.js is a rendering library — no evidence of any built-in physics engine (rigid bodies, collisions, raycasts as physics) shipped out of the box; evidence only covers rendering (WebGL/WebGPU), loaders, and controls. Raycaster exists in three.js for picking but no physics/collision system is documented, and physics is a well-known gap requiring third-party libraries like Cannon.js or Ammo.js.
Bevynone0/10The evidence pack covers ECS, rendering, audio, UI, and scenes but contains no mention of physics, rigid bodies, collision detection, or raycasting capabilities. Built-in physics is a fair question for a game engine's core-engine axis, but nothing in the docs or community evidence shows Bevy ships this out of the box.
Rendering
game developerThe engine ships a modern production 3D renderer — PBR materials, global illumination or baked lighting, shadows, post-processing
weight 3 · round to BevyEvidence confirms a modern rendering pipeline (WebGLRenderer/WebGPURenderer, antialiasing, and node-based 'MeshStandardNodeMaterial' implying PBR-style materials) but the pack contains no explicit documentation of shadow mapping, global illumination/baked lighting, or a post-processing pipeline — a community comment even asks uncertainly whether lightmaps are possible. missing for 10: explicit shadow-mapping docs, GI/lightmap baking evidence, post-processing/effects pipeline documentation, independent confirmation of PBR material fidelity.
- [claimed-docs] “When using TSL, use node-based materials: - MeshBasicNodeMaterial - MeshStandardNodeMaterial”
- [claimed-docs] “Use WebGPURenderer when you need: - Custom shaders/materials using TSL (Three.js Shading Language) - Compute shaders - Advanced node-based m…”
- [github] “const renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setSize( width, height );”
- [community] “That is called aliasing. Three.js defaults to it, but you can turn antialiasing on by passing the option to the WebGLRenderer.”
- [community] “Can you actually generate lightmaps with three.js? I did a lot with it years ago. Really nice abstraction library.”
Docs confirm a 'modern and flexible 3D renderer' with extensible custom shaders/materials/pipelines, and community hands-on feedback confirms shadows exist (though called 'jagged/low-res, reminds me of early Unity shadows'). However, the evidence pack never mentions global illumination, baked lighting, or a post-processing stack explicitly. Missing for 10: explicit documentation of GI/baked lighting support, explicit post-processing feature list, and independent corroboration of PBR material quality beyond the shadow-quality caveat.
- [claimed-docs] “A modern and flexible 3D renderer”
- [claimed-docs] “Extensible: custom shaders, materials, and render pipelines”
- [community] “Not a criticism, but model projected shadows are very jagged or really low-res, reminds me of early Unity shadows.”
Editor tooling — the editor as a product — scene tools, extensibility, team workflowsEditor tooling
The editor as a product — scene tools, extensibility, team workflows
Collaboration
studio leadThe project format and tooling play well with version control and multi-person teams — mergeable scenes, diffable text formats, or built-in collaboration
weight 2 · round drawnthree.jsnone0/10three.js is a rendering library/API, not a scene-authoring tool with a project file format; evidence shows only a code-based API, an optional visual editor, and no mention of diffable scene formats, merge tooling, or multi-user collaboration features. This axis applies to engines/authoring tools generally, but nothing in the evidence indicates three.js ships mergeable/diffable project files or built-in collaboration.
- [claimed-docs] “three.js editor”
- [github] “This code creates a scene, a camera, and a geometric cube, and it adds the cube to the scene. It then creates a `WebGL` renderer for the sce…”
- [claimed-docs] “[docs](manual/#en/creating-a-scene) [examples](examples/#webgl_animation_keyframes)”
Bevynone0/10Evidence mentions a Scene system for saving/loading ECS worlds (bevy-docs-8) but nothing about its text format being diffable/mergeable, nor any built-in multi-user collaboration tooling. The 'code-first' workflow noted in bevy-probe-rt-2 is framed around agent-driven development, not team version-control workflows, so it doesn't substantiate this story.
- [claimed-docs] “Create, save, and load ECS worlds using Bevy's Scene system”
- [probe] “PROBE runtime negative (recorded 2026-09-15): bevy.org serves no llms.txt (HTTP 404; docs.rs likewise) and no official MCP exists — communit…”
Editor
technical artistA full visual editor — viewport, inspector, prefabs/scene composition — is the primary way to build levels
weight 3 · round to three.jsthree.js ships a browser-based editor (threejs.org/editor) and devtools/TransformControls, but evidence only names the editor's existence with no documentation of an inspector, prefab system, or scene-composition workflow, and the library's primary workflow is code-first (constructing scenes via API) rather than a visual editor. Missing for 10: documented inspector UI, prefab/asset composition workflow, evidence the editor is treated as the primary level-building tool rather than a supplementary demo tool.
- [claimed-docs] “three.js editor”
- [claimed-docs] “[OrbitControls](https://threejs.org/docs/#examples/en/controls/OrbitControls) - [TransformControls](https://threejs.org/docs/#examples/en/co…”
- [claimed-docs] “[devtools](https://chromewebstore.google.com/detail/threejs-devtools/jechbjkglifdaldbdbigibihfaclnkbo)”
Bevynone0/10Bevy's evidence describes a code-first Rust ECS engine (components, systems, scenes-as-data, hot reloading) but nothing about a visual editor with viewport, inspector, or prefab/scene composition UI; comment bevy-comm-8 even suggests users hope NOT to be forced into an in-engine editor, and probes show no official tooling filling this gap. Missing for full/partial credit: any first-party viewport/inspector GUI, prefab authoring workflow, or scene-composition editor.
- [claimed-docs] “Create, save, and load ECS worlds using Bevy's Scene system”
- [claimed-docs] “Get instant feedback on your changes without app restarts or recompiles”
- [community] “The integrated code editor in Godot is actually something I don't like... I hope that Bevy users won't be forced to use the Bevy editor for …”
Extensibility
game developerExtend and automate the editor itself — custom tools, editor scripts, plugins that manipulate scenes and assets programmatically
weight 3 · round drawnthree.jsnone0/10Evidence confirms three.js ships an editor (threejs.org/editor) and a devtools browser extension, but nothing in the pack describes any plugin API, scripting console, or extension mechanism for programmatically automating the editor itself — the docs excerpts focus on the library API (TSL, renderers, loaders, controls), not editor extensibility.
- [claimed-docs] “three.js editor”
- [claimed-docs] “[devtools](https://chromewebstore.google.com/detail/threejs-devtools/jechbjkglifdaldbdbigibihfaclnkbo)”
Bevynone0/10Bevy's evidence shows only a code-first workflow (ECS, scenes, plugins) and mentions no official editor application to extend; the closest hint is a third-party 'bevy_brp' remote-protocol tool with just 70 stars, not first-party editor scripting/plugin support for manipulating scenes and assets. missing for 10: any first-party editor product, documented editor scripting/plugin API, or mature ecosystem tooling for automating scene/asset manipulation via an editor UI.
- [probe] “PROBE runtime negative (recorded 2026-09-15): bevy.org serves no llms.txt (HTTP 404; docs.rs likewise) and no official MCP exists — communit…”
- [claimed-docs] “Create, save, and load ECS worlds using Bevy's Scene system”
Headless automation — the engine without a human — CLI builds, CI test runs, dedicated serversHeadless automation
The engine without a human — CLI builds, CI test runs, dedicated servers
Ci
game developerBuild and export the project from the command line, headless, in CI — no human clicking an editor
weight 3 · round to Bevythree.jsnone0/10Evidence shows three.js is a code-first WebGL/WebGPU library installed via npm/git and used with standard `WebGLRenderer` setup, but nothing documents a CLI or automated pipeline for building/exporting a 'project' headlessly in CI (no headless rendering support, no export tooling, no CI recipes) — the only editor mentioned (threejs.org/editor) is a browser GUI requiring human interaction. missing for 10: any documented headless rendering approach (e.g. headless-gl/Node canvas), a CLI build/export command, and CI pipeline examples.
- [github] “const renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setSize( width, height );”
- [github] “git clone --depth=1 https://github.com/mrdoob/three.js.git”
- [claimed-docs] “three.js editor”
- [github] “This code creates a scene, a camera, and a geometric cube, and it adds the cube to the scene. It then creates a `WebGL` renderer for the sce…”
Bevy is a code-first Rust library built and run via cargo, with no mandatory editor (bevy-docs-21, bevy-comm-8, bevy-probe-rt-2), which inherently supports command-line/CI builds. However, there is no explicit documentation of a headless mode flag, export pipeline, or CI-specific tooling/examples, and no official CI templates or GitHub Actions references are present in the evidence pack. missing for 10: explicit headless-mode/export documentation, CI pipeline examples or templates, and confirmation of asset-building/export automation without a GUI step.
- [claimed-docs] “Bevy is just a normal Rust dependency. You can either add it to an existing Rust project or create a new one.”
- [community] “The integrated code editor in Godot is actually something I don't like... I hope that Bevy users won't be forced to use the Bevy editor for …”
- [probe] “PROBE runtime negative (recorded 2026-09-15): bevy.org serves no llms.txt (HTTP 404; docs.rs likewise) and no official MCP exists — communit…”
- [probe] “PROBE runtime (recorded 2026-09-15): bevy resolves on crates.io — `cargo search bevy` → 'bevy = "0.19.1" # A refreshingly simple data-driven…”
Server
game developerGame logic runs headless on servers — a dedicated-server or server-runtime build without rendering
weight 2 · round drawnthree.jsnone0/10three.js is fundamentally a browser-based WebGL/WebGPU rendering library requiring a canvas/GPU context; the evidence pack shows no headless/server-runtime build, no dedicated-server mode, and no mention of running game logic without rendering on Node.js servers. missing for 10: any headless rendering context (e.g. node-canvas/gl bindings), a documented server-runtime build, or dedicated-server examples.
Bevynone0/10The evidence pack covers Bevy's ECS, rendering, UI, audio, and platform support, but contains no mention of a headless/dedicated-server build mode, disabling rendering plugins, or server-runtime configuration. Since this is a plausible and common need for a game engine, absence of evidence means the axis is unmet rather than inapplicable.
Testing
game developerTests run headlessly — unit and integration tests of game code execute in CI against the real engine
weight 2 · round drawnthree.jsnone0/10No evidence in the pack addresses headless testing, CI integration, or running WebGLRenderer/WebGPURenderer without a browser context (e.g. via node-canvas, jsdom, or headless GL). All evidence covers rendering setup, docs, and community sentiment, none of it about automated/headless test execution.
Licensing openness — the terms you build on — licenses, royalties, source access, pricing stabilityLicensing openness
The terms you build on — licenses, royalties, source access, pricing stability
Governance
studio leadThe project's governance and funding are transparent — a foundation, published finances, or a public roadmap I can plan against
weight 1 · round drawnthree.jsnone0/10No evidence of a foundation, published finances, or public roadmap; three.js governance appears to be maintainer-driven (mrdoob) via GitHub releases/migration guides with no financial transparency artifacts in the pack.
Bevynone0/10Evidence documents Bevy's open-source MIT/Apache-2.0 licensing and community activity, but nothing about a governing foundation, published finances, or an official public roadmap a studio could plan against — only migration guides for past releases are mentioned. missing for 10: evidence of a foundation or legal entity, published budget/financials, and a forward-looking public roadmap.
- [claimed-docs] “It is free and open-source forever under your choice of the MIT or Apache 2.0 licenses.”
- [claimed-docs] “100% free. Forever and always * Open Source under the permissive MIT or Apache 2.0 licenses * No contracts * No license fees * No sa…”
- [claimed-docs] “Every Bevy update brings new functionality and improvements. Follow these guides to migrate your project to the latest Bevy has to offer!”
- [community] “Something delightful about this update: it has a lot of new features, some very early, but all by different authors. Seems like such a commu…”
License
studio leadThe license is permissive with no royalties or per-install fees — I keep what my game earns
weight 3 · round drawnnpm registry confirms three.js is MIT licensed, a permissive license with no royalties or per-install fees, verified directly from the package registry. Missing for 10: no explicit first-party licensing FAQ or legal statement addressing commercial game royalties specifically, relying instead on the generic MIT registry classification.
- [probe] “PROBE runtime (recorded 2026-09-15): `npm view three version` → 0.186.0, and the public npm downloads API reports 12,206,532 weekly download…”
Bevy's own site explicitly states it is 100% free forever, MIT OR Apache-2.0 licensed, with no contracts, no license fees, and no sales cuts, directly satisfying the studio-lead's ask of no royalties or per-install fees. This is corroborated independently by crates.io license metadata and by community commentary praising the permissive MIT licensing as 'no strings attached.' Missing for 10: no explicit legal/contract analysis or enterprise-scale case study confirming zero royalty obligations at large studio scale.
- [claimed-docs] “100% free. Forever and always * Open Source under the permissive MIT or Apache 2.0 licenses * No contracts * No license fees * No sa…”
- [claimed-docs] “It is free and open-source forever under your choice of the MIT or Apache 2.0 licenses.”
- [community] “MIT License, well done! It's so refreshing to see things released with no strings attached... a breathe of fresh air as a potential end user…”
- [probe] “PROBE runtime (recorded 2026-09-15): bevy resolves on crates.io — `cargo search bevy` → 'bevy = "0.19.1" # A refreshingly simple data-driven…”
Source
game developerRead and modify the full engine source when I hit a wall
weight 2 · round drawnthree.js is open-source (MIT license per npm registry) with full source hosted on GitHub, clonable and directly modifiable, and community evidence confirms active engagement with the codebase (e.g., @ts-ignore workarounds, discussion of internals like antialiasing defaults). Missing for 10: no explicit first-party statement encouraging source modification as a supported workflow, and no case study of a game dev forking/patching the engine for a shipped title.
- [probe] “PROBE runtime (recorded 2026-09-15): `npm view three version` → 0.186.0, and the public npm downloads API reports 12,206,532 weekly download…”
- [github] “git clone --depth=1 https://github.com/mrdoob/three.js.git”
- [community] “there are some function signatures that don't match what's in the code using @types/three, and mrdoob does not want to maintain this. This g…”
- [community] “That is called aliasing. Three.js defaults to it, but you can turn antialiasing on by passing the option to the WebGLRenderer.”
Bevy is fully open-source (MIT/Apache 2.0), with source hosted openly, allowing developers to read and modify the engine itself; community confirms code is clean/readable and license is unrestricted ('no strings attached'). Missing for 10: no explicit hands-on account of a developer patching/forking the engine source to unblock themselves, only license and code-quality corroboration.
- [claimed-docs] “It is free and open-source forever under your choice of the MIT or Apache 2.0 licenses.”
- [claimed-docs] “100% free. Forever and always * Open Source under the permissive MIT or Apache 2.0 licenses * No contracts * No license fees * No sa…”
- [claimed-docs] “Why are we continuing to build up the ecosystems of closed-source monopolies that take cuts of our sales and deny us visibility into the tec…”
- [community] “Got the chance of running the examples and glance over the code... it looks incredibly elegant and clean. Almost feels like this could make …”
- [community] “MIT License, well done! It's so refreshing to see things released with no strings attached... a breathe of fresh air as a potential end user…”
- [probe] “PROBE runtime (recorded 2026-09-15): bevy resolves on crates.io — `cargo search bevy` → 'bevy = "0.19.1" # A refreshingly simple data-driven…”
Trust
studio leadThe pricing and license terms have a track record of stability — no retroactive changes that reprice games already shipped
weight 2 · round to Bevythree.js is MIT-licensed, verified from the npm registry, which is a free, permissive open-source license with no pricing terms to retroactively change — this structurally supports licensing stability. However, there is no explicit evidence pack documentation of license history, versioning of terms, or any studio commentary confirming a track record of stability over time. Missing for 10: explicit license-history documentation, third-party confirmation of no relicensing/repricing events, and studio-lead testimonials on licensing trust.
- [probe] “PROBE runtime (recorded 2026-09-15): `npm view three version` → 0.186.0, and the public npm downloads API reports 12,206,532 weekly download…”
Bevy is licensed under MIT/Apache 2.0 with explicit 'no contracts, no license fees, no sales cuts, forever' commitments, and these are irrevocable open-source licenses that cannot retroactively reprice already-shipped games — corroborated by community praise for the license having 'no strings attached.' Missing for 10: a long multi-year track record (Bevy is a young, pre-1.0 project) and any explicit governance statement committing to never relicense future versions restrictively.
- [claimed-docs] “100% free. Forever and always * Open Source under the permissive MIT or Apache 2.0 licenses * No contracts * No license fees * No sa…”
- [claimed-docs] “It is free and open-source forever under your choice of the MIT or Apache 2.0 licenses.”
- [community] “MIT License, well done! It's so refreshing to see things released with no strings attached... a breathe of fresh air as a potential end user…”
Openness — open source, data portability, and self-hosting storiesOpenness
Open source, data portability, and self-hosting stories
ai-native userDo everything through the API that I can do in the UI
weight 2 · round drawnthree.jsnone0/10The axis applies to this product kind (peer products hold positive or none verdicts on this story), so lack of evidence for an applicable capability is "none", never "na". (na/none harmonized at arena bring-up — see pipeline/scripts/na-harmonize.ts.)
ai-native userExport all of my data in open formats and leave
weight 3 · round to Bevythree.jsnone0/10The axis applies to this product kind (peer products hold positive or none verdicts on this story), so lack of evidence for an applicable capability is "none", never "na". (na/none harmonized at arena bring-up — see pipeline/scripts/na-harmonize.ts.)
Bevy is a local, open-source Rust engine (MIT/Apache-2.0) with no cloud data lock-in, and its Scene system lets you save/load ECS worlds in the open RON format, which aligns with the openness theme. However there's no explicit documentation or tooling framed around 'exporting all your data and leaving' (e.g., data migration guides, guaranteed format stability) since Bevy isn't a hosted service holding user data in the first place. Missing for 10: explicit data-export/migration documentation, guarantees around long-term format stability given breaking API changes each release, and any first-party statement on data portability beyond the general OSS license.
- [claimed-docs] “Create, save, and load ECS worlds using Bevy's Scene system”
- [claimed-docs] “It is free and open-source forever under your choice of the MIT or Apache 2.0 licenses.”
- [claimed-docs] “100% free. Forever and always * Open Source under the permissive MIT or Apache 2.0 licenses * No contracts * No license fees * No sa…”
- [probe] “PROBE runtime (recorded 2026-09-15): bevy resolves on crates.io — `cargo search bevy` → 'bevy = "0.19.1" # A refreshingly simple data-driven…”
ai-native userRead the product's source under an open license
weight 2 · round drawnthree.js source is hosted publicly on GitHub (mrdoob/three.js) and distributed via npm under the MIT license, verified directly from the npm registry; the repo is clonable and openly browsable. missing for 10: no explicit license file text quoted in the evidence pack, only registry-confirmed MIT license metadata.
- [github] “const renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setSize( width, height );”
- [github] “git clone --depth=1 https://github.com/mrdoob/three.js.git”
- [probe] “PROBE runtime (recorded 2026-09-15): `npm view three version` → 0.186.0, and the public npm downloads API reports 12,206,532 weekly download…”
Bevy's source and docs are explicitly MIT OR Apache-2.0 licensed, confirmed both by first-party docs and independent runtime crates.io metadata, and community commenters corroborate the open, permissive licensing and code readability. Missing for 10: no direct GitHub repo citation in the evidence pack, though license and source availability are otherwise well-documented.
- [claimed-docs] “It is free and open-source forever under your choice of the MIT or Apache 2.0 licenses.”
- [claimed-docs] “100% free. Forever and always * Open Source under the permissive MIT or Apache 2.0 licenses * No contracts * No license fees * No sa…”
- [community] “MIT License, well done! It's so refreshing to see things released with no strings attached... a breathe of fresh air as a potential end user…”
- [probe] “PROBE runtime (recorded 2026-09-15): bevy resolves on crates.io — `cargo search bevy` → 'bevy = "0.19.1" # A refreshingly simple data-driven…”
ai-native userSelf-host the core product
weight 3 · round to three.jsthree.js is an open-source (MIT) client-side library distributed via npm/GitHub that can be cloned, built, and self-hosted entirely without any vendor service, as shown by the git clone instructions and npm registry data. missing for 10: no explicit first-party 'self-hosting guide' doc beyond generic clone/build instructions, and no independent case study of a fully self-hosted deployment.
- [github] “git clone --depth=1 https://github.com/mrdoob/three.js.git”
- [probe] “PROBE runtime (recorded 2026-09-15): `npm view three version` → 0.186.0, and the public npm downloads API reports 12,206,532 weekly download…”
- [github] “The current builds only include WebGL and WebGPU renderers but SVG and CSS3D renderers are also available as addons.”
Bevy is not a hosted service at all — it's an open-source (MIT/Apache-2.0) Rust library added directly as a dependency to your own project and compiled/run entirely on your own machine, satisfying self-hosting by default with no server or cloud dependency (bevy-docs-18, bevy-docs-21, bevy-docs-25). Community corroboration confirms the open license and local dev workflow (bevy-comm-2). missing for 10: explicit vendor-authored self-hosting/deployment guidance (e.g., docs discussing running Bevy apps as self-hosted servers or headless builds) and independent verification of self-hosted production deployments.
- [claimed-docs] “It is free and open-source forever under your choice of the MIT or Apache 2.0 licenses.”
- [claimed-docs] “Bevy is just a normal Rust dependency. You can either add it to an existing Rust project or create a new one.”
- [claimed-docs] “100% free. Forever and always * Open Source under the permissive MIT or Apache 2.0 licenses * No contracts * No license fees * No sa…”
- [community] “MIT License, well done! It's so refreshing to see things released with no strings attached... a breathe of fresh air as a potential end user…”
Platform export — shipping everywhere — desktop, mobile, console, browser payloadsPlatform export
Shipping everywhere — desktop, mobile, console, browser payloads
Targets
studio leadOne project exports to desktop, mobile, and (directly or via partners) consoles
weight 3 · round to Bevythree.jsnone0/10The evidence pack shows three.js is a browser-based WebGL/WebGPU rendering library with no documentation of a build/export pipeline to native desktop, mobile, or console targets — no mention of Electron/Cordova wrapping, console SDK partnerships, or platform-specific packaging tools. While the axis is fair to ask of any 3D technology a studio might adopt, there is no evidence three.js provides or facilitates such multi-platform export beyond running inside a web browser.
- [github] “const renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setSize( width, height );”
- [github] “The current builds only include WebGL and WebGPU renderers but SVG and CSS3D renderers are also available as addons.”
- [probe] “PROBE llms.txt: HTTP 200 at https://threejs.org/llms.txt # Three.js > Three.js is a cross-browser JavaScript library for creating 3D graphi…”
Docs confirm one Bevy project can target desktop (Windows/macOS/Linux), mobile (iOS/Android) and Web via a single codebase [bevy-docs-6], and community feedback corroborates real-world mobile/web use [bevy-comm-10][bevy-comm-20]. However, there is no evidence—first-party or community—of console export capability, whether direct or via third-party porting partners, which is a key part of the story. Missing for 10: any mention of console targets (Switch/PlayStation/Xbox), official or partner-based console export tooling, or case studies of console shipping.
- [claimed-docs] “Support for all major platforms: Windows, MacOS, Linux, Web, iOS, Android”
- [community] “We support low-end devices well! Bevy runs well on iOS currently... Fans spinning is a known issue, but it is generally decoupled from frame…”
- [community] “Man, you guys really kill it with blog/changelog announcements. Great job! For my use case, Bevy web (and mobile is nice too) support would …”
Web
web developerMy game runs in the browser with a reasonable payload — WebGL today, and a credible WebGPU story
weight 2 · round to three.jsthree.js runs in-browser via WebGLRenderer (widely used, huge npm install base) and has a credible, actively developed WebGPU story through WebGPURenderer plus TSL shaders that target both WebGL and WebGPU backends, with SVG/CSS3D as lighter addons keeping core payload lean. Community confirms it's a solid abstraction over WebGL, though payload/performance specifics for WebGPU maturity aren't independently benchmarked in evidence. missing for 10: independent bundle-size/payload benchmarks, and hands-on confirmation of WebGPU production readiness beyond docs claims.
- [github] “const renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setSize( width, height );”
- [github] “The current builds only include WebGL and WebGPU renderers but SVG and CSS3D renderers are also available as addons.”
- [claimed-docs] “**Use WebGPURenderer** when you need: - Custom shaders/materials using TSL (Three.js Shading Language) - Compute shaders - Advanced node-bas…”
- [claimed-docs] “TSL benefits: - Works with both WebGL and WebGPU backends - No string manipulation or onBeforeCompile hacks”
- [community] “Three.js is insane, in a good way. Great abstraction of WebGL, very user friendly, and surprisingly few things that it can't do, as long as …”
- [community] “THREE.js adds a nice layer of abstraction atop that metal [WebGL].”
- [probe] “PROBE runtime (recorded 2026-09-15): `npm view three version` → 0.186.0, and the public npm downloads API reports 12,206,532 weekly download…”
Bevy documents official Web platform support and showcases live wasm-compiled examples running in-browser, and a community comment shows real interest in adopting Bevy specifically for web/mobile targets. However, the evidence never mentions WebGPU explicitly, payload size/optimization guidance, or any hands-on report of browser performance/bundle size — the WebGPU 'credible story' half of the claim is unevidenced. Missing for 10: explicit WebGPU backend documentation or roadmap, payload-size/optimization guidance, and independent hands-on confirmation of web build performance.
- [claimed-docs] “Support for all major platforms: Windows, MacOS, Linux, Web, iOS, Android”
- [claimed-docs] “Browse bevy examples compiled to wasm and running directly in your browser!”
- [community] “Man, you guys really kill it with blog/changelog announcements. Great job! For my use case, Bevy web (and mobile is nice too) support would …”
web developerThe engine installs from a package registry into my existing toolchain — a library I import, bundle, and tree-shake like any dependency
weight 2 · round to three.jsthree.js is published on npm (12M+ weekly downloads, MIT license per registry probe) and is widely used as an ES module import (importmap pattern shown in docs), consistent with standard bundler/tree-shaking workflows; community feedback confirms TypeScript compatibility and typical dependency usage patterns. Missing for 10: no explicit first-party documentation or evidence specifically confirming tree-shaking behavior/bundle-size optimization guidance.
- [probe] “PROBE runtime (recorded 2026-09-15): `npm view three version` → 0.186.0, and the public npm downloads API reports 12,206,532 weekly download…”
- [claimed-docs] “CORRECT - modern pattern (always use latest version): html <script type="importmap">”
- [community] “Btw three.js works flawlessly with Typescript too in case anyone is interested.”
- [community] “there are some function signatures that don't match what's in the code using @types/three, and mrdoob does not want to maintain this. This g…”
- [community] “THREE.js adds a nice layer of abstraction atop that metal [WebGL].”
Bevynone0/10Bevy is distributed exclusively as a Rust crate via crates.io/cargo (bevy-docs-21, bevy-probe-rt-1), not as an npm/JS package; its 'Web' platform support (bevy-docs-6) means compiling to WASM as a game binary, not shipping a tree-shakeable JS library a web developer imports and bundles. No evidence shows npm registry presence, ES-module packaging, or tree-shaking support.
- [claimed-docs] “Bevy is just a normal Rust dependency. You can either add it to an existing Rust project or create a new one.”
- [claimed-docs] “Support for all major platforms: Windows, MacOS, Linux, Web, iOS, Android”
- [probe] “PROBE runtime (recorded 2026-09-15): bevy resolves on crates.io — `cargo search bevy` → 'bevy = "0.19.1" # A refreshingly simple data-driven…”
Scripting — writing the game — languages, visual scripting, iteration speedScripting
Writing the game — languages, visual scripting, iteration speed
Iteration
game developerThe edit-run loop is fast — hot reload or near-instant preview after a script change
weight 2 · round to Bevythree.jsnone0/10three.js is a rendering library, not a game engine or dev environment with a build/watch pipeline; no evidence in the pack of any hot-reload, live-reload, or fast edit-run tooling shipped by the project itself (only unrelated docs, editor mentions, and API references).
Bevy's own docs directly claim 'instant feedback on your changes without app restarts or recompiles' and cite very fast compile times (0.8–3.0s) with a 'fast compiles' config, which matches the story's intent. However, Bevy is a Rust-native engine (not script-based), so this reload speed is achieved via build tooling/dynamic linking rather than a true scripting hot-reload workflow, and there is no independent/hands-on community confirmation of this specific edit-run loop experience — community comments focus on ECS ergonomics, docs quality, and breaking changes instead. Missing for 10: independent/hands-on verification of the hot-reload claim, clarity on scripting vs. Rust recompilation semantics, and community testimony specifically about iteration speed.
- [claimed-docs] “Get instant feedback on your changes without app restarts or recompiles”
- [claimed-docs] “With Bevy you can expect 0.8-3.0 seconds with the "fast compiles" configuration”
- [probe] “PROBE runtime (recorded 2026-09-15): bevy resolves on crates.io — `cargo search bevy` → 'bevy = "0.19.1" # A refreshingly simple data-driven…”
Language
game developerThe primary scripting language is productive and fully exposes the engine API, with a debugger behind it
weight 3 · round to three.jsThree.js is a plain JavaScript/TypeScript library, so the 'scripting language' is JS itself, giving full, direct access to the entire engine API with no separate scripting sandbox or restricted binding layer (threejs-gh-1, threejs-gh-4). Debugging is supported via standard browser devtools plus a dedicated official Chrome three.js DevTools extension (threejs-docs-8), and TypeScript works well though community reports note occasional @types/three signature mismatches requiring ts-ignore (threejs-comm-4, threejs-comm-5). Missing for 10: deeper first-party documentation of the debugger extension's capabilities and stronger independent corroboration of TypeScript API completeness.
- [github] “const renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setSize( width, height );”
- [github] “This code creates a scene, a camera, and a geometric cube, and it adds the cube to the scene. It then creates a `WebGL` renderer for the sce…”
- [claimed-docs] “[devtools](https://chromewebstore.google.com/detail/threejs-devtools/jechbjkglifdaldbdbigibihfaclnkbo)”
- [community] “Btw three.js works flawlessly with Typescript too in case anyone is interested.”
- [community] “there are some function signatures that don't match what's in the code using @types/three, and mrdoob does not want to maintain this. This g…”
Bevy uses plain Rust as its 'scripting' layer, and docs plus community comments confirm the ECS API is idiomatic, fully native Rust with no macros/lifetimes needed (bevy-docs-14, bevy-docs-20, bevy-comm-3, bevy-comm-4), which is a strong productivity/API-exposure signal. However, there is no evidence at all of a dedicated debugger or debugging workflow behind this scripting layer, and community feedback flags limited/out-of-date docs and frequent breaking changes as productivity friction (bevy-comm-14, bevy-comm-15, bevy-comm-12). Missing for 10: explicit debugger/debugging-tool evidence, confirmation of full API surface coverage beyond ECS basics, and independent hands-on accounts of debugging Bevy games.
- [claimed-docs] “Components: Rust structs that implement the Component trait”
- [claimed-docs] “Unlike other Rust ECS implementations, which often require complex lifetimes, traits, builder patterns, or macros, Bevy ECS uses normal Rust…”
- [community] “I have to say the API seems to be very pleasant and simple at a glance. Kudos to the author! This pattern is a great example of how Rust ach…”
- [community] “This is amazing. Seriously: I had a look at nearly every game engine/GUI solution in Rust and this is by far the most thought out, ergonomic…”
- [community] “I'm put off by the limited docs. I've read the Bevy book, only takes a few minutes, and just like that I'm out of resources to turn to when …”
- [community] “There's an unofficial complement to the docs... Unfortunately it's somewhat out of date... The effort to keep it up to date is somewhat low …”
- [community] “Things have started to stabilize, but unless you're willing to get your hands dirty and deal with regular breaking changes, I don't yet reco…”
Visual
technical artistBuild gameplay logic with visual scripting without writing code
weight 2 · round drawnthree.jsnone0/10The axis applies to this product kind (peer products hold positive or none verdicts on this story), so lack of evidence for an applicable capability is "none", never "na". (na/none harmonized at arena bring-up — see pipeline/scripts/na-harmonize.ts.)
Bevynone0/10Bevy is explicitly a code-first, Rust-based ECS engine (bevy-docs-1, bevy-docs-14, bevy-docs-20, bevy-docs-21) with no mention of a visual scripting system or node-based logic editor anywhere in the evidence; community feedback even discusses concerns about being forced into a code editor, reinforcing the code-only workflow.
- [claimed-docs] “All engine and game logic uses Bevy ECS, a custom Entity Component System”
- [claimed-docs] “Components: Rust structs that implement the Component trait”
- [claimed-docs] “Unlike other Rust ECS implementations, which often require complex lifetimes, traits, builder patterns, or macros, Bevy ECS uses normal Rust…”
- [claimed-docs] “Bevy is just a normal Rust dependency. You can either add it to an existing Rust project or create a new one.”
- [community] “The integrated code editor in Godot is actually something I don't like... I hope that Bevy users won't be forced to use the Bevy editor for …”
Not comparable on these axes
ai-native userPlug MCP servers into this product so it can use their tools
weight 3 · not comparablethree.jsn/athree.js is a 3D graphics library, not an agent or platform that consumes external tools via MCP; the evidence explicitly confirms no MCP server exists and coding agents just use the library directly through npm. This axis is a category error for a rendering library.
- [probe] “PROBE runtime (recorded 2026-09-15): threejs.org publishes llms.txt at the site root pointing to a docs llms.txt that carries a literal '## …”
ai-native userIssue scoped/least-privilege API credentials for an agent
weight 2 · not comparablethree.jsn/athree.js is a client-side 3D rendering library with no API/service surface requiring credentials; scoped credential issuance is not a relevant axis for this kind of product.
ai-native userSubscribe to events via webhooks
weight 2 · not comparablethree.jsn/athree.js is a client-side rendering library with no service/event backend; webhooks are a wrong-axis capability for this kind of product, not something buyers of a graphics library would expect.
game developerRun ML models inside the game — an official inference runtime for on-device model execution
weight 1 · not comparablethree.jsn/athree.js is a WebGL/WebGPU 3D rendering library, not an ML inference runtime; no evidence exists of an on-device model execution engine, and this axis is a category error for a rendering library rather than an applicable-but-unmet capability.
ai-native userSchedule recurring jobs or workflows
weight 2 · not comparablethree.jsn/athree.js is a 3D rendering library, not a workflow/automation platform; scheduling recurring jobs is outside its category and irrelevant to a graphics engine's API surface.
ai-native userChoose where my data is stored (region/residency)
weight 2 · not comparablethree.jsn/athree.js is a client-side rendering library with no data storage/hosting component, so data residency/region choice is not an applicable axis for this product category.
ai-native userPrevent my data from being used to train AI models
weight 3 · not comparablethree.jsn/athree.js is a client-side 3D rendering library, not a data-processing or AI service that trains models on user data; data-training opt-out is not an applicable axis for this product category.
ai-native userControl data retention and deletion
weight 2 · not comparablethree.jsn/athree.js is a client-side rendering library, not a data-processing service or platform that stores/retains user data; data retention/deletion controls are not an applicable axis for this kind of product.
ai-native userOpt out of telemetry and usage tracking
weight 2 · not comparablethree.jsn/athree.js is a client-side rendering library with no telemetry, network service, or usage-tracking component to opt out of; this privacy-posture axis applies to hosted services/SaaS tools, not a self-contained open-source graphics library.
Bevyn/aBevy is an open-source, self-hosted game engine library with no SaaS telemetry service; there's no evidence of any usage-tracking/phone-home mechanism to opt out of, and this axis is a category error for a locally-run engine/framework rather than a hosted product with telemetry collection.