<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title><![CDATA[Cinevva Guides]]></title>
        <link>https://app.cinevva.com</link>
        <description><![CDATA[Long-form guides for creators and players.]]></description>
        <lastBuildDate>Tue, 15 Sep 2026 02:07:38 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>scripts/build-rss.mjs</generator>
        <copyright>Copyright 2024-present Cinevva</copyright>
        <item>
            <title><![CDATA[AI 3D Model Generation in 2026: Every Major Release, Dated]]></title>
            <link>https://app.cinevva.com/guides/ai-3d-model-generation-timeline-2026</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/ai-3d-model-generation-timeline-2026</guid>
            <pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[A dated timeline of AI 3D model generation in 2026 and the year before: Hunyuan3D, TRELLIS.2, Meshy 7, Tripo, Rodin, SAM 3D and the open models, with licences.]]></description>
            <content:encoded><![CDATA[<h1>AI 3D Model Generation in 2026: Every Major Release, Dated</h1>
<p><em>Last updated: September 2026.</em></p>
<figure class="guide-hero">
<img src="https://cdn.cinevva.com/guides/ai-3d-model-generation-timeline-2026-hero.jpg?v=1" alt="Row of AI-generated 3D game props with dated release pins behind them" width="1216" height="640">
</figure>
<style>
.guide-hero { margin: 1.25rem 0 1.75rem; }
.guide-hero img { width: 100%; height: auto; border-radius: 12px; display: block; }
.guide-fig { margin: 1.5rem 0; }
.guide-fig img, .guide-fig svg { width: 100%; height: auto; border-radius: 10px; border: 1px solid var(--vp-c-divider); display: block; }
.guide-fig svg { border: 0; }
.guide-fig figcaption { font-size: 0.9rem; color: var(--vp-c-text-2); margin: 0.5rem 0 0; }
</style>
<p>The state of AI 3D model generation in September 2026: Microsoft's TRELLIS.2 (released 16 December 2025, MIT licence) is still the best model you can download and run, Meshy 7 (12 August 2026) and Tripo's H3.1 and P1.0 (announced 9 March 2026) are the newest hosted engines, and Tencent's Hunyuan3D 3.x family, the most capable geometry engine on paper, remains hosted-only with the last open weights at version 2.1 from June 2025. Below is every major release in this field with its date, maker, open-weights status and licence, checked against the GitHub release notes, Hugging Face model cards and vendor announcements on the day this page was written.</p>
<p>This page is a changelog, not a review. We update it monthly (this revision is 6 September 2026) and the <a href="/guides/ai-3d-model-generators">roundup of the best AI 3D model generators</a> is where we say which one to use and why. Where a date is an announcement rather than a weights release, the table says so.</p>
<h2>Quick answer</h2>
<ul>
<li><strong>The release that matters most for a game project right now:</strong> TRELLIS.2, 16 December 2025. It's a 4B-parameter image-to-3D model under the MIT licence with native PBR materials and GLB export, and it's the only frontier-quality model whose licence has no territory, revenue or user-count clause.</li>
<li><strong>The newest hosted engines:</strong> Meshy 7 (12 August 2026, built around image alignment) and Tripo P1.0 and H3.1 (9 March 2026, native 3D diffusion with a two-second low-poly mode). Both are closed, both need a paid plan to download.</li>
<li><strong>Best geometry, hosted only:</strong> Rodin Gen-2.5 (26 May 2026, ten-million-polygon raw output) and Tencent's Hunyuan 3D 3.1 (28 January 2026 on the global platform, 1536³ geometry).</li>
<li><strong>The licence to read twice:</strong> every Tencent Hunyuan3D open release (2.0, 2.1, Omni, Part) ships under a Community License that does not apply in the EU, UK or South Korea.</li>
<li><strong>Try two of the open models without a GPU:</strong> Cinevva's <a href="/tools/hunyuan3d">3D Model Generator</a> runs Hunyuan3D and TRELLIS.2 in the browser.</li>
</ul>
<p>Before the full table, here is the shape of the last two years on one line. The open releases cluster in 2025, and 2026 so far has been a hosted year with Pixal3D the single open exception.</p>
<figure class="guide-fig">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 280" role="img" aria-label="Timeline of ten AI 3D model releases from TRELLIS in December 2024 to Meshy 7 in August 2026, with open-weights releases in green (TRELLIS, Hunyuan3D 2.0 and 2.1, TRELLIS.2, Pixal3D) and hosted-only releases in blue (Hunyuan 3D 3.0 and 3.1, Tripo P1.0, Rodin Gen-2.5, Meshy 7)">
  <rect width="720" height="280" rx="14" fill="#0b1020"/>
  <g font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif">
    <text x="24" y="36" font-size="20" font-weight="800" fill="#e8edf5">Two years of AI 3D releases, dated</text>
    <text x="24" y="58" font-size="13" fill="#9aa7b4">Ten of the 43 rows below, oldest on the left. Pin colour is the open-weights status.</text>
    <line x1="28" y1="160" x2="686" y2="160" stroke="#3b4660" stroke-width="2"/>
    <polygon points="686,154 696,160 686,166" fill="#3b4660"/>
    <g stroke="#3b4660" stroke-width="1">
      <line x1="48" y1="128" x2="48" y2="154"/>
      <line x1="222" y1="128" x2="222" y2="154"/>
      <line x1="396" y1="128" x2="396" y2="154"/>
      <line x1="483" y1="128" x2="483" y2="154"/>
      <line x1="570" y1="128" x2="570" y2="154"/>
      <line x1="77" y1="166" x2="77" y2="192"/>
      <line x1="309" y1="166" x2="309" y2="192"/>
      <line x1="425" y1="166" x2="425" y2="192"/>
      <line x1="541" y1="166" x2="541" y2="192"/>
      <line x1="633" y1="166" x2="633" y2="192"/>
    </g>
    <g text-anchor="middle">
      <text x="48" y="104" font-size="12" font-weight="700" fill="#6ee7b7">TRELLIS</text>
      <text x="48" y="120" font-size="11" fill="#9aa7b4">Dec 2024</text>
      <text x="222" y="104" font-size="12" font-weight="700" fill="#6ee7b7">Hunyuan3D 2.1</text>
      <text x="222" y="120" font-size="11" fill="#9aa7b4">Jun 2025</text>
      <text x="396" y="104" font-size="12" font-weight="700" fill="#6ee7b7">TRELLIS.2</text>
      <text x="396" y="120" font-size="11" fill="#9aa7b4">Dec 2025</text>
      <text x="483" y="104" font-size="12" font-weight="700" fill="#7dd3fc">Tripo P1.0</text>
      <text x="483" y="120" font-size="11" fill="#9aa7b4">Mar 2026</text>
      <text x="570" y="104" font-size="12" font-weight="700" fill="#7dd3fc">Rodin Gen-2.5</text>
      <text x="570" y="120" font-size="11" fill="#9aa7b4">May 2026</text>
      <text x="77" y="210" font-size="12" font-weight="700" fill="#6ee7b7">Hunyuan3D 2.0</text>
      <text x="77" y="226" font-size="11" fill="#9aa7b4">Jan 2025</text>
      <text x="309" y="210" font-size="12" font-weight="700" fill="#7dd3fc">Hunyuan 3D 3.0</text>
      <text x="309" y="226" font-size="11" fill="#9aa7b4">Sep 2025, announced</text>
      <text x="425" y="210" font-size="12" font-weight="700" fill="#7dd3fc">Hunyuan 3D 3.1</text>
      <text x="425" y="226" font-size="11" fill="#9aa7b4">Jan 2026</text>
      <text x="541" y="210" font-size="12" font-weight="700" fill="#6ee7b7">Pixal3D</text>
      <text x="541" y="226" font-size="11" fill="#9aa7b4">May 2026</text>
      <text x="633" y="210" font-size="12" font-weight="700" fill="#7dd3fc">Meshy 7</text>
      <text x="633" y="226" font-size="11" fill="#9aa7b4">Aug 2026</text>
    </g>
    <g stroke="#0b1020" stroke-width="2">
      <circle cx="48" cy="160" r="6" fill="#6ee7b7"/>
      <circle cx="77" cy="160" r="6" fill="#6ee7b7"/>
      <circle cx="222" cy="160" r="6" fill="#6ee7b7"/>
      <circle cx="309" cy="160" r="6" fill="#7dd3fc"/>
      <circle cx="396" cy="160" r="6" fill="#6ee7b7"/>
      <circle cx="425" cy="160" r="6" fill="#7dd3fc"/>
      <circle cx="483" cy="160" r="6" fill="#7dd3fc"/>
      <circle cx="541" cy="160" r="6" fill="#6ee7b7"/>
      <circle cx="570" cy="160" r="6" fill="#7dd3fc"/>
      <circle cx="633" cy="160" r="6" fill="#7dd3fc"/>
    </g>
    <circle cx="36" cy="256" r="5" fill="#6ee7b7"/>
    <text x="48" y="260" font-size="12" fill="#e8edf5">Open weights you can download</text>
    <circle cx="264" cy="256" r="5" fill="#7dd3fc"/>
    <text x="276" y="260" font-size="12" fill="#e8edf5">Hosted only</text>
  </g>
</svg>
<figcaption>Notice the gap: after TRELLIS.2 in December 2025 every pin except Pixal3D is blue. The full table below runs newest first and has all 43 rows.</figcaption>
</figure>
<h2>Release timeline</h2>
<p>Newest first. &quot;Open weights?&quot; means downloadable checkpoints, not just a paper or demo. Dates are from the primary source named in the notes column, and &quot;announced&quot; flags a hosted or press release where no weights shipped.</p>
<table>
<thead>
<tr>
<th>Date</th>
<th>Model</th>
<th>Maker</th>
<th>Open weights?</th>
<th>Licence</th>
<th>What changed</th>
</tr>
</thead>
<tbody>
<tr>
<td>Sep 2026</td>
<td>Pixal3D (multi-view inference)</td>
<td>Tencent ARC</td>
<td>Yes</td>
<td>MIT</td>
<td>Multi-view inference code added to the May release (GitHub README)</td>
</tr>
<tr>
<td>12 Aug 2026</td>
<td>Meshy 7</td>
<td>Meshy</td>
<td>No</td>
<td>Hosted, Pro and above to download</td>
<td>New foundation model scored on image-to-3D alignment: 81.0% proportion, 79.7% spatial, 59.8% surface detail on Meshy's benchmark. Ultra Mode single-view only at launch (Meshy blog)</td>
</tr>
<tr>
<td>Aug 2026</td>
<td>Meshy 6 Lite</td>
<td>Meshy</td>
<td>No</td>
<td>Hosted</td>
<td>Faster, lighter Meshy 6 variant for draft iteration. Meshy 5 discontinued the same month (Meshy help centre)</td>
</tr>
<tr>
<td>7 Aug 2026</td>
<td>Meshy multiview upgrade</td>
<td>Meshy</td>
<td>No</td>
<td>Hosted</td>
<td>Main view plus up to three auxiliary views drive both geometry and texture (Meshy blog)</td>
</tr>
<tr>
<td>22 Jul 2026</td>
<td>Meshy native 8K textures</td>
<td>Meshy</td>
<td>No</td>
<td>Hosted, paid tiers</td>
<td>Base colour generated natively at 8K by multiview diffusion (Meshy blog)</td>
</tr>
<tr>
<td>4 Jun 2026</td>
<td>Meshy 3D Agent (beta)</td>
<td>Meshy</td>
<td>No</td>
<td>Hosted</td>
<td>Conversational concept-to-model flow with eight export formats (Meshy blog)</td>
</tr>
<tr>
<td>26 May 2026</td>
<td>Rodin Gen-2.5</td>
<td>Hyper3D (Deemos)</td>
<td>No</td>
<td>Hosted, paid plans</td>
<td>Raw output above 10 million polygons, 4-second drafts up to 80-second tiers, raw tri, quad and Smart Low-Poly outputs (press release)</td>
</tr>
<tr>
<td>May 2026</td>
<td>Pixal3D</td>
<td>Tencent ARC</td>
<td>Yes</td>
<td>MIT</td>
<td>Pixel-aligned image-to-3D with PBR textures. Inference code, demo, training code and a TRELLIS.2-backbone variant all in May. SIGGRAPH 2026 paper (GitHub README)</td>
</tr>
<tr>
<td>31 Mar 2026</td>
<td>Rodin Gen-2 Edit (&quot;3D Nano Banana&quot;)</td>
<td>Hyper3D</td>
<td>No</td>
<td>Hosted</td>
<td>Select a region on any uploaded mesh and edit it with a text prompt (press release)</td>
</tr>
<tr>
<td>9 Mar 2026</td>
<td>Tripo P1.0 and H3.1</td>
<td>Tripo (VAST)</td>
<td>No</td>
<td>Hosted, paid to commercialise</td>
<td>Announced for GDC 2026: P1.0 is a native 3D diffusion model producing engine-ready assets &quot;in as little as two seconds&quot;, H3.1 is the high-detail flagship. API version string <code>v3.1-20260211</code> (press release, Tripo API docs)</td>
</tr>
<tr>
<td>28 Jan 2026</td>
<td>Hunyuan 3D 3.1</td>
<td>Tencent</td>
<td>No</td>
<td>Hosted, 20 free generations a day</td>
<td>Announced on the global platform, hosted only (Tencent Hunyuan on X)</td>
</tr>
<tr>
<td>18 Jan 2026</td>
<td>Meshy 6 (GA)</td>
<td>Meshy</td>
<td>No</td>
<td>Hosted, free tier CC BY 4.0</td>
<td>Low Poly Mode for game developers, refined hard-surface geometry, multi-colour print export (Meshy blog)</td>
</tr>
<tr>
<td>16 Dec 2025</td>
<td>TRELLIS.2 (4B)</td>
<td>Microsoft</td>
<td>Yes</td>
<td>MIT</td>
<td>O-Voxel sparse representation, full PBR (base colour, roughness, metallic, opacity), GLB textures to 4096², 24 GB VRAM (GitHub release commit, HF card)</td>
</tr>
<tr>
<td>26 Nov 2025</td>
<td>Hunyuan 3D global platform</td>
<td>Tencent</td>
<td>No</td>
<td>Hosted, 20 free generations a day</td>
<td><a href="http://3d.hunyuanglobal.com">3d.hunyuanglobal.com</a> launched worldwide running Hunyuan 3D 3.0 (Tencent newsroom)</td>
</tr>
<tr>
<td>19 Nov 2025</td>
<td>SAM 3D Objects and SAM 3D Body</td>
<td>Meta</td>
<td>Yes</td>
<td>SAM License</td>
<td>Single-photo reconstruction. Objects outputs Gaussian splats, Body outputs a parametric human mesh (GitHub READMEs)</td>
</tr>
<tr>
<td>16 Oct 2025</td>
<td>Meshy 6 Preview</td>
<td>Meshy</td>
<td>No</td>
<td>Hosted</td>
<td>Sculpt-level detail, bulk generation of up to 10 assets, 3D-to-image and video workspace (press release)</td>
</tr>
<tr>
<td>1 Oct 2025</td>
<td>Rodin Gen-2</td>
<td>Hyper3D</td>
<td>No</td>
<td>Hosted</td>
<td>10B parameters, recursive part-based generation, claimed 4x mesh quality over Gen-1.5 (press release)</td>
</tr>
<tr>
<td>28 Sep 2025</td>
<td>Hunyuan3D-Part (P3-SAM + X-Part)</td>
<td>Tencent</td>
<td>Yes</td>
<td>Hunyuan 3D-Part Community License</td>
<td>Native 3D part segmentation and part-complete generation. Excludes EU, UK, South Korea (GitHub initial commit, LICENSE)</td>
</tr>
<tr>
<td>25 Sep 2025</td>
<td>Hunyuan3D-Omni</td>
<td>Tencent</td>
<td>Yes</td>
<td>Hunyuan 3D Omni Community License</td>
<td>Control signals: point cloud, voxel, skeleton, bounding box. 10 GB VRAM. Excludes EU, UK, South Korea (GitHub model zoo, License.txt)</td>
</tr>
<tr>
<td>16 Sep 2025</td>
<td>Hunyuan 3D 3.0</td>
<td>Tencent</td>
<td>No</td>
<td>Hosted, Tencent Cloud API</td>
<td>Announced at Tencent's Global Digital Ecosystem Summit: 1536³ geometry, 3.6 billion voxels, claimed 3x accuracy. Weights never released (Tencent News, Sina)</td>
</tr>
<tr>
<td>26 Aug 2025</td>
<td>Meshy 5 (GA)</td>
<td>Meshy</td>
<td>No</td>
<td>Hosted</td>
<td>Multi-view input, 500+ animations for rigged characters. Preview ran from 28 July 2025 (press releases)</td>
</tr>
<tr>
<td>Aug 2025</td>
<td>Tripo 3.0</td>
<td>Tripo (VAST)</td>
<td>No</td>
<td>Hosted</td>
<td>Ultra Mode up to two million polygons. API version string <code>v3.0-20250812</code>, beta announced 20 August 2025 (Tripo API docs, press release)</td>
</tr>
<tr>
<td>13 Jul 2025</td>
<td>PartCrafter</td>
<td>Peking University et al.</td>
<td>Yes</td>
<td>MIT</td>
<td>Multiple parts or objects from one RGB image in a single pass. NeurIPS 2025 (GitHub README)</td>
</tr>
<tr>
<td>23 Jun 2025</td>
<td>Hunyuan3D 2.5 (technical report)</td>
<td>Tencent</td>
<td>No</td>
<td>Hosted</td>
<td>10B-parameter engine reported at 1024 geometric resolution. Announced on the hosted platform in April 2025 per press coverage. An open-source request (issue #111) has sat unanswered since July 2025</td>
</tr>
<tr>
<td>13 Jun 2025</td>
<td>Hunyuan3D 2.1</td>
<td>Tencent</td>
<td>Yes</td>
<td>Hunyuan 3D 2.1 Community License</td>
<td>3.3B shape model plus 2B PBR paint model with full training code. 10 GB shape, 21 GB paint, 29 GB both. Excludes EU, UK, South Korea, and 1M MAU cap (GitHub README, LICENSE)</td>
</tr>
<tr>
<td>11 Jun 2025</td>
<td>PartPacker</td>
<td>NVIDIA</td>
<td>Yes</td>
<td>NVIDIA Source Code License (non-commercial)</td>
<td>Part-level generation via dual volume packing, about 10 GB VRAM (arXiv, GitHub, <a href="http://license.md">license.md</a>)</td>
</tr>
<tr>
<td>30 May 2025</td>
<td>Direct3D-S2</td>
<td>DreamTech</td>
<td>Yes</td>
<td>MIT</td>
<td>1024³ geometry trained on 8 GPUs. 10 GB VRAM at 512, about 24 GB at 1024 (GitHub README)</td>
</tr>
<tr>
<td>20 May 2025</td>
<td>Sparc3D</td>
<td>Math Magic (Hitem3D / Hi3D)</td>
<td>No</td>
<td>Paper and demo only</td>
<td>1024³ watertight geometry. Weights stayed behind the Hitem3D product, which the repo's own issues complain about (arXiv, GitHub issues)</td>
</tr>
<tr>
<td>13 May 2025</td>
<td>Step1X-3D</td>
<td>StepFun</td>
<td>Yes</td>
<td>Apache 2.0</td>
<td>1.3B geometry plus 3.5B texture, 27 to 29 GB VRAM for both stages (GitHub README)</td>
</tr>
<tr>
<td>8 May 2025</td>
<td>Rodin Gen-1.5</td>
<td>Hyper3D</td>
<td>No</td>
<td>Hosted</td>
<td>4B+ parameters, quad mesh and PBR direct from image or text (press release)</td>
</tr>
<tr>
<td>16 Apr 2025</td>
<td>UniRig</td>
<td>VAST</td>
<td>Yes</td>
<td>MIT</td>
<td>Autoregressive skeleton prediction plus skinning weights, 8 GB VRAM. SIGGRAPH 2025 (arXiv, GitHub README)</td>
</tr>
<tr>
<td>Mar to Apr 2025</td>
<td>Hunyuan3D-2 mini, mv, Turbo, FlashVDM</td>
<td>Tencent</td>
<td>Yes</td>
<td>Hunyuan 3D 2.0 Community License</td>
<td>0.6B mini shape model, multiview shape model, distilled turbo shape and paint models (GitHub README news)</td>
</tr>
<tr>
<td>28 Mar 2025</td>
<td>Hi3DGen (Stable3DGen)</td>
<td>Stable-X</td>
<td>Yes</td>
<td>MIT</td>
<td>Normal-bridged geometry on a TRELLIS backbone, checkpoint <code>trellis-normal-v0-1</code> (arXiv, GitHub, HF)</td>
</tr>
<tr>
<td>25 Mar 2025</td>
<td>TRELLIS text models and training code</td>
<td>Microsoft</td>
<td>Yes</td>
<td>MIT</td>
<td>TRELLIS-text base, large and xlarge (342M to 2.0B) (GitHub README news)</td>
</tr>
<tr>
<td>Mar 2025</td>
<td>TripoSG</td>
<td>VAST</td>
<td>Yes</td>
<td>MIT</td>
<td>1.5B rectified-flow shape model, 8 GB VRAM (GitHub README)</td>
</tr>
<tr>
<td>Jan 2025</td>
<td>Tripo 2.5</td>
<td>Tripo (VAST)</td>
<td>No</td>
<td>Hosted</td>
<td>Multi-image input, Blender and Unity plugins (Tripo blog)</td>
</tr>
<tr>
<td>21 Jan 2025</td>
<td>Hunyuan3D 2.0</td>
<td>Tencent</td>
<td>Yes</td>
<td>Hunyuan 3D 2.0 Community License</td>
<td>Shape and paint models on Hugging Face. 6 GB VRAM shape only, 16 GB with texture. Excludes EU, UK, South Korea (GitHub README, LICENSE)</td>
</tr>
<tr>
<td>8 Jan 2025</td>
<td>SPAR3D</td>
<td>Stability AI</td>
<td>Yes</td>
<td>Stability AI Community License</td>
<td>Point-aware mesh in 0.7 seconds, editable point cloud, free under $1M annual revenue (Stability announcement, <a href="http://LICENSE.md">LICENSE.md</a>)</td>
</tr>
<tr>
<td>2 Dec 2024</td>
<td>TRELLIS</td>
<td>Microsoft</td>
<td>Yes</td>
<td>MIT</td>
<td>Structured latents, 1.2B image model, multi-image conditioning added 18 Dec, 16 GB VRAM (arXiv, GitHub README)</td>
</tr>
<tr>
<td>19 Sep 2024</td>
<td>Tripo 2.0</td>
<td>Tripo (VAST)</td>
<td>No</td>
<td>Hosted</td>
<td>API version string <code>v2.0-20240919</code>, PBR materials (Tripo API docs)</td>
</tr>
<tr>
<td>1 Aug 2024</td>
<td>Stable Fast 3D</td>
<td>Stability AI</td>
<td>Yes</td>
<td>Stability AI Community License</td>
<td>UV-unwrapped mesh in 0.5 seconds, about 6 to 7 GB VRAM (Stability announcement, GitHub README)</td>
</tr>
<tr>
<td>May 2024</td>
<td>Rodin Gen-1</td>
<td>Hyper3D (Deemos)</td>
<td>No</td>
<td>Hosted</td>
<td>1.5B native 3D model, quad faces and PBR in about 40 seconds, open trials (Deemos on X)</td>
</tr>
</tbody>
</table>
<h2>Q4 2025: the open-weights ceiling moved</h2>
<p>The quarter had three releases that changed what an indie could run on their own hardware. TRELLIS.2 landed on 16 December 2025 with a 4B-parameter model, an O-Voxel representation that handles open surfaces and internal structure, and PBR textures to 4096², all under MIT. The catch is the <a href="https://github.com/microsoft/TRELLIS.2">24 GB VRAM requirement</a>, which puts it on a 3090, 4090 or a rented A100 rather than a laptop.</p>
<p>Meta's SAM 3D pair on 19 November 2025 solved a different problem: reconstruction of a real object from one photo, with occlusion, outputting Gaussian splats rather than a mesh. The <a href="https://github.com/facebookresearch/sam-3d-objects">SAM License</a> allows commercial use with the usual Meta exclusions around military end uses. For a game pipeline it's a reference capture tool, not a prop generator.</p>
<p>Tencent spent the quarter going the other way. Hunyuan3D-Omni (25 September) and Hunyuan3D-Part (28 September) shipped weights for controllable generation and native part decomposition, both useful for game assets where you want a door that's a separate mesh from the wall. But the 3.0 engine announced on 16 September and the global platform that launched on 26 November stayed hosted, and the open releases carry the Community License that <a href="https://github.com/Tencent-Hunyuan/Hunyuan3D-2.1/blob/main/LICENSE">does not apply in the EU, UK or South Korea</a>. If your studio or your players are in those territories, that clause decides the question for you.</p>
<p>On the hosted side, Rodin Gen-2 (1 October) introduced recursive part-based generation at 10B parameters, and Meshy 6 Preview (16 October) pushed sculpt-level detail. Both were previews of where 2026 would go: bigger models, more part structure, and download rights tied to a subscription.</p>
<h2>Q1 2026: hosted engines went production-grade</h2>
<p>Three vendors shipped their &quot;for pipelines, not demos&quot; release within ten weeks of each other. Meshy 6 went GA on 18 January with a Low Poly Mode aimed at game developers. Tencent put Hunyuan 3D 3.1 on the global platform on 28 January, hosted only, twenty free generations a day. Tripo announced P1.0 and H3.1 on 9 March for GDC, and P1.0 is the interesting one: a native 3D diffusion architecture that resolves the whole object at once and produces low-poly, engine-ready output in about two seconds. That is a different bet from the &quot;generate dense, then remesh&quot; pattern everyone else uses. Tripo's API had already been serving a <code>v3.1-20260211</code> version string a month before the announcement.</p>
<p>For topology this was the quarter the vendors stopped pretending. Meshy's Low Poly Mode, Tripo's P1.0, and Rodin's quad options all exist because raw diffusion output has no edge loops and everyone knows it. None of them produce the concentrated loops a face or shoulder needs for deformation. They produce evenly distributed quads or a clean low-poly shell, which is exactly right for props and exactly not enough for a hero character.</p>
<p>Nothing open of comparable weight shipped this quarter. The gap between the hosted 3.x-class engines and the open 2.x-class weights widened.</p>
<h2>Q2 2026: detail on the hosted side, alignment on the open side</h2>
<p>Rodin Gen-2.5 on 26 May 2026 is the high-water mark for raw geometric detail: <a href="https://pressadvantage.com/story/94732-hyper3d-launches-rodin-gen-2-5-bringing-sculpt-level-detail-and-production-control-to-ai-3d-generati">more than 10 million polygons</a> in the top tier, four-second drafts at the bottom, and three output types (raw triangles, quads, Smart Low-Poly). Two months earlier, on 31 March, Hyper3D shipped Gen-2 Edit, which lets you mask a region of an existing mesh and change it with a prompt. Region editing is the feature that turns a generator into an iteration tool, and it's still rare.</p>
<p>Meshy launched its 3D Agent beta on 4 June, a chat flow from concept through reference image to downloadable model. It's the same two-step pattern (image model first, image-to-3D second) that every serious pipeline already uses, packaged for people who don't know that.</p>
<p>The open release of the quarter was Pixal3D from Tencent ARC in May 2026, under MIT: a pixel-aligned image-to-3D method that back-projects image features into 3D for reconstruction-level fidelity, with training code and a TRELLIS.2-backbone variant in the same month. It's the first significant open model built on top of TRELLIS.2 rather than alongside it, which is how open ecosystems compound.</p>
<h2>Q3 2026: Meshy's texture and alignment quarter</h2>
<p>Meshy shipped four releases in seven weeks: native 8K base-colour textures on 22 July (paid tiers), a multiview upgrade on 7 August that uses up to four reference views for both geometry and texture, then Meshy 7 and Meshy 6 Lite in August. Meshy 7 is the one to understand. Instead of claiming &quot;better&quot;, Meshy <a href="https://www.meshy.ai/blog/meshy-7-image-to-3d-geometry-alignment">published alignment scores</a> against held-out reference models: 81.0% overall proportion, 79.7% spatial distribution, 59.8% surface details. That surface-detail number is the honest one. Proportion and layout are close to solved for single objects, fine detail isn't, and only Pro and above can download Meshy 7 output.</p>
<p>For PBR textures, this quarter made 8K the marketing number. For a browser game, it's irrelevant: you'll ship 1K or 2K compressed to KTX2, and the win is that downsampling from a clean 8K source gives you fewer baked-in lighting artefacts than a 2K source did. Bake-in in the albedo is still the most common texture defect across every tool on this page.</p>
<p>On the open side, Pixal3D added multi-view inference in September. No new frontier-scale open weights shipped in Q3, and none of the hosted vendors released a model. The 2.1-era Hunyuan weights remain the newest open Tencent shape model, fifteen months on.</p>
<h2>What you can run yourself</h2>
<p>Eight of the models above have downloadable weights and a licence that permits commercial use, at least somewhere. VRAM figures are from each project's own README.</p>
<table>
<thead>
<tr>
<th>Model</th>
<th>Licence</th>
<th>Commercial use</th>
<th>VRAM (README)</th>
<th>Output</th>
</tr>
</thead>
<tbody>
<tr>
<td>TRELLIS.2</td>
<td>MIT</td>
<td>Yes, no conditions</td>
<td>24 GB minimum</td>
<td>GLB with PBR to 4096², OBJ, PLY, splats</td>
</tr>
<tr>
<td>TRELLIS</td>
<td>MIT</td>
<td>Yes</td>
<td>16 GB minimum</td>
<td>Mesh, radiance field, splats</td>
</tr>
<tr>
<td>Pixal3D</td>
<td>MIT</td>
<td>Yes</td>
<td>Not stated, low-VRAM mode available</td>
<td>Mesh with PBR</td>
</tr>
<tr>
<td>Hunyuan3D 2.1</td>
<td>Hunyuan 3D 2.1 Community License</td>
<td>Yes, outside EU, UK, South Korea, under 1M MAU</td>
<td>10 GB shape, 21 GB paint, 29 GB both</td>
<td>Mesh with PBR</td>
</tr>
<tr>
<td>Hunyuan3D 2.0</td>
<td>Hunyuan 3D 2.0 Community License</td>
<td>Same territory and MAU terms</td>
<td>6 GB shape, 16 GB with texture</td>
<td>Mesh with RGB texture</td>
</tr>
<tr>
<td>Hunyuan3D-Omni / Part</td>
<td>Hunyuan Community Licenses</td>
<td>Same territory terms</td>
<td>10 GB (Omni)</td>
<td>Controlled shape / parts</td>
</tr>
<tr>
<td>Direct3D-S2</td>
<td>MIT</td>
<td>Yes</td>
<td>10 GB at 512, about 24 GB at 1024</td>
<td>OBJ mesh</td>
</tr>
<tr>
<td>Step1X-3D</td>
<td>Apache 2.0</td>
<td>Yes</td>
<td>27 to 29 GB both stages</td>
<td>Watertight mesh plus texture</td>
</tr>
<tr>
<td>Hi3DGen</td>
<td>MIT</td>
<td>Yes</td>
<td>Not stated</td>
<td>Geometry</td>
</tr>
<tr>
<td>TripoSG</td>
<td>MIT</td>
<td>Yes</td>
<td>8 GB</td>
<td>Shape</td>
</tr>
<tr>
<td>SPAR3D</td>
<td>Stability AI Community License</td>
<td>Yes under $1M annual revenue</td>
<td>About 6 GB, 10.5 GB default</td>
<td>GLB</td>
</tr>
<tr>
<td>Stable Fast 3D</td>
<td>Stability AI Community License</td>
<td>Yes under $1M annual revenue</td>
<td>About 6 to 7 GB</td>
<td>GLB</td>
</tr>
<tr>
<td>SAM 3D Objects</td>
<td>SAM License</td>
<td>Yes, with Meta's end-use exclusions</td>
<td>Not stated</td>
<td>Gaussian splat (.ply)</td>
</tr>
<tr>
<td>PartCrafter</td>
<td>MIT</td>
<td>Yes</td>
<td>Not stated</td>
<td>Part-decomposed mesh</td>
</tr>
<tr>
<td>UniRig</td>
<td>MIT</td>
<td>Yes</td>
<td>8 GB</td>
<td>Skeleton and skin weights</td>
</tr>
<tr>
<td>PartPacker</td>
<td>NVIDIA Source Code License</td>
<td>No, research only</td>
<td>About 10 GB</td>
<td>Part-decomposed mesh</td>
</tr>
</tbody>
</table>
<p>The same numbers as a chart, sorted by the memory you need for the full model, with the licence terms as the colour.</p>
<figure class="guide-fig">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 460" role="img" aria-label="Horizontal bar chart of README VRAM figures for twelve open AI 3D models: Hunyuan3D 2.1 and Step1X-3D need up to 29 GB, TRELLIS.2 and Direct3D-S2 24 GB, TRELLIS and Hunyuan3D 2.0 16 GB, SPAR3D 10.5 GB, Hunyuan3D-Omni and PartPacker 10 GB, TripoSG and UniRig 8 GB, Stable Fast 3D 6 to 7 GB. Bars are coloured green for MIT or Apache licences, amber for conditional licences and coral for research only">
  <rect width="720" height="460" rx="14" fill="#0b1020"/>
  <g font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif">
    <text x="24" y="36" font-size="20" font-weight="800" fill="#e8edf5">VRAM to run the open models yourself</text>
    <text x="24" y="58" font-size="13" fill="#9aa7b4">Figures from each project's README. Lighter segment = the shape-only or low-memory mode.</text>
    <g stroke="#ffffff14" stroke-width="1">
      <line x1="240" y1="84" x2="240" y2="402"/>
      <line x1="320" y1="84" x2="320" y2="402"/>
      <line x1="480" y1="84" x2="480" y2="402"/>
    </g>
    <line x1="400" y1="84" x2="400" y2="402" stroke="#fbbf24" stroke-width="1" stroke-dasharray="4 4" opacity="0.6"/>
    <g font-size="12" fill="#e8edf5" text-anchor="end">
      <text x="150" y="105">Hunyuan3D 2.1</text>
      <text x="150" y="131">Step1X-3D</text>
      <text x="150" y="157">TRELLIS.2</text>
      <text x="150" y="183">Direct3D-S2</text>
      <text x="150" y="209">TRELLIS</text>
      <text x="150" y="235">Hunyuan3D 2.0</text>
      <text x="150" y="261">SPAR3D</text>
      <text x="150" y="287">Hunyuan3D-Omni</text>
      <text x="150" y="313">PartPacker</text>
      <text x="150" y="339">TripoSG</text>
      <text x="150" y="365">UniRig</text>
      <text x="150" y="391">Stable Fast 3D</text>
    </g>
    <g>
      <rect x="160" y="92" width="290" height="16" rx="3" fill="#fbbf24" opacity="0.35"/>
      <rect x="160" y="92" width="100" height="16" rx="3" fill="#fbbf24"/>
      <rect x="160" y="118" width="290" height="16" rx="3" fill="#6ee7b7" opacity="0.35"/>
      <rect x="160" y="118" width="270" height="16" rx="3" fill="#6ee7b7"/>
      <rect x="160" y="144" width="240" height="16" rx="3" fill="#6ee7b7"/>
      <rect x="160" y="170" width="240" height="16" rx="3" fill="#6ee7b7" opacity="0.35"/>
      <rect x="160" y="170" width="100" height="16" rx="3" fill="#6ee7b7"/>
      <rect x="160" y="196" width="160" height="16" rx="3" fill="#6ee7b7"/>
      <rect x="160" y="222" width="160" height="16" rx="3" fill="#fbbf24" opacity="0.35"/>
      <rect x="160" y="222" width="60" height="16" rx="3" fill="#fbbf24"/>
      <rect x="160" y="248" width="105" height="16" rx="3" fill="#fbbf24" opacity="0.35"/>
      <rect x="160" y="248" width="60" height="16" rx="3" fill="#fbbf24"/>
      <rect x="160" y="274" width="100" height="16" rx="3" fill="#fbbf24"/>
      <rect x="160" y="300" width="100" height="16" rx="3" fill="#fb7185"/>
      <rect x="160" y="326" width="80" height="16" rx="3" fill="#6ee7b7"/>
      <rect x="160" y="352" width="80" height="16" rx="3" fill="#6ee7b7"/>
      <rect x="160" y="378" width="70" height="16" rx="3" fill="#fbbf24" opacity="0.35"/>
      <rect x="160" y="378" width="60" height="16" rx="3" fill="#fbbf24"/>
    </g>
    <g font-size="11" fill="#e8edf5">
      <text x="458" y="105">10 GB shape, 29 GB both</text>
      <text x="458" y="131">27 to 29 GB</text>
      <text x="408" y="157">24 GB minimum</text>
      <text x="408" y="183">10 GB at 512, 24 GB at 1024</text>
      <text x="328" y="209">16 GB minimum</text>
      <text x="328" y="235">6 GB shape, 16 GB with texture</text>
      <text x="273" y="261">6 GB, 10.5 GB default</text>
      <text x="268" y="287">10 GB</text>
      <text x="268" y="313">about 10 GB</text>
      <text x="248" y="339">8 GB</text>
      <text x="248" y="365">8 GB</text>
      <text x="238" y="391">6 to 7 GB</text>
    </g>
    <g font-size="11" fill="#9aa7b4" text-anchor="end">
      <text x="696" y="105">Tencent Community</text>
      <text x="696" y="131">Apache 2.0</text>
      <text x="696" y="157">MIT</text>
      <text x="696" y="183">MIT</text>
      <text x="696" y="209">MIT</text>
      <text x="696" y="235">Tencent Community</text>
      <text x="696" y="261">Stability Community</text>
      <text x="696" y="287">Tencent Community</text>
      <text x="696" y="313">NVIDIA, research only</text>
      <text x="696" y="339">MIT</text>
      <text x="696" y="365">MIT</text>
      <text x="696" y="391">Stability Community</text>
    </g>
    <line x1="160" y1="402" x2="560" y2="402" stroke="#3b4660" stroke-width="1"/>
    <g font-size="11" fill="#9aa7b4" text-anchor="middle">
      <text x="160" y="418">0</text>
      <text x="240" y="418">8</text>
      <text x="320" y="418">16</text>
      <text x="400" y="418" fill="#fbbf24">24 GB card</text>
      <text x="480" y="418">32</text>
    </g>
    <g font-size="11" fill="#e8edf5">
      <rect x="24" y="436" width="12" height="12" rx="3" fill="#6ee7b7"/>
      <text x="42" y="446">MIT or Apache 2.0, no conditions</text>
      <rect x="250" y="436" width="12" height="12" rx="3" fill="#fbbf24"/>
      <text x="268" y="446">Conditional (territory, MAU or revenue cap)</text>
      <rect x="530" y="436" width="12" height="12" rx="3" fill="#fb7185"/>
      <text x="548" y="446">Research only</text>
    </g>
  </g>
</svg>
<figcaption>Only five of the twelve fit on a 16 GB card at full quality, and the two heaviest (Hunyuan3D 2.1 and Step1X-3D) exceed a 24 GB consumer card once the texture stage runs. Pixal3D, Hi3DGen, SAM 3D Objects and PartCrafter publish no VRAM figure and are left off.</figcaption>
</figure>
<p>Three things the table can't show. First, &quot;open weights&quot; for Hunyuan3D 2.1 includes full training code, which none of the MIT models offered until TRELLIS.2 and Pixal3D shipped theirs, so it's still the model to fine-tune on your own art style if the territory clause doesn't rule you out. Second, Sparc3D is not on this list because its weights were never released, despite the GitHub repo and the Hugging Face demos. Third, if you don't own a 24 GB card, the practical route is renting inference by the second, or using a hosted front end for one of these models.</p>
<h2>What this means for a game project</h2>
<p>The pipeline for a static prop is settled. Generate a reference image, feed it to an image-to-3D model, check the triangle count in a <a href="/tools/glb-viewer">GLB viewer</a>, decimate and compress with the <a href="/tools/glb-optimizer">GLB optimizer</a>, and ship. Every hosted tool and every open model above produces something usable for a rock, a crate, a lamp or a stylised item after that pass. The choice between them is licence and cost, not quality.</p>
<p>Cinevva's <a href="/tools/hunyuan3d">3D Model Generator</a> is the way to try the two open models that matter without installing anything. The tool page describes it as a workbench that generates reference images from a text prompt (or takes an uploaded image or URL), reconstructs the one you pick into a textured mesh, then lets you rig, animate, inspect and export it as GLB without moving files between services. Generating and previewing uses the credits shown in the workbench, your first GLB export is free, and further exports come with the Standard and Pro plans. The mesh engine picker on that workbench offers Hunyuan3D and TRELLIS.2, so you can compare the Tencent and Microsoft models on the same reference image, and for characters the <code>character</code> option keeps the references in a riggable pose (deep link: <code>/tools/hunyuan3d#prompt=&lt;text&gt;&amp;character=1</code>).</p>
<p>For characters, the release that matters isn't a generator at all. UniRig (April 2025, MIT) showed that skeleton prediction and skinning could be a learned step, and every hosted vendor now bundles auto-rigging. Cinevva's <a href="/tools/rigger">Auto Rigger</a> takes a GLB, FBX or OBJ up to 50 MB, rigs humanoids on its Fast engine, and returns a GLB with up to six baked animations, with the first rigged character free to download. Standard and Pro remove the cap and add the Pro engine for quadrupeds. If you rig often in Blender, the <a href="/blender-addon/">Blender add-on</a> runs the same engine locally with no per-rig charge for a one-time $29 at the launch price. Whichever rigger you use, the topology caveat from Q1 applies: auto-rigged AI meshes hold up as background characters, and close-up hero characters still need a retopology pass first.</p>
<p>On licences, the one-line version: TRELLIS.2 and Pixal3D output has no strings from the model side, Hunyuan3D 2.x output is fine outside the EU, UK and South Korea, Stability's models are fine under $1M revenue, PartPacker output can't ship at all, and every hosted tool ties download or commercial rights to a paid plan. Read the <a href="/guides/game-asset-licenses">game asset licences guide</a> before you build a pipeline around any of them.</p>
<h2>Common Questions</h2>
<h3>What's the latest news in AI 3D asset generation in 2026?</h3>
<p>The newest releases are Meshy 7 and Meshy 6 Lite (August 2026), Rodin Gen-2.5 (26 May 2026), Tripo P1.0 and H3.1 (announced 9 March 2026), Tencent's Hunyuan 3D 3.1 on the global platform (28 January 2026), and Meshy 6 GA (18 January 2026). The most significant open release of 2026 is Pixal3D (May 2026, MIT), built on the TRELLIS.2 backbone.</p>
<h3>When was Hunyuan3D 3.0 released, and is it open source?</h3>
<p>Tencent announced Hunyuan 3D 3.0 on 16 September 2025 at its Global Digital Ecosystem Summit and launched it worldwide on the hosted platform at <a href="http://3d.hunyuanglobal.com">3d.hunyuanglobal.com</a> on 26 November 2025, followed by 3.1 on 28 January 2026. Neither 3.0 nor 3.1 has released weights. The newest open Hunyuan3D shape model is still 2.1 from 13 June 2025.</p>
<h3>What is the TRELLIS 2 release date and licence?</h3>
<p>Microsoft released TRELLIS.2 on 16 December 2025 (the &quot;Init Release&quot; commit and the Hugging Face paper date agree). It's a 4B-parameter image-to-3D model under the MIT licence, needs an NVIDIA GPU with at least 24 GB of memory, and exports GLB with PBR textures up to 4096².</p>
<h3>When did Meshy 6 and Meshy 7 come out?</h3>
<p>Meshy 6 launched as a preview on 16 October 2025 and reached general availability on 18 January 2026. Meshy 7 followed on 12 August 2026, alongside a lighter Meshy 6 Lite, and Meshy 5 was discontinued the same month. Meshy 7 output can only be downloaded on Pro and above.</p>
<h3>When did Tripo 3 and Rodin Gen-2 release?</h3>
<p>Tripo's API served version <code>v3.0-20250812</code> from 12 August 2025, with the 3.0 beta announced on 20 August 2025, and <code>v3.1-20260211</code> from 11 February 2026 ahead of the P1.0 and H3.1 announcement on 9 March 2026. Rodin Gen-2 was announced by Hyper3D on 1 October 2025 and Gen-2.5 on 26 May 2026.</p>
<h3>Is there an open source text-to-3D generator?</h3>
<p>Yes. TRELLIS.2 (MIT), Pixal3D (MIT), Hunyuan3D 2.1 (Community License, excludes the EU, UK and South Korea), Direct3D-S2 (MIT) and Step1X-3D (Apache 2.0) all have downloadable weights. Most are image-to-3D, so text-to-3D means generating a reference image first, which is what the hosted tools do internally too. TRELLIS also ships dedicated text-conditioned models.</p>
<h3>What is Sparc3D and can I download it?</h3>
<p>Sparc3D is a May 2025 paper from the team behind Hitem3D (now Hi3D) describing 1024³ watertight geometry generation. The GitHub repo and several Hugging Face demos exist, but the trained weights were never published and stayed behind the commercial product, which the repo's own open issues complain about.</p>
<h2>Related</h2>
<ul>
<li><a href="/guides/ai-3d-model-generators">Best AI 3D Model Generators in 2026</a>: the roundup, which tool to pick and why</li>
<li><a href="/guides/ai-asset-generators-games">Best AI Asset Generators for Games</a>: the full AI asset pipeline beyond meshes</li>
<li><a href="/guides/frontier-gen-ai-models">Best Open-Source Generative AI Models for Games</a>: the open model picture across image, audio and 3D</li>
<li><a href="/guides/game-asset-licenses">Game Asset Licenses Explained</a>: what each licence in the table lets you ship</li>
<li><a href="/guides/free-character-animations-rigging">Free Character Animations and Auto-Rigging</a>: what to do with the mesh once you have it</li>
<li><a href="/guides/free-3d-model-sites">Best Free 3D Model Sites for Games</a>: when searching beats generating</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Best AI Video Generators for Game Trailers and Cutscenes (2026)]]></title>
            <link>https://app.cinevva.com/guides/ai-video-generators-game-trailers</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/ai-video-generators-game-trailers</guid>
            <pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[The best AI video generators for game trailers and cutscenes in 2026, compared on price per second, clip length, character consistency and licence.]]></description>
            <content:encoded><![CDATA[<h1>Best AI Video Generators for Game Trailers and Cutscenes (2026)</h1>
<p><em>Last updated: September 2026.</em></p>
<figure class="guide-hero">
<img src="https://cdn.cinevva.com/guides/ai-video-generators-game-trailers-hero.jpg?v=2" alt="Film clapperboard above a filmstrip of three stylised game scenes with a running hero" width="1216" height="640">
</figure>
<style>
.guide-hero { margin: 1.25rem 0 1.75rem; }
.guide-hero img { width: 100%; height: auto; border-radius: 12px; display: block; }
.guide-fig { margin: 1.5rem 0; }
.guide-fig > a { display: block; }
.guide-fig img, .guide-fig svg { width: 100%; height: auto; border-radius: 10px; border: 1px solid var(--vp-c-divider); display: block; }
.guide-fig svg { border: 0; }
.guide-fig figcaption { font-size: 0.9rem; color: var(--vp-c-text-2); margin: 0.5rem 0 0; }
.video-embed { position: relative; width: 100%; max-width: 720px; margin: 1.5rem 0; }
.video-embed iframe { width: 100%; aspect-ratio: 16/9; border-radius: 8px; }
.video-caption { font-size: 0.9rem; color: var(--vp-c-text-2); margin-top: 0.5rem; margin-bottom: 1.5rem; }
</style>
<p>The best AI video generator for a game trailer in 2026 is Kling 3.0 if you need one character to look the same across every shot, Google Veo 3.1 if you want the most polished hosted clips with sound and can pay $0.40 a second for them, and Wan 2.2 or LTX-2.5 if you want open weights you can run yourself and use commercially. Whatever you pick, the AI footage belongs in the mood intro, the cutscenes and the social cuts, not in the part that shows what the player does. Steam's own guidance is that the first trailer should be mostly gameplay, and your distribution agreement says the game has to match its marketing.</p>
<p>This is the decision guide: what a trailer needs, which model fits which job, what each costs per second as of September 2026, and which licences let you ship the result. For the deep technical comparison of reference-image systems and long-form generation, read our <a href="/guides/long-reference-video-models">AI video models with reference image support</a> guide, which this one doesn't repeat.</p>
<h2>Quick picks</h2>
<ul>
<li><strong>Best overall hosted:</strong> Kling 3.0 (Pro). 3 to 15 second clips at up to 1080p with native audio, a multi-shot storyboard, and the most complete character reference system. $0.168 a second with audio on fal.</li>
<li><strong>Best for character consistency across shots:</strong> Kling 3.0's element references, or Seedance 2.5 when one shot needs many references at once (up to 30 images per request).</li>
<li><strong>Best hosted quality per clip:</strong> Veo 3.1. 8 second clips at 720p, 1080p or 4K with dialogue and sound, $0.40 a second with audio, $0.15 on the Fast tier.</li>
<li><strong>Best open weights for commercial use:</strong> Wan 2.2 (Apache 2.0, no strings) for a clean licence, LTX-2.5 (LTX-2.x Community License, free under $10M revenue) for audio and 4K.</li>
<li><strong>Cheapest for volume:</strong> MiniMax H3 at $0.06 a second for 768p on fal, or Wan 3.0 at $0.05 a second for 480p drafts.</li>
<li><strong>Best for 2D and anime styles:</strong> Vidu Q3, the only major API with an explicit <code>style: anime</code> switch. For pixel art, animate real sprites instead, see the <a href="/guides/ai-pixel-art-generators">pixel art generators</a> guide.</li>
<li><strong>Best for cutscenes from your own 3D scene:</strong> render a rough pass from your engine and restyle it with Kling's video-to-video or Runway Aleph 2.0.</li>
</ul>
<h2>Quick reference</h2>
<p>Prices are what we read on the vendor's page or on <a href="http://fal.ai">fal.ai</a> and Runway's API price list on September 6, 2026, at the usual trailer setting (720p or 1080p, audio on where the model has it). Everything reprices often, so read the column as a ranking.</p>
<table>
<thead>
<tr>
<th>Model</th>
<th>Maker</th>
<th>Max clip</th>
<th>Resolution</th>
<th>Reference images</th>
<th>Audio</th>
<th>Price basis</th>
<th>Commercial terms</th>
</tr>
</thead>
<tbody>
<tr>
<td>Kling 3.0 Pro</td>
<td>Kuaishou</td>
<td>15s</td>
<td>720p, 1080p (4K in Omni editing)</td>
<td>Up to 7 images and elements, <code>@Element</code> tags</td>
<td>Native, lip-sync</td>
<td>$0.112/s, $0.168/s with audio (fal)</td>
<td>Paid members unrestricted, free tier must carry Kling branding</td>
</tr>
<tr>
<td>Veo 3.1</td>
<td>Google</td>
<td>8s per generation, extendable</td>
<td>720p, 1080p, 4K</td>
<td>Reference-to-video endpoint</td>
<td>Native dialogue and SFX</td>
<td>$0.40/s with audio, Fast $0.15/s (fal, Runway)</td>
<td>Paid API tier</td>
</tr>
<tr>
<td>Seedance 2.5</td>
<td>ByteDance</td>
<td>30s</td>
<td>480p, 720p, 1080p</td>
<td>Up to 30 images, 10 videos, 10 audio</td>
<td>Native</td>
<td>$0.30/s at 720p, $0.68/s at 1080p (Runway API)</td>
<td>Hosted API terms</td>
</tr>
<tr>
<td>Runway Gen-4.5</td>
<td>Runway</td>
<td>10s</td>
<td>Up to 1080p, HDR options</td>
<td>Image-to-video</td>
<td>Native</td>
<td>$0.12/s (Runway API)</td>
<td>Outputs unrestricted, all plans</td>
</tr>
<tr>
<td>Luma Ray3.2</td>
<td>Luma</td>
<td>10s (20s in Modify)</td>
<td>540p to 1080p</td>
<td>Up to 16 keyframes, Character Reference</td>
<td>No</td>
<td>$0.06/s at 720p, $0.24/s at 1080p</td>
<td>Commercial only on a paid subscription</td>
</tr>
<tr>
<td>MiniMax H3</td>
<td>MiniMax</td>
<td>15s</td>
<td>768p, 2K</td>
<td>Up to 9 images (Ref2VA)</td>
<td>Native stereo</td>
<td>$0.06/s at 768p, $0.13/s at 2K (fal)</td>
<td>Open weights, but not licensed in the US, EU, UK or Korea</td>
</tr>
<tr>
<td>Wan 2.2</td>
<td>Alibaba</td>
<td>5s (5B model)</td>
<td>720p</td>
<td>First frame, first and last frame</td>
<td>No</td>
<td>Free, 24 GB VRAM for the 5B model</td>
<td>Apache 2.0</td>
</tr>
<tr>
<td>Wan 3.0</td>
<td>Alibaba</td>
<td>30s</td>
<td>480p, 720p, 1080p</td>
<td>Up to 10 images, 5 videos, 5 audio</td>
<td>Native</td>
<td>$0.05/s, $0.10/s, $0.20/s by resolution (fal)</td>
<td>Hosted API only, no weights</td>
</tr>
<tr>
<td>LTX-2.5</td>
<td>Lightricks</td>
<td>Endpoint-dependent</td>
<td>Up to 4K</td>
<td>Image and multi-keyframe</td>
<td>Native</td>
<td>Free self-hosted, $0.09/s 720p and $0.13/s 1080p on fal</td>
<td>LTX-2.x Community License, paid above $10M revenue</td>
</tr>
<tr>
<td>Vidu Q3</td>
<td>ShengShu</td>
<td>16s</td>
<td>540p, 720p, 1080p</td>
<td>Up to 7, <code>@1</code> tags</td>
<td>Native</td>
<td>$0.10/s at 720p, $0.12/s at 1080p (Pro)</td>
<td>Hosted API terms</td>
</tr>
<tr>
<td>Sora 2</td>
<td>OpenAI</td>
<td>20s</td>
<td>1080p</td>
<td>Character IDs</td>
<td>Native</td>
<td>API shuts down September 24, 2026</td>
<td>Don't start here</td>
</tr>
</tbody>
</table>
<h2>What a game trailer actually needs</h2>
<p>Read what the store expects before you generate anything. Steam's <a href="https://partner.steamgames.com/doc/store/trailer">trailer documentation</a> asks for the highest resolution you have up to 1920 by 1080, 30 or 60 fps, a bitrate of 5,000 Kbps or more, and an .mp4, .mov or .wmv file. Master at 1080p and keep the 4K and 9:16 versions for YouTube and TikTok.</p>
<p>The same page is blunt about content: &quot;most Steam users are looking for gameplay,&quot; and Valve recommends the first trailer on your page is primarily gameplay from the player's perspective. Each trailer gets a category. &quot;Gameplay&quot; means mostly footage of the game being played, while &quot;General / Cinematic&quot; covers a mix of pre-rendered video, logos, title screens and limited gameplay. That's where AI footage belongs, and it should be labelled that way.</p>
<p>There's also a promise you make when you sign up. Steam's <a href="https://partner.steamgames.com/doc/gettingstarted/contentsurvey">content survey</a> reminds you that under the Steam Distribution Agreement your game &quot;will be consistent with your marketing materials.&quot; A cinematic that looks nothing like the game isn't against the rules, but a trailer that implies gameplay you don't have is what players punish in reviews, and AI clips are very good at looking like gameplay from a game that doesn't exist. Keep cinematic footage clearly cinematic, then cut hard to real capture.</p>
<p>If you've never cut a trailer before, spend forty minutes on the talk below before you open a prompt box. The AI shots only fill slots in a structure you still have to build.</p>
<div class="video-embed"><iframe src="https://www.youtube.com/embed/QWd7F0z1W_Y" title="Trailer Made: What Makes a Successful and Memorable Game Trailer" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></div>
<div class="video-caption">Derek Lieu, who cut the trailers for Firewatch, Dead Cells and Subnautica, at GDC 2019 on what makes a trailer work. Watch for how early the gameplay has to show up and how little time you get before a viewer decides, since those two rules decide where your generated shots can go.</div>
<p>The disclosure rule is narrower than people think. Steam's AI policy covers &quot;pre-generated&quot; content, anything that ships with your game and is consumed by players, and &quot;live-generated&quot; content produced while the game runs. AI cutscenes inside the build are pre-generated content and go in the survey. A trailer that only lives on your store page isn't in the game, so the survey doesn't ask, but an undeclared AI trailer next to an AI label is a bad look. Say so in the trailer description.</p>
<p>So where does AI video fit? The mood intro, the first five to ten seconds before the gameplay hits. Cutscenes and story beats, especially for a team with no animator. Key art in motion, a slow move on the still you already commissioned. And vertical social clips, which need volume more than fidelity. Everything else should be captured from the game. If you built it in the <a href="/create">game creator</a> it runs in the browser, so a screen recorder at 1080p60 is the whole capture rig.</p>
<h2>The tools, one at a time</h2>
<h3>Google Veo 3.1</h3>
<p>Veo 3.1 is the model for a single shot that has to look finished. It generates up to 8 seconds per call at 720p, 1080p or 4K with dialogue and sound in the same pass, takes reference images plus first and last frames, and an extension endpoint chains 7 second continuations to around two and a half minutes. On fal the <a href="https://fal.ai/models/fal-ai/veo3.1">Veo 3.1</a> endpoint is $0.20 a second silent or $0.40 with audio at 720p and 1080p, and $0.60 with audio at 4K. Veo 3.1 Fast is $0.10 silent and $0.15 with audio, and Runway's API <a href="https://docs.dev.runwayml.com/guides/pricing/">relays the same rates</a>. The 8 second cap suits a trailer, where shots run two to four seconds, but it makes every cutscene a stitching job.</p>
<h3>Kling 3.0 Omni</h3>
<p>Kling is the trailer workhorse because of its reference system. You upload a frontal photo of a character as an element, add more angles if you have them, then write <code>@Element1 walks through the burning gate</code> and the model puts that character in the scene rather than animating the photo. Per Kling's <a href="https://kling.ai/quickstart/klingai-video-3-omni-model-user-guide">3.0 Omni guide</a>, a request takes up to 7 images and elements combined, clips run up to 15 seconds at 720p or 1080p, and a multi-shot storyboard writes several shots with their own duration and camera in one generation. On fal, <a href="https://fal.ai/models/fal-ai/kling-video/v3/pro/image-to-video">Kling v3 Pro</a> is $0.112 a second silent and $0.168 with audio, and <a href="https://fal.ai/models/fal-ai/kling-video/v3/standard/text-to-video">v3 Standard</a> is $0.084 and $0.126. Our own <a href="/tools/video">Video Generator</a> runs Kling 3.0 Pro with the storyboard and up to four reference images if you'd rather skip the API setup.</p>
<h3>Seedance 2.5</h3>
<p>ByteDance's Seedance 2.5 is for the 30 second take in a single pass. Per the <a href="https://seed.bytedance.com/en/blog/one-take-creation-flexible-referencing-introducing-seedance-2-5">Seed team's announcement</a> it generates up to 30 seconds per generation with multi-round extension, and takes up to 30 images, 10 video clips and 10 audio clips as references at once, so a whole cast plus a location board fits one request. Runway's API added it on August 7, 2026 at 20, 30 and 68 credits a second ($0.20, $0.30 and $0.68) for 480p, 720p and 1080p, with an 80 credit minimum. It's also on fal and on BytePlus ModelArk, where billing is per token. For a cutscene where three characters have to hold across a minute, the 30 second window halves the stitching.</p>
<h3>Runway Gen-4.5 and Aleph</h3>
<p>Gen-4.5 generates 2 to 10 second clips from text or an image at $0.12 a second on the <a href="https://docs.dev.runwayml.com/guides/pricing/">API</a>, with true HDR delivery added in August 2026. Runway's launch post claims &quot;stylistic control spanning photorealistic to animated styles,&quot; and it does hold a stylised look better than most. Aleph 2.0 is the editing half: 2 to 30 seconds of existing video plus up to 5 keyframe images and a prompt, at 28 credits a second, the tool for turning a grey-box capture of your level into something dressed and graded. Runway's <a href="https://runway.com/terms-of-use">terms</a> don't restrict commercial use of outputs or claim ownership, but do let Runway train on them. Subscriptions are $15, $35 and $95 a month for 625, 2,250 and 9,500 credits.</p>
<h3>Luma Ray3.2</h3>
<p>Ray3.2 is the cheap 720p option with the most keyframe control: up to 16 keyframes per clip, a Character Reference feature, a Reframe tool that re-composes 16:9 into 9:16 or 1:1, and 16-bit HDR with EXR export. <a href="https://lumalabs.ai/api/pricing">API pricing</a> is per 5 second block: $0.30 at 720p ($0.06 a second), $1.20 at 1080p, HDR doubles it. Text and image to video run 5 or 10 seconds, and the Modify video-to-video mode goes to 20. Read the <a href="https://lumalabs.ai/legal/tos">terms</a> before shipping: Luma assigns you the output, but commercial use only applies to clips &quot;produced during an active Subscription Term under Customer's paid subscription,&quot; so free-tier clips can't go in a trailer.</p>
<h3>MiniMax H3</h3>
<p>MiniMax H3 replaced the Hailuo 2.x line on July 31, 2026 and sits near the top of the Artificial Analysis arena while being one of the cheapest hosted models. It generates 4 to 15 seconds at 768p or 2K with native stereo audio, and its Ref2VA mode takes up to 9 reference images. On fal, <a href="https://fal.ai/models/minimax/h3/text-to-video">H3</a> is $0.05 a second at 480p, $0.06 at 768p and $0.13 at 2K. The catch is the licence on the <a href="https://huggingface.co/MiniMaxAI/MiniMax-H3">open weights</a>: the MiniMax H3 Community License defines its territory as worldwide &quot;excluding the Excluded Territories,&quot; which are the EU, the UK, South Korea and the United States, and requires a &quot;MiniMax H3&quot; credit in any commercial product. The hosted API is a different contract, so for a Western studio H3 is a hosted model.</p>
<h3>Wan 2.2 (open) and Wan 3.0 (API)</h3>
<p>Wan 2.2 is the cleanest open-weights answer. The <a href="https://github.com/Wan-Video/Wan2.2">GitHub repo</a> is Apache 2.0 and says outright that Alibaba claims no rights over generated content. The <a href="https://huggingface.co/Wan-AI/Wan2.2-TI2V-5B">TI2V-5B</a> model generates 5 seconds of 720p at 24 fps on a 24 GB card like an RTX 4090 in under 9 minutes, and the 14B models want 80 GB. Five seconds is a trailer shot, not a cutscene, so Wan 2.2 is for batching B-roll overnight on hardware you own. Wan 3.0, released August 2026, is a different product: hosted only, 30 second takes at up to 1080p with native audio, and a reference endpoint that takes up to 10 images, 5 videos and 5 audio tracks. On fal it's <a href="https://fal.ai/wan-3">$0.05, $0.10 and $0.20 a second</a> at 480p, 720p and 1080p, and it shares the top of the text-to-video arena. There are no Wan 3.0 weights, whatever the SEO pages say.</p>
<h3>LTX-2.5</h3>
<p>Lightricks' LTX-2.5 is the open-weights model with sound and 4K. The <a href="https://huggingface.co/Lightricks/LTX-2.5">model card</a> describes a 22B model with native audio, output up to 3840 by 2176, and native multi-shot generation that keeps one character across connected shots in a single pass. Hosted, the fal <a href="https://fal.ai/models/lightricks/ltx-2.5/text-to-video/fast">LTX-2.5 Fast</a> endpoint is $0.09 a second at 720p, $0.13 at 1080p and $0.30 at 4K, audio included. Self-hosted, Section 2.1 of the <a href="https://github.com/Lightricks/LTX-2/blob/main/LICENSE-2_x">LTX-2.x Community License</a> grants a royalty-free licence for any purpose, &quot;provided however, that Entities with annual revenues of at least $10,000,000&quot; must obtain a paid commercial licence, and Section 5 says Lightricks &quot;claims no rights in the Output you generate.&quot; For an indie studio that's free and commercial.</p>
<h3>Vidu Q3</h3>
<p>Vidu Q3 is here for two reasons. Its <a href="https://platform.vidu.com/docs/text-to-video">text-to-video API</a> has a <code>style</code> parameter with the values <code>general</code> and <code>anime</code>, which no other model on this list exposes, and anime mode is the closest thing to a purpose-built generator for a 2D-styled game. Its <a href="https://platform.vidu.com/docs/reference-to-video">reference-to-video</a> mode takes up to 7 subject images tagged <code>@1</code>, <code>@2</code> in the prompt, runs 3 to 16 seconds at up to 1080p, and generates speech and music from the prompt. <a href="https://platform.vidu.com/docs/pricing">Pricing</a> is credits at half a cent each: Q3 Pro is $0.10 a second at 720p and $0.12 at 1080p, Q3 Turbo is $0.055 and $0.065, and off-peak rates halve that.</p>
<h3>Sora</h3>
<p>Don't build on it. OpenAI's <a href="https://developers.openai.com/api/docs/deprecations">deprecations page</a> lists the Videos API and every sora-2 and sora-2-pro snapshot as discontinued on September 24, 2026, with no replacement named. Existing clips are yours to keep, but a new pipeline starts with one of the models above.</p>
<h3>Where the leaderboard stood</h3>
<p>We read the <a href="https://artificialanalysis.ai/video/leaderboard/text-to-video">Artificial Analysis text-to-video arena</a> (with audio) on September 6, 2026. Wan 3.0 and Gemini Omni Flash were tied at 1238 Elo, then fal's MiniMax H3 Max at 1235, MiniMax H3 at 1227 and Seedance 2.0 at 1222. Kling 3.0 Pro sat 10th at 1108, Veo 3.1 14th at 1091, Vidu Q3 Pro 20th and LTX-2.5 Fast 23rd. Arena rank measures blind preference on generic prompts, not how well a model holds your character across eight shots, which is why Kling ranks mid-table there and first here.</p>
<h2>Workflow: from your game to a finished trailer</h2>
<p>Here's the shape we're building toward, with the eight AI shots from the cost example below slotted into a 60-second cut.</p>
<figure class="guide-fig">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 300" role="img" aria-label="Anatomy of a 60-second trailer: eight AI shots of 2 to 4 seconds each fill a 9-second mood intro, two 6-second story beats and a 5-second key-art ending, and the remaining 34 seconds are captured gameplay">
<rect width="720" height="300" rx="14" fill="#0b1020"/>
<g font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif">
<text x="24" y="40" font-size="20" font-weight="800" fill="#e8edf5">Anatomy of a 60-second trailer</text>
<text x="24" y="62" font-size="13" fill="#9aa7b4">Eight AI shots, 2 to 4 seconds each on screen. Everything else is captured from the game.</text>
<text x="24" y="104" font-size="12" font-weight="700" fill="#c8a8ff">Mood intro, 3 AI shots</text>
<text x="24" y="120" font-size="11" fill="#9aa7b4">0:00 to 0:09, before gameplay hits</text>
<line x1="30" y1="128" x2="30" y2="148" stroke="#c8a8ff" stroke-width="1.5"/>
<text x="360" y="104" font-size="12" font-weight="700" fill="#c8a8ff" text-anchor="middle">Story beat, 2 AI shots</text>
<text x="360" y="120" font-size="11" fill="#9aa7b4" text-anchor="middle">0:27 to 0:33</text>
<line x1="360" y1="128" x2="360" y2="148" stroke="#c8a8ff" stroke-width="1.5"/>
<text x="606" y="104" font-size="12" font-weight="700" fill="#c8a8ff" text-anchor="middle">Story beat, 2 AI shots</text>
<text x="606" y="120" font-size="11" fill="#9aa7b4" text-anchor="middle">0:49 to 0:55</text>
<line x1="606" y1="128" x2="606" y2="148" stroke="#c8a8ff" stroke-width="1.5"/>
<rect x="24" y="150" width="100.8" height="40" fill="#c8a8ff"/>
<rect x="124.8" y="150" width="201.6" height="40" fill="#6ee7b7"/>
<rect x="326.4" y="150" width="67.2" height="40" fill="#c8a8ff"/>
<rect x="393.6" y="150" width="179.2" height="40" fill="#6ee7b7"/>
<rect x="572.8" y="150" width="67.2" height="40" fill="#c8a8ff"/>
<rect x="640" y="150" width="56" height="40" fill="#f0abfc"/>
<g stroke="#0b1020" stroke-width="1.5">
<line x1="124.8" y1="150" x2="124.8" y2="190"/>
<line x1="326.4" y1="150" x2="326.4" y2="190"/>
<line x1="393.6" y1="150" x2="393.6" y2="190"/>
<line x1="572.8" y1="150" x2="572.8" y2="190"/>
<line x1="640" y1="150" x2="640" y2="190"/>
</g>
<text x="225.6" y="166" font-size="12" font-weight="700" fill="#0b1020" text-anchor="middle">Gameplay, real capture</text>
<text x="225.6" y="181" font-size="11" fill="#0b1020" text-anchor="middle">the player's perspective</text>
<text x="483.2" y="166" font-size="12" font-weight="700" fill="#0b1020" text-anchor="middle">Gameplay, real capture</text>
<text x="483.2" y="181" font-size="11" fill="#0b1020" text-anchor="middle">cut hard from the AI shot</text>
<g stroke="#9aa7b4" stroke-width="1">
<line x1="24" y1="190" x2="24" y2="198"/>
<line x1="192" y1="190" x2="192" y2="198"/>
<line x1="360" y1="190" x2="360" y2="198"/>
<line x1="528" y1="190" x2="528" y2="198"/>
<line x1="696" y1="190" x2="696" y2="198"/>
</g>
<g font-size="11" fill="#9aa7b4">
<text x="24" y="214">0:00</text>
<text x="192" y="214" text-anchor="middle">0:15</text>
<text x="360" y="214" text-anchor="middle">0:30</text>
<text x="528" y="214" text-anchor="middle">0:45</text>
<text x="696" y="214" text-anchor="end">1:00</text>
</g>
<line x1="655" y1="192" x2="655" y2="232" stroke="#f0abfc" stroke-width="1.5"/>
<text x="696" y="246" font-size="12" font-weight="700" fill="#f0abfc" text-anchor="end">Key art in motion, 1 AI shot</text>
<text x="696" y="262" font-size="11" fill="#9aa7b4" text-anchor="end">0:55 to 1:00, a slow move on your still</text>
<rect x="24" y="274" width="12" height="12" rx="3" fill="#c8a8ff"/>
<text x="42" y="284" font-size="11" fill="#9aa7b4">AI shot: generate 5s, keep 2 to 4s</text>
<rect x="250" y="274" width="12" height="12" rx="3" fill="#6ee7b7"/>
<text x="268" y="284" font-size="11" fill="#9aa7b4">Real capture at 1080p, 30 or 60 fps</text>
</g>
</svg>
<figcaption>One way to lay out the minute: three of the eight AI shots open the trailer, two pairs land as story beats between gameplay blocks, and the last one is your key art with a slow move on it. The exact seconds are illustrative, the proportion is the point, since more than half the runtime is real capture.</figcaption>
</figure>
<p><strong>Start from your own frames.</strong> The best input for image-to-video is a still that already looks like your game. Screenshot at the highest quality your engine offers, or render a hero frame with the lighting pushed further than you'd ship. If the scene doesn't exist yet, generate concept art at the aspect ratio you'll cut in, and mind the input limits (Kling rejects images under 300 pixels on a side). For an environment shot, a 360° panorama from the <a href="/tools/skybox">Skybox Generator</a> is a clean backdrop for a slow pan.</p>
<p><strong>Lock the character before you animate.</strong> Every reference system wants a clean, front-facing, evenly lit image, and most accept extra angles. Make that turnaround first and reuse the exact same files for every shot. If your character is a 3D model, render the turnaround from the asset, since a real render beats any generated still, and a mesh from the <a href="/tools/hunyuan3d">3D generator</a> gives you an orbitable source in minutes.</p>
<p><strong>Generate short and generate several.</strong> Trailer shots are two to four seconds on screen. Ask for 5 seconds, keep the best two, and expect three or four takes per shot. Write camera moves into the prompt (&quot;slow dolly in&quot;, &quot;handheld tracking shot from the left&quot;) so the editor has motion to cut on. Generate silent unless the sound is the point, since you'll replace it with your score and silent is 30 to 50 percent cheaper on Veo and Kling.</p>
<p><strong>Restyle your own captures instead of inventing shots.</strong> For a cutscene, block the scene in your engine with correct camera work and timing, record it, and push the recording through a video-to-video mode. Kling's edit mode takes 3 to 10 second source clips with element references, Aleph 2.0 takes up to 30 seconds with keyframes, Luma Modify takes 20. The engine gives you the staging AI can't be trusted with, and the model gives you the lighting you couldn't afford. The <a href="/guides/long-reference-video-models">deep dive</a> covers this render-low, transform-high approach at length.</p>
<p><strong>Upscale and re-time.</strong> Most hosted output is 720p or 1080p at 24 or 25 fps. Steam wants 1080p at 30 or 60, and YouTube rewards 4K. Topaz Video upscales to 4K and 8K and interpolates to 60 or 120 fps at $299 a year on its <a href="https://www.topazlabs.com/topaz-video">current price list</a>, and DaVinci Resolve's free tier does competent upscaling and retiming. Never interpolate real gameplay to 60 unless you captured it at 60.</p>
<p><strong>Cut to music, then caption, then go vertical.</strong> Pick the track first and cut on its hits, because AI shots have no rhythm of their own. The <a href="/guides/ai-music-generators-games">AI music generators</a> guide covers scoring with commercial licences. Burn in captions for any dialogue, since most social video plays muted. Then make the 9:16 version: regenerate key shots vertical (Veo and Vidu both take 9:16) or use Luma Reframe to re-compose the horizontal cut. Don't just crop.</p>
<h2>Licensing: what you can ship</h2>
<p>The open-weights picture is simple if you read the licences instead of the headlines. Wan 2.2 is Apache 2.0 with an explicit statement that Alibaba claims no rights over generated content. LTX-2.5 is free for any purpose below $10M annual revenue and disclaims rights in outputs, with a paid licence above that line. MiniMax H3's weights are not licensed for use in the US, EU, UK or South Korea and require a &quot;MiniMax H3&quot; credit elsewhere, so treat it as hosted unless you're in a covered territory. Older Hunyuan and CogVideoX releases carry their own community licences with use caps, which is why they're not in the table.</p>
<p>Hosted tools mostly let you use what you paid for. Kling's <a href="https://kling.ai/docs/payment-policy">paid service terms</a> say members' commercial use of outputs &quot;is not restricted,&quot; while free users must keep the Kling watermark or state that the result was generated by Kling AI. Runway doesn't claim outputs and doesn't restrict commercial use on any plan, but reserves the right to train on them. Luma assigns you the rights only for clips made during a paid subscription. Veo, Seedance, Wan 3.0 and Vidu are governed by their API terms, so read them before launch. In every case, keep the generation records: prompt, model, date and account. If a rights question comes up after launch, that log is the answer.</p>
<p>One more thing that isn't a licence but behaves like one: AI video with no human authorship has weak or no copyright protection in the US and several other jurisdictions. A competitor can lift your AI cutscene with little recourse. Your gameplay footage, your music and your edit are protected. Lean on those.</p>
<h2>What a 60-second trailer costs</h2>
<p>Take a typical structure: eight AI shots making up the mood intro and a couple of story beats, with the rest captured gameplay. Eight shots at 7.5 seconds is 60 seconds of generated footage, and you should budget three takes per shot, so 180 seconds generated. Here's the bill at the prices verified above, at 1080p where the model offers it and audio off where it's a toggle.</p>
<table>
<thead>
<tr>
<th>Model</th>
<th>Price per second</th>
<th>60s (one take)</th>
<th>180s (three takes)</th>
</tr>
</thead>
<tbody>
<tr>
<td>Veo 3.1 (silent)</td>
<td>$0.20</td>
<td>$12.00</td>
<td>$36.00</td>
</tr>
<tr>
<td>Veo 3.1 (with audio)</td>
<td>$0.40</td>
<td>$24.00</td>
<td>$72.00</td>
</tr>
<tr>
<td>Veo 3.1 Fast (with audio)</td>
<td>$0.15</td>
<td>$9.00</td>
<td>$27.00</td>
</tr>
<tr>
<td>Kling 3.0 Pro (silent)</td>
<td>$0.112</td>
<td>$6.72</td>
<td>$20.16</td>
</tr>
<tr>
<td>Kling 3.0 Pro (with audio)</td>
<td>$0.168</td>
<td>$10.08</td>
<td>$30.24</td>
</tr>
<tr>
<td>Seedance 2.5, 1080p (Runway API)</td>
<td>$0.68</td>
<td>$40.80</td>
<td>$122.40</td>
</tr>
<tr>
<td>Seedance 2.5, 720p (Runway API)</td>
<td>$0.30</td>
<td>$18.00</td>
<td>$54.00</td>
</tr>
<tr>
<td>Runway Gen-4.5</td>
<td>$0.12</td>
<td>$7.20</td>
<td>$21.60</td>
</tr>
<tr>
<td>Wan 3.0, 1080p</td>
<td>$0.20</td>
<td>$12.00</td>
<td>$36.00</td>
</tr>
<tr>
<td>Vidu Q3 Pro, 1080p</td>
<td>$0.12</td>
<td>$7.20</td>
<td>$21.60</td>
</tr>
<tr>
<td>LTX-2.5 Fast, 1080p (fal)</td>
<td>$0.13</td>
<td>$7.80</td>
<td>$23.40</td>
</tr>
<tr>
<td>Luma Ray3.2, 720p</td>
<td>$0.06</td>
<td>$3.60</td>
<td>$10.80</td>
</tr>
<tr>
<td>MiniMax H3, 768p</td>
<td>$0.06</td>
<td>$3.60</td>
<td>$10.80</td>
</tr>
<tr>
<td>Wan 2.2, self-hosted</td>
<td>electricity</td>
<td>$0</td>
<td>$0</td>
</tr>
</tbody>
</table>
<figure class="guide-fig">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 448" role="img" aria-label="Cost of 180 seconds of generated footage per model, from $122.40 for Seedance 2.5 at 1080p down to $10.80 for Luma Ray3.2 and MiniMax H3, with Kling 3.0 Pro at $20.16 silent and $30.24 with audio and self-hosted Wan 2.2 at $0">
<rect width="720" height="448" rx="14" fill="#0b1020"/>
<g font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif">
<text x="24" y="40" font-size="20" font-weight="800" fill="#e8edf5">What 180 seconds of generated footage costs</text>
<text x="24" y="62" font-size="13" fill="#9aa7b4">Eight shots, three takes each. 1080p where offered, audio off where it's a toggle.</text>
<text x="220" y="103" font-size="12" fill="#e8edf5" text-anchor="end">Seedance 2.5 1080p, Runway</text>
<rect x="230" y="92" width="400.0" height="14" rx="3" fill="#7dd3fc"/>
<text x="638.0" y="103" font-size="12" font-weight="700" fill="#e8edf5">$122.40</text>
<text x="220" y="125" font-size="12" fill="#e8edf5" text-anchor="end">Veo 3.1, audio</text>
<rect x="230" y="114" width="235.3" height="14" rx="3" fill="#7dd3fc"/>
<text x="473.3" y="125" font-size="12" font-weight="700" fill="#e8edf5">$72.00</text>
<text x="220" y="147" font-size="12" fill="#e8edf5" text-anchor="end">Seedance 2.5 720p, Runway</text>
<rect x="230" y="136" width="176.5" height="14" rx="3" fill="#7dd3fc"/>
<text x="414.5" y="147" font-size="12" font-weight="700" fill="#e8edf5">$54.00</text>
<text x="220" y="169" font-size="12" fill="#e8edf5" text-anchor="end">Veo 3.1, silent</text>
<rect x="230" y="158" width="117.6" height="14" rx="3" fill="#7dd3fc"/>
<text x="355.6" y="169" font-size="12" font-weight="700" fill="#e8edf5">$36.00</text>
<text x="220" y="191" font-size="12" fill="#e8edf5" text-anchor="end">Wan 3.0, 1080p</text>
<rect x="230" y="180" width="117.6" height="14" rx="3" fill="#7dd3fc"/>
<text x="355.6" y="191" font-size="12" font-weight="700" fill="#e8edf5">$36.00</text>
<text x="220" y="213" font-size="12" fill="#e8edf5" text-anchor="end">Kling 3.0 Pro, audio</text>
<rect x="230" y="202" width="98.8" height="14" rx="3" fill="#6ee7b7"/>
<text x="336.8" y="213" font-size="12" font-weight="700" fill="#e8edf5">$30.24</text>
<text x="220" y="235" font-size="12" fill="#e8edf5" text-anchor="end">Veo 3.1 Fast, audio</text>
<rect x="230" y="224" width="88.2" height="14" rx="3" fill="#7dd3fc"/>
<text x="326.2" y="235" font-size="12" font-weight="700" fill="#e8edf5">$27.00</text>
<text x="220" y="257" font-size="12" fill="#e8edf5" text-anchor="end">LTX-2.5 Fast 1080p, fal</text>
<rect x="230" y="246" width="76.5" height="14" rx="3" fill="#7dd3fc"/>
<text x="314.5" y="257" font-size="12" font-weight="700" fill="#e8edf5">$23.40</text>
<text x="220" y="279" font-size="12" fill="#e8edf5" text-anchor="end">Runway Gen-4.5</text>
<rect x="230" y="268" width="70.6" height="14" rx="3" fill="#7dd3fc"/>
<text x="308.6" y="279" font-size="12" font-weight="700" fill="#e8edf5">$21.60</text>
<text x="220" y="301" font-size="12" fill="#e8edf5" text-anchor="end">Vidu Q3 Pro, 1080p</text>
<rect x="230" y="290" width="70.6" height="14" rx="3" fill="#7dd3fc"/>
<text x="308.6" y="301" font-size="12" font-weight="700" fill="#e8edf5">$21.60</text>
<text x="220" y="323" font-size="12" fill="#e8edf5" text-anchor="end">Kling 3.0 Pro, silent</text>
<rect x="230" y="312" width="65.9" height="14" rx="3" fill="#6ee7b7"/>
<text x="303.9" y="323" font-size="12" font-weight="700" fill="#e8edf5">$20.16</text>
<text x="220" y="345" font-size="12" fill="#e8edf5" text-anchor="end">Luma Ray3.2, 720p</text>
<rect x="230" y="334" width="35.3" height="14" rx="3" fill="#7dd3fc"/>
<text x="273.3" y="345" font-size="12" font-weight="700" fill="#e8edf5">$10.80</text>
<text x="220" y="367" font-size="12" fill="#e8edf5" text-anchor="end">MiniMax H3, 768p</text>
<rect x="230" y="356" width="35.3" height="14" rx="3" fill="#7dd3fc"/>
<text x="273.3" y="367" font-size="12" font-weight="700" fill="#e8edf5">$10.80</text>
<text x="220" y="389" font-size="12" fill="#e8edf5" text-anchor="end">Wan 2.2, self-hosted</text>
<rect x="230" y="378" width="3" height="14" rx="3" fill="#9aa7b4"/>
<text x="241" y="389" font-size="12" font-weight="700" fill="#e8edf5">$0, electricity</text>
<text x="24" y="416" font-size="11" fill="#9aa7b4">Green: Kling 3.0 Pro, the pick for character consistency.</text>
<text x="24" y="432" font-size="11" fill="#9aa7b4">Prices read on vendor pages, fal.ai and Runway's API list, September 6, 2026.</text>
</g>
</svg>
<figcaption>The three-takes column from the table, sorted: every bar but Seedance 2.5 at 1080p sits under \$75, and that model's 720p tier is less than half its 1080p price. Kling 3.0 Pro, the pick for character consistency, is the green pair at \$20.16 silent or \$30.24 with audio.</figcaption>
</figure>
<p>The generated portion of a trailer costs less than an hour of a freelance motion designer on every model here, and the spread between models is small enough that you should pick on consistency and look, not price. The exception is finishing, where a Topaz licence costs more than all the generation combined, so upscale in Resolve unless you're shipping 4K to a platform that rewards it.</p>
<h2>Common Questions</h2>
<h3>What is the best AI video generator for a game trailer?</h3>
<p>Kling 3.0 for most indie trailers, because its element references keep a character consistent across shots and its storyboard mode writes several shots in one call. Veo 3.1 gives the most finished single shots with sound at about twice the price. Use either for the cinematic intro and story beats, and capture the gameplay from the real game.</p>
<h3>Can I make a whole game trailer with AI?</h3>
<p>You can generate every frame, but you shouldn't. Steam's trailer guidance says most users are looking for gameplay and recommends the first trailer be primarily gameplay, and your distribution agreement requires the game to be consistent with its marketing. Use AI for the mood intro, cutscenes and social cuts, then cut to real capture at 1080p, 30 or 60 fps, for the rest.</p>
<h3>Is there an AI cutscene generator?</h3>
<p>Not as a single product, but Seedance 2.5 (30 second takes, up to 30 reference images), Kling 3.0 (15 second multi-shot storyboards) and Wan 3.0 (30 second takes) are the closest. The reliable route to a long cutscene is to block it in your engine, record it, and run the recording through a video-to-video mode like Kling's edit mode or Runway Aleph 2.0, so the staging is yours and only the look is generated.</p>
<h3>Which open source video model can I use commercially?</h3>
<p>Wan 2.2 is Apache 2.0 with no revenue caps and an explicit statement that Alibaba claims no rights over outputs. LTX-2.5 is free for commercial use under $10M annual revenue and disclaims rights in outputs. MiniMax H3's weights exclude the US, EU, UK and South Korea, so use it through a hosted API there. Wan 3.0 and Veo have no downloadable weights.</p>
<h3>How do I keep a game character consistent across AI video shots?</h3>
<p>Use a model with true reference support and feed it the same frontal image and angle shots in every request. Kling's <code>@Element</code> references, Vidu's <code>@1</code> tags, Seedance 2.5's 30-image reference list and MiniMax H3's Ref2VA all do this. Render the turnaround from your actual 3D character if you have one, since a real render beats any generated still.</p>
<h3>Do I have to disclose an AI trailer on Steam?</h3>
<p>Steam's AI disclosure covers content that ships with the game and is consumed by players (pre-generated) and content generated at runtime (live-generated). An AI cutscene inside the build is pre-generated content and goes in the content survey. A store-page trailer isn't in the build, so the survey doesn't ask, but if the game carries an AI label it's wise to say so in the trailer description too.</p>
<h2>Related</h2>
<ul>
<li><a href="/guides/long-reference-video-models">Best AI Video Models with Reference Image Support</a>: the deep technical comparison this guide points to</li>
<li><a href="/guides/promote-indie-game-no-budget">How to Promote an Indie Game With No Budget</a>: where the trailer goes once you've cut it</li>
<li><a href="/guides/steam-next-fest-strategy">Steam Next Fest Strategy</a>: the data on demos, wishlists and trailer timing</li>
<li><a href="/guides/ai-music-generators-games">Best AI Music Generators for Games</a>: the track you cut the trailer to</li>
<li><a href="/guides/ai-pixel-art-generators">Best AI Pixel Art and Sprite Generators</a>: animate real sprites for a 2D trailer</li>
<li><a href="/tools/video">Video Generator</a>: Kling 3.0 Pro with storyboard and reference images, in the browser</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Auto-Rig Pro Alternatives for Blender (2026): Rigify, Quick Rig, and One-Time Auto-Riggers Compared]]></title>
            <link>https://app.cinevva.com/guides/auto-rig-pro-alternatives</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/auto-rig-pro-alternatives</guid>
            <pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Auto-Rig Pro alternatives for Blender compared: free Rigify, ARP Quick Rig, Voxel Heat Diffuse Skinning and the one-time Cinevva Rig add-on, prices and limits.]]></description>
            <content:encoded><![CDATA[<h1>Auto-Rig Pro Alternatives for Blender (2026): Rigify, Quick Rig, and One-Time Auto-Riggers Compared</h1>
<p><em>Last updated: September 2026.</em></p>
<figure class="guide-hero"><img src="https://cdn.cinevva.com/guides/auto-rig-pro-alternatives-hero.jpg?v=1" alt="Three Blender character rigs side by side with control bones, markers and a skeleton" width="1216" height="640"></figure>
<style>
.guide-hero { margin: 1.25rem 0 1.75rem; }
.guide-hero img { width: 100%; height: auto; border-radius: 12px; display: block; }
.guide-fig { margin: 1.5rem 0; }
.guide-fig > a { display: block; }
.guide-fig img { width: 100%; height: auto; border-radius: 10px; border: 1px solid var(--vp-c-divider); display: block; }
.guide-fig svg { width: 100%; height: auto; display: block; }
.guide-fig figcaption { font-size: 0.9rem; color: var(--vp-c-text-2); margin: 0.5rem 0 0; }
.video-embed { position: relative; width: 100%; max-width: 720px; margin: 1.5rem 0; }
.video-embed iframe { width: 100%; aspect-ratio: 16/9; border-radius: 8px; }
.video-caption { font-size: 0.9rem; color: var(--vp-c-text-2); margin-top: 0.5rem; margin-bottom: 1.5rem; }
</style>
<p>If you want the most complete character rigging add-on for Blender, buy Auto-Rig Pro: for $50 it rigs bipeds and creatures, retargets mocap, builds a face rig and exports to Unity, Unreal and Godot, which is why it has passed 68,700 sales on Superhive. If you want a free rig and don't mind placing bones yourself, Rigify is already inside Blender. If you want a humanoid game character rigged, animated with 260 CC0 clips and exported with engine presets for one $29 payment, the Cinevva Rig add-on does that on your own machine, offline.</p>
<h2>Quick picks</h2>
<ul>
<li><strong>Most complete, worth the money:</strong> Auto-Rig Pro Full, $50 once on <a href="https://superhivemarket.com/products/auto-rig-pro">Superhive</a>, free updates. Facial rig, multi-limb creatures, Remap retargeting, Unity, Unreal and Godot export.</li>
<li><strong>Free and already installed:</strong> Rigify, bundled with every Blender. You place the metarig bones by hand, Blender computes the weights, and you fix the deform hierarchy before exporting to a game engine.</li>
<li><strong>You already have a skeleton:</strong> ARP: Quick Rig, $12.50, turns a Mixamo, Character Creator, DAZ or VRoid skeleton into an Auto-Rig Pro control rig. It needs Auto-Rig Pro installed.</li>
<li><strong>Humanoid for a game, cheapest all-in:</strong> the <a href="/blender-addon/">Cinevva Rig add-on</a>, $29 launch price, one purchase. Rigging runs locally and offline, 260 CC0 animations retarget inside Blender, export presets for Unity, Unreal, Godot and the web. Blender 4.2 and newer on Windows, macOS and Linux.</li>
<li><strong>Weights are your only problem:</strong> Voxel Heat Diffuse Skinning, $30, fixes &quot;bone heat weighting: failed to find solution for one or more bones&quot; and skins multi-part characters.</li>
<li><strong>&quot;Auto-Rig Pro free download&quot;:</strong> there isn't one. It's a paid add-on. The legitimate free paths are Rigify and the first character on Cinevva's web <a href="/tools/rigger">Auto Rigger</a>.</li>
</ul>
<h2>Quick reference</h2>
<table>
<thead>
<tr>
<th>Add-on</th>
<th>Price model</th>
<th>Rig placement</th>
<th>Weights</th>
<th>Animation library</th>
<th>Export presets</th>
<th>Offline</th>
<th>Blender versions</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="https://superhivemarket.com/products/auto-rig-pro">Auto-Rig Pro</a> (Full)</td>
<td>$50 one-time, $25 Lite, updates free</td>
<td>Smart markers, optional AI guess, manual for creatures</td>
<td>Blender's automatic weights plus Voxelize and Split Parts</td>
<td>None built in, Remap retargets mocap you bring</td>
<td>Unity, Unreal (Mannequin), Godot, FBX and glTF</td>
<td>Yes</td>
<td>2.93 to 5.1</td>
</tr>
<tr>
<td><a href="https://superhivemarket.com/products/auto-rig-pro-quick-rig">ARP: Quick Rig</a></td>
<td>$12.50, requires Auto-Rig Pro</td>
<td>Uses the skeleton you already have</td>
<td>Preserved from the source</td>
<td>None</td>
<td>Through Auto-Rig Pro's exporter</td>
<td>Yes</td>
<td>2.93 to 5.1</td>
</tr>
<tr>
<td><a href="https://docs.blender.org/manual/en/latest/addons/rigging/rigify/index.html">Rigify</a></td>
<td>Free, bundled</td>
<td>Manual metarig, Pose or Edit Mode</td>
<td>Ctrl-P, With Automatic Weights</td>
<td>None</td>
<td>None, the DEF hierarchy needs a fix first</td>
<td>Yes</td>
<td>Every Blender release</td>
</tr>
<tr>
<td><a href="/blender-addon/">Cinevva Rig for Blender</a></td>
<td>$29 one-time launch price, key on up to 3 machines</td>
<td>Automatic, humanoid, pick the front view</td>
<td>Automatic</td>
<td>260 CC0 clips retargeted in Blender</td>
<td>Web, Unity, Unreal, Godot</td>
<td>Yes, after a one-time 2.4 GB engine download</td>
<td>4.2 and newer</td>
</tr>
<tr>
<td><a href="https://superhivemarket.com/products/voxel-heat-diffuse-skinning">Voxel Heat Diffuse Skinning</a></td>
<td>$30 one-time, 1 seat</td>
<td>Not a rigger, includes a joint alignment tool</td>
<td>Voxel heat diffusion</td>
<td>None</td>
<td>None</td>
<td>Yes</td>
<td>3.6 to 5.1</td>
</tr>
</tbody>
</table>
<figure class="guide-fig">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 400" role="img" aria-label="Comparison matrix of four Blender rigging add-ons across price, bone placement, weights, animation library, export presets and offline use: Auto-Rig Pro $50 once with Smart markers, Blender heat weights, no clip library, Unity Unreal Godot presets, offline. Rigify free and bundled, manual metarig, Automatic Weights, no library, no presets and a DEF-bone fix needed, offline. Quick Rig $12.50 plus Auto-Rig Pro, uses your skeleton, weights preserved, no library, exports through ARP, offline. Cinevva Rig $29 once, automatic humanoid placement, automatic weights, 260 CC0 clips, Web Unity Unreal Godot presets, offline after a 2.4 GB download.">
  <rect width="720" height="400" rx="14" fill="#0b1020"/>
  <g font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif">
    <text x="24" y="36" font-size="20" font-weight="800" fill="#e8edf5">Four ways to rig in Blender</text>
    <text x="24" y="58" font-size="13" fill="#9aa7b4">What each one asks of you, and what it hands back. Prices from Superhive and cinevva.com, September 2026.</text>
    <g font-size="11" font-weight="700" fill="#9aa7b4">
      <text x="164" y="88">Price</text>
      <text x="254" y="88">Placement</text>
      <text x="344" y="88">Weights</text>
      <text x="434" y="88">Clip library</text>
      <text x="524" y="88">Export presets</text>
      <text x="614" y="88">Offline</text>
    </g>
    <g fill="#121a31">
      <rect x="24" y="98" width="672" height="64" rx="8"/>
      <rect x="24" y="170" width="672" height="64" rx="8"/>
      <rect x="24" y="242" width="672" height="64" rx="8"/>
      <rect x="24" y="314" width="672" height="64" rx="8"/>
    </g>
    <g fill="#e8edf5" font-size="13" font-weight="700">
      <text x="36" y="134">Auto-Rig Pro</text>
      <text x="36" y="206">Rigify</text>
      <text x="36" y="278">Quick Rig</text>
      <text x="36" y="350">Cinevva Rig</text>
    </g>
    <g fill="#c8a8ff" font-size="11">
      <text x="164" y="126">$50 once</text>
      <text x="164" y="142">$25 Lite</text>
      <text x="164" y="198">Free</text>
      <text x="164" y="214">bundled</text>
      <text x="164" y="270">$12.50</text>
      <text x="164" y="286">plus ARP</text>
      <text x="164" y="342">$29 once</text>
      <text x="164" y="358">3 machines</text>
    </g>
    <g fill="#7dd3fc" font-size="11">
      <text x="254" y="126">Smart markers</text>
      <text x="254" y="142">AI guess option</text>
      <text x="254" y="198">Manual</text>
      <text x="254" y="214">metarig</text>
      <text x="254" y="270">Your existing</text>
      <text x="254" y="286">skeleton</text>
      <text x="254" y="342">Automatic</text>
      <text x="254" y="358">humanoid</text>
    </g>
    <g fill="#6ee7b7" font-size="11">
      <text x="344" y="126">Blender heat</text>
      <text x="344" y="142">Voxelize, Split</text>
      <text x="344" y="198">Automatic</text>
      <text x="344" y="214">Weights</text>
      <text x="344" y="270">Preserved</text>
      <text x="344" y="286">from source</text>
      <text x="344" y="342">Automatic</text>
    </g>
    <g fill="#fbbf24" font-size="11">
      <text x="434" y="126">None</text>
      <text x="434" y="142">Remap mocap</text>
      <text x="434" y="198">None</text>
      <text x="434" y="270">None</text>
      <text x="434" y="342">260 CC0 clips</text>
      <text x="434" y="358">in Blender</text>
    </g>
    <g fill="#f0abfc" font-size="11">
      <text x="524" y="126">Unity, Unreal</text>
      <text x="524" y="142">Godot</text>
      <text x="524" y="198">None, fix DEF</text>
      <text x="524" y="214">bones first</text>
      <text x="524" y="270">Through ARP</text>
      <text x="524" y="342">Web, Unity</text>
      <text x="524" y="358">Unreal, Godot</text>
    </g>
    <g fill="#e8edf5" font-size="11">
      <text x="614" y="126">Yes</text>
      <text x="614" y="198">Yes</text>
      <text x="614" y="270">Yes</text>
      <text x="614" y="342">Yes, after</text>
      <text x="614" y="358">2.4 GB download</text>
    </g>
    <text x="24" y="392" font-size="11" fill="#9aa7b4">Auto-Rig Pro also builds a facial rig, multi-limb creatures and an animator control rig. None of the others do all three.</text>
  </g>
</svg>
<figcaption>The matrix hides one thing the prose can't: Auto-Rig Pro is the only row that gives you an animator's control rig with IK and FK switching. The other three hand you a deform skeleton or a Rigify rig, which is what a game engine wants anyway.</figcaption>
</figure>
<h2>What Auto-Rig Pro actually is, and why it leads</h2>
<p>Auto-Rig Pro is Artell's add-on for rigging characters, retargeting animations and exporting to game engines, first released in 2016 and updated ever since. The <a href="https://superhivemarket.com/products/auto-rig-pro">Superhive listing</a> shows two editions. Full costs $50 and bundles &quot;Auto-Rig Pro core, Smart tool (biped body recognition), Fbx/Gltf export to Unreal/Unity, Remap tool to retarget animations, updates and support messages&quot;. Lite costs $25 and is &quot;Auto-Rig Pro core only&quot;. Studio seats are $162 for ten and $227 for twenty. The listing declares compatibility from Blender 2.93 through 5.1 and marks the add-on as Blender Extension compatible.</p>
<p>Its sales count is the plainest evidence of category leadership: 68,700 and climbing, with more than 430 ratings. The next biggest rigging-related sellers on Superhive, Voxel Heat Diffuse Skinning and Quick Rig, sit at 12,500 and 9,500.</p>
<p>Here's what that $50 buys, in the add-on's own terms.</p>
<p><strong>Smart placement.</strong> You add green markers to a biped in T-pose or A-pose and the Smart tool places the reference bones, which stay editable. The <a href="https://lucky3d.fr/auto-rig-pro/doc/auto_rig.html">Smart documentation</a> adds an optional Guess Markers step: &quot;An AI model has been implemented in option, to setup automatically the markers&quot;, using separately installed AI files. Without them, finger detection relies on &quot;traditional algorithms (Voxel centroids for fingers detection, depth estimation based on standard human proportions...)&quot;, per the <a href="https://lucky3d.fr/auto-rig-pro/doc/faq.html">FAQ</a>. That FAQ answers &quot;So, it's a magic one click rigging solution?&quot; with &quot;It's not!&quot; and says &quot;the rigging artist's hand is still required to adjust the bones positions, vertex weights&quot;. Remember that when anything else promises one click.</p>
<p><strong>A modular rig definition.</strong> Spine, arms with fingers, legs with toes, head and neck, ears, tail, wings, kilt, spline IK and bendy-bone chains, with Human, Dog, Horse and Bird presets. Duplicate or remove limbs and you can rig a centaur or a spider. Only Rigify comes close here, and no automatic rigger, ours included, competes.</p>
<p><strong>A facial rig.</strong> Eyebrows, eyelids, lips, cheeks, jaw and eye targets, placed by the Smart tool's facial pass and editable afterwards.</p>
<p><strong>Skinning.</strong> Auto-Rig Pro binds with Blender's own automatic weight solver plus two switches. The FAQ's fix for &quot;Binding doesn't give satisfying results&quot; is Voxelize, which evaluates &quot;voxelized instances of meshes (water-tight, closed volumes)&quot;, and Split Parts for &quot;meshes made of multiple disconnected pieces (clothes, teeth, eyes...)&quot;. The listing also calls it &quot;Compliant with the Voxel Heat Diffuse Skinning addon&quot;.</p>
<p><strong>Remap.</strong> The <a href="https://lucky3d.fr/auto-rig-pro/doc/remap_doc.html">Remap tool</a> retargets &quot;an armature animation to another one&quot;, onto &quot;any type of armature (Auto-Rig Pro, Rigify, custom rig...)&quot;. Import a BVH or FBX, assign source and target, click Build Bones List, correct the mapping or load a Mixamo, Rokoko or XSens preset, mark the root and IK bones, retarget. Remap moves animations you already own. Auto-Rig Pro ships none.</p>
<p><strong>Game engine export.</strong> <code>File &gt; Export &gt; Auto-Rig Pro FBX/GLTF</code>. The <a href="https://lucky3d.fr/auto-rig-pro/doc/ge_export_doc.html">export docs</a> offer &quot;Humanoid for human characters, Universal for any skeletons&quot;, with &quot;Full support in Unity, Unreal Engine, Godot&quot;. Root motion is handled per engine (Unity Humanoid computes it on import, Unity Generic and Unreal get the <code>c_traj</code> motion baked onto the armature object, Godot gets Export Root Bone with Godot Root Axes), the Unreal Mannequin hierarchy and axes are converted, twist bones are baked for engines without dual quaternion skinning, and shape keys export. One warning from the docs: &quot;UE 5.5/5.6 don't import GLTF morph targets and animations properly. Works in 5.7.&quot;</p>
<p>That list is why it leads. One purchase covers marker to Mannequin, with a decade of backward compatibility behind it.</p>
<div class="video-embed"><iframe src="https://www.youtube.com/embed/nvjq7C9BbAQ" title="Auto-Rig Pro Tutorial: Rigging Humans" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></div>
<div class="video-caption">CGDive's Auto-Rig Pro human rigging tutorial. Watch the marker placement and the Match to Rig step before deciding whether you want that much control or would rather skip it.</div>
<h2>What Quick Rig adds</h2>
<p><a href="https://superhivemarket.com/products/auto-rig-pro-quick-rig">ARP: Quick Rig</a> is a $12.50 extension with a warning in its first line: &quot;Auto-Rig Pro must be purchased and installed first.&quot; It solves a different problem from rigging a bare mesh. You already have a skinned skeleton from Mixamo, Reallusion Character Creator, DAZ, Human Generator, the Unreal Mannequin or VRoid, and you want Auto-Rig Pro's controllers on it without re-rigging.</p>
<p>The <a href="https://lucky3d.fr/auto-rig-pro/doc/quick_rig_doc.html">Quick Rig documentation</a> has you add limbs one by one (select the pelvis bone, click plus for a spine limb, select a shoulder, click plus for an arm), check the guessed bone names, then choose a mode. Preserve &quot;keeps the existing armature untouched while binding it to the rig controllers only&quot;, Convert &quot;will generate a full Auto-Rig Pro armature compliant with all Auto-Rig Pro editing and exporting tools&quot;. Weights are preserved, existing animation can be baked onto the control rig, and orphan bones such as facial, cloth and prop bones are inserted into the hierarchy so nothing is dropped. The listing states one limitation: &quot;Multiple heads or multiple spines not yet supported.&quot; It shows 9,500+ sales and the same 2.93 to 5.1 range as the parent add-on.</p>
<p>If your characters come from Mixamo or Character Creator, Quick Rig plus Auto-Rig Pro is the combination that turns them into something you'd want to keyframe in Blender.</p>
<h2>When Rigify is enough</h2>
<p>Rigify ships inside Blender. The <a href="https://docs.blender.org/manual/en/latest/addons/rigging/rigify/index.html">manual</a> lists it under Rigging as &quot;Automatic rigging from building-block components&quot;, GPL, and notes &quot;This add-on is bundled with Blender.&quot; You enable it in <code>Edit &gt; Preferences &gt; Add-ons</code>, and there's nothing to buy or download.</p>
<p>The <a href="https://docs.blender.org/manual/en/latest/addons/rigging/rigify/basics.html">basic workflow</a> is three steps. Add a metarig from <code>Add &gt; Armature</code> (Shift-A), where the predefined types are Basic Human, Basic Quadruped, Human, Cat, Wolf, Horse and Shark. Edit the bone positions to match your character, in Pose Mode with Apply Pose As Rest Pose or in Edit Mode. Then in the Armature properties click Generate Rig, which &quot;will take from few seconds to one minute&quot;. Skinning is Blender's own: select mesh then armature, Ctrl-P, With Automatic Weights, which the <a href="https://docs.blender.org/manual/en/latest/animation/armatures/skinning/parenting.html">skinning manual</a> describes as calculating influence &quot;based on the distance from those vertices to a particular bone ('bone heat' algorithm)&quot;. The Rigify manual adds that this does &quot;a really good job out of the box if you correctly place your bones (and there is enough topology to work with!)&quot;.</p>
<p>It's enough when you animate and render inside Blender and have twenty minutes to place bones. The generated rig has IK and FK limbs, a torso control, fingers and a modular face, though the manual warns face bones &quot;can be tricky if you are not an expert in bone editing and they are almost useless if you plan to make facial animation through shape keys&quot;, and suggests deleting them if you don't need them.</p>
<p>Here's where it isn't enough.</p>
<p><strong>Placement is manual.</strong> No marker detection, no guessing. The manual's alignment tips ask for straight legs in front view, a slight bend at knees and elbows because Rigify &quot;needs to know where your knee/elbow is pointing&quot;, and a human about two units tall, since &quot;Rigify assumes that 1 unit corresponds to 1 meter&quot;. Placing a full Human metarig well is a skill, and a first attempt usually produces a knee that bends sideways.</p>
<p><strong>Game export needs a fix.</strong> Deforming bones live in the DEF collection, organised for Blender rather than an engine. Blender's tracker recorded it in <a href="https://projects.blender.org/blender/blender-addons/issues/57536">issue #57536</a>, &quot;rigify: rigs don't export well to game engines&quot;: &quot;rigify splits the deformation bones (layer 29) into separate chains for each module. Once non deformation bones have been deleted, baked animations are likely break, and limbs won't follow the body.&quot; It was closed with the maintainer's note that &quot;there are no plans, and few reasons, to change rigify architecture only to accomodate games&quot;, pointing to his Expy-Kit add-on. The workaround: reparent the DEF bones into one hierarchy (Expy-Kit or CGDive's Game Rig Tools), then export FBX with Only Deform Bones ticked and Add Leaf Bones unticked in the Armature section of the <a href="https://docs.blender.org/manual/en/latest/addons/import_export/scene_fbx.html">FBX exporter</a>. It works, but it's an extra tool and a checklist on every export.</p>
<p><strong>No animations.</strong> Clips come from you, from Mixamo, or from a retargeter such as Auto-Rig Pro's Remap, which lists Rigify as a supported target.</p>
<h2>Other paid options you can verify</h2>
<p><strong>Voxel Heat Diffuse Skinning</strong> by Mesh Online, $30 for one seat, 12,500+ sales, Blender 3.6 to 5.1 per its <a href="https://superhivemarket.com/products/voxel-heat-diffuse-skinning">Superhive page</a>. It isn't a rigger. It replaces bone heat weighting with a voxel solver, and its pitch names the three problems it fixes: the error &quot;bone heat weighting: failed to find solution for one or more bones&quot;, parts and accessories that automatic weights ignore, and weights you've spent hours on and still hate. Twelve thousand people paying $30 to skip weight painting tells you where rigging's pain sits. Auto-Rig Pro and Rigify both benefit from it. Cinevva's add-on computes its own weights, so you'd reach for it only when the automatic result is wrong.</p>
<p><strong>Better FBX Importer &amp; Exporter</strong>, also Mesh Online, $25 for one seat, 12,600+ sales, Blender 3.6 to 5.1 per <a href="https://superhivemarket.com/products/better-fbx-importer--exporter">Superhive</a>. It sells because FBX imports stop breaking: Automatic Bone Orientation untwists Maya and 3ds Max skeletons, and it exports &quot;game engine friendly armature and 3d models&quot; with LODs for Unreal and Unity. If you rig with Rigify and export by hand, this fixes the import half of the problem.</p>
<p><strong>The Mixamo add-on for Blender</strong> needs a status check because people still search for it. Adobe's <a href="https://substance3d.adobe.com/plugins/mixamo-in-blender/">Substance 3D plugins page</a> still describes a &quot;one-click solution to create an IK control rig&quot; for Mixamo-rigged characters. The maintained version is the community <a href="https://extensions.blender.org/add-ons/mixamo-rig/">Mixamo Rig extension</a> on <a href="http://extensions.blender.org">extensions.blender.org</a>, which calls itself a &quot;3rd party upgrade to official addon because it is no longer supported&quot;, points to Adobe's &quot;official version for Blender 3.6&quot;, and lists Blender 4.2 LTS compatibility, version 1.2.2 from April 2026 and about 69,700 downloads. The route is alive but community-maintained, and Mixamo's rigger itself is online only. Our <a href="/guides/free-character-animations-rigging">free character animations guide</a> covers Mixamo's terms.</p>
<p>We wanted to include BoneBrush, a creature rigger on Superhive, but its product page wouldn't load for us this session, so we can't state its price or scope.</p>
<h2>The Cinevva Rig add-on: the one-time option for humanoids</h2>
<p>The <a href="/blender-addon/">Cinevva Rig add-on</a> is what we built for the reader who has a humanoid mesh and a game to ship. It runs on your own machine, offline, for one $29 purchase at launch price, on Blender 4.2 and newer for Windows, macOS and Linux. It installs as a standard extension and the download itself is free, with a 14-day refund if it isn't for you.</p>
<p>It has three parts, and only one is paid.</p>
<p><strong>Rigging</strong> is what the $29 key turns on. Select a mesh, pick the front of the character from four rendered views, press Rig. The add-on downloads its rigging engine once, about 2.4 GB, and from then on rigs locally with no per-rig charge and no count. The result is a skinned, Mixamo-named humanoid armature, and the panel reports what it built: how many bones, how many fingers it found, anything it corrected. A key activates up to three machines. If you'd rather not download the engine, or you have a quadruped, online rigging is available from inside Blender with a Cinevva account and costs credits.</p>
<p><strong>260 CC0 animation clips</strong> come with the add-on regardless of the key: walks, runs, idles, combat, climbing, crawling, emotes. A browser docked in the viewport previews each clip, and a click retargets it onto your rigged character inside Blender. CC0 means no licence line in a shipped game. Mixamo's terms are Adobe's to set, and Auto-Rig Pro ships no clip library at all.</p>
<p><strong>Game-ready export</strong> is free, no key, no account, no network. Before you export, a size analysis splits the estimated file into geometry, textures, animation and shape keys. Then a preset sets the engine's conventions. Web writes GLB, Y-up, textures capped at 1024 px as WebP at quality 85, Draco level 6, for three.js, Babylon.js and model-viewer. Unity writes FBX, forward -Z, up Y, FBX_SCALE_ALL, no leaf bones, textures embedded and capped at 2048 px. Unreal writes FBX, forward -Y, up Z, FBX_SCALE_NONE, primary bone axis Y and secondary X. Godot writes GLB, Y-up, no Draco because Godot 4 imports plain glTF cleanly, textures capped at 2048 px. Measured against a plain Blender GLB export, the presets produced files 68%, 89%, 92% and 98% smaller on four real models.</p>
<p>Now the limits. It's humanoid-first: bipeds rig locally, anything else goes through the online Pro engine on credits. It builds no facial rig. And it hands you a deform skeleton, not an animator's control rig, so if you keyframe by hand in Blender you'll want Rigify or Auto-Rig Pro on top. What it replaces is the hour of marker placement, weight cleanup, clip hunting and export fiddling between a finished mesh and a character walking in your engine.</p>
<h2>&quot;Auto-Rig Pro free download&quot;: what you actually get</h2>
<p>More than a thousand people a month search for a free download of Auto-Rig Pro. Here's the straight answer. It's a paid add-on, $25 for Lite and $50 for Full, with no free edition. The <a href="https://lucky3d.fr/auto-rig-pro/doc/license.html">licence page</a> says &quot;Auto-Rig Pro cannot be freely distributed as is. Some components are GPL, some are not.&quot; The Blender Python parts are GPL-3, but the Smart tool's AI binaries are under a &quot;restrictive copyrighted license&quot; that forbids redistribution. A &quot;free download&quot; from a warez site is a pirated copy: no updates, no support, no AI files that legally work, and whatever else the uploader packed into the zip.</p>
<p>The legitimate free paths are real and good. Rigify is already in your Blender. Cinevva's web <a href="/tools/rigger">Auto Rigger</a> rigs your first humanoid free, from a GLB, FBX or OBJ up to 50 MB, and returns a rigged GLB you can open in Blender. Mixamo still rigs humanoids online for free with an Adobe ID. To try Auto-Rig Pro's rig before paying, download Mike, the free character Artell links from the Superhive listing. The cheapest legitimate way into Auto-Rig Pro itself is Lite at $25, which drops Smart, Remap and the game exporter.</p>
<h2>Pick by situation</h2>
<figure class="guide-fig">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 520" role="img" aria-label="Decision flow for choosing a Blender rigging add-on. Question one: do you need a facial rig, custom limbs or an animator control rig? Yes leads to Auto-Rig Pro Full at $50. No leads to question two: do you already have a skinned skeleton from Mixamo, Character Creator, DAZ or VRoid? Yes leads to Quick Rig at $12.50 plus Auto-Rig Pro. No leads to question three: is it a humanoid headed for a game engine? Yes leads to Cinevva Rig at $29 with 260 CC0 clips and export presets. No leads to question four: is the budget zero? Yes leads to Rigify, free and bundled. No leads to Auto-Rig Pro Lite at $25 or Full at $50.">
  <defs>
    <marker id="arw" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="8" markerHeight="8" orient="auto-start-reverse">
      <path d="M0 0 L10 5 L0 10 z" fill="#9aa7b4"/>
    </marker>
  </defs>
  <rect width="720" height="520" rx="14" fill="#0b1020"/>
  <g font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif">
    <text x="24" y="36" font-size="20" font-weight="800" fill="#e8edf5">Which rigging add-on for you</text>
    <text x="24" y="58" font-size="13" fill="#9aa7b4">Four questions, answered top to bottom. Prices are one-time.</text>
    <g fill="#121a31" stroke="#2a3655" stroke-width="1.5">
      <rect x="24" y="84" width="340" height="60" rx="10"/>
      <rect x="24" y="182" width="340" height="60" rx="10"/>
      <rect x="24" y="280" width="340" height="60" rx="10"/>
      <rect x="24" y="378" width="340" height="60" rx="10"/>
    </g>
    <g fill="#e8edf5" font-size="13" font-weight="700">
      <text x="40" y="108">Need a facial rig, custom limbs,</text>
      <text x="40" y="128">or an animator control rig?</text>
      <text x="40" y="206">Already have a skinned skeleton</text>
      <text x="40" y="226">(Mixamo, Character Creator, DAZ, VRoid)?</text>
      <text x="40" y="304">A humanoid headed for a game engine?</text>
      <text x="40" y="324">Want clips and export handled too?</text>
      <text x="40" y="402">Budget zero and time to place</text>
      <text x="40" y="422">bones by hand?</text>
    </g>
    <g stroke="#9aa7b4" stroke-width="2" fill="none" marker-end="url(#arw)">
      <line x1="364" y1="114" x2="418" y2="114"/>
      <line x1="364" y1="212" x2="418" y2="212"/>
      <line x1="364" y1="310" x2="418" y2="310"/>
      <line x1="364" y1="408" x2="418" y2="408"/>
      <line x1="194" y1="144" x2="194" y2="180"/>
      <line x1="194" y1="242" x2="194" y2="278"/>
      <line x1="194" y1="340" x2="194" y2="376"/>
      <line x1="194" y1="438" x2="194" y2="474"/>
    </g>
    <g font-size="11" font-weight="700" fill="#6ee7b7">
      <text x="380" y="106">yes</text>
      <text x="380" y="204">yes</text>
      <text x="380" y="302">yes</text>
      <text x="380" y="400">yes</text>
    </g>
    <g font-size="11" font-weight="700" fill="#fb7185">
      <text x="204" y="166">no</text>
      <text x="204" y="264">no</text>
      <text x="204" y="362">no</text>
      <text x="204" y="460">no</text>
    </g>
    <g stroke-width="1.5">
      <rect x="420" y="84" width="276" height="60" rx="10" fill="#121a31" stroke="#c8a8ff"/>
      <rect x="420" y="182" width="276" height="60" rx="10" fill="#121a31" stroke="#7dd3fc"/>
      <rect x="420" y="280" width="276" height="60" rx="10" fill="#121a31" stroke="#6ee7b7"/>
      <rect x="420" y="378" width="276" height="60" rx="10" fill="#121a31" stroke="#fbbf24"/>
      <rect x="24" y="476" width="340" height="32" rx="10" fill="#121a31" stroke="#c8a8ff"/>
    </g>
    <g font-size="13" font-weight="700">
      <text x="436" y="108" fill="#c8a8ff">Auto-Rig Pro Full, $50</text>
      <text x="436" y="208" fill="#7dd3fc">ARP: Quick Rig, $12.50</text>
      <text x="436" y="304" fill="#6ee7b7">Cinevva Rig, $29</text>
      <text x="436" y="402" fill="#fbbf24">Rigify, free</text>
      <text x="40" y="497" fill="#c8a8ff">Auto-Rig Pro Lite $25, or Full $50 for Smart and export</text>
    </g>
    <g font-size="11" fill="#9aa7b4">
      <text x="436" y="128">Face, creatures, Remap, engine export</text>
      <text x="436" y="228">Needs Auto-Rig Pro installed</text>
      <text x="436" y="324">260 CC0 clips, presets, offline</text>
      <text x="436" y="422">Bundled, fix DEF bones before export</text>
    </g>
  </g>
</svg>
<figcaption>Read top to bottom. Most indie game artists exit at the third question. Animators who keyframe in Blender exit at the first.</figcaption>
</figure>
<p><strong>You animate and render in Blender.</strong> Rigify if you're comfortable placing bones, Auto-Rig Pro if you want Smart placement and a face. Both give you the IK and FK controls hand animation depends on.</p>
<p><strong>You're an indie shipping a humanoid to Unity, Unreal, Godot or the web.</strong> The Cinevva Rig add-on. One $29 payment, rigging on your machine, 260 CC0 clips retargeted, and a preset that matches your engine's axes and scale so the character stands up straight on first import. For hand-keyed cinematics later, add Rigify on top for free.</p>
<p><strong>You have a library of Mixamo or Character Creator characters.</strong> Auto-Rig Pro Full plus Quick Rig, $62.50 together. Quick Rig converts each skeleton into a control rig with weights intact, Remap moves clips between them, and the exporter puts them back into the engine.</p>
<p><strong>You rig creatures, robots or unusual body plans.</strong> Auto-Rig Pro. Its limb system and Dog, Horse and Bird presets are why CGDive can teach a T-rex, a fox and a bird with it. Rigify's Cat, Wolf, Horse and Shark metarigs are the free fallback if you'll place every bone.</p>
<p><strong>The rig is fine, the weights aren't.</strong> Voxel Heat Diffuse Skinning, $30, under whichever rigger you use.</p>
<p><strong>Your imports keep breaking.</strong> Better FBX Importer &amp; Exporter, $25, before you blame the rigger.</p>
<h2>Common Questions</h2>
<h3>Is Auto-Rig Pro free, or is there a free download?</h3>
<p>No. Auto-Rig Pro is a paid add-on, $25 for Lite and $50 for Full on Superhive, with free updates after purchase. Its licence page states it &quot;cannot be freely distributed as is&quot;, and the Smart tool's AI binaries forbid redistribution, so sites offering a free download are handing out pirated copies with no updates and no working AI files. Artell's free character Mike lets you try the generated rig, and the legal free routes to a rig are Rigify, Cinevva's web <a href="/tools/rigger">Auto Rigger</a> for your first character, and Mixamo with an Adobe ID.</p>
<h3>Is there a free alternative to Auto-Rig Pro?</h3>
<p>Rigify, which is bundled with every copy of Blender and enabled in Preferences. It generates a full control rig from a metarig you position by hand and skins with Blender's Automatic Weights. For a humanoid game character you can also rig your first one free on Cinevva's web <a href="/tools/rigger">Auto Rigger</a>, which places bones and weights automatically and returns a rigged GLB.</p>
<h3>Rigify vs Auto-Rig Pro, which should I use?</h3>
<p>Use Rigify if your budget is zero, you animate inside Blender, and you can spend twenty minutes placing bones. Use Auto-Rig Pro if you want Smart marker placement, a facial rig, creature limbs, mocap retargeting with Remap, or a game exporter that handles Unity, Unreal Mannequin and Godot conventions for you. Rigify rigs need a deform-bone fix before a clean engine export, Auto-Rig Pro's exporter does that work itself.</p>
<h3>What is ARP Quick Rig?</h3>
<p>Quick Rig is a $12.50 extension for Auto-Rig Pro that converts an existing skinned skeleton into an Auto-Rig Pro control rig, keeping the weights and optionally baking the existing animation onto the new controls. It ships mapping presets for Mixamo, Reallusion Character Creator, DAZ, Human Generator, the Unreal Mannequin and VRoid. It does nothing on its own, since Auto-Rig Pro must be installed first.</p>
<h3>What is the best rigging addon for Blender?</h3>
<p>For breadth, Auto-Rig Pro, and its 68,700+ sales on Superhive say most Blender users agree. For price, Rigify, because it's free and already installed. For a humanoid game character with animations and engine export included, the <a href="/blender-addon/">Cinevva Rig add-on</a> at a one-time $29 covers more of that specific pipeline than either. Best depends on whether you're an animator, a game artist, or both.</p>
<h3>Does the Cinevva Rig add-on replace Auto-Rig Pro?</h3>
<p>Not for animators. Auto-Rig Pro builds a facial rig, rigs creatures and multi-limb characters, retargets mocap and gives you an animator's control rig, and the Cinevva add-on does none of that. It replaces the humanoid game pipeline: automatic bone placement and weights on your machine, 260 CC0 clips retargeted in Blender, and export presets for Unity, Unreal, Godot and the web, for one $29 purchase on Blender 4.2 and newer.</p>
<h2>Related</h2>
<ul>
<li><a href="/guides/automatic-rigging-explained">How Automatic Rigging Works (and How to Prepare a Model for It)</a>: what a rig is, how auto riggers place joints, and the ten-minute mesh prep that makes any of them work</li>
<li><a href="/guides/free-character-animations-rigging">Free Character Animations and Auto-Rigging: Mixamo and Its Alternatives</a>: Mixamo's status and licence in 2026, plus the CC0 clip libraries</li>
<li><a href="/guides/free-rigged-3d-character-models">Best Free Rigged 3D Character Models for Games</a>: skip rigging entirely with characters that already have a skeleton</li>
<li><a href="/blender-addon/">Cinevva Rig for Blender</a>: the add-on, the $29 launch price, and how the key works</li>
<li><a href="/tools/rigger">Auto Rigger</a>: rig your first humanoid free in the browser, GLB, FBX or OBJ up to 50 MB</li>
<li><a href="/tools/animations">Character Animation Library</a>: preview the same 260 CC0 clips on your own rigged model</li>
<li><a href="/guides/how-to-rig-a-character-in-blender">How to Rig a Character in Blender (2026)</a>: Rigify, manual armatures and the one-click route, step by step</li>
<li><a href="/guides/blender-weight-painting-problems">Blender Weight Painting: The 7 Problems Everyone Hits</a>: fixing weights by hand, and skipping the step</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How Automatic Rigging Works (and How to Prepare a Model for It)]]></title>
            <link>https://app.cinevva.com/guides/automatic-rigging-explained</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/automatic-rigging-explained</guid>
            <pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[How automatic rigging works: how an auto rigger places joints and skin weights, how to prepare a 3D model for it, and how to judge the rig in 30 seconds.]]></description>
            <content:encoded><![CDATA[<h1>How Automatic Rigging Works (and How to Prepare a Model for It)</h1>
<p><em>Last updated: September 2026.</em></p>
<figure class="guide-hero">
<img src="https://cdn.cinevva.com/guides/automatic-rigging-explained-hero.jpg?v=1" alt="Low-poly character in T-pose with joint markers beside a glowing wireframe skeleton" width="1216" height="640">
</figure>
<style>
.guide-hero { margin: 1.25rem 0 1.75rem; }
.guide-hero img { width: 100%; height: auto; border-radius: 12px; display: block; }
.guide-fig { margin: 1.5rem 0; }
.guide-fig > a { display: block; }
.guide-fig img, .guide-fig svg { width: 100%; height: auto; border-radius: 10px; border: 1px solid var(--vp-c-divider); display: block; }
.guide-fig svg { border: 0; }
.guide-fig figcaption { font-size: 0.9rem; color: var(--vp-c-text-2); margin: 0.5rem 0 0; }
.video-embed { position: relative; width: 100%; max-width: 720px; margin: 1.5rem 0; }
.video-embed iframe { width: 100%; aspect-ratio: 16/9; border-radius: 8px; }
.video-caption { font-size: 0.9rem; color: var(--vp-c-text-2); margin-top: 0.5rem; margin-bottom: 1.5rem; }
</style>
<p>Automatic rigging fits a skeleton inside a static 3D character and works out how much each bone pulls on each vertex, so the mesh bends when the bones move. Every auto rigger, whether it fits a template skeleton to markers (Mixamo, Auto-Rig Pro) or predicts joints with a trained model (RigNet, UniRig, Cinevva's <a href="/tools/rigger">Auto Rigger</a>), wants the same input: one connected mesh in a T-pose or A-pose, at human scale, facing forward, with nothing else in the file. Give it that and a humanoid rigs in under a minute. Give it a posed, multi-shell model with props and you get folded elbows and a floating hat.</p>
<h2>Quick answer</h2>
<ul>
<li><strong>What a rig is:</strong> a hierarchy of joints plus, for every vertex, up to four joint indices and weights that sum to one. In glTF that's the <code>skins</code> array and the <code>JOINTS_0</code> and <code>WEIGHTS_0</code> vertex attributes.</li>
<li><strong>How auto riggers place joints:</strong> by fitting a template skeleton to landmarks on your mesh, or by predicting joint positions from the geometry with a trained model.</li>
<li><strong>What to give it:</strong> one watertight mesh, T-pose or A-pose, origin at the feet, about 1.8 metres tall, transforms applied, normals outward, no armature, no props.</li>
<li><strong>How to check it:</strong> bend an elbow and a knee, look at the armpits and hips, twist a wrist and watch for the candy-wrapper pinch.</li>
<li><strong>Fastest route in 2026:</strong> upload a GLB, FBX, or OBJ to the <a href="/tools/rigger">Auto Rigger</a> and get a rigged GLB back with animations baked in.</li>
</ul>
<h2>Quick reference</h2>
<table>
<thead>
<tr>
<th>Route</th>
<th>Joint placement</th>
<th>Input</th>
<th>Output</th>
<th>Non-humanoids</th>
<th>Cost</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="/tools/rigger">Cinevva Auto Rigger</a></td>
<td>Learned, biped and quadruped</td>
<td>GLB, FBX, OBJ up to 50 MB</td>
<td>Rigged GLB with baked clips</td>
<td>Quadrupeds on the Pro engine</td>
<td>First rig free, then Standard or Pro plan</td>
</tr>
<tr>
<td><a href="/blender-addon/">Cinevva Rig for Blender</a></td>
<td>Same engine, on your machine</td>
<td>Any mesh, Blender 4.2+</td>
<td>Mixamo-named skeleton</td>
<td>Via the online Pro engine</td>
<td>$29 launch price, unlimited</td>
</tr>
<tr>
<td>Mixamo</td>
<td>Template, markers you place</td>
<td>FBX, OBJ, ZIP</td>
<td>FBX or DAE</td>
<td>No</td>
<td>Free with an Adobe ID</td>
</tr>
<tr>
<td>Blender Rigify</td>
<td>Manual metarig placement</td>
<td>Any mesh in Blender</td>
<td>Control rig, Automatic Weights</td>
<td>Cat, Wolf, Horse, Shark metarigs</td>
<td>Free, bundled</td>
</tr>
<tr>
<td>Auto-Rig Pro</td>
<td>Smart markers, optional AI</td>
<td>Any mesh in Blender</td>
<td>Control rig plus game export</td>
<td>Humanoid focus</td>
<td>Paid add-on, one-time</td>
</tr>
<tr>
<td>Tripo Auto Rig</td>
<td>Learned, <code>rig-check</code> first</td>
<td>GLB, GLTF, FBX, OBJ, STL up to 150 MB</td>
<td>GLB or FBX</td>
<td>Six creature plans on v2.5</td>
<td>API credits</td>
</tr>
<tr>
<td>UniRig</td>
<td>Autoregressive prediction</td>
<td>OBJ, FBX, GLB, VRM</td>
<td>FBX</td>
<td>Humans, animals, objects</td>
<td>Free, MIT code, self-hosted</td>
</tr>
</tbody>
</table>
<h2>What a rig actually is</h2>
<p><strong>A skeleton.</strong> A tree of joints, each a transform relative to its parent. Move the shoulder and the elbow, wrist, and fingers come along. In glTF the skeleton isn't a separate structure: the <a href="https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html#skins">glTF 2.0 specification's Skins section</a> says &quot;the joint hierarchy used for controlling skinned mesh pose is simply the node hierarchy&quot;, with a <code>skin.joints</code> array naming which nodes are joints. That's why the <a href="/tools/glb-viewer">GLB viewer</a> shows bones as ordinary nodes in the scene graph.</p>
<p><strong>A bind pose.</strong> The pose the character held when the skin was attached. glTF stores it as <code>inverseBindMatrices</code>, one <code>MAT4</code> per joint, &quot;used to bring coordinates being skinned into the same space as each joint&quot;. When a downloaded animation folds a character's arms through its chest, this is usually the piece that disagrees.</p>
<p><strong>Skin weights.</strong> For each vertex, which joints move it and by how much. glTF puts these in the <code>JOINTS_n</code> and <code>WEIGHTS_n</code> attributes, both <code>VEC4</code>, so each set carries up to four influences per vertex. Weights &quot;MUST NOT be negative&quot; and their sum &quot;SHOULD be as close as reasonably possible to 1.0&quot;. A vertex mid-forearm is 100% forearm. A vertex at the elbow crease might be 55% upper arm and 45% forearm, and that blend is what makes the crease bend instead of tear. This is linear blend skinning, the maths every engine runs in its vertex shader, and it has one famous weakness we'll meet at the wrist.</p>
<p>Here is where each piece lives on the character.</p>
<figure class="guide-fig">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 410" role="img" aria-label="Anatomy of a rig: a T-pose humanoid with a 15-joint hierarchy from hips to head, shoulders to wrists and hips to ankles, plus a skin-weight gradient on one arm running from 0.0 at the upper arm to 1.0 at the forearm across the elbow">
  <defs>
    <linearGradient id="rigw" gradientUnits="userSpaceOnUse" x1="242" y1="0" x2="360" y2="0">
      <stop offset="0" stop-color="#7dd3fc"/>
      <stop offset="0.4" stop-color="#7dd3fc"/>
      <stop offset="0.6" stop-color="#fb7185"/>
      <stop offset="1" stop-color="#fb7185"/>
    </linearGradient>
    <linearGradient id="rigw2" x1="0" y1="0" x2="1" y2="0">
      <stop offset="0" stop-color="#7dd3fc"/>
      <stop offset="0.4" stop-color="#7dd3fc"/>
      <stop offset="0.6" stop-color="#fb7185"/>
      <stop offset="1" stop-color="#fb7185"/>
    </linearGradient>
  </defs>
  <rect width="720" height="410" rx="14" fill="#0b1020"/>
  <g font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif">
    <text x="24" y="36" font-size="20" font-weight="800" fill="#e8edf5">Anatomy of a rig</text>
    <text x="24" y="58" font-size="13" fill="#9aa7b4">Skeleton, bind pose and skin weights on one humanoid</text>
    <g fill="#121a31" stroke="#2a3655" stroke-width="1.5">
      <circle cx="210" cy="88" r="20"/>
      <rect x="178" y="112" width="64" height="126" rx="14"/>
      <rect x="60" y="130" width="120" height="20" rx="10"/>
      <rect x="240" y="130" width="120" height="20" rx="10"/>
      <rect x="183" y="236" width="26" height="134" rx="12"/>
      <rect x="211" y="236" width="26" height="134" rx="12"/>
    </g>
    <rect x="240" y="130" width="120" height="20" rx="10" fill="url(#rigw)" opacity="0.85"/>
    <g stroke="#c8a8ff" stroke-width="3" stroke-linecap="round" fill="none">
      <path d="M210 232 L210 200 L210 160 L210 120 L210 92"/>
      <path d="M178 140 L210 160 L242 140"/>
      <path d="M178 140 L120 140 L68 140"/>
      <path d="M242 140 L300 140 L352 140"/>
      <path d="M210 232 L196 300 L196 360"/>
      <path d="M210 232 L224 300 L224 360"/>
    </g>
    <g fill="#7dd3fc" stroke="#0b1020" stroke-width="2">
      <circle cx="210" cy="92" r="5"/>
      <circle cx="210" cy="120" r="5"/>
      <circle cx="210" cy="160" r="5"/>
      <circle cx="210" cy="200" r="5"/>
      <circle cx="210" cy="232" r="6"/>
      <circle cx="178" cy="140" r="5"/>
      <circle cx="120" cy="140" r="5"/>
      <circle cx="68" cy="140" r="5"/>
      <circle cx="242" cy="140" r="5"/>
      <circle cx="300" cy="140" r="5"/>
      <circle cx="352" cy="140" r="5"/>
      <circle cx="196" cy="300" r="5"/>
      <circle cx="196" cy="360" r="5"/>
      <circle cx="224" cy="300" r="5"/>
      <circle cx="224" cy="360" r="5"/>
    </g>
    <g font-size="11" fill="#e8edf5">
      <text x="238" y="96">head</text>
      <text x="218" y="124">neck</text>
      <text x="218" y="164">chest</text>
      <text x="218" y="204">spine</text>
      <text x="220" y="236">hips (root)</text>
      <text x="178" y="166" text-anchor="middle">shoulder</text>
      <text x="120" y="166" text-anchor="middle">elbow</text>
      <text x="68" y="166" text-anchor="middle">wrist</text>
      <text x="172" y="304" text-anchor="end">knee</text>
      <text x="172" y="364" text-anchor="end">ankle</text>
    </g>
    <text x="210" y="394" font-size="11" fill="#9aa7b4" text-anchor="middle">bind pose: the T-pose the skin was attached in</text>
    <rect x="430" y="80" width="266" height="296" rx="10" fill="#121a31"/>
    <text x="446" y="106" font-size="13" font-weight="700" fill="#e8edf5">Skin weights</text>
    <text x="446" y="124" font-size="11" fill="#9aa7b4">How much the forearm joint moves each vertex</text>
    <rect x="446" y="140" width="234" height="32" rx="16" fill="url(#rigw2)"/>
    <line x1="563" y1="136" x2="563" y2="176" stroke="#e8edf5" stroke-width="1" stroke-dasharray="3 3"/>
    <circle cx="563" cy="156" r="5" fill="#e8edf5" stroke="#0b1020" stroke-width="2"/>
    <text x="446" y="192" font-size="12" font-weight="700" fill="#7dd3fc">0.0</text>
    <text x="563" y="192" font-size="11" fill="#e8edf5" text-anchor="middle">elbow</text>
    <text x="680" y="192" font-size="12" font-weight="700" fill="#fb7185" text-anchor="end">1.0</text>
    <text x="446" y="208" font-size="11" fill="#9aa7b4">upper arm</text>
    <text x="680" y="208" font-size="11" fill="#9aa7b4" text-anchor="end">forearm</text>
    <line x1="446" y1="226" x2="680" y2="226" stroke="#2a3655" stroke-width="1"/>
    <text x="446" y="252" font-size="13" font-weight="700" fill="#c8a8ff">Joint hierarchy</text>
    <text x="446" y="268" font-size="11" fill="#9aa7b4">a tree of joints, child follows parent</text>
    <text x="446" y="294" font-size="13" font-weight="700" fill="#6ee7b7">Bind pose</text>
    <text x="446" y="310" font-size="11" fill="#9aa7b4">the pose the skin was attached in</text>
    <text x="446" y="336" font-size="13" font-weight="700" fill="#fb7185">Skin weights</text>
    <text x="446" y="352" font-size="11" fill="#9aa7b4">per vertex, up to 4 joints, sum to 1.0</text>
  </g>
</svg>
<figcaption>One tree rooted at the hips, so a shoulder rotation carries the elbow and wrist along. The right arm shows the forearm joint's weight per vertex, blue 0.0 to coral 1.0, and the short blend across the elbow is what lets the crease bend instead of tear.</figcaption>
</figure>
<p>Rigging means placing the joints and computing the weights. By hand it's an afternoon per character. Automatically it's seconds to minutes.</p>
<h2>How an auto rigger places joints</h2>
<p><strong>Template fitting.</strong> The tool has one humanoid skeleton and needs to know where your landmarks are. Mixamo asks you: Adobe's <a href="https://helpx.adobe.com/creative-cloud/help/mixamo-rigging-animation.html">rigging help page</a> has you upload an FBX, OBJ, or ZIP, &quot;place the markers on key points (wrists, elbows, knees, and groin)&quot;, and confirm, after which rigging &quot;usually takes a few minutes&quot;. (Mixamo is still online and free with an Adobe ID as of September 2026, but its help pages date from September 2021 and it had a multi-day outage in June 2025, so keep the rigged file.) Auto-Rig Pro's Smart mode does the same inside Blender, and &quot;an AI model has been implemented in option, to setup automatically the markers&quot;. Rigify is the fully manual end: per the <a href="https://docs.blender.org/manual/en/latest/addons/rigging/rigify/basics.html">Rigify basics page</a>, &quot;meta-rig bones must be moved to correct positions&quot; before you press Generate Rig. Template fitting is predictable and gives you a standard bone set, which is what retargeting wants. It fails when the character doesn't match the template: extra limbs, no neck, a tail.</p>
<div class="video-embed"><iframe src="https://www.youtube.com/embed/LLnXBvEnG7o" title="Rigify: past, present and future of Blender rigging (Blender Conference 2024)" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></div>
<div class="video-caption">Blender's own Blender Conference 2024 talk on Rigify, the manual end of template fitting: you place the metarig, it generates the control rig and the weights.</div>
<p><strong>Learned joint prediction.</strong> The tool has seen thousands of rigged characters and predicts where joints belong on yours. <a href="https://github.com/zhan-xu/RigNet">RigNet</a> (SIGGRAPH 2020) was the milestone: a network clusters vertices into joint candidates, then separate networks pick the root, decide connectivity, and predict weights. It trained on 2,703 rigged models and needs input remeshed to between 1,000 and 5,000 vertices, a hint at how sensitive these models are to mesh density. <a href="https://github.com/VAST-AI-Research/UniRig">UniRig</a> (SIGGRAPH 2025, Tsinghua University and Tripo) collapsed that into one autoregressive transformer that writes the skeleton out as a token sequence, so the tree is valid by construction, then predicts weights with bone-to-point cross attention. Its Rig-XL training set has over 14,000 rigged models across humans, animals, and objects, which is why it handles a dragon where template tools can't. The code is MIT-licensed, with the full Rig-XL checkpoints listed as coming soon. Learned prediction needs no markers and copes with more body plans, but joints land where the training data says joints usually are, so unusual proportions get averaged toward normal.</p>
<p>Cinevva's <a href="/tools/rigger">Auto Rigger</a> is in the second family. It detects whether the upload is a biped or a quadruped, fits a skeleton, and binds the vertices with no markers to place. The Fast engine handles humanoids and is behind the free first download. Quadrupeds and awkward humanoids go to the Pro engine on the Standard and Pro plans. The <a href="/blender-addon/">Blender add-on</a> runs the same Fast engine locally and reports how many bones and fingers it found.</p>
<h2>Why the pose and a single mesh matter</h2>
<p>Adobe's <a href="https://helpx.adobe.com/creative-cloud/faq/mixamo-faq.html">Mixamo FAQ</a> states the assumptions every rigger shares: the character should have &quot;distinguishable head, body, arm, and leg areas&quot;, be &quot;in a default or neutral pose&quot;, have &quot;no other content in the file&quot;, have &quot;no spaces between any of the parts&quot;, and be &quot;centered in the scene&quot;. Here's why.</p>
<p><strong>T-pose or A-pose.</strong> Marker placement and learned prediction both find limbs by looking for tubes of geometry sticking out of a trunk. Arms at the sides merge into the body and the weights bleed across, so raising the arm drags the ribcage with it. An A-pose (arms down about 45 degrees) often skins the shoulders a little better than a strict T because the armpit is less stretched. Crossed arms or a hero pose don't work, and the rig gets built as if that pose were neutral.</p>
<p><strong>One connected mesh.</strong> Weights are computed from distance through the mesh volume, not through the air. Blender's manual describes its <a href="https://docs.blender.org/manual/en/latest/animation/armatures/skinning/parenting.html">Automatic Weights</a> as working &quot;based on the distance from those vertices to a particular bone ('bone heat' algorithm)&quot;, and learned riggers use similar geodesic features. A head floating a millimetre above the neck or a glove that is a separate shell is a separate island, and the solver guesses how it connects. Often the glove stays behind when the arm moves.</p>
<p>Side by side, the difference is easy to spot before you upload.</p>
<figure class="guide-fig">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 350" role="img" aria-label="Good pose versus bad pose: on the left one connected A-pose mesh with arms off the body and legs apart, marked with a green check; on the right a figure with arms against the body, a floating hat, a separate glove and touching legs, marked with a coral cross, with three failure callouts each">
  <rect width="720" height="350" rx="14" fill="#0b1020"/>
  <g font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif">
    <text x="24" y="36" font-size="20" font-weight="800" fill="#e8edf5">Good pose vs bad pose</text>
    <text x="24" y="58" font-size="13" fill="#9aa7b4">Same character, two exports. Only the left one rigs cleanly.</text>
    <rect x="24" y="76" width="324" height="252" rx="10" fill="#121a31"/>
    <rect x="372" y="76" width="324" height="252" rx="10" fill="#121a31"/>
    <circle cx="48" cy="100" r="9" fill="#6ee7b7"/>
    <path d="M43.5 100 l3 3 l6 -6" stroke="#0b1020" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round"/>
    <text x="64" y="105" font-size="14" font-weight="700" fill="#6ee7b7">Rigs cleanly</text>
    <circle cx="396" cy="100" r="9" fill="#fb7185"/>
    <path d="M392 96 l8 8 M400 96 l-8 8" stroke="#0b1020" stroke-width="2" fill="none" stroke-linecap="round"/>
    <text x="412" y="105" font-size="14" font-weight="700" fill="#fb7185">Rigs badly</text>
    <g fill="#3b4a75" stroke="#3b4a75" stroke-linecap="round">
      <circle cx="90" cy="130" r="13" stroke="none"/>
      <line x1="90" y1="140" x2="90" y2="150" stroke-width="12"/>
      <line x1="90" y1="150" x2="90" y2="228" stroke-width="34"/>
      <line x1="78" y1="160" x2="42" y2="208" stroke-width="14"/>
      <line x1="102" y1="160" x2="138" y2="208" stroke-width="14"/>
      <line x1="83" y1="228" x2="80" y2="300" stroke-width="15"/>
      <line x1="97" y1="228" x2="100" y2="300" stroke-width="15"/>
      <line x1="80" y1="304" x2="68" y2="304" stroke-width="10"/>
      <line x1="100" y1="304" x2="112" y2="304" stroke-width="10"/>
    </g>
    <g fill="#3b4a75" stroke="#3b4a75" stroke-linecap="round">
      <circle cx="440" cy="134" r="13" stroke="none"/>
      <line x1="440" y1="144" x2="440" y2="154" stroke-width="12"/>
      <line x1="440" y1="154" x2="440" y2="233" stroke-width="34"/>
      <line x1="434" y1="233" x2="434" y2="308" stroke-width="14"/>
      <line x1="446" y1="233" x2="446" y2="308" stroke-width="14"/>
      <line x1="434" y1="312" x2="422" y2="312" stroke-width="10"/>
      <line x1="446" y1="312" x2="458" y2="312" stroke-width="10"/>
    </g>
    <line x1="440" y1="242" x2="440" y2="308" stroke="#121a31" stroke-width="2"/>
    <g stroke="#121a31" stroke-linecap="round" fill="none">
      <line x1="427" y1="166" x2="423" y2="228" stroke-width="17"/>
      <line x1="453" y1="166" x2="457" y2="228" stroke-width="17"/>
    </g>
    <g stroke="#fb7185" stroke-linecap="round" fill="none" opacity="0.9">
      <line x1="427" y1="166" x2="423" y2="228" stroke-width="13"/>
      <line x1="453" y1="166" x2="457" y2="228" stroke-width="13"/>
    </g>
    <circle cx="423" cy="240" r="10" fill="#121a31"/>
    <circle cx="423" cy="240" r="8" fill="#fb7185" opacity="0.9"/>
    <rect x="427" y="108" width="26" height="9" rx="3" fill="#fb7185" opacity="0.9"/>
    <rect x="420" y="117" width="40" height="3" rx="1.5" fill="#fb7185" opacity="0.9"/>
    <g font-size="12" font-weight="700" fill="#e8edf5">
      <text x="184" y="150">One connected mesh</text>
      <text x="184" y="212">Arms out in an A-pose</text>
      <text x="184" y="274">Legs apart, symmetric</text>
      <text x="514" y="150">Hat is a loose shell</text>
      <text x="514" y="212">Arms against the body</text>
      <text x="514" y="274">Legs and glove touching</text>
    </g>
    <g font-size="11" fill="#9aa7b4">
      <text x="184" y="167">no loose shells or islands</text>
      <text x="184" y="229">limbs read as separate tubes</text>
      <text x="184" y="291">each side mirrors cleanly</text>
      <text x="514" y="167">stays put when the body moves</text>
      <text x="514" y="229">weights bleed into the chest</text>
      <text x="514" y="291">binds to the wrong joint</text>
    </g>
    <g fill="#6ee7b7">
      <circle cx="168" cy="146" r="7"/>
      <circle cx="168" cy="208" r="7"/>
      <circle cx="168" cy="270" r="7"/>
    </g>
    <g stroke="#0b1020" stroke-width="1.8" fill="none" stroke-linecap="round" stroke-linejoin="round">
      <path d="M164.5 146 l2.5 2.5 l5 -5"/>
      <path d="M164.5 208 l2.5 2.5 l5 -5"/>
      <path d="M164.5 270 l2.5 2.5 l5 -5"/>
    </g>
    <g fill="#fb7185">
      <circle cx="498" cy="146" r="7"/>
      <circle cx="498" cy="208" r="7"/>
      <circle cx="498" cy="270" r="7"/>
    </g>
    <g stroke="#0b1020" stroke-width="1.8" fill="none" stroke-linecap="round">
      <path d="M495 143 l6 6 M501 143 l-6 6"/>
      <path d="M495 205 l6 6 M501 205 l-6 6"/>
      <path d="M495 267 l6 6 M501 267 l-6 6"/>
    </g>
  </g>
</svg>
<figcaption>The left export is one shell with arms off the body and legs apart. The right one carries three failures from the table below: a hat that stays put when the body moves, arm weights that bleed into the chest, and a glove and touching legs that bind to the wrong joint.</figcaption>
</figure>
<p><strong>Scale and origin.</strong> Rigify says it outright: &quot;Rigify assumes that 1 unit corresponds to 1 meter. So a human is about 2 units tall.&quot; Learned riggers trained on characters at roughly human scale too. A character exported from a centimetre-based tool at 180 units tall is outside what any rigger expects, and so is one whose origin sits at the hips.</p>
<h2>What breaks, and why</h2>
<table>
<thead>
<tr>
<th>Problem</th>
<th>What you see</th>
<th>Why</th>
</tr>
</thead>
<tbody>
<tr>
<td>Multiple meshes or loose shells</td>
<td>A hat or glove stays put when the body moves</td>
<td>Each island is weighted alone and small ones bind to the wrong joint</td>
</tr>
<tr>
<td>Non-manifold geometry (holes, internal faces, doubled vertices)</td>
<td>Spiky vertices, weights flipping along a seam</td>
<td>Volume-based weighting needs a closed surface to know what's inside</td>
</tr>
<tr>
<td>Wrong scale or units</td>
<td>Rejected upload, or one joint for the whole body</td>
<td>The model is 100x or 1000x outside the expected size range</td>
</tr>
<tr>
<td>Inverted normals</td>
<td>Black or see-through patches, confused weights nearby</td>
<td>Inside/outside tests use normals to decide which side is the body</td>
</tr>
<tr>
<td>Props and accessories in the file</td>
<td>A sword becomes a limb</td>
<td>Mixamo's FAQ: &quot;extra limbs, wings, and tails or large hair and clothing items may not work&quot;</td>
</tr>
<tr>
<td>Clothing as separate shells</td>
<td>Skirt or coat pokes through the legs</td>
<td>Cloth and body get slightly different weights and drift apart</td>
</tr>
<tr>
<td>Asymmetry</td>
<td>One arm rigs, the other doesn't</td>
<td>Template riggers mirror one side, so a large asymmetry defeats the mirror</td>
</tr>
<tr>
<td>Quadruped sent to a humanoid rigger</td>
<td>Front legs become arms, tail ignored</td>
<td>A humanoid template has two arms and two legs</td>
</tr>
</tbody>
</table>
<p>Clothing shells are the most common real-world failure because generated and marketplace characters are usually built that way. Auto-Rig Pro offers a Voxelized skinning mode for &quot;multiple layers of clothes, props, complex topology&quot; for exactly this reason. If your tool has one mode, merge the clothes into the body first. Quadrupeds are a body-plan question: Mixamo is for &quot;bipedal humanoids only&quot;, while Tripo's <a href="https://developers.tripo3d.ai/en/docs/animations-rig">rigging API</a> has a <code>v2.5-20260210</code> model for &quot;quadruped, hexapod, octopod, serpentine, aquatic, avian&quot; rigs and Cinevva's rigger sends quadrupeds to its Pro engine.</p>
<h2>Prepare your model in 10 minutes</h2>
<p>All in Blender, on a copy.</p>
<p><strong>Delete everything that isn't the character.</strong> Cameras, lights, the floor, the old armature, any animation. Mixamo's FAQ: &quot;extra helper objects, cameras, or scene objects cause the auto-rigger to not work.&quot;</p>
<p><strong>Join and merge.</strong> Select every mesh that should deform with the body and join them (Ctrl-J). In Edit Mode select all and run Mesh, Merge, By Distance, which merges &quot;each cluster of vertices that are closer to each other than a certain distance&quot;. Start the Merge Distance at 0.0001 m and raise it only if a seam still gapes. Leave a sword out: rig the body, then parent the prop to the hand bone, which the glTF spec allows since &quot;a joint node MAY have other nodes attached to it&quot;.</p>
<p><strong>Recalculate normals.</strong> Mesh, Normals, Recalculate Outside (Shift-N), which &quot;flips the orientation of the selected faces where necessary, making them all point outward&quot;. Turn on the Face Orientation overlay first: red is inside out.</p>
<p><strong>Pose it neutral.</strong> If the character came posed, move the arms to a T or A and straighten the legs with a temporary armature or proportional editing. Arms 20 to 30 degrees from the body still rig far better than arms at the sides.</p>
<p><strong>Set origin and scale.</strong> Origin at the bottom of the feet, character at world zero. Check Dimensions in the N panel: a human should read 1.7 to 1.9 metres. If it reads 180 or 1800, scale it down.</p>
<p><strong>Apply transforms.</strong> Object, Apply, All Transforms (Ctrl-A). The <a href="https://docs.blender.org/manual/en/latest/scene_layout/object/editing/apply.html">manual's own warning</a>: &quot;It is recommended to apply transforms before rigging and animation.&quot; This bakes rotation and scale into the vertices, so the rigger doesn't see a 0.01-scaled object rotated 90 degrees on X, which is how most FBX imports arrive.</p>
<p><strong>Export a GLB.</strong> File, Export, glTF 2.0, format glTF Binary (.glb), which the <a href="https://docs.blender.org/manual/en/5.0/addons/import_export/scene_gltf2.html">exporter documentation</a> describes as &quot;a single .glb file with all mesh data, image textures, and related information packed into a single binary file&quot;. Tick Include, Selected Objects. Leave Transform, +Y Up on. Under Data, Mesh tick Apply Modifiers, UVs, and Normals. Leave Animation off. Open the result in the <a href="/tools/glb-viewer">GLB viewer</a> to confirm one mesh, no skeleton yet, and a size under the <a href="/tools/rigger">Auto Rigger's</a> 50 MB limit. The rigger also takes FBX and OBJ directly, including a zipped OBJ bundle with textures.</p>
<h2>Judge a rig in 30 seconds</h2>
<p>A rest pose hides everything. Pose it or play a clip instead (the <a href="/tools/glb-viewer">GLB viewer</a> has a Bones overlay and plays baked clips).</p>
<p><strong>Bend an elbow and a knee to 90 degrees.</strong> The inside should crease, not fold flat, and the outside should keep its volume. A knee that pinches flat means the weights transition over one vertex loop instead of three or four, a mesh density problem more than a rigger problem.</p>
<p><strong>Raise the arms overhead and look at the armpits, then squat and look at the hips.</strong> Three joints meet at each. Bleeding shows as the chest lifting with the arm, and clothing shells show up as a trouser leg the thigh pushes through.</p>
<p><strong>Twist a wrist 90 degrees and watch the forearm.</strong> If it narrows to a pinched waist halfway along, that's the candy-wrapper artefact of linear blend skinning: a vertex weighted half to each of two joints gets a blend of a rotated and an unrotated matrix, and the blend shrinks toward the axis. Every auto rigger produces some of it. Forearm twist bones or dual quaternion skinning in the engine hide it.</p>
<p><strong>Play a walk.</strong> Feet should plant at contact. Sliding feet usually mean the clip is authored in place and your game is meant to move the character. Sinking or floating feet mean the rig's scale disagrees with the clip's.</p>
<p>If the first four pass, the rig is good enough for a game. If two fail, fix the mesh and rig again rather than painting weights: the second attempt takes a minute, painting takes an hour.</p>
<h2>How animations get onto a rig</h2>
<p>Animations almost always come from somewhere else: a library, mocap, or a text-to-motion model. Retargeting copies a clip made for one skeleton onto another with different bone names, proportions, and bind pose.</p>
<p>Bone naming is the first hurdle, which is why humanoid conventions matter. Mixamo names its bones <code>mixamorig:Hips</code>, <code>mixamorig:LeftArm</code> and so on, and because so many clips were built for it, &quot;Mixamo-compatible&quot; became a de facto standard: Tripo's API offers a <code>mixamo</code> spec for &quot;Mixamo-compatible bone naming&quot;, and Cinevva's Blender add-on outputs a Mixamo-named skeleton. The <a href="https://github.com/vrm-c/vrm-specification/blob/master/specification/VRMC_vrm-1.0/humanoid.md">VRM humanoid specification</a> defines roles instead of names: 15 required bones (hips, spine, head, and the upper leg, lower leg, foot, upper arm, lower arm, and hand per side) plus optional chest, neck, eyes, jaw, toes, and fingers. Unity's <a href="https://docs.unity3d.com/Manual/ConfiguringtheAvatar.html">Humanoid avatar</a> needs the same &quot;at least 15 bones&quot; and a T-pose. If your rig has those 15, it retargets to almost anything.</p>
<p>Proportions and bind pose are the second hurdle. Copying local rotations between two skeletons whose bones point along different local axes puts the arms out by 90 degrees. Cinevva's <a href="/tools/animations">Animation Library</a> sidesteps this by solving in world space: for each frame it &quot;works out where the source joint actually is relative to its own bind pose, then puts your joint in the matching place relative to yours&quot;. It matches names flexibly (<code>mixamorig:LeftArm</code>, <code>LeftArm</code>, and <code>left_arm</code> all resolve), treats fingers as optional, and retargets 260 CC0 clips onto any humanoid you upload. <a href="/tools/animate">Prompt Animations</a> does the same for generated motion, mapping a 77-bone source skeleton's 22 body bones onto your character and auto-detecting Mixamo, Tripo, Reallusion CC4, UE5, and generic naming.</p>
<p>Quadrupeds don't get this. There's no sensible mapping from a biped's spine to a dog's, so a four-legged rig comes back from Cinevva's rigger with a walk cycle baked in and no library to browse.</p>
<h2>Where auto rigging still fails</h2>
<p><strong>Fingers.</strong> Twenty small bones in a few centimetres, often modelled as a mitten or with fingers touching. Learned riggers find three fingers on one hand and five on the other, or fuse a thumb to the palm, which is why Cinevva's add-on reports the finger count and the <a href="/tools/animations">Animation Library</a> treats fingers as optional. Auto-Rig Pro's guidance for finger detection is &quot;fingers spread apart&quot; with &quot;the palm must face the floor&quot;.</p>
<p><strong>Faces.</strong> No body rigger does facial animation. Expressions come from blend shapes (glTF morph targets) or a separate facial rig, and generated characters usually have neither.</p>
<p><strong>Skirts, capes, coats, long hair.</strong> These need physics or their own bone chains. A body rigger weights them to the nearest leg or spine bone, so a skirt bends with the thigh and a cape hangs rigid. Rig the body, then add cloth simulation or chained bones in your engine.</p>
<p><strong>Wings and tails.</strong> Humanoid templates have no slot for them. Learned riggers trained on animals (UniRig, Tripo's v2.5 model, Cinevva's Pro engine) do place joints in tails, but wing membranes stay hard because they're thin sheets with joints at the edge. For a mech or anything else that isn't roughly a body, parenting rigid parts to bones by hand still beats asking a solver to skin pistons.</p>
<h2>If you work in Blender</h2>
<p>The same rigging runs inside Blender through the <a href="/blender-addon/">Cinevva Rig add-on</a>: select the mesh, pick the front view, press Rig, and the skinned, Mixamo-named armature appears on your own model with your materials and modifiers intact. It rigs on your machine, offline, for one $29 purchase (launch price), plays the 260 CC0 clips on the result, and exports with presets for Unity, Unreal, Godot and the web. Blender 4.2 and newer on Windows, macOS and Linux. The <a href="/guides/how-to-rig-a-character-in-blender">Blender rigging how-to</a> covers Rigify and manual armatures alongside it.</p>
<h2>Common Questions</h2>
<h3>What is rigging in 3D?</h3>
<p>Rigging is adding a skeleton to a 3D model and binding the mesh to it so the model can be posed and animated. The skeleton is a hierarchy of joints, and the binding is a set of skin weights saying how much each joint moves each vertex. In glTF that's a <code>skins</code> entry plus <code>JOINTS_0</code> and <code>WEIGHTS_0</code> attributes on the mesh.</p>
<h3>How does automatic rigging work?</h3>
<p>An auto rigger locates a character's joints from its geometry, either by fitting a template skeleton to landmarks or by predicting joint positions with a model trained on thousands of rigged characters, then computes skin weights from how each vertex sits relative to the bones. Cinevva's <a href="/tools/rigger">Auto Rigger</a> does this in the browser for humanoids and quadrupeds, with no bone placement or weight painting.</p>
<h3>How do I prepare a model for auto rigging?</h3>
<p>One connected mesh, T-pose or A-pose, about 1.8 metres tall, origin at the feet on the world origin, facing forward, transforms applied, normals outward, and nothing else in the file. In Blender: join, Merge by Distance, Recalculate Outside, Apply All Transforms, then export a GLB with Selected Objects and Apply Modifiers on.</p>
<h3>Can I rig a 3D model online?</h3>
<p>Yes. Cinevva's <a href="/tools/rigger">Auto Rigger</a> rigs a GLB, FBX, or OBJ up to 50 MB in the browser and returns a rigged GLB, with your first character free to download including up to six baked animations. Mixamo rigs humanoids online for free with an Adobe ID and exports FBX or DAE. Tripo's hosted rigger runs on API credits.</p>
<h3>What are skin weights?</h3>
<p>Skin weights are the per-vertex numbers that say how strongly each joint moves that vertex. glTF allows up to four joints per vertex per attribute set, weights can't be negative, and they should sum to 1.0. A mid-forearm vertex is weighted entirely to the forearm joint. An elbow vertex is split between upper arm and forearm, which is what makes the elbow crease smoothly instead of tearing.</p>
<h3>Does auto rigging work on animals and quadrupeds?</h3>
<p>Only if the rigger has a quadruped body plan. Mixamo is &quot;bipedal humanoids only&quot; per Adobe's FAQ. Cinevva's <a href="/tools/rigger">Auto Rigger</a> detects a quadruped and rigs it on the Pro engine with a walk cycle baked in, Tripo's v2.5 model covers six creature plans, and Rigify ships Cat, Wolf, Horse, and Shark metarigs you fit by hand. Expect to animate the result yourself, since the big free clip libraries are humanoid.</p>
<h2>Related</h2>
<ul>
<li><a href="/guides/free-character-animations-rigging">Free Character Animations and Auto-Rigging: Mixamo and Its Alternatives</a>: the roundup of free riggers and CC0 animation libraries, licences checked</li>
<li><a href="/guides/free-rigged-3d-character-models">Best Free Rigged 3D Character Models</a>: skip rigging with characters that already have a skeleton</li>
<li><a href="/guides/ai-3d-model-generators">Best AI 3D Model Generators</a>: which text-to-3D and image-to-3D tools produce meshes that rig cleanly</li>
<li><a href="/guides/ai-animation-generators-3d">Best AI Animation Generators for 3D Characters</a>: text-to-motion tools to put clips on your new rig</li>
<li><a href="/guides/free-3d-model-sites">Best Free 3D Model Sites for Games</a>: where to find characters worth rigging</li>
<li><a href="/guides/game-asset-licenses">Game Asset Licenses Explained</a>: what you can ship from each rigger and library</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Best Blender Add-ons for Game Developers in 2026 (Free and Paid)]]></title>
            <link>https://app.cinevva.com/guides/best-blender-addons-game-developers</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/best-blender-addons-game-developers</guid>
            <pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[The best Blender add-ons for game developers in 2026: rigging, skinning, animation, export, UV, baking and LOD tools, with verified prices and Blender versions.]]></description>
            <content:encoded><![CDATA[<h1>Best Blender Add-ons for Game Developers in 2026 (Free and Paid)</h1>
<p><em>Last updated: September 2026.</em></p>
<figure class="guide-hero">
<img src="https://cdn.cinevva.com/guides/best-blender-addons-game-developers-hero.jpg?v=1" alt="Blender viewport with a rigged game character surrounded by add-on panels and export dialogs" width="1216" height="640">
</figure>
<style>
.guide-hero { margin: 1.25rem 0 1.75rem; }
.guide-hero img { width: 100%; height: auto; border-radius: 12px; display: block; }
.guide-fig { margin: 1.5rem 0; }
.guide-fig > a { display: block; }
.guide-fig img { width: 100%; height: auto; border-radius: 10px; border: 1px solid var(--vp-c-divider); display: block; }
.guide-fig svg { width: 100%; height: auto; display: block; }
.guide-fig figcaption { font-size: 0.9rem; color: var(--vp-c-text-2); margin: 0.5rem 0 0; }
.video-embed { position: relative; width: 100%; max-width: 720px; margin: 1.5rem 0; }
.video-embed iframe { width: 100%; aspect-ratio: 16/9; border-radius: 8px; }
.video-caption { font-size: 0.9rem; color: var(--vp-c-text-2); margin-top: 0.5rem; margin-bottom: 1.5rem; }
</style>
<p>The Blender add-ons that pay for themselves in game work are the ones that sit on a step you repeat for every asset: rigging, weight painting, UV packing, baking, and the export dialog. For most indie teams the shortlist as of September 2026 is Rigify (built in) or Auto-Rig Pro ($50) for rigs, Voxel Heat Diffuse Skinning ($30) when weights fail, Animation Layers ($30) for editing motion, Better FBX Importer &amp; Exporter ($25) when FBX files break, UVPackmaster 4 ($55) and TexTools (free) for UVs, SimpleBake ($20) for textures, and Blender's own glTF exporter for anything that ships to the web or Godot. Everything below was checked against its Superhive or <a href="http://extensions.blender.org">extensions.blender.org</a> listing, its GitHub repository, or the vendor's own page this month.</p>
<h2>Quick picks</h2>
<ul>
<li><strong>Rigging, free:</strong> Rigify, bundled with Blender, enabled from <code>Edit &gt; Preferences &gt; Add-ons</code>. Meta-rigs for humans, quadrupeds, cats, wolves, horses and sharks.</li>
<li><strong>Rigging, full control rig:</strong> Auto-Rig Pro, $50 for the full version, more than 65,000 sales on Superhive, Blender 2.93 to 5.1.</li>
<li><strong>Rigging, one purchase with animations and export included:</strong> the <a href="/blender-addon/">Cinevva Rig add-on</a>, $29 launch price, rigs on your own machine offline, Blender 4.2 and newer on Windows, macOS and Linux.</li>
<li><strong>Skinning:</strong> Voxel Heat Diffuse Skinning, $30, fixes the &quot;bone heat weighting: failed to find solution&quot; error on non-watertight meshes.</li>
<li><strong>Animation editing:</strong> Animation Layers, $30, layers on top of Blender's NLA.</li>
<li><strong>Export that stops breaking:</strong> Better FBX Importer &amp; Exporter, $25, built on the official FBX SDK.</li>
<li><strong>UVs:</strong> UVPackmaster 4 PRO, $55, GPU packing. TexTools, free, for texel density and layout.</li>
<li><strong>Baking:</strong> SimpleBake, $20 single user. Bake Wrangler, $25 indie, if you want a node graph.</li>
<li><strong>LODs:</strong> the Decimate modifier plus LODGen (free, Blender 4.5+) or LODify (free, Blender 4.2+).</li>
</ul>
<h2>Quick reference</h2>
<p>Prices are the single-seat prices the listings showed when we read them, before sales and tax. Blender versions are the ranges the listings state. Where a listing is older than this month we say so.</p>
<table>
<thead>
<tr>
<th>Add-on</th>
<th>Job</th>
<th>Price (USD)</th>
<th>Source and licence</th>
<th>Blender versions</th>
</tr>
</thead>
<tbody>
<tr>
<td>Rigify</td>
<td>Rigging</td>
<td>Free, bundled</td>
<td>Ships with Blender, GPL</td>
<td>Current Blender</td>
</tr>
<tr>
<td>Auto-Rig Pro</td>
<td>Rigging, retarget, export</td>
<td>$50 full, $25 Lite</td>
<td>Superhive, GPL code plus separate AI files</td>
<td>2.93 to 5.1</td>
</tr>
<tr>
<td><a href="/blender-addon/">Cinevva Rig</a></td>
<td>Rigging, 260 clips, export</td>
<td>$29 launch price, export half free</td>
<td><a href="http://cinevva.com">cinevva.com</a>, GPL-3.0 Python</td>
<td>4.2 and newer</td>
</tr>
<tr>
<td>Mixamo Rig (community)</td>
<td>Control rig for Mixamo skeletons</td>
<td>Free</td>
<td><a href="http://extensions.blender.org">extensions.blender.org</a>, GPL-3.0</td>
<td>4.2 and newer</td>
</tr>
<tr>
<td>Voxel Heat Diffuse Skinning</td>
<td>Skin weights</td>
<td>$30</td>
<td>Superhive, GPL Python plus binary</td>
<td>3.6 to 5.1</td>
</tr>
<tr>
<td>Animation Layers</td>
<td>Animation editing</td>
<td>$30</td>
<td>Superhive, GPL</td>
<td>3.2 to 5.1</td>
</tr>
<tr>
<td>Rokoko Studio Live</td>
<td>Mocap streaming, retarget</td>
<td>Free</td>
<td>GitHub, LGPL-3.0</td>
<td>2.80 and newer per README</td>
</tr>
<tr>
<td>MotionGen</td>
<td>Video to animation</td>
<td>$29 Pro, $1 Lite</td>
<td>Superhive, MIT listed</td>
<td>3.6 to 5.2, Windows plus NVIDIA only</td>
</tr>
<tr>
<td>glTF 2.0 exporter</td>
<td>Export (web, Godot)</td>
<td>Free, bundled</td>
<td>Ships with Blender</td>
<td>Current Blender</td>
</tr>
<tr>
<td>FBX exporter</td>
<td>Export (Unity, Unreal)</td>
<td>Free, bundled</td>
<td>Ships with Blender</td>
<td>Current Blender</td>
</tr>
<tr>
<td>Better FBX Importer &amp; Exporter</td>
<td>Import and export</td>
<td>$25 indie</td>
<td>Superhive, GPL Python plus binary</td>
<td>3.6 to 5.1</td>
</tr>
<tr>
<td>Send to Unreal</td>
<td>Blender to Unreal</td>
<td>Free</td>
<td>GitHub (Epic), MIT</td>
<td>3.3 and newer per bl_info</td>
</tr>
<tr>
<td>Hard Ops / Boxcutter bundle</td>
<td>Hard-surface modelling</td>
<td>$38 bundle, $19 each on Gumroad</td>
<td>Superhive and Gumroad, GPL</td>
<td>3.5 to 5.2</td>
</tr>
<tr>
<td>UVPackmaster 4 PRO</td>
<td>UV packing</td>
<td>$55 ($44 on Gumroad)</td>
<td>Superhive and Gumroad, GPL listed</td>
<td>2.93 to 5.1</td>
</tr>
<tr>
<td>TexTools</td>
<td>UV layout, texel density, bakes</td>
<td>Free</td>
<td>GitHub</td>
<td>3.2 and newer per README</td>
</tr>
<tr>
<td>MACHIN3tools</td>
<td>Modelling pies and tools</td>
<td>$8 Prime, $20 DeusEx</td>
<td>Superhive, GPL</td>
<td>4.2 to 5.2</td>
</tr>
<tr>
<td>Quad Remesher</td>
<td>Auto retopology</td>
<td>$109.90 Pro, $59.90 Indie</td>
<td><a href="http://exoside.com">exoside.com</a>, proprietary</td>
<td>Not stated on the pages we read</td>
</tr>
<tr>
<td>SimpleBake</td>
<td>PBR baking</td>
<td>$20 single user</td>
<td>Superhive, GPL (listing read Nov 2025)</td>
<td>4.2 to 4.5 on that listing</td>
</tr>
<tr>
<td>Bake Wrangler</td>
<td>Node-based baking</td>
<td>$40 commercial, $25 indie</td>
<td>Superhive, GPL</td>
<td>4.2 to 5.0</td>
</tr>
<tr>
<td>Substance 3D add-on</td>
<td>Substance materials in Blender</td>
<td>Free add-on, needs Substance materials</td>
<td><a href="http://adobe.com">adobe.com</a></td>
<td>Windows, macOS, Linux</td>
</tr>
<tr>
<td>Decimate modifier</td>
<td>LODs</td>
<td>Free, bundled</td>
<td>Ships with Blender</td>
<td>Current Blender</td>
</tr>
<tr>
<td>LODGen</td>
<td>LOD chains</td>
<td>Free</td>
<td><a href="http://extensions.blender.org">extensions.blender.org</a>, GPL-3.0</td>
<td>4.5 and newer</td>
</tr>
<tr>
<td>LODify</td>
<td>LODs, texture downsizing, culling</td>
<td>Free</td>
<td><a href="http://extensions.blender.org">extensions.blender.org</a>, GPL-3.0</td>
<td>4.2 and newer</td>
</tr>
<tr>
<td>Asset Browser</td>
<td>Asset management</td>
<td>Free, bundled</td>
<td>Ships with Blender since 3.0</td>
<td>Current Blender</td>
</tr>
<tr>
<td>Blendkit (formerly BlenderKit)</td>
<td>Asset library</td>
<td>Free plan, $9.90/month Full</td>
<td>GitHub, GPL-2.0-or-later</td>
<td>3.0 and newer</td>
</tr>
</tbody>
</table>
<figure class="guide-fig">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 616" role="img" aria-label="Category map of Blender add-ons for game developers: eight job cards (rigging, skinning, animation, export, modelling and UV, baking, LODs, assets) each listing the add-ons covered, colour coded green for free or built in and amber for paid, with single-seat prices such as Auto-Rig Pro $50, Cinevva Rig $29, Voxel Heat Diffuse Skinning $30, UVPackmaster 4 $55, SimpleBake $20">
  <rect width="720" height="616" rx="14" fill="#0b1020"/>
  <g font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif">
    <text x="24" y="36" font-size="20" font-weight="800" fill="#e8edf5">Which add-on does which job</text>
    <text x="24" y="58" font-size="13" fill="#9aa7b4">The tools in this guide grouped by the step they save, single-seat prices, September 2026</text>
    <g fill="#121a31" stroke="#2a3655" stroke-width="1">
      <rect x="24" y="80" width="330" height="118" rx="10"/>
      <rect x="366" y="80" width="330" height="118" rx="10"/>
      <rect x="24" y="206" width="330" height="118" rx="10"/>
      <rect x="366" y="206" width="330" height="118" rx="10"/>
      <rect x="24" y="332" width="330" height="118" rx="10"/>
      <rect x="366" y="332" width="330" height="118" rx="10"/>
      <rect x="24" y="458" width="330" height="118" rx="10"/>
      <rect x="366" y="458" width="330" height="118" rx="10"/>
    </g>
    <g font-size="14" font-weight="700" fill="#e8edf5">
      <text x="40" y="104">Rigging</text>
      <text x="382" y="104">Skinning</text>
      <text x="40" y="230">Animation</text>
      <text x="382" y="230">Export and engine hand-off</text>
      <text x="40" y="356">Modelling and UVs</text>
      <text x="382" y="356">Baking and texturing</text>
      <text x="40" y="482">LODs and optimisation</text>
      <text x="382" y="482">Assets</text>
    </g>
    <g font-size="12" fill="#e8edf5">
      <circle cx="46" cy="122" r="4" fill="#6ee7b7"/><text x="58" y="126">Rigify, built in</text>
      <circle cx="46" cy="140" r="4" fill="#fbbf24"/><text x="58" y="144">Auto-Rig Pro, $50 full, $25 Lite</text>
      <circle cx="46" cy="158" r="4" fill="#fbbf24"/><text x="58" y="162">Cinevva Rig, $29, export half free</text>
      <circle cx="46" cy="176" r="4" fill="#6ee7b7"/><text x="58" y="180">Mixamo Rig extension, free</text>
      <circle cx="388" cy="122" r="4" fill="#6ee7b7"/><text x="400" y="126">Automatic Weights, built in</text>
      <circle cx="388" cy="140" r="4" fill="#fbbf24"/><text x="400" y="144">Voxel Heat Diffuse Skinning, $30</text>
      <circle cx="388" cy="158" r="4" fill="#6ee7b7"/><text x="400" y="162">Corrective Smooth modifier, built in</text>
      <circle cx="46" cy="248" r="4" fill="#fbbf24"/><text x="58" y="252">Animation Layers, $30</text>
      <circle cx="46" cy="266" r="4" fill="#6ee7b7"/><text x="58" y="270">Rokoko Studio Live, free, LGPL</text>
      <circle cx="46" cy="284" r="4" fill="#fbbf24"/><text x="58" y="288">MotionGen, $29 Pro (video to motion)</text>
      <circle cx="46" cy="302" r="4" fill="#6ee7b7"/><text x="58" y="306">Mixamo clips, free with an Adobe ID</text>
      <circle cx="388" cy="248" r="4" fill="#6ee7b7"/><text x="400" y="252">glTF 2.0 and FBX exporters, built in</text>
      <circle cx="388" cy="266" r="4" fill="#fbbf24"/><text x="400" y="270">Better FBX Importer and Exporter, $25</text>
      <circle cx="388" cy="284" r="4" fill="#6ee7b7"/><text x="400" y="288">Send to Unreal, free, MIT</text>
      <circle cx="388" cy="302" r="4" fill="#6ee7b7"/><text x="400" y="306">Godot reads .blend directly, no add-on</text>
      <circle cx="46" cy="374" r="4" fill="#fbbf24"/><text x="58" y="378">Hard Ops + Boxcutter, $38 bundle</text>
      <circle cx="46" cy="392" r="4" fill="#fbbf24"/><text x="58" y="396">UVPackmaster 4 PRO, $55</text>
      <circle cx="46" cy="410" r="4" fill="#6ee7b7"/><text x="58" y="414">TexTools, free</text>
      <circle cx="46" cy="428" r="4" fill="#fbbf24"/><text x="58" y="432">MACHIN3tools $8, Quad Remesher $109.90</text>
      <circle cx="388" cy="374" r="4" fill="#fbbf24"/><text x="400" y="378">SimpleBake, $20</text>
      <circle cx="388" cy="392" r="4" fill="#fbbf24"/><text x="400" y="396">Bake Wrangler, $25 indie, $40 commercial</text>
      <circle cx="388" cy="410" r="4" fill="#6ee7b7"/><text x="400" y="414">Substance 3D add-on, free add-on</text>
      <circle cx="46" cy="500" r="4" fill="#6ee7b7"/><text x="58" y="504">Decimate modifier, built in</text>
      <circle cx="46" cy="518" r="4" fill="#6ee7b7"/><text x="58" y="522">LODGen, free, Blender 4.5+</text>
      <circle cx="46" cy="536" r="4" fill="#6ee7b7"/><text x="58" y="540">LODify, free, Blender 4.2+</text>
      <circle cx="388" cy="500" r="4" fill="#6ee7b7"/><text x="400" y="504">Asset Browser, built in since 3.0</text>
      <circle cx="388" cy="518" r="4" fill="#6ee7b7"/><text x="400" y="522">Blendkit, free plan, $9.90/month Full</text>
    </g>
    <g font-size="12" fill="#9aa7b4">
      <circle cx="30" cy="598" r="4" fill="#6ee7b7"/><text x="42" y="602">free or built in</text>
      <circle cx="160" cy="598" r="4" fill="#fbbf24"/><text x="172" y="602">paid, one-time purchase</text>
    </g>
  </g>
</svg>
<figcaption>Every add-on in this guide, sorted by the pipeline step it saves. Green entries cost nothing. Amber entries are one-time purchases at the single-seat price the listing showed in September 2026.</figcaption>
</figure>
<h2>How add-ons work in Blender 4.2 and newer</h2>
<p>Blender 4.2 LTS introduced the Extensions Platform, and it changed where add-ons come from and how they update. The <a href="https://developer.blender.org/docs/release_notes/4.2/">4.2 release notes</a> describe an extension as a zip archive holding the files plus a manifest with &quot;license, copyright, permissions, useful links&quot;. The official directory is <a href="https://extensions.blender.org/about/">extensions.blender.org</a>, which &quot;only offers GNU GPL compliant software&quot;. That one rule explains the split you'll see below: free tools live on <a href="http://extensions.blender.org">extensions.blender.org</a> and install with a drag, while paid tools with a binary engine (Auto-Rig Pro's AI files, UVPackmaster's packer, Better FBX's SDK bridge) sell on Superhive or Gumroad and install from a zip.</p>
<p><strong>The online-access permission.</strong> The first time you open <code>Edit &gt; Preferences &gt; Get Extensions</code>, Blender asks you to &quot;Allow Online Access&quot;. The <a href="https://docs.blender.org/manual/en/4.2/editors/preferences/system.html">System preferences</a> page explains the switch: &quot;Add-ons that follow this setting will only connect to the internet if enabled. However, Blender cannot prevent third-party add-ons from violating this rule.&quot; So the toggle is a convention, not a firewall. An extension's manifest declares what it wants (Blendkit's asks for <code>network</code> and <code>files</code>), and the listing shows that under Permissions. Add-ons that run on your own machine don't need the network permission at all.</p>
<p><strong>Installing and updating.</strong> The <a href="https://docs.blender.org/manual/en/4.2/editors/preferences/extensions.html">Extensions preferences</a> list three routes: drag the Get button from the website into Blender, search inside Blender and click Install, or use the drop-down at the top right and pick <code>Install from Disk</code> for a zip. Extensions from a zip go into a Local Repository &quot;and no updates will be available&quot;, so paid add-ons update through the vendor's own updater or a re-download. Even platform extensions &quot;don't update automatically&quot;, per the About page: you check from the same drop-down, or turn on <code>Check for Updates on Startup</code> for the remote repository.</p>
<p><strong>Legacy add-ons still work.</strong> The release notes are explicit: &quot;Add-ons that haven't been converted to extensions yet, are still supported as legacy add-ons and can be installed from disk as usual.&quot; The <a href="https://docs.blender.org/manual/en/4.2/editors/preferences/addons.html">Add-ons preferences</a> page covers this under Installing Legacy Add-ons: click <code>Install from Disk</code>, pick the <code>.py</code> or <code>.zip</code>, then tick the checkbox to enable it. Most add-ons in this guide now ship as extensions, and Superhive marks them with a &quot;Blender Extension Compatible: Yes&quot; line.</p>
<h2>Rigging</h2>
<p><strong>Rigify</strong> (free, bundled). The <a href="https://docs.blender.org/manual/en/4.2/addons/rigging/rigify/index.html">Rigify manual</a> describes it as &quot;Automatic rigging from building-block components&quot;, licensed GPL and bundled with Blender. You add a meta-rig from <code>Add &gt; Armature</code> (Basic Human, Basic Quadruped, Human, Cat, Wolf, Horse, Shark), move its bones onto your mesh in Edit Mode, then press <code>Generate Rig</code> in the armature properties. Rigify assumes one unit is one metre, so a human should be about two units tall before you start. You get a full animator's control rig for free, and the cost is your time placing bones and painting weights. For a game export you'll want a deform-only skeleton, which is where Better FBX (below) and Auto-Rig Pro's export step earn their keep.</p>
<p><strong>Auto-Rig Pro</strong> ($50 full, $25 Lite, $162 for 10 seats). This is the category leader, with more than 65,000 sales on <a href="https://superhivemarket.com/products/auto-rig-pro">Superhive</a> and a listed range of Blender 2.93 to 5.1. The Smart tool places bones on humanoids from a few markers, and since version 3.74 an optional 400 MB AI file pack (<a href="https://lucky3d.fr/auto-rig-pro/doc/install.html">installed separately</a>) places the markers for you. The Remap tool retargets any armature's animation to any other, and the Game Engine Export module writes FBX or glTF with &quot;dedicated settings for Unity, Unreal Engine, Godot&quot;. The FAQ is honest about what it isn't: &quot;It's not a magic one click rigging solution&quot;, the artist still adjusts bone positions and weights. If you animate in Blender and want one tool that rigs, retargets, and exports, this is the one to buy.</p>
<p><strong>Cinevva Rig</strong> ($29 launch price, export half free). The <a href="/blender-addon/">Cinevva Rig add-on</a> takes the other approach: select a mesh, press Rig, get a skinned, Mixamo-named humanoid skeleton. Rigging runs on your own machine, offline, after a one-time engine download of about 2.4 GB, with no per-rig charge and no count. It supports Blender 4.2 and newer on Windows, macOS, and Linux, installs as a standard extension, and the Python is GPL-3.0 (the purchase covers engine access, activation on up to three machines, the animation catalogue, and updates). What earns it a place here is what comes with the rig: 260 CC0 animation clips (walks, runs, idles, combat, climbing, crawling, emotes) retargeted onto your character inside Blender and previewed in a browser docked in the viewport, plus game-ready export presets covered below. CC0 means no licence line in your shipped game. You don't get an animator's control rig, so if you keyframe by hand you'll still want Rigify or Auto-Rig Pro on top. There's a 14-day refund.</p>
<p><strong>The Mixamo add-on.</strong> Adobe still hosts a <a href="https://www.adobe.com/products/substance3d/plugins/mixamo-in-blender.html">Mixamo Blender add-on</a> page: a GPL-3.0 &quot;auto control-rig add-on&quot; that builds an IK control rig on a Mixamo skeleton and bakes animation in and out of it. Adobe's page doesn't state a supported Blender version. A community fork on <a href="http://extensions.blender.org">extensions.blender.org</a>, <a href="https://extensions.blender.org/add-ons/mixamo-rig/">Mixamo Rig</a> (version 1.2.2, GPL-3.0, Blender 4.2 and newer, about 69,700 downloads), describes itself as a &quot;3rd party upgrade to official addon because it is no longer supported&quot; and says the official build targets Blender 3.6. If you use Mixamo clips in 2026, install the community extension. Mixamo itself stays free with an Adobe ID, and its <a href="https://helpx.adobe.com/creative-cloud/faq/mixamo-faq.html">FAQ</a> says you can use characters and animations royalty free in commercial projects including video games, with the caveat that &quot;the auto-rigger and animation libraries are for bipedal humanoids only&quot;.</p>
<h2>Skinning</h2>
<p><strong>Voxel Heat Diffuse Skinning</strong> ($30 indie, $180 for 10 seats). Blender's Automatic Weights work well on a single watertight mesh and fall over on the way artists actually build characters: hair, eyes, armour and clothes as separate shells. The <a href="https://superhivemarket.com/products/voxel-heat-diffuse-skinning">Superhive listing</a> names the three problems it fixes, starting with the exact error message &quot;bone heat weighting: failed to find solution for one or more bones&quot;. It voxelises the character so weights diffuse through volume rather than across a broken surface, and it bundles a Surface Heat Diffuse Skinning mode, a Corrective Smooth Baker, and a Joint Alignment Tool. More than 12,500 people have paid for it, the clearest evidence in this list that skipping weight painting is worth $30. Listed for Blender 3.6 to 5.1, GPL Python with a separate compiled solver.</p>
<p>If you don't want to spend, the built-in <code>Corrective Smooth</code> modifier softens the worst bends after Automatic Weights, and the auto-riggers above produce their own weights so you rarely touch the brush at all.</p>
<h2>Animation</h2>
<p><strong>Animation Layers</strong> ($30 single, $200 for 10 seats). Tal Hershko's add-on wraps Blender's NLA editor in a layers panel that behaves like the one in Maya or a DAW: add a layer, key on top of your mocap or base cycle, adjust influence, mute or solo, then merge or bake. The <a href="https://superhivemarket.com/products/animation-layers">listing</a> states support for Blender 3.2 to 5.1 (with a note that it was updated for the 4.4 action Slots), 9,600 sales, GPL. Use it to clean mocap or add a head turn to a walk cycle without touching the original curves.</p>
<p><strong>Rokoko Studio Live</strong> (free, LGPL-3.0). Rokoko's <a href="https://github.com/Rokoko/rokoko-studio-live-blender">GitHub repository</a> streams motion capture from Rokoko Studio into Blender in real time, retargets between armatures, and handles 52 facial blendshapes. The latest tagged release is 1.4.3 from September 2025, the repository was still active in May 2026, and the README asks for Blender 2.80 or higher. You don't need Rokoko hardware to use the retargeting panel.</p>
<p><strong>MotionGen</strong> ($29 Pro, $57 Gold, $1 Lite limited to three-second clips). Despite the name, this is video-to-animation, not text-to-motion. The <a href="https://superhivemarket.com/products/motiongen">Superhive listing</a> says it extracts motion from MP4 or AVI footage entirely on your machine (one online licence check) and retargets with one click onto Rigify, Unreal Mannequin or MetaHuman, and Mixamo rigs. Listed for Blender 3.6 to 5.2 with an MIT licence, around 100 sales, and one hard requirement: &quot;Currently, only Windows and NVIDIA GPU supported&quot;.</p>
<p><strong>Mixamo clips</strong> stay the free default for a humanoid, and the community Mixamo Rig extension above turns them into something you can edit.</p>
<div class="video-embed"><iframe src="https://www.youtube.com/embed/sd5Ow20J2Z8" title="My Must-Have Blender Addons for 2026" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></div>
<div class="video-caption">SouthernShotty's January 2026 round-up of the add-ons he keeps installed. It leans toward modelling and animation rather than export, which is a useful counterweight to the pipeline focus of this guide.</div>
<h2>Export and pipeline</h2>
<p><strong>glTF 2.0 exporter</strong> (free, bundled). Reach it from <code>File &gt; Export &gt; glTF 2.0 (.glb/.gltf)</code>. The <a href="https://docs.blender.org/manual/en/4.2/addons/import_export/scene_gltf2.html">manual</a> covers what game developers need: a single <code>.glb</code> &quot;with all mesh data, image textures, and related information packed into a single binary file&quot;, Draco mesh compression under <code>Data &gt; Compression</code> with a compression level and quantization bits, WebP image output with a quality slider (&quot;If WebP is chosen, all textures will be saved as WebP, without any png/jpg fallback&quot;), and <code>Optimize Animation Size</code>, which removes duplicate keyframes. This is the exporter three.js, Babylon.js and Godot want.</p>
<p><strong>FBX exporter</strong> (free, bundled). <code>File &gt; Export &gt; FBX (.fbx)</code>. The <a href="https://docs.blender.org/manual/en/4.2/addons/import_export/scene_fbx.html">FBX manual page</a> is candid about the limits: &quot;Animation support is minimal currently&quot;, bones need an orientation correction because FBX bones are -X aligned while Blender's are Y aligned, and imported actions aren't linked to objects. It works for the common Unity and Unreal cases when you set forward and up axes correctly, apply scale, and untick <code>Add Leaf Bones</code>. When it doesn't, the next entry exists.</p>
<p><strong>Better FBX Importer &amp; Exporter</strong> ($25 indie, $150 for 10 seats). Mesh Online rewrote FBX import and export on top of the official FBX SDK, and 12,600 people have bought it because &quot;when we import some earlier and newer FBX files, it often fails&quot; is a daily experience. The <a href="https://superhivemarket.com/products/better-fbx-importer--exporter">listing</a> claims compatibility with every FBX version from 5.3 to 2020, imports FBX, DAE, OBJ, DXF and 3DS, exports mesh LODs for Unreal and Unity (version 6.2.0), supports Blender 4.2's drag and drop and Collection Exporters (version 6.1.0), and exports &quot;game-friendly armature from Rigify&quot;. It does not support IK bones. Listed for Blender 3.6 to 5.1, GPL Python with a compiled SDK bridge. If you receive FBX files from Maya or 3ds Max artists, buy this first.</p>
<p><strong>Send to Unreal</strong> (free, MIT). Epic's own <a href="https://github.com/EpicGamesExt/BlenderTools">BlenderTools</a> repository describes it as &quot;A one-click solution for sending assets from Blender to Unreal Engine&quot;, with a sibling add-on, UE to Rigify, that retargets Marketplace animation onto Rigify rigs. The last tagged release is Send to Unreal 2.4.3 (November 2023) and its <code>bl_info</code> asks for Blender 3.3 or newer, but the repository was pushed to in September 2026, so it isn't abandoned.</p>
<p><strong>Godot needs no add-on.</strong> The <a href="https://docs.godotengine.org/en/stable/tutorials/assets_pipeline/importing_3d_scenes/available_formats.html">Godot import docs</a> say the editor &quot;can directly import .blend files by calling Blender's glTF export functionality in a transparent manner&quot;, which needs Blender 3.0 or later installed (3.5 or later recommended) and, if Godot can't find it, a path set under <code>Editor Settings &gt; Filesystem &gt; Import &gt; Blender &gt; Blender Path</code>. The old Godot Blender Exporter that wrote <code>.escn</code> files &quot;is not maintained or supported in Godot 4.x&quot;. FBX imports through ufbx since Godot 4.3.</p>
<p><strong>Unity and .blend files.</strong> Unity's <a href="https://docs.unity3d.com/Manual/3D-formats.html">model formats page</a> says <code>.blend</code> files &quot;fail to import unless you have the corresponding 3D modeling software installed&quot;, so every teammate needs Blender. Export FBX instead.</p>
<p><strong>Cinevva Rig export presets</strong> (free, no key, no account, no network). The export half of the <a href="/blender-addon/">Cinevva Rig add-on</a> works without a purchase. It first shows a size analysis that splits the estimated file into geometry, textures, animation and shape keys, then applies a preset per engine: Web (GLB, Y-up, textures capped at 1024 px and re-encoded as WebP at quality 85, Draco level 6), Unity (FBX, forward -Z, up Y, FBX_SCALE_ALL, no leaf bones, textures embedded at 2048 px), Unreal (FBX, forward -Y, up Z, FBX_SCALE_NONE, primary bone axis Y and secondary X), and Godot (GLB, Y-up, no Draco because Godot 4 imports plain glTF cleanly). Against a plain Blender GLB export the presets produced files 68%, 89%, 92% and 98% smaller on four real models. If you only want the size breakdown and the axis settings done right, install it and never buy the key.</p>
<h2>Modelling and UVs for game assets</h2>
<p><strong>Hard Ops and Boxcutter</strong> ($38 for the bundle on Superhive, $19 each on Gumroad). TeamC's pair is the standard hard-surface kit: Boxcutter draws boolean cuts directly in the viewport, Hard Ops manages the resulting modifier stack, bevels, mirroring and sharpening from a single Q menu. The <a href="https://superhivemarket.com/products/hard-ops--boxcutter-ultimate-bundle">bundle listing</a> shows 47,800 sales and Blender 3.5 to 5.2, GPL. For props, weapons and vehicles it's the fastest route from block-out to bake-ready high poly, and boolean output stays triangle soup until you retopologise or decimate for the game mesh.</p>
<p><strong>UVPackmaster 4 PRO</strong> ($55 single user on Superhive, $44 on Gumroad, $199 for a 2 to 5 seat studio). A GPU-accelerated packer using CUDA and Vulkan that also runs on the CPU and every GPU at once, with grouping, stacking, alignment and a Python-scriptable engine. The <a href="https://superhivemarket.com/products/uvpackmaster">listing</a> states Blender 2.93 to 5.1 and 18,600 sales. Packing efficiency translates directly into texture memory, so this is the paid UV tool that pays back fastest on a project with many props.</p>
<p><strong>TexTools</strong> (free, GitHub). The <a href="https://github.com/franMarz/TexTools-Blender">README</a> calls it &quot;Fully compatible with Blender 3.2 and later&quot; and lists UV align, rectify, sort and randomise, texel density get and set, colour ID tools, and several bake modes. The source declares version 1.6.2, the last tagged release is 1.6.1 from March 2024, and the last commit we saw was December 2024, so it's maintained slowly. It's the free way to check that every asset in a scene shares one texel density.</p>
<p><strong>MACHIN3tools</strong> ($8 Prime, $20 DeusEx, plus $2 or $4 a year for continued updates). A collection of pie menus and small tools (smart vertex, edge and face operators, align, mirror, focus, clean up) that speeds everything up without imposing a workflow. The developer's <a href="https://machin3.gumroad.com/l/MACHIN3tools">Gumroad page</a> explains that the base version &quot;used to be called Standard and was free/pay what you want, but this has proven to be unsustainable after 6 years and less than 1% of users paying voluntarily&quot;, and states that version 1.13.12 &quot;works in Blender 4.2 LTS to 5.2 LTS&quot;. The <a href="https://superhivemarket.com/products/machin3tools">Superhive listing</a> shows 34,700 sales and GPL. If you see an older article calling it free, that changed.</p>
<p><strong>Quad Remesher</strong> ($109.90 Pro perpetual, $59.90 Indie perpetual for non-commercial use, $15.99 per three-month subscription). Exoside's auto-retopology engine turns a sculpt or a boolean mess into clean quads that deform properly under a rig. The <a href="https://exoside.com/quadremesher/quadremesher-buy/">buy page</a> lists those prices per host application, and a 30-day non-commercial trial is available. The pages we could read don't state a supported Blender range, so check the download area before buying.</p>
<figure class="guide-fig">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 470" role="img" aria-label="Horizontal bar chart of single-seat prices in US dollars for the paid Blender add-ons in this guide, September 2026: Quad Remesher Pro $109.90, UVPackmaster 4 PRO $55, Auto-Rig Pro full $50, Bake Wrangler commercial $40, Hard Ops and Boxcutter bundle $38, Voxel Heat Diffuse Skinning $30, Animation Layers $30, Cinevva Rig $29, MotionGen Pro $29, Better FBX Importer and Exporter $25, SimpleBake $20, MACHIN3tools Prime $8">
  <rect width="720" height="470" rx="14" fill="#0b1020"/>
  <g font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif">
    <text x="24" y="36" font-size="20" font-weight="800" fill="#e8edf5">Free versus paid: what one seat costs</text>
    <text x="24" y="58" font-size="13" fill="#9aa7b4">Single-user price of each paid add-on in this guide, USD, listings read September 2026</text>
    <g font-size="12" fill="#e8edf5" text-anchor="end">
      <text x="222" y="98">Quad Remesher Pro</text>
      <text x="222" y="128">UVPackmaster 4 PRO</text>
      <text x="222" y="158">Auto-Rig Pro (full)</text>
      <text x="222" y="188">Bake Wrangler (commercial)</text>
      <text x="222" y="218">Hard Ops + Boxcutter bundle</text>
      <text x="222" y="248">Voxel Heat Diffuse Skinning</text>
      <text x="222" y="278">Animation Layers</text>
      <text x="222" y="308">Cinevva Rig (launch price)</text>
      <text x="222" y="338">MotionGen Pro</text>
      <text x="222" y="368">Better FBX Importer/Exporter</text>
      <text x="222" y="398">SimpleBake</text>
      <text x="222" y="428">MACHIN3tools Prime</text>
    </g>
    <g fill="#7dd3fc">
      <rect x="230" y="84" width="459" height="18" rx="4"/>
      <rect x="230" y="114" width="230" height="18" rx="4"/>
      <rect x="230" y="144" width="209" height="18" rx="4"/>
      <rect x="230" y="174" width="167" height="18" rx="4"/>
      <rect x="230" y="204" width="159" height="18" rx="4"/>
      <rect x="230" y="234" width="125" height="18" rx="4"/>
      <rect x="230" y="264" width="125" height="18" rx="4"/>
      <rect x="230" y="294" width="121" height="18" rx="4" fill="#6ee7b7"/>
      <rect x="230" y="324" width="121" height="18" rx="4"/>
      <rect x="230" y="354" width="105" height="18" rx="4"/>
      <rect x="230" y="384" width="84" height="18" rx="4"/>
      <rect x="230" y="414" width="33" height="18" rx="4"/>
    </g>
    <g font-size="12" font-weight="700" fill="#e8edf5">
      <text x="600" y="98" fill="#0b1020">$109.90</text>
      <text x="468" y="128">$55</text>
      <text x="447" y="158">$50</text>
      <text x="405" y="188">$40</text>
      <text x="397" y="218">$38</text>
      <text x="363" y="248">$30</text>
      <text x="363" y="278">$30</text>
      <text x="359" y="308">$29</text>
      <text x="359" y="338">$29</text>
      <text x="343" y="368">$25</text>
      <text x="322" y="398">$20</text>
      <text x="271" y="428">$8</text>
    </g>
    <text x="24" y="456" font-size="12" fill="#9aa7b4">Not shown because they cost $0: Rigify, glTF and FBX exporters, Decimate, Asset Browser, Rokoko Studio Live, Send to Unreal, TexTools, LODGen, LODify, Blendkit free plan.</text>
  </g>
</svg>
<figcaption>Single-seat prices of the paid add-ons covered here. Half the tools in this guide are free or already inside Blender, and the entire paid list adds up to under 470 US dollars if you bought one seat of everything.</figcaption>
</figure>
<h2>Baking and texturing</h2>
<p><strong>SimpleBake</strong> ($20 single user, $60 for 2 to 5 users, $80 unlimited). The most-bought baking add-on on Superhive at 16,100 sales. It bakes PBR channels from any Principled BSDF and Emission setup, mixes included, handles high-to-low baking with automatic matching by name or position, packs channels, bakes decals and AOVs, and can push the result straight to Sketchfab. One caveat on currency: the <a href="https://superhivemarket.com/products/simplebake---simple-pbr-and-other-baking-in-blender-2">listing</a> we could read dates from November 2025 and stated Blender 4.2 to 4.5, so check the current range before you buy for Blender 5.</p>
<p><strong>Bake Wrangler</strong> ($40 commercial, $25 indie). A node-based baker: you wire objects, bake passes and outputs into a tree that lives in the file and can be reused across projects. The <a href="https://superhivemarket.com/products/bake-wrangler">listing</a> shows Blender 4.2 to 5.0, GPL, and around 800 sales, so it's a smaller community than SimpleBake but the right shape for a studio that bakes the same way every time.</p>
<p><strong>Substance 3D add-on for Blender</strong> (free add-on, needs Substance materials). Adobe's <a href="https://www.adobe.com/products/substance3d/plugins/substance-in-blender.html">add-on page</a> says it lets you &quot;Load your own Substance materials or from the Adobe Substance 3D Assets platform and attach them to objects directly in Blender&quot;, generating the texture set and feeding it into the BSDF, on Windows, macOS and Linux. The add-on is a free download. The materials are the paid part, through a Substance 3D plan or purchased <code>.sbsar</code> files, and Adobe's page doesn't quote a price, so we won't either.</p>
<h2>LODs and optimisation</h2>
<p><strong>Decimate modifier</strong> (free, bundled). The <a href="https://docs.blender.org/manual/en/4.2/modeling/modifiers/generate/decimate.html">manual</a> gives it three modes: <code>Collapse</code> merges vertices progressively with a <code>Ratio</code> slider (0.5 keeps about half the faces, counted in triangles), <code>Un-Subdivide</code> reverses grid subdivision, and <code>Planar</code> removes detail on flat surfaces. Tick <code>Symmetry</code> to keep a character mirrored and <code>Triangulate</code> to see the real game-engine count. The modifier panel shows the remaining face count, which is the number you're budgeting.</p>
<p><strong>LODGen</strong> (free, GPL-3.0, Blender 4.5 and newer). A 15 KB extension on <a href="https://extensions.blender.org/add-ons/lod-gen/">extensions.blender.org</a> that takes selected meshes, applies progressive Decimate steps (default 0.5 scale, six iterations), hides the originals, and drops the results into per-object LOD collections. Version 0.0.5 (August 2025) needs 4.5 because it dropped deprecated API calls, and the page tells 4.4 users to stay on 0.0.4. Better FBX or the standard FBX exporter can then carry the chain into Unreal or Unity.</p>
<p><strong>LODify</strong> (free, GPL-3.0, Blender 4.2 and newer). Broader than LODGen: the <a href="https://extensions.blender.org/add-ons/lodify-optimizer/">listing</a> covers texture downsizing based on screen coverage from the active camera, a geometry LOD system with Decimate or Geometry Nodes, and viewport display culling by distance. The texture scanner alone is worth running before you ship a level.</p>
<p>For web builds, run the exported GLB through the <a href="/tools/glb-optimizer">GLB optimizer</a> or follow the <a href="/guides/optimize-glb-for-web">optimize GLB for web</a> guide, where texture size and Draco settings matter more than triangle count.</p>
<h2>Asset management</h2>
<p><strong>Asset Browser</strong> (free, bundled). Introduced in Blender 3.0 per the <a href="https://docs.blender.org/manual/en/4.2/editors/asset_browser.html">manual</a>, the Asset Browser shows any data-block you've marked as an asset (<code>Object &gt; Asset &gt; Mark as Asset</code>), organised into catalogs you can nest by dragging, with the special &quot;Current File&quot; library always available. Point a library at your project's <code>assets/</code> folder and every modular wall, prop and material is a drag away, which makes it the most under-used built-in feature for game teams.</p>
<p><strong>Blendkit, formerly BlenderKit</strong> (free plan, $9.90 a month Full, $29 a month Business). The <a href="https://www.blendkit.com/plans/pricing/">pricing page</a> lists 23,190 models, 38,804 materials, 4,995 HDRIs and 1,271 brushes on the free tier, drag-and-dropped from a panel in the viewport. The add-on itself is <a href="https://github.com/BlenderKit/BlenderKit">GPL-2.0-or-later on GitHub</a>, requires Blender 3.0 or newer, and declares <code>network</code> and <code>files</code> permissions in its manifest. Check each asset's licence before it goes into a commercial game (our <a href="/guides/game-asset-licenses">game asset licences</a> guide explains what to look for) and read the <a href="/guides/free-3d-model-sites">free 3D model sites</a> round-up for CC0 alternatives.</p>
<h2>A starter kit for $0</h2>
<p>You can run a complete Blender game pipeline without spending anything, and it's worth knowing exactly which pieces are free before you pay for shortcuts.</p>
<figure class="guide-fig">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 420" role="img" aria-label="Starter kit card listing a zero-dollar Blender game pipeline: Rigify for rigging, Automatic Weights plus Corrective Smooth for skinning, Mixamo clips through the Mixamo Rig extension or Rokoko Studio Live for animation, TexTools for UVs, the built-in glTF and FBX exporters plus Godot's direct .blend import for export, Send to Unreal for Unreal, Decimate plus LODGen for LODs, Asset Browser plus Blendkit free plan for assets, total $0">
  <rect width="720" height="420" rx="14" fill="#0b1020"/>
  <g font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif">
    <text x="24" y="36" font-size="20" font-weight="800" fill="#e8edf5">The $0 starter kit</text>
    <text x="24" y="58" font-size="13" fill="#9aa7b4">A complete Blender-to-engine pipeline using only bundled features and free extensions</text>
    <rect x="24" y="78" width="672" height="296" rx="10" fill="#121a31" stroke="#2a3655" stroke-width="1"/>
    <g font-size="13" fill="#9aa7b4">
      <text x="44" y="108">Rig</text>
      <text x="44" y="140">Skin</text>
      <text x="44" y="172">Animate</text>
      <text x="44" y="204">UVs</text>
      <text x="44" y="236">Export</text>
      <text x="44" y="268">Unreal</text>
      <text x="44" y="300">LODs</text>
      <text x="44" y="332">Assets</text>
    </g>
    <g font-size="13" fill="#e8edf5">
      <text x="140" y="108">Rigify, bundled with Blender</text>
      <text x="140" y="140">Automatic Weights + Corrective Smooth modifier</text>
      <text x="140" y="172">Mixamo clips via the Mixamo Rig extension, or Rokoko Studio Live retargeting</text>
      <text x="140" y="204">TexTools for texel density, align and rectify</text>
      <text x="140" y="236">glTF 2.0 exporter (web, Godot), FBX exporter (Unity), or let Godot read the .blend</text>
      <text x="140" y="268">Send to Unreal, MIT, from Epic</text>
      <text x="140" y="300">Decimate modifier, then LODGen (4.5+) or LODify (4.2+) for the chain</text>
      <text x="140" y="332">Asset Browser + Blendkit free plan</text>
    </g>
    <g stroke="#2a3655" stroke-width="1">
      <line x1="44" y1="120" x2="676" y2="120"/>
      <line x1="44" y1="152" x2="676" y2="152"/>
      <line x1="44" y1="184" x2="676" y2="184"/>
      <line x1="44" y1="216" x2="676" y2="216"/>
      <line x1="44" y1="248" x2="676" y2="248"/>
      <line x1="44" y1="280" x2="676" y2="280"/>
      <line x1="44" y1="312" x2="676" y2="312"/>
    </g>
    <rect x="24" y="386" width="672" height="1" fill="#2a3655"/>
    <text x="24" y="410" font-size="14" font-weight="700" fill="#6ee7b7">Total: $0. First paid upgrade worth making: Better FBX ($25) if you ship FBX, or Voxel Heat Diffuse Skinning ($30) if weights keep failing.</text>
  </g>
</svg>
<figcaption>Everything on this card is either inside Blender already or a free extension with an open licence. The paid tools in this guide replace one row each, which is how to decide what to buy first.</figcaption>
</figure>
<p>Start with Rigify and Automatic Weights. When a rig fails on a character with separate shells, Voxel Heat Diffuse Skinning earns its $30. When a contractor's FBX imports with missing materials or a folded skeleton, buy Better FBX. When you're packing UVs for the fortieth prop, buy UVPackmaster. Buy the tool the day the free path costs you an afternoon, not before.</p>
<h2>Common Questions</h2>
<h3>What are the best Blender add-ons for game development?</h3>
<p>The ones on the steps you repeat: Auto-Rig Pro or Rigify for rigging, Voxel Heat Diffuse Skinning for weights, Animation Layers for editing motion, Better FBX Importer &amp; Exporter for files that won't import, UVPackmaster 4 for packing, SimpleBake for textures, and the built-in glTF exporter for the web and Godot. The quick reference table above lists prices and Blender versions for each as of September 2026.</p>
<h3>Are Blender add-ons free?</h3>
<p>Many are. Everything on <a href="http://extensions.blender.org">extensions.blender.org</a> is free and GPL-compliant by the platform's rules, and Blender bundles Rigify, the glTF and FBX exporters, the Decimate modifier and the Asset Browser. Paid add-ons on Superhive and Gumroad in this guide run from $8 (MACHIN3tools Prime) to $109.90 (Quad Remesher Pro), almost all as one-time purchases rather than subscriptions.</p>
<h3>What is the best Blender animation add-on?</h3>
<p>For editing motion, Animation Layers ($30) is the standard choice, since it turns the NLA into a layers workflow. For getting motion in, Rokoko Studio Live is free and open source and Mixamo clips are free through the community Mixamo Rig extension. MotionGen ($29) converts video to animation but only on Windows with an NVIDIA GPU.</p>
<h3>What is the best Blender rigging add-on?</h3>
<p>Auto-Rig Pro ($50) if you want a full animator's control rig with retargeting and engine export, and it has more than 65,000 sales to back that up. Rigify is free and bundled if you can spend the time placing bones, and the one-purchase auto-rigger in the rigging section above is the cheap route when you need a skinned skeleton and animations rather than a hand-animation control rig.</p>
<h3>Do old add-ons still work in Blender 4.2 and later?</h3>
<p>Yes. Blender's 4.2 release notes say legacy add-ons &quot;are still supported as legacy add-ons and can be installed from disk as usual&quot;. Use <code>Install from Disk</code> in the Get Extensions or Add-ons preferences and pick the <code>.py</code> or <code>.zip</code>. What changed is distribution: <a href="http://extensions.blender.org">extensions.blender.org</a> only lists GPL-compliant extensions with a manifest, and updates for anything installed from disk are manual.</p>
<h3>What is the best Blender export add-on for Unity or Unreal?</h3>
<p>Better FBX Importer &amp; Exporter ($25) for FBX correctness, because it uses the official FBX SDK and handles versions the built-in exporter refuses. Send to Unreal (free, MIT) if you want one click from Blender into an open Unreal editor. For Godot you don't need an add-on at all: it imports <code>.blend</code> files directly when Blender 3.0 or newer is installed, and glTF is its recommended format.</p>
<h3>Does the Mixamo add-on for Blender still work?</h3>
<p>Adobe still hosts the GPL-3.0 add-on but doesn't state a current Blender version, and the community Mixamo Rig extension on <a href="http://extensions.blender.org">extensions.blender.org</a> says the official build is no longer supported and targets Blender 3.6. Install Mixamo Rig (version 1.2.2, Blender 4.2 and newer) instead. Mixamo's own service and its royalty-free licence for games are unchanged.</p>
<h2>Related</h2>
<ul>
<li><a href="/guides/auto-rig-pro-alternatives">Auto-Rig Pro alternatives</a>: the rigging comparison in more depth, free and paid.</li>
<li><a href="/guides/blender-to-unity-export-checklist">Blender to Unity export checklist</a>: axes, scale, leaf bones and materials, step by step.</li>
<li><a href="/guides/optimize-glb-for-web">Optimize GLB for the web</a>: Draco, texture caps and animation trimming for browser games.</li>
<li><a href="/guides/free-3d-model-sites">Free 3D model sites</a>: where to get CC0 props and characters to rig.</li>
<li><a href="/guides/game-asset-licenses">Game asset licences</a>: what CC0, CC-BY and store licences let you ship.</li>
<li><a href="/blender-addon/">Cinevva Rig for Blender</a>: the add-on, its free export half, and the launch price.</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Blender 5 for Game Artists: What Changed in Rigging, Animation, and Export (2026)]]></title>
            <link>https://app.cinevva.com/guides/blender-5-for-game-artists</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/blender-5-for-game-artists</guid>
            <pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[What changed in Blender 5.0, 5.1 and 5.2 LTS for game artists: slotted actions, the C++ FBX importer, glTF meshopt, add-on breaks, and which version to install.]]></description>
            <content:encoded><![CDATA[<h1>Blender 5 for Game Artists: What Changed in Rigging, Animation, and Export (2026)</h1>
<p><em>Last updated: September 2026.</em></p>
<figure class="guide-hero">
<img src="https://cdn.cinevva.com/guides/blender-5-for-game-artists-hero.jpg?v=1" alt="Rigged low-poly game character in Blender 5 beside a timeline of version badges" width="1216" height="640">
</figure>
<style>
.guide-hero { margin: 1.25rem 0 1.75rem; }
.guide-hero img { width: 100%; height: auto; border-radius: 12px; display: block; }
.guide-fig { margin: 1.5rem 0; }
.guide-fig > a { display: block; }
.guide-fig img { width: 100%; height: auto; border-radius: 10px; border: 1px solid var(--vp-c-divider); display: block; }
.guide-fig svg { width: 100%; height: auto; display: block; }
.guide-fig figcaption { font-size: 0.9rem; color: var(--vp-c-text-2); margin: 0.5rem 0 0; }
.video-embed { position: relative; width: 100%; max-width: 720px; margin: 1.5rem 0; }
.video-embed iframe { width: 100%; aspect-ratio: 16/9; border-radius: 8px; }
.video-caption { font-size: 0.9rem; color: var(--vp-c-text-2); margin-top: 0.5rem; margin-bottom: 1.5rem; }
</style>
<p>If you make characters and props for a game engine, install Blender 5.2 LTS. It shipped on July 14, 2026, gets bug fixes until July 2028, and it's the first long-term release that contains every Blender 5 change at once: slotted actions with the old Action API gone, the C++ FBX importer as the default, meshopt compression in the glTF exporter, and a Python 3.13 runtime that add-ons had to be rebuilt for. Blender 4.2 LTS stopped receiving fixes in July 2026, so if you're still on it, 5.2 LTS is the move, with 4.5 LTS as the fallback for Intel Macs and older GPUs.</p>
<p>We refresh this page at every Blender release. This revision is dated September 6, 2026 and covers 5.0, 5.1, 5.2 LTS and the 5.3 alpha.</p>
<h2>Quick answer</h2>
<ul>
<li><strong>Production version today:</strong> Blender 5.2 LTS (5.2.1, August 25, 2026). Supported to July 2028. Source: the <a href="https://www.blender.org/download/lts/">LTS page</a>.</li>
<li><strong>Still on 4.2 LTS?</strong> Its two years ended in July 2026 (last update 4.2.23). Move to 5.2 LTS, or to 4.5 LTS if your Mac is Intel or your GPU is older than a GeForce 900, Radeon RX 400 or Intel Kaby Lake.</li>
<li><strong>Biggest animation change:</strong> Actions have slots (since 4.4) and the legacy <code>action.fcurves</code> and <code>action.groups</code> API was removed in 5.0. Any exporter or retargeting script written before 4.4 breaks. Layered animation is still not in the UI as of 5.2 LTS.</li>
<li><strong>Biggest export change:</strong> the C++ FBX importer is the default in 5.0, Collada is gone, and the glTF exporter gained <code>EXT_meshopt_compression</code> and <code>KHR_meshopt_compression</code> in 5.2.</li>
<li><strong>Biggest add-on change:</strong> 5.1 moved to Python 3.13, so any extension that bundles compiled wheels needs a <code>cp313</code> build. 5.0 removed dict-style access to <code>bpy.props</code> data and the BGL drawing API.</li>
<li><strong>Blender 5.3</strong> is in alpha until September 30, 2026 and is scheduled for November 10, 2026. It makes Vulkan the default backend on Windows and Linux.</li>
</ul>
<h2>Quick reference</h2>
<p>Dates come from the <a href="https://developer.blender.org/docs/release_notes/">Blender release notes index</a>, the <a href="https://www.blender.org/download/lts/">LTS page</a> and the <a href="https://projects.blender.org/blender/blender/milestone/34">5.3 milestone</a>.</p>
<table>
<thead>
<tr>
<th>Version</th>
<th>Released</th>
<th>Status in September 2026</th>
<th>What it means for game assets</th>
</tr>
</thead>
<tbody>
<tr>
<td>4.2 LTS</td>
<td>July 16, 2024</td>
<td>Support ended July 2026 (4.2.23)</td>
<td>Extensions platform arrived. Legacy Action API still present</td>
</tr>
<tr>
<td>4.4</td>
<td>March 18, 2025</td>
<td>Unsupported</td>
<td>Slotted actions introduced, legacy API deprecated</td>
</tr>
<tr>
<td>4.5 LTS</td>
<td>July 15, 2025</td>
<td>Supported to July 2027 (4.5.13)</td>
<td>Last Intel Mac build, last Collada, Vulkan officially supported</td>
</tr>
<tr>
<td>5.0</td>
<td>November 18, 2025</td>
<td>Unsupported (5.0.1, December 16, 2025)</td>
<td>Legacy Action API removed, C++ FBX import default, new file format</td>
</tr>
<tr>
<td>5.1</td>
<td>March 17, 2026</td>
<td>Unsupported (5.1.2, May 19, 2026)</td>
<td>Python 3.13, 2x faster action evaluation, FBX shape key normals</td>
</tr>
<tr>
<td>5.2 LTS</td>
<td>July 14, 2026</td>
<td>Current stable, supported to July 2028 (5.2.1)</td>
<td>glTF meshopt, Duplicate and Rename bones, EEVEE raytracing overhaul</td>
</tr>
<tr>
<td>5.3</td>
<td>November 10, 2026 (planned)</td>
<td>Alpha until September 30, 2026</td>
<td>Vulkan default on Windows and Linux, rotation mode conversion</td>
</tr>
<tr>
<td>6.0</td>
<td>November 2027 (planned)</td>
<td>Not started</td>
<td>Listed on the compatibility page, no details yet</td>
</tr>
</tbody>
</table>
<figure class="guide-fig">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 300" role="img" aria-label="Blender release timeline from July 2024 to November 2027: 4.2 LTS July 16 2024 supported to July 2026, 4.4 March 18 2025, 4.5 LTS July 15 2025 supported to July 2027, 5.0 November 18 2025, 5.1 March 17 2026, 5.2 LTS July 14 2026 supported to July 2028, 5.3 planned November 10 2026, 6.0 planned November 2027. LTS releases marked in amber with support bars.">
  <rect width="720" height="300" rx="14" fill="#0b1020"/>
  <g font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif">
    <text x="24" y="38" font-size="20" font-weight="800" fill="#e8edf5">Blender releases, July 2024 to November 2027</text>
    <text x="24" y="60" font-size="13" fill="#9aa7b4">Amber = LTS, two years of fixes. Grey = a regular release, supported only until the next one.</text>
    <line x1="40" y1="160" x2="680" y2="160" stroke="#334155" stroke-width="3"/>
    <line x1="488" y1="150" x2="680" y2="150" stroke="#0b1020" stroke-width="0"/>
    <rect x="40" y="200" width="384" height="8" rx="4" fill="#fbbf24" opacity="0.35"/>
    <text x="44" y="224" font-size="11" fill="#fbbf24">4.2 LTS fixes: Jul 2024 to Jul 2026</text>
    <rect x="232" y="236" width="384" height="8" rx="4" fill="#fbbf24" opacity="0.55"/>
    <text x="236" y="260" font-size="11" fill="#fbbf24">4.5 LTS fixes: Jul 2025 to Jul 2027</text>
    <rect x="424" y="272" width="256" height="8" rx="4" fill="#fbbf24" opacity="0.9"/>
    <text x="428" y="294" font-size="11" fill="#fbbf24">5.2 LTS fixes: Jul 2026 to Jul 2028</text>
    <circle cx="40" cy="160" r="9" fill="#fbbf24"/>
    <text x="40" y="96" font-size="14" font-weight="700" fill="#fbbf24" text-anchor="middle">4.2 LTS</text>
    <text x="40" y="112" font-size="11" fill="#9aa7b4" text-anchor="middle">Jul 16, 2024</text>
    <circle cx="168" cy="160" r="7" fill="#64748b"/>
    <text x="168" y="134" font-size="13" font-weight="700" fill="#cbd5e1" text-anchor="middle">4.4</text>
    <text x="168" y="185" font-size="11" fill="#9aa7b4" text-anchor="middle">Mar 18, 2025</text>
    <circle cx="232" cy="160" r="9" fill="#fbbf24"/>
    <text x="232" y="96" font-size="14" font-weight="700" fill="#fbbf24" text-anchor="middle">4.5 LTS</text>
    <text x="232" y="112" font-size="11" fill="#9aa7b4" text-anchor="middle">Jul 15, 2025</text>
    <circle cx="296" cy="160" r="7" fill="#7dd3fc"/>
    <text x="296" y="134" font-size="13" font-weight="700" fill="#7dd3fc" text-anchor="middle">5.0</text>
    <text x="296" y="185" font-size="11" fill="#9aa7b4" text-anchor="middle">Nov 18, 2025</text>
    <circle cx="360" cy="160" r="7" fill="#7dd3fc"/>
    <text x="360" y="96" font-size="13" font-weight="700" fill="#7dd3fc" text-anchor="middle">5.1</text>
    <text x="360" y="112" font-size="11" fill="#9aa7b4" text-anchor="middle">Mar 17, 2026</text>
    <circle cx="424" cy="160" r="9" fill="#fbbf24"/>
    <text x="424" y="134" font-size="14" font-weight="700" fill="#fbbf24" text-anchor="middle">5.2 LTS</text>
    <text x="424" y="185" font-size="11" fill="#9aa7b4" text-anchor="middle">Jul 14, 2026</text>
    <circle cx="488" cy="160" r="7" fill="#c8a8ff" stroke="#c8a8ff" stroke-dasharray="3 2" fill-opacity="0.35" stroke-width="2"/>
    <text x="488" y="96" font-size="13" font-weight="700" fill="#c8a8ff" text-anchor="middle">5.3</text>
    <text x="488" y="112" font-size="11" fill="#9aa7b4" text-anchor="middle">Nov 10, 2026 planned</text>
    <circle cx="680" cy="160" r="7" fill="#c8a8ff" stroke="#c8a8ff" stroke-dasharray="3 2" fill-opacity="0.35" stroke-width="2"/>
    <text x="672" y="134" font-size="13" font-weight="700" fill="#c8a8ff" text-anchor="middle">6.0</text>
    <text x="668" y="185" font-size="11" fill="#9aa7b4" text-anchor="middle">Nov 2027 planned</text>
    <line x1="584" y1="150" x2="584" y2="170" stroke="#fb7185" stroke-width="2"/>
    <text x="584" y="144" font-size="10" fill="#fb7185" text-anchor="middle">today</text>
  </g>
</svg>
<figcaption>Three releases a year, one of them LTS. The regular releases (grey and blue) are supported only until the next release, so 5.0 and 5.1 are already unsupported. The 5.3 and 6.0 dates are the planned schedule from the Blender milestones and compatibility page, not promises.</figcaption>
</figure>
<h2>Which version to use for production, and why</h2>
<p>Blender's <a href="https://developer.blender.org/docs/handbook/release_process/release_cycle/">release cycle</a> targets a new version every four months, and the <a href="https://developer.blender.org/docs/release_notes/">release notes index</a> states the support rule plainly: every release is supported until its successor, and once a year an LTS version is maintained for two years. The <a href="https://www.blender.org/download/lts/">LTS page</a> adds the part that matters for a pipeline: an LTS version &quot;will not have any new features, API changes or improvements&quot;, only critical fixes ported from the current release.</p>
<p>That's the whole argument for 5.2 LTS. A game project runs longer than four months. Build on 5.1 and your only path to a fix after July 2026 is 5.2, with whatever changes it brings. Build on 5.2 LTS and you keep the same Python API, exporters and file format until July 2028, with 4.5 LTS overlapping until July 2027 if a studio you work with hasn't moved yet.</p>
<p>Two groups should pick 4.5 LTS instead. Intel Mac owners, because the <a href="https://www.blender.org/download/requirements/">requirements page</a> says 4.5 LTS is the last release to support Intel, and 5.0 and later require Apple Silicon on macOS 13 or newer. And anyone on an older GPU, because the <a href="https://developer.blender.org/docs/release_notes/compatibility/">compatibility page</a> raised the 5.0 minimum to NVIDIA GeForce 900, AMD Radeon RX 400 and Intel Kaby Lake. Older cards may still run it, but bugs on them won't be fixed.</p>
<p>Don't mix versions casually. The compatibility page says blend files created with 5.0 and later &quot;can only be opened by Blender 4.5 or later&quot;, and older versions &quot;will report them as invalid&quot;. A teammate on 4.2 can't open your 5.2 files at all.</p>
<h2>What changed for animation</h2>
<p><strong>Slotted actions are the foundation, and the old API is gone.</strong> The <a href="https://developer.blender.org/docs/release_notes/4.4/animation_rigging/">4.4 release notes</a> introduced slots: &quot;slots make it possible to store the animation of multiple 'things' in the same Action&quot;. A walk cycle can carry the bone curves in one slot and the shape key curves in another. Every action in every file is slotted now, and old actions were upgraded with a single &quot;Legacy Slot&quot;. The <a href="https://docs.blender.org/manual/en/5.2/animation/actions.html">5.2 manual</a> puts it simply: a data-block &quot;specifies both an action and a slot within that action&quot;.</p>
<p>For scripts, the <a href="https://developer.blender.org/docs/release_notes/5.0/python_api/">5.0 Python notes</a> are the breaking point: &quot;The legacy <code>Action</code> API has been removed. This covered the properties <code>action.fcurves</code>, <code>action.groups</code>, and <code>action.id_root</code>.&quot; We confirmed it on a local 5.0.1 build: <code>bpy.data.actions.new('t').fcurves</code> no longer exists, while <code>.slots</code> and <code>.layers</code> do. A batch exporter or bake script from the 4.2 days fails on its first <code>action.fcurves</code> call. The fix is in the same notes: get a channelbag with <code>bpy_extras.anim_utils.action_ensure_channelbag_for_slot(action, action_slot)</code> and call <code>channelbag.fcurves.find()</code>, <code>.new()</code> or the new <code>.ensure()</code>. The <a href="https://developer.blender.org/docs/release_notes/4.4/upgrading/slotted_actions/">4.4 upgrade guide</a> has side-by-side examples.</p>
<p>One behaviour change trips people who never touch Python. Since 4.4, assigning an Action also has to pick a slot, and the auto-assignment rules deliberately don't pick &quot;the only slot&quot; for a plain assignment, so that assigning Cube's action to Suzanne and keying her creates a new slot instead of overwriting her with Cube's motion. If you assign an action and nothing moves, look at the slot selector next to the action name.</p>
<p><strong>Layered animation is still not in the UI.</strong> Project Baklava, described in <a href="https://code.blender.org/2024/02/animation-2025-progress-planning/">Animation 2025: Progress and Planning</a>, has two pillars: multi-ID animation (that became slots) and layers. The <a href="https://code.blender.org/2025/01/layered-animation-workshop-2024/">Layered Animation Workshop 2024</a> post settled a minimal feature set: named, lockable, mutable layers with replace and combine blend modes, animatable influence and a bake-down. As of 5.2 LTS none of it has shipped. The manual says the layers and strips under every action are &quot;not currently exposed in the UI&quot;, the 5.0 to 5.2 notes contain no layer editor, and the <a href="https://code.blender.org/2026/02/winter-of-quality-2026/">Winter of Quality 2026</a> report lists only documentation work on it. Additive layers for game animation still happen in the NLA or in the engine.</p>
<p><strong>The NLA didn't change structurally.</strong> Tracks and strips work as before per the <a href="https://docs.blender.org/manual/en/5.2/editors/nla/introduction.html">NLA manual</a>. What changed is how exporters read it: the glTF manual notes that &quot;with Blender 4.4, and the introduction of slotted actions, this default behavior has been changed. Now, tracks are merged by the action they are using&quot;, not by name. More in the export section.</p>
<p><strong>Performance: 5.1 roughly doubled action evaluation.</strong> The <a href="https://developer.blender.org/docs/release_notes/5.1/animation_rigging/">5.1 animation notes</a> benchmarked a 2,600-bone armature keyed for about 1,000 frames at 32.8 fps in 5.0 against 74.1 fps in 5.1 on 4 threads, and a million-vertex shape key mesh went from 39.2 to 158.7 fps on 24 threads. A production character file improved 4 to 14 percent, so the win is for heavy rigs and dense blend shapes.</p>
<p><strong>Pose library.</strong> The asset-based pose library is unchanged in shape, and since a pose asset is a one-frame action it can carry slots, which the <a href="https://docs.blender.org/manual/en/5.2/animation/armatures/posing/editing/pose_library.html">manual</a> recommends against for generic poses (&quot;use single-slot actions&quot;). 5.0 removed the converter for 2.93-era pose libraries, so convert those in 4.5 first. 5.2 corrects rotation mode when a pose asset and the bone differ.</p>
<p><strong>Smaller items.</strong> 5.1 added a Replace Action operator (<code>Object &gt; Animation</code> or <code>Pose &gt; Animation</code>) that swaps an action on every object using it. 5.2 added <code>Select &gt; Select by Type</code> in the Dope Sheet, playback loop modes, and turned on the &quot;Only Insert Available&quot; preference by default, so pressing I now keys only channels that already exist unless you change it back. 5.3 alpha adds <code>anim.rotation_mode_convert</code> on Ctrl+R and deprecates Rigify's own <code>pos.convert_rotation</code>.</p>
<h2>What changed for rigging</h2>
<p><strong>Bones on instanced armatures.</strong> The <a href="https://developer.blender.org/docs/release_notes/5.0/animation_rigging/">5.0 animation and rigging notes</a> moved bone visibility and selection in Object and Pose mode onto the pose bone, so two instances of the same armature can hide and select bones independently. The cost is an API break: <code>bpy.data.armatures[...].bones[0].select</code> was removed, <code>bones[0].hide</code> now affects edit-bone visibility only, and Pose mode uses <code>object.pose.bones[0].hide</code> and <code>.select</code>. Rig UI scripts that toggle bone visibility need the new path, and <code>anim.version_bone_hide_property</code> moves animated hide curves for you.</p>
<p><strong>New constraint and custom-shape options.</strong> 5.0 added the Geometry Attribute constraint, which reads a vector, quaternion or matrix attribute from geometry and applies it to a bone's transform, plus two Custom Shape options, Affect Gizmo and Use As Pivot.</p>
<p><strong>Weight tools.</strong> The <a href="https://developer.blender.org/docs/release_notes/4.5/animation_rigging/">4.5 notes</a> made the vertex group Assign button respect auto-normalize, and the 5.1 notes added loop selection in Weight Paint mode when vertex selection is on. There is no new skinning algorithm in 5.x: Automatic Weights is still bone heat. That's why Voxel Heat Diffuse Skinning keeps selling on Superhive at around $30, and why one-click riggers exist. If you'd rather not paint weights at all on a humanoid, the <a href="/blender-addon/">Cinevva Rig add-on</a> rigs a mesh into a skinned, Mixamo-named skeleton on your own machine, offline, for a one-time $29 launch price, and it declares Blender 4.2.0 as its minimum so it runs on 4.2, 4.5 and every 5.x release on Windows, macOS and Linux.</p>
<p><strong>Armature editing quality of life in 5.2.</strong> The <a href="https://developer.blender.org/docs/release_notes/5.2/animation_rigging/">5.2 notes</a> added <code>Duplicate and Rename</code> in the Armature menu, which duplicates selected bones and runs a search and replace on the name so you stop getting <code>.001</code> suffixes when mirroring a chain by hand. Bone parenting gained a Head/Tail slider, adding a bone exposes Space, Align, Length and Deform in the redo panel, and Copy Constraints joined the Ctrl+L Link/Transfer Data menu. In-between tools (breakdowner and friends) now work in Object mode under <code>Object &gt; Animation &gt; In-Betweens</code>.</p>
<p><strong>Rigify.</strong> Rigify is still the bundled, free generator and the <a href="https://docs.blender.org/manual/en/5.2/addons/rigify/introduction.html">manual</a> still describes the same deal: it &quot;only automates the creation of the rig controls and bones. It does not attach the rig to a mesh, so you still have to do skinning etc. yourself&quot;. The 5.x release notes carry almost nothing Rigify-specific beyond a 5.1.x UI fix and the 5.3 deprecation above. Auto-Rig Pro, the paid category leader, is a third-party extension and its 5.x compatibility is the author's to declare, which brings us to add-ons in a moment.</p>
<p><strong>Shape keys.</strong> 5.0 rebuilt the shape key list with multi-select and drag and drop, and added Make Basis. 5.1 added Apply to Basis, which bakes selected shape keys into the base mesh and deletes them, a handy step before export when a generator left you with corrective shapes you don't want in the GLB.</p>
<h2>What changed for import and export</h2>
<p><strong>FBX.</strong> The <a href="https://developer.blender.org/docs/release_notes/5.0/pipeline_io/">5.0 pipeline notes</a> made the C++ FBX importer (experimental in 4.5) the default and marked the Python importer legacy: add-ons using <code>bpy.ops.import_scene.fbx</code> &quot;are advised to switch to <code>bpy.ops.wm.fbx_import</code>&quot;. The <a href="https://docs.blender.org/manual/en/5.2/files/import_export/fbx.html">FBX manual</a> describes what the new importer does with animation: &quot;Each FBX 'take' is imported as a separate Action, with each animated object assigned to its own Action Slot.&quot; Export is unchanged in mechanism: <code>File &gt; Export &gt; FBX (.fbx)</code> still runs the Python add-on with the same Forward, Up, Apply Scalings, Add Leaf Bones and Bake Animation options. One real export fix landed in 5.1: the exporter &quot;now also exports shapekey normals, when exporting normals for the base mesh is enabled&quot;, which the notes say solves &quot;some import issues with some game engines&quot;. Better FBX Importer and Exporter still sells for a reason: the built-in exporter's own Missing list in the manual includes vertex shape keys and material textures.</p>
<p><strong>glTF.</strong> The exporter got the most game-relevant additions. The <a href="https://developer.blender.org/docs/release_notes/5.2/pipeline_io/">5.2 notes</a> list <code>EXT_meshopt_compression</code> and <code>KHR_meshopt_compression</code> export and import behind a new Data &gt; Meshopt Compression panel, official KHR primitive attributes, point clouds, iridescence and dispersion materials, and hooks that can stop the export. Draco is still there. The 5.3 alpha adds Animation Pointer for custom properties. The <a href="https://docs.blender.org/manual/en/5.2/addons/scene_gltf2.html">glTF manual</a> documents the slot-era import behaviour: &quot;Each animation will be imported as a single action, with multiple slots if the animation affects multiple objects.&quot; On export, the default Actions mode exports an action only if it is active or stashed to an NLA track (&quot;If you have multiple actions you want to export, make sure they are stashed!&quot;), and Merge Animation is now &quot;by Action (using slot), by NLA Track Name, or no merge&quot;. If your clips merged unexpectedly after upgrading past 4.4, that setting is the reason.</p>
<p><strong>USD.</strong> The <a href="https://docs.blender.org/manual/en/5.2/files/import_export/usd.html">USD manual</a> imports USD skeletons as armatures and blend shapes as shape keys, and exports armatures and Armature-modifier meshes as USD skeletons and skinned meshes, with two stated limits: &quot;Modifiers in addition to Armature modifiers will not be applied&quot; and &quot;Bendy bones are not supported&quot;. 5.1 made mesh export write indexed UVs so other apps can rebuild UV islands, and 5.2 added colour space tagging on export and conversion on import.</p>
<p><strong>Collada is gone.</strong> Removed in 5.0. If an old pipeline still emits <code>.dae</code>, 4.5 LTS is the last version that reads it. And 5.0 changed the blend file header and switched compression on by default, so only 4.5 and newer open 5.x files.</p>
<figure class="guide-fig">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 470" role="img" aria-label="Matrix of what changed by area across Blender 5.0, 5.1, 5.2 LTS and 5.3 alpha. Animation: 5.0 legacy Action API removed, 5.1 two times faster evaluation and Replace Action, 5.2 loop modes and Only Insert Available default, 5.3 rotation mode convert. Rigging: 5.0 per-instance bone visibility and Geometry Attribute constraint, 5.1 weight paint loop select, 5.2 Duplicate and Rename and Head/Tail slider, 5.3 nothing major. FBX: 5.0 C++ importer default, 5.1 shape key normals on export, 5.2 no change, 5.3 no change. glTF: 5.0 maintenance, 5.1 fixes, 5.2 meshopt and KHR attributes, 5.3 Animation Pointer extras. Add-on API: 5.0 bpy.props dict access and BGL removed, 5.1 Python 3.13 and no user site packages, 5.2 Geometry Nodes modifier API, 5.3 GPU instancing change. Viewport: 5.0 Intel Mac dropped and higher GPU minimum, 5.1 faster shader compile and Vulkan memory savings, 5.2 EEVEE raytracing overhaul, 5.3 Vulkan default on Windows and Linux.">
  <rect width="720" height="470" rx="14" fill="#0b1020"/>
  <g font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif">
    <text x="24" y="38" font-size="20" font-weight="800" fill="#e8edf5">What changed, by area and by release</text>
    <text x="24" y="60" font-size="13" fill="#9aa7b4">Coral cells break something you already had. Green cells add something. Grey cells are quiet.</text>
    <g font-size="13" font-weight="700" text-anchor="middle">
      <text x="230" y="92" fill="#7dd3fc">5.0</text>
      <text x="370" y="92" fill="#7dd3fc">5.1</text>
      <text x="510" y="92" fill="#fbbf24">5.2 LTS</text>
      <text x="650" y="92" fill="#c8a8ff">5.3 alpha</text>
    </g>
    <g font-size="12" font-weight="700" fill="#e8edf5">
      <text x="24" y="128">Animation</text>
      <text x="24" y="188">Rigging</text>
      <text x="24" y="248">FBX</text>
      <text x="24" y="308">glTF</text>
      <text x="24" y="368">Add-on API</text>
      <text x="24" y="428">Viewport, GPU</text>
    </g>
    <g font-size="10.5" fill="#e8edf5">
      <rect x="164" y="104" width="132" height="48" rx="6" fill="#fb7185" fill-opacity="0.22" stroke="#fb7185" stroke-opacity="0.6"/>
      <text x="170" y="122">Legacy Action API</text><text x="170" y="136">removed (fcurves,</text><text x="170" y="148">groups, id_root)</text>
      <rect x="304" y="104" width="132" height="48" rx="6" fill="#6ee7b7" fill-opacity="0.16" stroke="#6ee7b7" stroke-opacity="0.5"/>
      <text x="310" y="122">2x faster action eval,</text><text x="310" y="136">Replace Action,</text><text x="310" y="148">Gaussian Smooth</text>
      <rect x="444" y="104" width="132" height="48" rx="6" fill="#6ee7b7" fill-opacity="0.16" stroke="#6ee7b7" stroke-opacity="0.5"/>
      <text x="450" y="122">Loop modes, Select by</text><text x="450" y="136">Type, Only Insert</text><text x="450" y="148">Available default on</text>
      <rect x="584" y="104" width="118" height="48" rx="6" fill="#6ee7b7" fill-opacity="0.16" stroke="#6ee7b7" stroke-opacity="0.5"/>
      <text x="590" y="122">Rotation mode</text><text x="590" y="136">convert on Ctrl+R,</text><text x="590" y="148">pause on scrub</text>
      <rect x="164" y="164" width="132" height="48" rx="6" fill="#fb7185" fill-opacity="0.22" stroke="#fb7185" stroke-opacity="0.6"/>
      <text x="170" y="182">Per-instance bone</text><text x="170" y="196">hide/select, bone.select</text><text x="170" y="208">removed, new constraint</text>
      <rect x="304" y="164" width="132" height="48" rx="6" fill="#6ee7b7" fill-opacity="0.16" stroke="#6ee7b7" stroke-opacity="0.5"/>
      <text x="310" y="182">Loop select in Weight</text><text x="310" y="196">Paint, drivers survive</text><text x="310" y="208">bone rename</text>
      <rect x="444" y="164" width="132" height="48" rx="6" fill="#6ee7b7" fill-opacity="0.16" stroke="#6ee7b7" stroke-opacity="0.5"/>
      <text x="450" y="182">Duplicate and Rename,</text><text x="450" y="196">Head/Tail parenting,</text><text x="450" y="208">Copy Constraints</text>
      <rect x="584" y="164" width="118" height="48" rx="6" fill="#334155" fill-opacity="0.5" stroke="#475569"/>
      <text x="590" y="182" fill="#9aa7b4">Rigify convert op</text><text x="590" y="196" fill="#9aa7b4">deprecated for</text><text x="590" y="208" fill="#9aa7b4">the core one</text>
      <rect x="164" y="224" width="132" height="48" rx="6" fill="#fb7185" fill-opacity="0.22" stroke="#fb7185" stroke-opacity="0.6"/>
      <text x="170" y="242">C++ importer default,</text><text x="170" y="256">import_scene.fbx is</text><text x="170" y="268">legacy, one slot per take</text>
      <rect x="304" y="224" width="132" height="48" rx="6" fill="#6ee7b7" fill-opacity="0.16" stroke="#6ee7b7" stroke-opacity="0.5"/>
      <text x="310" y="242">Exporter writes shape</text><text x="310" y="256">key normals (fixes</text><text x="310" y="268">engine imports)</text>
      <rect x="444" y="224" width="132" height="48" rx="6" fill="#334155" fill-opacity="0.5" stroke="#475569"/>
      <text x="450" y="248" fill="#9aa7b4">No FBX changes</text>
      <rect x="584" y="224" width="118" height="48" rx="6" fill="#334155" fill-opacity="0.5" stroke="#475569"/>
      <text x="590" y="248" fill="#9aa7b4">No FBX changes</text>
      <rect x="164" y="284" width="132" height="48" rx="6" fill="#334155" fill-opacity="0.5" stroke="#475569"/>
      <text x="170" y="302" fill="#9aa7b4">Maintenance only,</text><text x="170" y="316" fill="#9aa7b4">Collada removed</text><text x="170" y="328" fill="#9aa7b4">from Blender</text>
      <rect x="304" y="284" width="132" height="48" rx="6" fill="#334155" fill-opacity="0.5" stroke="#475569"/>
      <text x="310" y="302" fill="#9aa7b4">Light and alpha</text><text x="310" y="316" fill="#9aa7b4">animation fixes</text>
      <rect x="444" y="284" width="132" height="48" rx="6" fill="#6ee7b7" fill-opacity="0.16" stroke="#6ee7b7" stroke-opacity="0.5"/>
      <text x="450" y="302">Meshopt compression,</text><text x="450" y="316">KHR attributes, point</text><text x="450" y="328">clouds, iridescence</text>
      <rect x="584" y="284" width="118" height="48" rx="6" fill="#6ee7b7" fill-opacity="0.16" stroke="#6ee7b7" stroke-opacity="0.5"/>
      <text x="590" y="302">Animation Pointer</text><text x="590" y="316">for custom</text><text x="590" y="328">properties</text>
      <rect x="164" y="344" width="132" height="48" rx="6" fill="#fb7185" fill-opacity="0.22" stroke="#fb7185" stroke-opacity="0.6"/>
      <text x="170" y="362">bpy.props dict access</text><text x="170" y="376">and BGL removed,</text><text x="170" y="388">use_nodes deprecated</text>
      <rect x="304" y="344" width="132" height="48" rx="6" fill="#fb7185" fill-opacity="0.22" stroke="#fb7185" stroke-opacity="0.6"/>
      <text x="310" y="362">Python 3.13 (cp313</text><text x="310" y="376">wheels), user site</text><text x="310" y="388">packages not loaded</text>
      <rect x="444" y="344" width="132" height="48" rx="6" fill="#fb7185" fill-opacity="0.22" stroke="#fb7185" stroke-opacity="0.6"/>
      <text x="450" y="362">Geometry Nodes</text><text x="450" y="376">modifier inputs are</text><text x="450" y="388">real RNA properties</text>
      <rect x="584" y="344" width="118" height="48" rx="6" fill="#334155" fill-opacity="0.5" stroke="#475569"/>
      <text x="590" y="362" fill="#9aa7b4">draw_instanced</text><text x="590" y="376" fill="#9aa7b4">index change</text>
      <rect x="164" y="404" width="132" height="48" rx="6" fill="#fb7185" fill-opacity="0.22" stroke="#fb7185" stroke-opacity="0.6"/>
      <text x="170" y="422">Intel Mac dropped,</text><text x="170" y="436">GPU minimum raised,</text><text x="170" y="448">4x faster material compile</text>
      <rect x="304" y="404" width="132" height="48" rx="6" fill="#6ee7b7" fill-opacity="0.16" stroke="#6ee7b7" stroke-opacity="0.5"/>
      <text x="310" y="422">Parallel pipeline</text><text x="310" y="436">compile, Vulkan uses</text><text x="310" y="448">40% less texture RAM</text>
      <rect x="444" y="404" width="132" height="48" rx="6" fill="#6ee7b7" fill-opacity="0.16" stroke="#6ee7b7" stroke-opacity="0.5"/>
      <text x="450" y="422">EEVEE raytracing</text><text x="450" y="436">overhaul, 2x faster</text><text x="450" y="448">instancing</text>
      <rect x="584" y="404" width="118" height="48" rx="6" fill="#fb7185" fill-opacity="0.22" stroke="#fb7185" stroke-opacity="0.6"/>
      <text x="590" y="422">Vulkan default on</text><text x="590" y="436">Windows and Linux,</text><text x="590" y="448">prefs not migrated</text>
    </g>
  </g>
</svg>
<figcaption>Every cell is taken from the release notes for that version. The 5.3 column is the alpha as of September 2026 and will change before November.</figcaption>
</figure>
<div class="video-embed"><iframe src="https://www.youtube.com/embed/g4OXlrxqIx0" title="What's New in Blender 5.2 LTS! Official Overview" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></div>
<div class="video-caption">Blender's official 5.2 LTS overview. Most of the runtime is Geometry Nodes physics and remote asset libraries, which is a fair picture of where the 5.x releases spent their effort: the rigging and export changes above are the quiet part.</div>
<h2>Add-ons: the Extensions platform and what broke</h2>
<p><strong>Extensions replaced legacy add-ons in 4.2.</strong> Add-ons now ship as extensions with a <code>blender_manifest.toml</code>, install from <code>Preferences &gt; Get Extensions</code>, and live on <a href="https://extensions.blender.org/about/">extensions.blender.org</a>, which &quot;only offers GNU GPL compliant software&quot;. The <a href="https://docs.blender.org/manual/en/5.2/advanced/extensions/getting_started.html">manual</a> requires <code>blender_version_min</code> (at least <code>4.2.0</code>) and allows an optional <code>blender_version_max</code>, &quot;Blender version that the extension does not support&quot;. Legacy add-ons still install through <code>Install from Disk</code> in 5.2, but the old way is deprecated, and the extensions site warns that &quot;Extensions don't update automatically&quot;.</p>
<p><strong>How to check whether an add-on works on 5.2.</strong> Read the Blender version range on the extension's page, or search it in <code>Preferences &gt; Get Extensions</code>, where the listing shows whether a build exists for your version. Install it, open <code>Window &gt; Toggle System Console</code> on Windows or launch Blender from a terminal on macOS and Linux, and enable it: the manual's tip is that if an add-on doesn't activate, &quot;check the Console window for any errors&quot;. Three errors account for most post-upgrade failures.</p>
<p>An <code>AttributeError</code> on <code>fcurves</code>, <code>groups</code> or <code>id_root</code> means the add-on uses the legacy Action API removed in 5.0. A wheel that refuses to load means the extension bundles a compiled module built for Python 3.11, which 5.0 still used (our local 5.0.1 reports 3.11.13), while the <a href="https://developer.blender.org/docs/release_notes/5.1/python_api/">5.1 Python notes</a> moved Blender to Python 3.13, so anything bundling numpy or an inference runtime needs <code>cp313</code> wheels from 5.1 on. And if a tool that relied on <code>pip install --user</code> packages can't find them, that's the <a href="https://developer.blender.org/docs/release_notes/5.1/core/">5.1 core change</a>: &quot;The Python user-site-directory is no longer loaded by default&quot;, restorable with <code>--python-use-user-env</code>.</p>
<p><strong>The other 5.0 breaks that hit game tooling.</strong> The 5.0 Python notes removed dict-style access to <code>bpy.props</code> storage (&quot;<code>bpy.context.scene['cycles']</code> will not give access to Cycles' scene settings&quot;). The BGL module and <code>Image.bindcode</code> were removed, so anything drawing in the viewport with raw OpenGL calls (older bone pickers, weight visualisers) needs the <code>gpu</code> module. <code>scene.node_tree</code> became <code>scene.compositing_node_group</code>, and the EEVEE engine identifier changed from <code>BLENDER_EEVEE_NEXT</code> to <code>BLENDER_EEVEE</code>, which trips render scripts that pick an engine by name. In 5.2, the Geometry Nodes modifier API changed from <code>modifier[&quot;identifier&quot;] = 5.0</code> to <code>modifier.properties.inputs.identifier.value = 5.0</code>, so batch tools that drive a GN decimation or LOD setup by name need updating for the LTS.</p>
<p><strong>Where the Cinevva Rig add-on stands.</strong> It's a standard extension with a <code>4.2.0</code> minimum, version 0.4.0 from September 5, 2026, and it runs on 5.0, 5.1 and 5.2 LTS. Rigging is the paid half, unlocked by the $29 key and run locally after a one-time engine download of about 2.4 GB. The 260 CC0 animation clips and the export presets for Unity, Unreal, Godot and the web work without a key or an account. Against a plain Blender GLB export, the presets produced files 68 to 98 percent smaller on the four models we measured, mostly by capping and re-encoding textures.</p>
<h2>Viewport and performance for asset work</h2>
<p><strong>GPU backend.</strong> The <a href="https://docs.blender.org/manual/en/5.2/editors/preferences/system.html">System preferences</a> offer OpenGL and Vulkan, with a restart to switch and Metal fixed on macOS. The <a href="https://code.blender.org/2025/05/projects-update-q2-2025/">Q2 2025 projects update</a> declared Vulkan &quot;officially supported in the upcoming Blender 4.5 LTS, offering feature parity and comparable performance to OpenGL&quot;. 5.1's <a href="https://developer.blender.org/docs/release_notes/5.1/eevee/">EEVEE notes</a> measured Vulkan cold-start material compilation on the Barbershop scene dropping from 24.87 to 11.67 seconds and texture pool memory from 406 to 245 MB, and the <a href="https://developer.blender.org/docs/release_notes/5.3/eevee/">5.3 alpha notes</a> finally flip it: &quot;Vulkan backend is now default on Windows (not ARM) and Linux. Existing user preferences will not be migrated.&quot; On 5.2 LTS it's opt-in. Try it, and switch back to OpenGL if a viewport-drawing add-on misbehaves. The 5.1.x corrective releases fixed Vulkan issues on Intel Iris Xe and NVIDIA 595 drivers, so keep drivers current.</p>
<p><strong>EEVEE and material compile times.</strong> The <a href="https://developer.blender.org/docs/release_notes/5.0/eevee/">5.0 EEVEE notes</a> say simple materials compile about four times faster on NVIDIA OpenGL, and 5.1 added parallel pipeline compilation on every backend. For look-dev on a character with a dozen materials, that's a grey viewport for seconds instead of a minute. 5.2's screen-space raytracing overhaul changes how existing scenes look (&quot;some scenes might render darker than in 5.1&quot;), and EEVEE inherited the Workbench instancing optimisation, up to twice as fast on scenes with many instances, which describes a modular environment kit exactly.</p>
<p><strong>Curves and hair got heavier.</strong> A 5.0 gotcha for characters with particle hair: curve drawing now honours the <code>resolution</code> attribute, and the notes warn that a default hair system &quot;will now render 15 times more geometry in 5.0&quot;. If a file that opened fine in 4.5 crawls in 5.x, lower the curve resolution.</p>
<p><strong>Platform minimums</strong> decide whether you can install 5.x at all: Apple Silicon on macOS 13 or newer, and on Windows and Linux a GPU with OpenGL 4.3 and 2 GB of VRAM from the GeForce 900, Radeon RX 400 or Kaby Lake generation onward, per the <a href="https://www.blender.org/download/requirements/">requirements page</a>.</p>
<h2>Upgrade checklist for a game-asset pipeline</h2>
<p>Do this once per project, in this order, on a copy of your files.</p>
<ol>
<li><strong>Pick the version and pin it.</strong> Install 5.2 LTS from the <a href="https://www.blender.org/download/lts/">LTS page</a>. If any teammate is on an Intel Mac or a pre-2016 GPU, the team pins 4.5 LTS instead, because 4.2 can't open 5.x files and 4.5 truncates long names.</li>
<li><strong>Open your oldest rig in 4.5 first if it dates from 2.79 or earlier.</strong> 5.0 dropped loading of pre-2.50 animation data and the 2.93-era pose library converter. The notes recommend opening and saving such files in 4.5 before moving on.</li>
<li><strong>Inventory add-ons against the version range.</strong> For each one, read <code>blender_version_min</code> and <code>blender_version_max</code> on its extension page. Reinstall from <code>Preferences &gt; Get Extensions</code> rather than copying an old add-ons folder, and check the console on first enable.</li>
<li><strong>Grep your scripts.</strong> Search for <code>action.fcurves</code>, <code>action.groups</code>, <code>id_root</code>, <code>bones[...].select</code>, <code>import_scene.fbx</code>, <code>scene.node_tree</code>, <code>BLENDER_EEVEE_NEXT</code>, <code>bgl</code> and bracket access like <code>modifier[&quot;Socket_</code>. Each is a documented 5.x break with a documented replacement.</li>
<li><strong>Re-import one FBX character pack and inspect actions.</strong> With the C++ importer, every take becomes an action with one slot per animated object. Confirm clip names and that the armature slot is assigned before you batch anything.</li>
<li><strong>Re-export one animated GLB and check the animation list.</strong> Set <code>Animation &gt; Mode</code> to Actions, stash every clip you want to an NLA track, and set Merge Animation to the mode you intend. Open the result in a viewer and count the clips. Then try Meshopt Compression against Draco on a real asset and keep whichever your engine or loader decodes.</li>
<li><strong>Re-export one FBX for your engine with normals on.</strong> 5.1's shape key normals fix changes what Unity and Unreal receive for blend-shape characters. Import it and check facial shapes for shading seams.</li>
<li><strong>Decide on the GPU backend deliberately.</strong> Stay on OpenGL for 5.2 LTS unless you've tested Vulkan with your add-ons. When 5.3 arrives it defaults to Vulkan on Windows and Linux without migrating your preference, so note the choice now.</li>
<li><strong>Re-save assets that use Node Tools or Geometry Nodes assets.</strong> 5.1 and 5.2 both require opening and re-saving asset files for node tools to work, per the compatibility notes.</li>
<li><strong>Turn compression back off if a tool reads .blend files directly.</strong> 5.0 enables blend file compression on saving by default and changed the block header format, so external parsers need updating or uncompressed files.</li>
</ol>
<figure class="guide-fig">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 400" role="img" aria-label="Upgrade checklist card with ten items: pin 5.2 LTS or 4.5 LTS, open pre-2.79 files in 4.5 first, inventory add-ons by version range, grep scripts for removed API, re-import one FBX pack and check slots, re-export one GLB and count clips, re-export one FBX with normals, choose the GPU backend, re-save node tool assets, decide on blend compression.">
  <rect width="720" height="400" rx="14" fill="#0b1020"/>
  <g font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif">
    <text x="24" y="38" font-size="20" font-weight="800" fill="#e8edf5">Upgrade checklist: 4.x pipeline to Blender 5.2 LTS</text>
    <text x="24" y="60" font-size="13" fill="#9aa7b4">One pass per project, on copies. Left column is setup, right column is the round trip test.</text>
    <g font-size="12.5" fill="#e8edf5">
      <rect x="24" y="86" width="16" height="16" rx="4" fill="none" stroke="#fbbf24" stroke-width="2"/>
      <text x="50" y="99">Pin 5.2 LTS (or 4.5 LTS for Intel Macs, old GPUs)</text>
      <rect x="24" y="126" width="16" height="16" rx="4" fill="none" stroke="#fbbf24" stroke-width="2"/>
      <text x="50" y="139">Open 2.79-era rigs in 4.5 and re-save first</text>
      <rect x="24" y="166" width="16" height="16" rx="4" fill="none" stroke="#fbbf24" stroke-width="2"/>
      <text x="50" y="179">Check every add-on's blender_version_min / max</text>
      <rect x="24" y="206" width="16" height="16" rx="4" fill="none" stroke="#fbbf24" stroke-width="2"/>
      <text x="50" y="219">Grep scripts: action.fcurves, bones[].select,</text>
      <text x="50" y="235" fill="#9aa7b4">import_scene.fbx, scene.node_tree, bgl, modifier["Socket_"]</text>
      <rect x="24" y="262" width="16" height="16" rx="4" fill="none" stroke="#fbbf24" stroke-width="2"/>
      <text x="50" y="275">Re-save Node Tool and Geometry Nodes assets</text>
      <rect x="24" y="302" width="16" height="16" rx="4" fill="none" stroke="#fbbf24" stroke-width="2"/>
      <text x="50" y="315">Decide: blend compression on (default) or off</text>
      <rect x="24" y="342" width="16" height="16" rx="4" fill="none" stroke="#fbbf24" stroke-width="2"/>
      <text x="50" y="355">Decide: OpenGL now, Vulkan when 5.3 defaults to it</text>
      <rect x="384" y="86" width="16" height="16" rx="4" fill="none" stroke="#6ee7b7" stroke-width="2"/>
      <text x="410" y="99">Import one FBX pack: one action per take,</text>
      <text x="410" y="115" fill="#9aa7b4">one slot per animated object, slot assigned</text>
      <rect x="384" y="142" width="16" height="16" rx="4" fill="none" stroke="#6ee7b7" stroke-width="2"/>
      <text x="410" y="155">Export one GLB: Actions mode, clips stashed</text>
      <text x="410" y="171" fill="#9aa7b4">to NLA, Merge Animation set, count clips in a viewer</text>
      <rect x="384" y="198" width="16" height="16" rx="4" fill="none" stroke="#6ee7b7" stroke-width="2"/>
      <text x="410" y="211">Try Meshopt vs Draco on a real asset</text>
      <rect x="384" y="238" width="16" height="16" rx="4" fill="none" stroke="#6ee7b7" stroke-width="2"/>
      <text x="410" y="251">Export one FBX with normals, check blend</text>
      <text x="410" y="267" fill="#9aa7b4">shape shading in Unity or Unreal (5.1 normals fix)</text>
      <rect x="384" y="294" width="16" height="16" rx="4" fill="none" stroke="#6ee7b7" stroke-width="2"/>
      <text x="410" y="307">Play one retargeted clip on one rig</text>
      <text x="410" y="323" fill="#9aa7b4">bend an elbow, twist a wrist, plant a foot</text>
    </g>
    <line x1="360" y1="80" x2="360" y2="380" stroke="#334155" stroke-width="1"/>
    <text x="24" y="386" font-size="11" fill="#9aa7b4">Sources: Blender 5.0, 5.1, 5.2 release notes and the compatibility page, September 2026.</text>
  </g>
</svg>
<figcaption>The same checklist as a card you can keep open in a second window. The right column is the part people skip, and it's the part that catches the slot and merge changes before an engine import does.</figcaption>
</figure>
<h2>Common Questions</h2>
<h3>When was Blender 5.0 released and is it still supported?</h3>
<p>Blender 5.0 was released on November 18, 2025, with the 5.0.1 corrective release on December 16, 2025. It is no longer supported: Blender supports a regular release only until its successor, and 5.1 replaced it on March 17, 2026. If you're on 5.0, move to 5.2 LTS, which keeps the same slotted-action model and adds fixes through July 2028.</p>
<h3>What are the new features in Blender 5.0 for animators and riggers?</h3>
<p>The headline 5.0 features were colour management (ACES, HDR, working colour space) and the sequencer overhaul. For animation and rigging the notes list the Geometry Attribute constraint, per-instance bone visibility and selection, a shape key UI rebuild with multi-select and Make Basis, Copy Global Transform moving into core, Jump Time by Delta, and slot selectors that show the slot type. The removals matter as much: the legacy Action API, pre-2.50 animation loading and the old pose library converter.</p>
<h3>What is Blender 5.1 and what did it change for game artists?</h3>
<p>Blender 5.1 shipped on March 17, 2026. For game work the changes are performance and plumbing: action evaluation roughly doubled on heavy rigs, shape key evaluation up to four times faster, Python moved to 3.13, the user site-packages directory stopped loading, the FBX exporter began writing shape key normals, and EEVEE materials compile faster on every backend. It was superseded by 5.2 LTS on July 14, 2026.</p>
<h3>Is Blender 5.2 an LTS release and until when?</h3>
<p>Yes. Blender 5.2 LTS was released on July 14, 2026 and will be maintained until July 2028, with 5.2.1 released on August 25, 2026. It overlaps with 4.5 LTS, supported until July 2027. 4.2 LTS ended in July 2026.</p>
<h3>What are slotted actions in Blender?</h3>
<p>A slot is a named, typed sub-container inside an Action, so one Action can animate several data-blocks at once, for example an armature's bones and its mesh's shape keys. Slots arrived in 4.4 and every action is slotted now. For users, the visible change is a slot selector next to the action name and a Merge Animation choice in the glTF exporter. For scripts, <code>action.fcurves</code> was removed in 5.0 in favour of the per-slot channelbag.</p>
<h3>Does Blender 5 have layered animation?</h3>
<p>Not in the interface, as of 5.2 LTS. The data model has layers and strips underneath every action, and the manual says this is &quot;purely in preparation for future animation features that are not yet in Blender&quot;. The layer editor, blend modes and bake-down described in the Layered Animation Workshop 2024 post have not shipped in 5.0, 5.1, 5.2 or the 5.3 alpha notes.</p>
<h3>Do my Blender 4.2 add-ons work in Blender 5?</h3>
<p>Some do. An extension declares <code>blender_version_min</code> and optionally <code>blender_version_max</code>, and legacy add-ons still install from disk. What breaks is code, not packaging: the legacy Action API, <code>bones[].select</code>, BGL drawing, dict access to <code>bpy.props</code> data, and compiled wheels built for Python 3.11 rather than 3.13 (from 5.1). Check the console when you enable an add-on, and check the extension page for a 5.2 build before you upgrade.</p>
<h2>Related</h2>
<ul>
<li><a href="/guides/automatic-rigging-explained">How Automatic Rigging Works (and How to Prepare a Model for It)</a>: what a rig is, how riggers place joints, and how to prep a mesh so the 5.x weight tools have less to fix</li>
<li><a href="/blender-addon/">Cinevva Rig for Blender</a>: one-click humanoid rigging on your own machine, 260 CC0 clips, and export presets for Unity, Unreal, Godot and the web, on Blender 4.2 and newer</li>
<li><a href="/guides/how-to-rig-a-character-in-blender">How to Rig a Character in Blender (2026)</a>: Rigify, manual armatures and the one-click route, step by step on 5.2 LTS</li>
<li><a href="/guides/blender-to-unity-export-checklist">Blender to Unity Export Checklist</a>: the FBX settings, scale and axis choices that survive the 5.x importer changes</li>
<li><a href="/guides/optimize-glb-for-web">How to Optimize a GLB for the Web</a>: what Draco, meshopt and texture caps do to a file after it leaves the glTF exporter</li>
<li><a href="/tools/glb-viewer">GLB Viewer</a>: count the animation clips in an exported GLB and check the skeleton before it goes into an engine</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Blender to Godot 4 Export Checklist: glTF Settings, Animations, and Import Hints (2026)]]></title>
            <link>https://app.cinevva.com/guides/blender-to-godot-export-checklist</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/blender-to-godot-export-checklist</guid>
            <pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[How to get a Blender model into Godot 4: GLB export settings, Y-up and metres, -col and -rigid import hints, looping animations, and why textures go missing.]]></description>
            <content:encoded><![CDATA[<h1>Blender to Godot 4 Export Checklist: glTF Settings, Animations, and Import Hints (2026)</h1>
<p><em>Last updated: September 2026.</em></p>
<figure class="guide-hero">
<img src="https://cdn.cinevva.com/guides/blender-to-godot-export-checklist-hero.jpg?v=1" alt="A low-poly character walking from a Blender viewport into a Godot scene tree" width="1216" height="640">
</figure>
<style>
.guide-hero { margin: 1.25rem 0 1.75rem; }
.guide-hero img { width: 100%; height: auto; border-radius: 12px; display: block; }
.guide-fig { margin: 1.5rem 0; }
.guide-fig > a { display: block; }
.guide-fig img { width: 100%; height: auto; border-radius: 10px; border: 1px solid var(--vp-c-divider); display: block; }
.guide-fig svg { width: 100%; height: auto; display: block; }
.guide-fig figcaption { font-size: 0.9rem; color: var(--vp-c-text-2); margin: 0.5rem 0 0; }
.video-embed { position: relative; width: 100%; max-width: 720px; margin: 1.5rem 0; }
.video-embed iframe { width: 100%; aspect-ratio: 16/9; border-radius: 8px; }
.video-caption { font-size: 0.9rem; color: var(--vp-c-text-2); margin-top: 0.5rem; margin-bottom: 1.5rem; }
</style>
<p>Export a GLB from Blender with <code>+Y Up</code> on, transforms applied, <code>Apply Modifiers</code> ticked, <code>Materials</code> set to <code>Export</code> and <code>Compression</code> off, drop it into your Godot project folder, and Godot 4 builds the scene, the materials, a <code>Skeleton3D</code> and an <code>AnimationPlayer</code> for you. The direct <code>.blend</code> import does the same job by calling Blender behind the scenes, which is handy on one machine and a problem for a team. Nearly every &quot;it looks wrong in Godot&quot; report comes down to one of five things: unapplied transforms, a character modelled facing the wrong way, an action that was never stashed to the NLA, a Draco-compressed file, or textures that never left Blender.</p>
<h2>Quick answer</h2>
<ul>
<li><strong>Format:</strong> glTF 2.0, as a single <code>.glb</code>. Godot's docs mark it &quot;(recommended)&quot;, and the binary form &quot;include[s] the mesh and textures set up in Blender&quot;.</li>
<li><strong>Axes and scale:</strong> leave the exporter's <code>+Y Up</code> on, model characters facing <code>-Y</code> in Blender, keep 1 Blender unit as 1 metre, and run <code>Object &gt; Apply &gt; All Transforms</code> (Ctrl-A) before you export.</li>
<li><strong>Compression:</strong> leave <code>Data &gt; Compression</code> off. Godot cannot open Draco-compressed glTF.</li>
<li><strong>Animations:</strong> every action you want must be the active action or stashed to an NLA track. Name looping clips with <code>loop</code> or <code>cycle</code> in the action name, no hyphen, and Godot sets the loop flag.</li>
<li><strong>Collision and physics:</strong> append <code>-col</code>, <code>-convcol</code>, <code>-colonly</code> or <code>-rigid</code> to the Blender object name and Godot creates the body on import.</li>
<li><strong>Textures missing:</strong> export GLB, not glTF Separate, set <code>Materials</code> to <code>Export</code>, and use image textures on a Principled BSDF, not procedural nodes.</li>
<li><strong>No export dialog at all:</strong> the <a href="/blender-addon/">Cinevva Rig add-on</a> has a Godot preset that applies these settings in one click. Its export half is free, runs on your machine offline, and works in Blender 4.2 and newer on Windows, macOS and Linux. Rigging is the paid half, $29 once at the launch price.</li>
</ul>
<h2>Quick reference</h2>
<p>The Blender glTF exporter settings that matter for Godot 4, from the <a href="https://docs.blender.org/manual/en/latest/addons/import_export/scene_gltf2.html">Blender manual</a> and the <a href="https://docs.godotengine.org/en/stable/tutorials/assets_pipeline/importing_3d_scenes/available_formats.html">Godot import docs</a>. Everything else can stay at its default.</p>
<table>
<thead>
<tr>
<th>Exporter setting (<code>File &gt; Export &gt; glTF 2.0</code>)</th>
<th>Value for Godot</th>
<th>Why</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>Format</code></td>
<td>glTF Binary (.glb)</td>
<td>One file, textures inside. Godot: &quot;glTF binary files (.glb) are the smaller option&quot;</td>
</tr>
<tr>
<td><code>Include &gt; Selected Objects</code></td>
<td>On</td>
<td>Keeps cameras, lights and reference meshes out of the scene</td>
</tr>
<tr>
<td><code>Transform &gt; +Y Up</code></td>
<td>On (default)</td>
<td>glTF and Godot are Y-up, Blender is Z-up. The exporter converts</td>
</tr>
<tr>
<td><code>Data &gt; Mesh &gt; Apply Modifiers</code></td>
<td>On</td>
<td>Bakes Triangulate, Mirror, Subdivision. Godot: triangulate in Blender for &quot;more consistent results&quot;</td>
</tr>
<tr>
<td><code>Data &gt; Mesh &gt; Normals</code>, <code>UVs</code></td>
<td>On</td>
<td>Godot needs UVs for textures and normals for shading</td>
</tr>
<tr>
<td><code>Data &gt; Mesh &gt; Tangents</code></td>
<td>On if you use normal maps</td>
<td>Otherwise Godot's <code>Ensure Tangents</code> generates them on import</td>
</tr>
<tr>
<td><code>Data &gt; Material &gt; Materials</code></td>
<td>Export</td>
<td><code>Placeholder</code> and <code>No Export</code> leave a grey model</td>
</tr>
<tr>
<td><code>Data &gt; Material &gt; Images</code></td>
<td>Default (PNG/JPEG)</td>
<td>glTF &quot;requires that images be in PNG or JPEG format&quot;</td>
</tr>
<tr>
<td><code>Data &gt; Armature &gt; Export Deformation Bones only</code></td>
<td>On</td>
<td>Required by Godot when the model has shape keys, and it drops control bones</td>
</tr>
<tr>
<td><code>Data &gt; Skinning &gt; Bone influences</code></td>
<td>4</td>
<td>Godot's compatible skin mode is &quot;4 Influences&quot;</td>
</tr>
<tr>
<td><code>Data &gt; Compression</code></td>
<td>Off</td>
<td>Godot: &quot;required extension 'KHR_draco_mesh_compression' is not supported&quot;</td>
</tr>
<tr>
<td><code>Animation &gt; Animation mode</code></td>
<td>Actions</td>
<td>Each stashed action becomes one Godot animation</td>
</tr>
<tr>
<td><code>Animation &gt; Reset pose bones between actions</code></td>
<td>On</td>
<td>&quot;Needed when some bones are not keyed on some animations&quot;</td>
</tr>
<tr>
<td><code>Animation &gt; Optimize Animation Size</code></td>
<td>On</td>
<td>&quot;Removing duplicate keyframes when all identical&quot;</td>
</tr>
</tbody>
</table>
<h2>Two roads into Godot: direct .blend or a GLB</h2>
<p>Godot 4 supports &quot;glTF 2.0 (recommended)&quot;, <code>.blend</code>, Collada, OBJ and FBX. The <code>.blend</code> path &quot;works by calling Blender to export to glTF in a transparent manner (requires Blender to be installed)&quot;, so both roads end in the same importer.</p>
<figure class="guide-fig">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 420" role="img" aria-label="Two import paths into Godot 4. Left: a .blend file saved in the project folder, Godot calls Blender's glTF exporter, then Godot's glTF importer, then a .tscn scene. Right: File Export glTF 2.0 in Blender produces a .glb, Godot's glTF importer reads it, then a .tscn scene. Notes: the .blend path needs Blender installed for everyone and is not available on Android or web editors, the GLB path works on any machine with the full exporter dialog but needs a manual re-export.">
  <defs>
    <marker id="bgarrow" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="8" markerHeight="8" orient="auto-start-reverse">
      <path d="M0,0 L10,5 L0,10 z" fill="#9aa7b4"/>
    </marker>
  </defs>
  <rect width="720" height="420" rx="14" fill="#0b1020"/>
  <g font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif">
    <text x="24" y="40" font-size="20" font-weight="800" fill="#e8edf5">Two roads into Godot 4</text>
    <text x="24" y="62" font-size="13" fill="#9aa7b4">Both end in Godot's glTF importer. Only the right one works on a machine without Blender.</text>
    <text x="186" y="94" font-size="13" font-weight="800" fill="#c8a8ff" text-anchor="middle">Direct .blend import</text>
    <text x="534" y="94" font-size="13" font-weight="800" fill="#6ee7b7" text-anchor="middle">Export a GLB</text>
    <g stroke="#9aa7b4" stroke-width="1.5" marker-end="url(#bgarrow)">
      <line x1="186" y1="140" x2="186" y2="154"/>
      <line x1="186" y1="196" x2="186" y2="210"/>
      <line x1="186" y1="252" x2="186" y2="266"/>
      <line x1="534" y1="140" x2="534" y2="154"/>
      <line x1="534" y1="196" x2="534" y2="210"/>
      <line x1="534" y1="252" x2="534" y2="266"/>
    </g>
    <g>
      <rect x="56" y="104" width="260" height="36" rx="8" fill="#121a31" stroke="#c8a8ff" stroke-width="1.5"/>
      <text x="186" y="127" font-size="12" font-weight="700" fill="#e8edf5" text-anchor="middle">Save the .blend inside the project folder</text>
      <rect x="56" y="160" width="260" height="36" rx="8" fill="#121a31" stroke="#c8a8ff" stroke-width="1.5"/>
      <text x="186" y="183" font-size="12" font-weight="700" fill="#e8edf5" text-anchor="middle">Godot calls Blender's glTF exporter</text>
      <rect x="56" y="216" width="260" height="36" rx="8" fill="#121a31" stroke="#7dd3fc" stroke-width="1.5"/>
      <text x="186" y="239" font-size="12" font-weight="700" fill="#e8edf5" text-anchor="middle">Godot's glTF importer</text>
      <rect x="56" y="272" width="260" height="36" rx="8" fill="#121a31" stroke="#7dd3fc" stroke-width="1.5"/>
      <text x="186" y="295" font-size="12" font-weight="700" fill="#e8edf5" text-anchor="middle">Imported .tscn scene</text>
    </g>
    <g>
      <rect x="404" y="104" width="260" height="36" rx="8" fill="#121a31" stroke="#6ee7b7" stroke-width="1.5"/>
      <text x="534" y="127" font-size="12" font-weight="700" fill="#e8edf5" text-anchor="middle">File &gt; Export &gt; glTF 2.0 in Blender</text>
      <rect x="404" y="160" width="260" height="36" rx="8" fill="#121a31" stroke="#6ee7b7" stroke-width="1.5"/>
      <text x="534" y="183" font-size="12" font-weight="700" fill="#e8edf5" text-anchor="middle">One .glb, textures inside</text>
      <rect x="404" y="216" width="260" height="36" rx="8" fill="#121a31" stroke="#7dd3fc" stroke-width="1.5"/>
      <text x="534" y="239" font-size="12" font-weight="700" fill="#e8edf5" text-anchor="middle">Godot's glTF importer</text>
      <rect x="404" y="272" width="260" height="36" rx="8" fill="#121a31" stroke="#7dd3fc" stroke-width="1.5"/>
      <text x="534" y="295" font-size="12" font-weight="700" fill="#e8edf5" text-anchor="middle">Imported .tscn scene</text>
    </g>
    <g font-size="11">
      <circle cx="62" cy="330" r="4" fill="#6ee7b7"/>
      <text x="72" y="334" fill="#e8edf5">Save in Blender, alt-tab, Godot has the change</text>
      <circle cx="62" cy="352" r="4" fill="#fb7185"/>
      <text x="72" y="356" fill="#e8edf5">Every team member needs Blender installed</text>
      <circle cx="62" cy="374" r="4" fill="#fb7185"/>
      <text x="72" y="378" fill="#e8edf5">Not available in the Android and web editors</text>
      <circle cx="62" cy="396" r="4" fill="#fbbf24"/>
      <text x="72" y="400" fill="#e8edf5">Exporter options limited to the Import dock</text>
      <circle cx="410" cy="330" r="4" fill="#6ee7b7"/>
      <text x="420" y="334" fill="#e8edf5">Opens on any machine, no Blender needed</text>
      <circle cx="410" cy="352" r="4" fill="#6ee7b7"/>
      <text x="420" y="356" fill="#e8edf5">Full exporter dialog: Draco off, images, animation mode</text>
      <circle cx="410" cy="374" r="4" fill="#6ee7b7"/>
      <text x="420" y="378" fill="#e8edf5">One file to version, share or inspect</text>
      <circle cx="410" cy="396" r="4" fill="#fbbf24"/>
      <text x="420" y="400" fill="#e8edf5">You re-export by hand after each change</text>
    </g>
  </g>
</svg>
<figcaption>The .blend road saves you the export step and nothing else: Godot runs Blender's own glTF exporter for you, then imports the result exactly as it would a GLB. Green is an advantage, coral a hard limit, amber a trade-off.</figcaption>
</figure>
<h3>The direct .blend import</h3>
<p>The <a href="https://docs.godotengine.org/en/stable/tutorials/assets_pipeline/importing_3d_scenes/available_formats.html">available formats page</a> spells out the requirements. It &quot;requires Blender 3.0 or later&quot;, with 3.5 or later recommended &quot;as it includes many fixes to the glTF exporter&quot;, and &quot;an official Blender release downloaded from <a href="http://blender.org">blender.org</a>, as opposed to a Linux distribution package or Flatpak&quot;. You &quot;must install Blender before opening the Godot editor&quot;. If Blender lives in its default location Godot finds it. If not, set <code>Editor Settings &gt; Filesystem &gt; Import &gt; Blender &gt; Blender Path</code>. The payoff is iteration speed: &quot;you can save the scene in Blender, alt-tab back to Godot then see your changes immediately&quot;, and you don't commit an exported copy.</p>
<p>The Import dock then shows a Blender-only section: <code>Nodes &gt; Visible</code> (<code>All</code>, <code>Visible Only</code> or <code>Renderable</code>), <code>Modifiers</code>, <code>Meshes &gt; Skins</code> (<code>4 Influences (Compatible)</code> or <code>All Influences</code>, &quot;up to 8 in Godot&quot;), <code>Materials &gt; Unpack Enabled</code>, which writes the original images into the Godot filesystem and &quot;should be left checked&quot;, and <code>Animation &gt; Group Tracks</code>, which keeps stashed actions separate. Untick that last one and &quot;all the currently assigned actions become one glTF animation&quot;.</p>
<p>When to avoid it: the docs are blunt that &quot;using .blend files in your project will require all team members to have Blender installed&quot;, and the import &quot;is also not available on the Android and web editors, as these platforms can't call external programs&quot;. A fresh clone imports nothing until Blender is present, so a build machine needs Blender too, and you only get the exporter options Godot exposes in the dock. If you don't want Godot touching <code>.blend</code> files that live in the project, turn off <code>Filesystem &gt; Import &gt; Blender &gt; Enabled</code> in the advanced Project Settings.</p>
<h3>The GLB export</h3>
<p>Blender's exporter offers three forms. <code>glTF Binary (.glb)</code> is &quot;a single .glb file with all mesh data, image textures, and related information packed into a single binary file&quot;. <code>glTF Separate</code> writes a <code>.gltf</code>, a <code>.bin</code> and loose image files, and the manual warns that &quot;sharing this format requires sharing all of these separate files together as a group&quot;. <code>glTF Embedded</code> base64-encodes everything into JSON and the manual calls it &quot;the least efficient of the available forms&quot;. Godot's docs give two reasons to pick Separate: a text-based scene for version control diffs, or needing the texture files apart from the material. &quot;If you don't need either of those, glTF binary files are fine.&quot; Pick GLB.</p>
<h2>Why not FBX, Collada or the old ESCN exporter</h2>
<p>FBX in Godot 4 comes in two eras. Before 4.3 the importer was FBX2glTF, and the docs note that this &quot;requires installing an external program that links against the proprietary FBX SDK&quot;, which is why Godot can't ship it and why you had to set <code>Filesystem &gt; Import &gt; FBX &gt; FBX2glTFPath</code> yourself. Since <a href="https://godotengine.org/article/introducing-the-improved-ufbx-importer-in-godot-4-3/">Godot 4.3</a> (August 2024) the built-in ufbx library reads FBX directly and &quot;it will no longer be necessary to download the external FBX2glTF converter&quot;. FBX now works, then, but it adds a conversion step glTF doesn't need, and the same article warns that Blender's FBX exporter writes objects at 100x scale by default unless you set <code>Apply Scalings</code> to <code>FBX Units Scale</code>. If you must live in FBX, the third-party <a href="https://superhivemarket.com/products/better-fbx-importer--exporter">Better FBX Importer &amp; Exporter</a> (12,600+ sales on Superhive, $25 for one seat, Blender 3.6 to 5.1) exists because, in its author's words, Blender's native FBX &quot;often fails&quot; on files from other packages. For Godot you don't need any of that.</p>
<p>Collada is a step down: Blender's built-in exporter &quot;does not work properly for the needs of game engines and shouldn't be used as-is&quot;, though simple static scenes may survive. OBJ &quot;doesn't support skinning, animation, UV2 or PBR materials&quot;. And the Godot Blender Exporter that wrote <code>.escn</code> files for Godot 3 &quot;is not maintained or supported in Godot 4.x&quot; per its own <a href="https://docs.godotengine.org/en/stable/tutorials/assets_pipeline/escn_exporter/index.html">docs page</a>. If a tutorial tells you to install it, the tutorial is for Godot 3.</p>
<h2>Axes, metres and applied transforms</h2>
<p>Three conventions have to agree, and two of them are already the same. The <a href="https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html">glTF 2.0 specification</a> says &quot;glTF defines +Y as up, +Z as forward, and -X as right&quot;, that &quot;the front of a glTF asset faces +Z&quot;, and that &quot;the units for all linear distances are meters&quot;. Godot's <a href="https://docs.godotengine.org/en/stable/tutorials/assets_pipeline/importing_3d_scenes/model_export_considerations.html">model export considerations</a> page says Godot &quot;uses a right-handed, Y-is-up coordinate system, with the -Z axis as the camera's forward direction&quot;, so an oriented asset faces <code>+Z</code>, and &quot;Godot uses the metric system for everything in 3D, with 1 unit being equal to 1 meter&quot;. Blender is the odd one out with Z up, and the exporter's <code>Transform &gt; +Y Up</code> option (&quot;Export using glTF convention, +Y up&quot;) does the conversion. Leave it on. Turning it off is the fastest way to a model lying on its side.</p>
<p>Forward is the one you have to model for. Godot's docs translate it: &quot;In Blender, this means that +Y is rear and -Y is front for an asset.&quot; Build your character looking down Blender's <code>-Y</code> axis (the default front view, Numpad 1, looks at the character's face) and it will face <code>+Z</code> in Godot, which is what <code>look_at</code> with <code>use_model_front</code> and the <code>Vector3.MODEL_*</code> constants expect. A character modelled facing <code>+Y</code> walks backwards the first time you attach movement code.</p>
<p>Scale is simpler than it looks. The exporter has no unit option: one Blender unit becomes one glTF metre. Blender's <code>Unit Scale</code> in <code>Properties &gt; Scene &gt; Units</code> &quot;only influences the values displayed in the user interface and not how things behave internally&quot;, so a centimetre-scale scene with <code>Unit Scale</code> at 0.01 still exports its raw values. Keep the default metric setup, make a human about 1.8 units tall, and Godot agrees with you. If a downloaded model arrives 100x too big, scale it in Object Mode and apply, or use the Import dock's <code>Apply Root Scale</code>, which &quot;will be applied on the meshes and animations directly, while keeping the root node's scale to the default (1, 1, 1)&quot;.</p>
<p>Apply transforms every time. <code>Object &gt; Apply &gt; All Transforms</code> (Ctrl-A) bakes rotation and scale into the vertices, and the <a href="https://docs.blender.org/manual/en/latest/scene_layout/object/editing/apply.html">Blender manual</a> says &quot;It is recommended to apply transforms before rigging and animation.&quot; Godot asks for the same thing &quot;to avoid issues with 3D selection in the editor&quot;, and its retargeting docs name the failure: &quot;a glTF exported from Blender with no 'Apply Transform' executed&quot; gives the skeleton a node transform that the <code>Apply Node Transform</code> import option has to undo. Also make sure &quot;the skeleton is reset to its T-pose or default rest pose before exporting&quot;. A mesh exported mid-pose bakes that pose into the skin.</p>
<h2>Export settings, in the order the dialog shows them</h2>
<p><code>File &gt; Export &gt; glTF 2.0 (.glb/.gltf)</code>, <code>Format</code> glTF Binary, <code>Include &gt; Selected Objects</code> on. Cameras and <code>Punctual Lights</code> stay off, since Godot's advice is to &quot;design the scene's lighting in the Godot editor after importing the scene&quot;. The table above has the full list. Four settings deserve the reasoning.</p>
<p><code>Data &gt; Mesh &gt; Apply Modifiers</code>. Godot &quot;can triangulate meshes on import, but results may be unpredictable or incorrect, especially with N-gons&quot;, and its fix is &quot;adding a Triangulate modifier to your objects and making sure Apply Modifiers is checked in the export dialog&quot;. Turn on <code>Tangents</code> if any material uses a normal map, otherwise Godot's <code>Ensure Tangents</code> import option generates them with Mikktspace at import time.</p>
<p><code>Data &gt; Armature &gt; Export Deformation Bones only</code>. Godot's docs carry a warning box: if the model has blend shapes (shape keys), this &quot;needs to be configured to Enabled&quot;, because &quot;exporting non-deforming bones anyway will lead to incorrect shading&quot;. It also strips the helper bones a control rig carries. Keep <code>Use Rest Position Armature</code> on so the rest pose, not the current frame, becomes the joint rest.</p>
<p><code>Data &gt; Compression</code> off. The Draco option writes the <code>KHR_draco_mesh_compression</code> extension, and Godot's importer refuses it with <code>GLTF: Can't import file, required extension 'KHR_draco_mesh_compression' is not supported</code> (<a href="https://github.com/godotengine/godot/issues/73738">issue #73738</a>). Godot compresses meshes its own way at import, so you lose nothing.</p>
<p><code>Animation &gt; Reset pose bones between actions</code> on. The manual says it &quot;is needed when some bones are not keyed on some animations&quot;, otherwise a bone left unkeyed in your idle inherits its last pose from the walk. <code>Set all glTF Animation starting at 0</code> &quot;can be useful for looping animation&quot; when your actions start at frame 1.</p>
<p>On the Godot side, the Import dock's defaults are mostly right. <code>Root Type</code> should inherit from <code>Node3D</code> or you &quot;lose the ability to position the node directly in the 3D editor&quot;. <code>Animation &gt; FPS</code> bakes curves to points, and &quot;there is usually not much benefit in going above 30 FPS&quot;. <code>glTF &gt; Embedded Texture Handling</code> decides what happens to the images inside your GLB: <code>Extract Textures</code> pulls them out as image files, which the docs say gives &quot;smaller file sizes and more control over import options&quot;, while the two <code>Embed</code> options keep them inside the scene.</p>
<h2>Import hints: suffixes Godot reads from object names</h2>
<p>This is Godot's oldest and best trick. The glTF node name is the Blender object name, and the <a href="https://docs.godotengine.org/en/stable/tutorials/assets_pipeline/importing_3d_scenes/node_type_customization.html">name suffix page</a> lists suffixes the importer acts on. Name a wall <code>Wall-col</code> and the import produces the mesh plus a static collision child. No Godot-side clicking, and it survives every re-import.</p>
<figure class="guide-fig">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 470" role="img" aria-label="Cheat card of Godot 4 import hints. -col: StaticBody3D child with a triangle mesh collision shape. -convcol: convex shape instead. -colonly: mesh removed, collision kept. -convcolonly: mesh removed, convex decomposition kept. -rigid: RigidBody3D. -noimp: node or animation dropped. -navmesh: navigation mesh. -occ and -occonly: occluder. -vehicle and -wheel: VehicleBody3D and VehicleWheel3D. -alpha on a material: alpha transparency. -vcol on a material: albedo from vertex colour. loop or cycle in an animation name: loop flag, no hyphen.">
  <rect width="720" height="470" rx="14" fill="#0b1020"/>
  <g font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif">
    <text x="24" y="40" font-size="20" font-weight="800" fill="#e8edf5">Import hints Godot 4 reads from names</text>
    <text x="24" y="62" font-size="13" fill="#9aa7b4">Type them into the Blender object name. Two go on material names, one on the action name.</text>
    <g>
      <rect x="24" y="80" width="216" height="84" rx="10" fill="#121a31"/>
      <text x="40" y="106" font-size="15" font-weight="800" fill="#7dd3fc">Wall-col</text>
      <text x="40" y="126" font-size="11" fill="#e8edf5">StaticBody3D child with a triangle</text>
      <text x="40" y="141" font-size="11" fill="#e8edf5">mesh shape. Exact, for level geometry.</text>
      <rect x="252" y="80" width="216" height="84" rx="10" fill="#121a31"/>
      <text x="268" y="106" font-size="15" font-weight="800" fill="#7dd3fc">Crate-convcol</text>
      <text x="268" y="126" font-size="11" fill="#e8edf5">Same, but a ConvexPolygonShape3D.</text>
      <text x="268" y="141" font-size="11" fill="#e8edf5">Cheap. Not for level geometry.</text>
      <rect x="480" y="80" width="216" height="84" rx="10" fill="#121a31"/>
      <text x="496" y="106" font-size="15" font-weight="800" fill="#7dd3fc">Blocker-colonly</text>
      <text x="496" y="126" font-size="11" fill="#e8edf5">Mesh removed on import. Only the</text>
      <text x="496" y="141" font-size="11" fill="#e8edf5">StaticBody3D collision remains.</text>
    </g>
    <g>
      <rect x="24" y="176" width="216" height="84" rx="10" fill="#121a31"/>
      <text x="40" y="202" font-size="15" font-weight="800" fill="#7dd3fc">Hull-convcolonly</text>
      <text x="40" y="222" font-size="11" fill="#e8edf5">Mesh removed, convex decomposition</text>
      <text x="40" y="237" font-size="11" fill="#e8edf5">collision kept.</text>
      <rect x="252" y="176" width="216" height="84" rx="10" fill="#121a31"/>
      <text x="268" y="202" font-size="15" font-weight="800" fill="#f0abfc">Barrel-rigid</text>
      <text x="268" y="222" font-size="11" fill="#e8edf5">Imported as a RigidBody3D, so it</text>
      <text x="268" y="237" font-size="11" fill="#e8edf5">falls and tumbles.</text>
      <rect x="480" y="176" width="216" height="84" rx="10" fill="#121a31"/>
      <text x="496" y="202" font-size="15" font-weight="800" fill="#fb7185">Guide-noimp</text>
      <text x="496" y="222" font-size="11" fill="#e8edf5">Node or animation removed at import,</text>
      <text x="496" y="237" font-size="11" fill="#e8edf5">whatever its type.</text>
    </g>
    <g>
      <rect x="24" y="272" width="216" height="84" rx="10" fill="#121a31"/>
      <text x="40" y="298" font-size="15" font-weight="800" fill="#6ee7b7">Floor-navmesh</text>
      <text x="40" y="318" font-size="11" fill="#e8edf5">Mesh becomes a navigation mesh</text>
      <text x="40" y="333" font-size="11" fill="#e8edf5">for agents to path across.</text>
      <rect x="252" y="272" width="216" height="84" rx="10" fill="#121a31"/>
      <text x="268" y="298" font-size="15" font-weight="800" fill="#6ee7b7">Cliff-occ / -occonly</text>
      <text x="268" y="318" font-size="11" fill="#e8edf5">Occluder3D added beside the mesh,</text>
      <text x="268" y="333" font-size="11" fill="#e8edf5">or replacing it, for occlusion culling.</text>
      <rect x="480" y="272" width="216" height="84" rx="10" fill="#121a31"/>
      <text x="496" y="298" font-size="15" font-weight="800" fill="#6ee7b7">Car-vehicle / -wheel</text>
      <text x="496" y="318" font-size="11" fill="#e8edf5">Mesh parented to a VehicleBody3D</text>
      <text x="496" y="333" font-size="11" fill="#e8edf5">or a VehicleWheel3D node.</text>
    </g>
    <g>
      <rect x="24" y="368" width="216" height="84" rx="10" fill="#121a31" stroke="#fbbf24" stroke-width="1"/>
      <text x="40" y="394" font-size="15" font-weight="800" fill="#fbbf24">Glass-alpha</text>
      <text x="40" y="414" font-size="11" fill="#e8edf5">Material name. Imported with the</text>
      <text x="40" y="429" font-size="11" fill="#e8edf5">TRANSPARENCY_ALPHA mode.</text>
      <rect x="252" y="368" width="216" height="84" rx="10" fill="#121a31" stroke="#fbbf24" stroke-width="1"/>
      <text x="268" y="394" font-size="15" font-weight="800" fill="#fbbf24">Paint-vcol</text>
      <text x="268" y="414" font-size="11" fill="#e8edf5">Material name. Albedo from vertex</text>
      <text x="268" y="429" font-size="11" fill="#e8edf5">colour, sRGB vertex colour flag on.</text>
      <rect x="480" y="368" width="216" height="84" rx="10" fill="#121a31" stroke="#c8a8ff" stroke-width="1"/>
      <text x="496" y="394" font-size="15" font-weight="800" fill="#c8a8ff">Walk_loop, Idle-cycle</text>
      <text x="496" y="414" font-size="11" fill="#e8edf5">Action name. Loop flag set. Prefix or</text>
      <text x="496" y="429" font-size="11" fill="#e8edf5">suffix, and no hyphen is required.</text>
    </g>
  </g>
</svg>
<figcaption>Blue and pink hints add or replace physics nodes, coral removes, green adds navigation and culling helpers. The amber pair goes on material names and the purple one on the action name. Everything on this card is set in Blender and survives every re-import.</figcaption>
</figure>
<p>Two of these do more than the card can say. <code>-colonly</code> &quot;will remove the mesh upon importing and will create a StaticBody3D collision instead&quot;, which is how you ship a hand-made low-poly collision mesh next to the visible one: model it, name it <code>Room_collision-colonly</code>, and only the physics survives. And <code>-noimp</code> removes &quot;nodes and animations&quot; of any type, so reference geometry and scratch actions can stay in the <code>.blend</code> without reaching the game.</p>
<p>The animation hint is the odd one. &quot;Animation clips in the source 3D file that start or end with the token loop or cycle will be imported as a Godot Animation with the loop flag set. Unlike the other suffixes described above, this does not require a hyphen.&quot; <code>Walk_loop</code>, <code>loop_walk</code> and <code>WalkCycle</code> all count.</p>
<p>If you'd rather not touch names, the <a href="https://docs.godotengine.org/en/stable/tutorials/assets_pipeline/importing_3d_scenes/advanced_import_settings.html">Advanced Import Settings</a> dialog (double-click the file, or <code>Advanced…</code> in the Import dock) does the same per node: <code>Skip Import</code>, <code>Generate &gt; Physics</code> with <code>Body Type</code> (<code>Static</code>, <code>Dynamic</code>, <code>Area</code>) and <code>Shape Type</code> (<code>Trimesh</code> for static level geometry, primitives or <code>Decompose Convex</code> for dynamic bodies), <code>Generate &gt; NavMesh</code> and <code>Generate &gt; Occluder</code>. Names win when the same model is reimported often or shared between projects, because the settings travel with the file.</p>
<h2>Animations: actions, NLA tracks and loops</h2>
<p>The Blender exporter's default <code>Actions</code> mode has one rule that causes most missing-animation reports. From the manual: &quot;An action will be exported if it is the active action on an object, or it is stashed to an NLA track (e.g. with the Stash or Push Down buttons in the Action Editor). Actions which are not associated with an object in one of these ways are not exported. If you have multiple actions you want to export, make sure they are stashed!&quot; Open the Action Editor in the Dope Sheet, and for each action you want, select it and press <code>Stash</code> (or <code>Push Down</code>). Each ends up on its own NLA track, and each becomes one Godot animation named after the action. You can rename the NLA track to override the name. One version note: &quot;Before Blender 4.4, tracks were merged regarding their name. With Blender 4.4, and the introduction of slotted actions, this default behavior has been changed. Now, tracks are merged by the action they are using, and not by their name.&quot;</p>
<p>Only three kinds of animation survive the trip: &quot;Object transform (location, rotation, scale)&quot;, &quot;Pose bones&quot; and &quot;Shape key values&quot;. Animated materials, lights, modifiers and physics don't export, so bake them or rebuild them in Godot.</p>
<p>Looping is Godot's decision, not the file's. The glTF spec &quot;defines only storage of animation keyframes, so this specification doesn't define any runtime behavior, such as: order of playing, auto-start, loops&quot;. So Godot reads the name: &quot;In Blender, this requires using the NLA Editor and naming the Action with the loop or cycle prefix or suffix.&quot; If you forgot, select the animation in the <code>AnimationPlayer</code> panel and set its <code>Loop Mode</code>. The <a href="https://docs.godotengine.org/en/stable/classes/class_animation.html">Animation class</a> offers <code>None</code> (&quot;the animation will stop playing&quot;), <code>Linear</code> (&quot;repeated without changing the playback direction&quot;) and <code>Ping-Pong</code> (&quot;repeats playback and reverse playback at both ends&quot;).</p>
<p>Godot puts everything into one <code>AnimationPlayer</code> under the imported root with an <code>AnimationLibrary</code> holding each clip. To share one set of animations across several characters, select the GLB in the FileSystem dock and change its import mode to <code>Animation Library</code>, which &quot;allows you to use one set of animations for several characters, without having to duplicate animation data&quot;. Pair that with the retargeting options below so the clips fit skeletons that aren't identical.</p>
<div class="video-embed"><iframe src="https://www.youtube.com/embed/qwz9aPdVoFg" title="Blender to Godot: Rigged Character Workflow (CGDive)" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></div>
<div class="video-caption">CGDive's rigged-character walkthrough is from 2021, so the Godot side is Godot 3. The Blender half still holds: a separate game rig with deform bones only, actions stashed to NLA tracks, glTF export, then looping and blending in the engine.</div>
<h2>Materials and textures</h2>
<p>Blender's exporter only understands one shader. The manual: &quot;The exporter supports Metal/Rough PBR (core glTF) and Shadeless (KHR_materials_unlit) materials. It will construct a glTF material based on the nodes it recognizes in the Blender material.&quot; Base colour comes from the <code>Base Color</code> input of a Principled BSDF, either the colour swatch or an Image Texture connected to it. Metallic and roughness come from the sliders or from one image with &quot;metallic values to be encoded in the blue (B) channel, and roughness to be encoded in the green (G) channel&quot;, split with a Separate RGB node and with the Image Texture's <code>Color Space</code> set to <code>Non-Color</code>. A normal map goes through a Normal Map node in <code>Tangent Space</code>, also <code>Non-Color</code>. Emission goes into the <code>Emission</code> input. Anything else, a noise texture, a colour ramp, a mix of two shaders, doesn't exist in glTF, and Godot's docs add that &quot;procedural Blender materials may not work correctly&quot;. Bake procedural work to an image first.</p>
<p>On the Godot side that lands in a <code>StandardMaterial3D</code>, whose docs describe the same packing: &quot;Instead of separate settings and textures for occlusion, roughness, and metallic, there is a single ORM texture.&quot; Normal maps must be &quot;OpenGL style&quot; (<code>+Y</code> up), which is what glTF and Blender's Normal Map node produce, so nothing to flip. Colour space follows the rule you set in Blender: base colour images stay sRGB, data maps are <code>Non-Color</code>. Get that backwards and the roughness map is gamma-shifted before Godot ever sees it.</p>
<p>&quot;Textures missing&quot; has a short list of causes. You exported glTF Separate and moved only the <code>.gltf</code>, leaving the <code>.bin</code> and images behind. You used the <code>.blend</code> import with <code>Materials &gt; Export Materials</code> set to <code>Named Placeholder</code> or <code>Placeholder</code>, where the docs say &quot;textures will have to be reassigned manually&quot;. <code>Data &gt; Material &gt; Materials</code> was left on <code>Placeholder</code> in the exporter. The Image Texture node points at a file Blender itself can't find (magenta in the viewport), so there's nothing to pack. Or the material was procedural. GLB plus <code>Export</code> plus image textures fixes all five.</p>
<p>Two more surprises. Backface culling: &quot;By default, Blender has backface culling disabled on materials and will export materials to match how they render in Blender. This means that materials in Godot will have their cull mode set to Disabled&quot;, so every backface renders. Tick <code>Backface Culling</code> in the Blender material's Settings panel for anything that's a closed surface. And transparency: the exporter picks <code>Opaque</code>, <code>Mask</code> or <code>Blend</code> from what's wired into the <code>Alpha</code> socket, and Godot maps that onto its <code>Transparency</code> modes. For leaves and grilles, round the alpha with a Math node so it exports as <code>Mask</code>, which Godot renders far cheaper than blended alpha.</p>
<p>If you want to edit materials in Godot without losing them on the next re-import, use <code>Actions… &gt; Extract Materials</code> in the Advanced Import Settings dialog. Godot &quot;will not overwrite changes made to extracted materials when the source 3D scene is reimported&quot;, though renaming the material in Blender breaks the link.</p>
<h2>Skeletons: Skeleton3D, bone names and retargeting</h2>
<p>An armature imports as a <code>Skeleton3D</code>, which &quot;provides an interface for managing a hierarchy of bones, including pose, rest and animation&quot;, with the skinned meshes as <code>MeshInstance3D</code> children pointing at it. Godot's <a href="https://docs.godotengine.org/en/stable/tutorials/assets_pipeline/retargeting_3d_skeletons.html">retargeting docs</a> explain the catch with Blender rigs: &quot;the bones of a glTF model output from Blender have 'Edit Bone Orientation' as the Bone Rest rotation&quot;, so two Blender characters with the same bone names can still have different rests, and an animation authored on one twists the other.</p>
<p>The fix is built into the importer. In Advanced Import Settings, select the <code>Skeleton3D</code> node and the right-hand panel shows a <code>Retarget</code> section with a single <code>bone_map</code> property. Create a <code>BoneMap</code>, give it the <code>SkeletonProfileHumanoid</code> profile, and &quot;auto-mapping will be performed when the SkeletonProfile is set&quot;. The profile is Godot's standard humanoid, 56 bones in four groups (<code>Body</code>, <code>Face</code>, <code>LeftHand</code>, <code>RightHand</code>), read-only, with names like <code>Hips</code>, <code>Spine</code>, <code>Chest</code>, <code>UpperChest</code>, <code>Neck</code>, <code>Head</code>, <code>LeftUpperArm</code>, <code>LeftLowerArm</code>, <code>LeftHand</code>, <code>LeftUpperLeg</code>, <code>LeftLowerLeg</code>, <code>LeftFoot</code>. Its reference pose is a T-pose facing <code>+Z</code>. Auto-mapping &quot;uses pattern matching for the bone names. So we recommend to use common English names for bones.&quot; Name bones <code>upper_arm.L</code> or <code>LeftUpperArm</code> rather than <code>Bone.014</code>, and check for magenta buttons in the map, which flag &quot;any missing, duplicate or incorrect parent-child relationship mappings&quot;.</p>
<p>Then the <code>Rest Fixer</code> options. <code>Overwrite Axis</code> rewrites every bone rest to match the profile and the docs call it &quot;the most important option for sharing animations in Godot 4&quot;, with the warning that it &quot;can produce horrible results if the original Bone Rest set externally is important&quot;. <code>Fix Silhouette</code> bends the model into the profile's T-pose, which &quot;does not need to be enabled for T-pose models, but should be enabled for A-pose models&quot;. <code>Apply Node Transform</code> fixes the unapplied-transform case from the axes section. <code>Normalize Position Tracks</code> scales root motion by hip height so a tall and a short character share a walk without foot sliding. Under <code>Remove Tracks</code>, the docs recommend enabling <code>Except Bone Transform</code>, <code>Unimportant Positions</code> and <code>Unmapped Bones</code> for a shared <code>AnimationLibrary</code>, and leaving them off for a scene whose accessories are animated.</p>
<p>A rigging note for Blender users. Whether your skeleton comes from Rigify, Auto-Rig Pro or an auto rigger, export with <code>Export Deformation Bones only</code> so control bones stay in Blender, export in rest pose, and keep the English bone names (<code>Hips</code>, <code>Spine</code>, <code>LeftArm</code>) that Mixamo-style rigs use, because that's what the auto-mapper pattern-matches against.</p>
<h2>Symptom, cause, fix</h2>
<figure class="guide-fig">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 440" role="img" aria-label="Symptom to cause to fix matrix for Blender to Godot imports. Model lying on its side: rotation never applied or +Y Up off, fix with Ctrl-A All Transforms and keep +Y Up. A hundred times too big: modelled in centimetres, keep 1 Blender unit as 1 metre and apply scale. Draco error on import: Data Compression on, turn it off. Animation missing: action not active or stashed, stash every action to an NLA track. Plays once and stops: no loop token, name it Walk_loop or set Loop Mode. Grey model with no textures: separate glTF without its images or placeholder materials, export GLB with Materials Export. Retargeted clip twists limbs: bone rests differ from the profile, use Overwrite Axis and Fix Silhouette.">
  <rect width="720" height="440" rx="14" fill="#0b1020"/>
  <g font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif">
    <text x="24" y="40" font-size="20" font-weight="800" fill="#e8edf5">Symptom, cause, fix</text>
    <text x="24" y="62" font-size="13" fill="#9aa7b4">The seven reports that cover nearly every Blender-to-Godot thread, and the one setting behind each.</text>
    <g font-size="11" font-weight="700" fill="#9aa7b4">
      <text x="24" y="92">WHAT YOU SEE</text>
      <text x="252" y="92">WHY</text>
      <text x="480" y="92">FIX</text>
    </g>
    <line x1="24" y1="100" x2="696" y2="100" stroke="#2a3655" stroke-width="1"/>
    <g font-size="12">
      <rect x="24" y="108" width="216" height="38" rx="6" fill="#121a31"/>
      <text x="34" y="132" font-weight="700" fill="#fb7185">Model lying on its side</text>
      <text x="252" y="126" fill="#e8edf5">Rotation never applied,</text>
      <text x="252" y="141" fill="#e8edf5">or +Y Up switched off</text>
      <text x="480" y="126" fill="#6ee7b7">Ctrl-A, All Transforms.</text>
      <text x="480" y="141" fill="#6ee7b7">Keep Transform &gt; +Y Up on</text>
      <rect x="24" y="154" width="216" height="38" rx="6" fill="#121a31"/>
      <text x="34" y="178" font-weight="700" fill="#fb7185">100x too big or tiny</text>
      <text x="252" y="172" fill="#e8edf5">Modelled in centimetres.</text>
      <text x="252" y="187" fill="#e8edf5">1 Blender unit is 1 glTF metre</text>
      <text x="480" y="172" fill="#6ee7b7">Scale to ~1.8 units, apply.</text>
      <text x="480" y="187" fill="#6ee7b7">Or Apply Root Scale in Godot</text>
      <rect x="24" y="200" width="216" height="38" rx="6" fill="#121a31"/>
      <text x="34" y="224" font-weight="700" fill="#fb7185">Draco error on import</text>
      <text x="252" y="218" fill="#e8edf5">Data &gt; Compression was on.</text>
      <text x="252" y="233" fill="#e8edf5">Godot has no Draco decoder</text>
      <text x="480" y="218" fill="#6ee7b7">Turn Compression off and</text>
      <text x="480" y="233" fill="#6ee7b7">re-export. Godot compresses itself</text>
      <rect x="24" y="246" width="216" height="38" rx="6" fill="#121a31"/>
      <text x="34" y="270" font-weight="700" fill="#fb7185">Animation missing</text>
      <text x="252" y="264" fill="#e8edf5">Action neither active nor</text>
      <text x="252" y="279" fill="#e8edf5">stashed, so not exported</text>
      <text x="480" y="264" fill="#6ee7b7">Action Editor &gt; Stash each one.</text>
      <text x="480" y="279" fill="#6ee7b7">Check Animation &gt; Import in Godot</text>
      <rect x="24" y="292" width="216" height="38" rx="6" fill="#121a31"/>
      <text x="34" y="316" font-weight="700" fill="#fb7185">Plays once, then stops</text>
      <text x="252" y="310" fill="#e8edf5">No loop or cycle token, and</text>
      <text x="252" y="325" fill="#e8edf5">glTF stores no loop flag</text>
      <text x="480" y="310" fill="#6ee7b7">Rename the action Walk_loop,</text>
      <text x="480" y="325" fill="#6ee7b7">or set Loop Mode to Linear</text>
      <rect x="24" y="338" width="216" height="38" rx="6" fill="#121a31"/>
      <text x="34" y="362" font-weight="700" fill="#fb7185">Grey model, no textures</text>
      <text x="252" y="356" fill="#e8edf5">Separate .gltf moved alone,</text>
      <text x="252" y="371" fill="#e8edf5">or Placeholder materials</text>
      <text x="480" y="356" fill="#6ee7b7">Export GLB with Materials: Export</text>
      <text x="480" y="371" fill="#6ee7b7">and image textures, not procedural</text>
      <rect x="24" y="384" width="216" height="38" rx="6" fill="#121a31"/>
      <text x="34" y="408" font-weight="700" fill="#fb7185">Retargeted clip twists limbs</text>
      <text x="252" y="402" fill="#e8edf5">Bone rests differ from the</text>
      <text x="252" y="417" fill="#e8edf5">SkeletonProfileHumanoid pose</text>
      <text x="480" y="402" fill="#6ee7b7">Bone Map + Overwrite Axis,</text>
      <text x="480" y="417" fill="#6ee7b7">Fix Silhouette for A-pose rigs</text>
    </g>
  </g>
</svg>
<figcaption>Read left to right. Five of the seven are fixed in Blender's export dialog or with Ctrl-A, and the last two in Godot's Import dock and Advanced Import Settings. None of them needs a script.</figcaption>
</figure>
<p>The longer list, including the ones that don't fit on a card.</p>
<table>
<thead>
<tr>
<th>Symptom in Godot</th>
<th>Cause</th>
<th>Fix</th>
</tr>
</thead>
<tbody>
<tr>
<td>Model lies on its side or is rotated 90 degrees</td>
<td>Rotation not applied, or <code>+Y Up</code> off</td>
<td><code>Object &gt; Apply &gt; All Transforms</code>, keep <code>+Y Up</code> on</td>
</tr>
<tr>
<td>Character walks backwards, <code>look_at</code> faces away</td>
<td>Modelled facing <code>+Y</code> in Blender</td>
<td>Model facing <code>-Y</code> (Blender front view). Godot: &quot;-Y is front for an asset&quot;</td>
</tr>
<tr>
<td>100x too big or too small</td>
<td>Centimetre-scale modelling, <code>Unit Scale</code> changed</td>
<td>1 Blender unit = 1 m, scale and apply, or <code>Apply Root Scale</code> in the Import dock</td>
</tr>
<tr>
<td><code>required extension 'KHR_draco_mesh_compression' is not supported</code></td>
<td><code>Data &gt; Compression</code> on</td>
<td>Turn it off and re-export, or decompress an existing file with gltf-transform</td>
</tr>
<tr>
<td>An animation is missing</td>
<td>Action not active or stashed, <code>-noimp</code> in its name, or <code>Animation &gt; Import</code> off</td>
<td>Stash it in the Action Editor, check the name, tick <code>Import</code></td>
</tr>
<tr>
<td>Animation plays once and stops</td>
<td>No <code>loop</code>/<code>cycle</code> token</td>
<td>Rename the action <code>Walk_loop</code>, or set <code>Loop Mode</code> on the Godot animation</td>
</tr>
<tr>
<td>Idle pose inherits a limb from the walk</td>
<td>Unkeyed bones carried over between actions</td>
<td>Tick <code>Reset pose bones between actions</code></td>
</tr>
<tr>
<td>Grey model, no textures</td>
<td>glTF Separate moved without its images, <code>Placeholder</code> or <code>Named Placeholder</code> materials, procedural nodes, missing source image</td>
<td>GLB, <code>Materials: Export</code>, image textures on a Principled BSDF</td>
</tr>
<tr>
<td>Inside faces visible, or a performance drop</td>
<td>Blender's default is backface culling off, so Godot cull mode is <code>Disabled</code></td>
<td>Tick <code>Backface Culling</code> in the Blender material settings</td>
</tr>
<tr>
<td>Shape keys shade wrong</td>
<td>Non-deforming bones exported</td>
<td><code>Data &gt; Armature &gt; Export Deformation Bones only</code></td>
</tr>
<tr>
<td>Skeleton has a stray transform, animations offset</td>
<td>Armature exported without applying transforms</td>
<td>Ctrl-A in Blender, or <code>Rest Fixer &gt; Apply Node Transform</code> on import</td>
</tr>
<tr>
<td>Shared animation twists limbs</td>
<td>Bone rests differ from the profile</td>
<td><code>BoneMap</code> with <code>SkeletonProfileHumanoid</code>, <code>Overwrite Axis</code>, <code>Fix Silhouette</code> for A-pose</td>
</tr>
<tr>
<td>Feet slide on a shared walk</td>
<td>Different hip heights</td>
<td><code>Normalize Position Tracks</code></td>
</tr>
<tr>
<td>Faceted shading or broken normal map</td>
<td>Modifiers not applied, or no tangents</td>
<td><code>Apply Modifiers</code>, <code>Tangents</code> on export or <code>Ensure Tangents</code> on import</td>
</tr>
<tr>
<td>No collision on level geometry</td>
<td>No hint and no physics generated</td>
<td><code>-col</code> suffix, or <code>Generate &gt; Physics</code> with <code>Trimesh</code></td>
</tr>
<tr>
<td><code>.blend</code> doesn't import at all</td>
<td>Blender not installed or not found</td>
<td>Install from <a href="http://blender.org">blender.org</a>, set <code>Filesystem &gt; Import &gt; Blender &gt; Blender Path</code>, restart the editor</td>
</tr>
</tbody>
</table>
<h2>The checklist</h2>
<p>Run it top to bottom before every export. Most steps are one keypress.</p>
<ol>
<li>In Blender, select everything that should ship and nothing else. Delete or hide reference meshes, or name them <code>-noimp</code>.</li>
<li>Face characters and props down <code>-Y</code>. Numpad 1 should show the character's face.</li>
<li>Check <code>Properties &gt; Scene &gt; Units</code> is metric with <code>Unit Scale</code> 1.0, and the character is about 1.8 units tall.</li>
<li><code>Object &gt; Apply &gt; All Transforms</code> (Ctrl-A) on every mesh and the armature.</li>
<li>Put the armature in rest pose. Godot: &quot;make sure that the skeleton is reset to its T-pose or default rest pose before exporting&quot;.</li>
<li>Add a Triangulate modifier if you have n-gons. Confirm every material is a Principled BSDF with image textures, <code>Non-Color</code> on data maps, and <code>Backface Culling</code> ticked on closed surfaces.</li>
<li>Open the Action Editor and <code>Stash</code> every action you want in Godot. Name looping ones with <code>loop</code> or <code>cycle</code>.</li>
<li>Rename objects with import hints: <code>-col</code> for level geometry, <code>-convcol</code> for props, <code>-rigid</code> for things that fall.</li>
<li><code>File &gt; Export &gt; glTF 2.0</code>. <code>Format</code>: glTF Binary. <code>Include &gt; Selected Objects</code> on. <code>+Y Up</code> on. <code>Apply Modifiers</code> on. <code>Materials</code>: Export. <code>Export Deformation Bones only</code> on. <code>Compression</code> off. <code>Animation mode</code>: Actions, <code>Reset pose bones between actions</code> on.</li>
<li>Drop the <code>.glb</code> into the Godot project folder and click back into the editor. Godot imports when the window gets focus.</li>
<li>In the Import dock, set <code>Root Type</code> to a <code>Node3D</code> type, <code>Animation &gt; FPS</code> to your Blender frame rate, and <code>glTF &gt; Embedded Texture Handling</code> to <code>Extract Textures</code> if you want per-image compression settings.</li>
<li>Open Advanced Import Settings. Check the animation list, set any missing loop modes, add a <code>BoneMap</code> on the <code>Skeleton3D</code> if you'll share animations, and <code>Extract Materials</code> if you'll edit them in Godot.</li>
<li>Instance the scene, press play, and bend an elbow. If it looks right here, it will look right in the build.</li>
</ol>
<h2>The one-click route: the Godot preset in Cinevva Rig</h2>
<p>Steps 9 to 11 are the part people get wrong on the third export of the day, when one checkbox drifts. The <a href="/blender-addon/">Cinevva Rig add-on</a> folds them into a preset. Before it writes anything it runs a size analysis that splits the estimated file into geometry, textures, animation and shape keys, so you can see whether an 80 MB export is a 4K texture problem or an unsampled-animation problem before Godot ever loads it. The Godot preset then exports GLB, <code>+Y Up</code>, no Draco because Godot 4 imports plain glTF cleanly, textures capped at 2048 px, and animation size optimisation on. Against a plain Blender GLB export, its presets produced files 68%, 89%, 92% and 98% smaller on four real models, most of that from texture caps rather than mesh tricks.</p>
<p>The facts that matter for a Blender user: the export half and the 260 CC0 animation clips work without a key, an account or a network connection, on your own machine. Rigging is what the $29 launch-price key turns on, also local and offline after a one-time engine download of about 2.4 GB, with no per-rig count. It supports Blender 4.2 and newer on Windows, macOS and Linux, installs as a standard extension, and the current version is 0.4.0 from September 5, 2026. If you'd rather keep your own workflow, the checklist above is exactly what the preset does, and the <a href="/tools/glb-viewer">GLB viewer</a> will show you the scene graph, skeleton and animation list of the result before you hand it to Godot.</p>
<h2>Common Questions</h2>
<h3>How do I import a Blender file into Godot 4?</h3>
<p>Two ways. Save the <code>.blend</code> inside your Godot project folder and Godot imports it by calling Blender's glTF exporter, which needs Blender 3.0 or later installed (3.5+ recommended) and found at <code>Editor Settings &gt; Filesystem &gt; Import &gt; Blender &gt; Blender Path</code>. Or export a <code>.glb</code> from <code>File &gt; Export &gt; glTF 2.0</code> and drop that in the project instead. The GLB works for teammates without Blender and on every editor platform.</p>
<h3>Should I use glTF or FBX for Blender to Godot?</h3>
<p>glTF, as a single <code>.glb</code>. Godot's docs list glTF 2.0 as the recommended format, and the <code>.blend</code> import is glTF underneath. FBX works since Godot 4.3 through the built-in ufbx importer, and needed the external FBX2glTF program before that, but it adds a conversion step and Blender's FBX exporter applies a 100x scale by default. Use FBX only when a downstream tool demands it.</p>
<h3>Why is my Blender model the wrong size in Godot?</h3>
<p>Godot treats 1 unit as 1 metre and so does glTF, and Blender's exporter writes one Blender unit as one metre regardless of the scene's <code>Unit Scale</code>, which only changes what the interface displays. A model built at centimetre numbers arrives 100x too big. Scale it to about 1.8 units for a human, apply the scale with Ctrl-A, and re-export, or use <code>Apply Root Scale</code> in Godot's Import dock.</p>
<h3>How do I import Blender animations into Godot 4 and make them loop?</h3>
<p>Stash every action to an NLA track in the Action Editor, because the exporter only writes actions that are active or stashed. Export with <code>Animation mode</code> set to <code>Actions</code> and each action becomes one animation in the imported <code>AnimationPlayer</code>. To loop, put <code>loop</code> or <code>cycle</code> at the start or end of the action name (<code>Walk_loop</code>) and Godot sets the loop flag on import, or set <code>Loop Mode</code> to <code>Linear</code> on the animation afterwards.</p>
<h3>What do -col and -rigid mean in Godot import?</h3>
<p>They're import hints Godot reads from node names. <code>-col</code> adds a child <code>StaticBody3D</code> with a triangle-mesh collision shape matching the mesh, <code>-convcol</code> uses a convex shape instead, <code>-colonly</code> drops the mesh and keeps only the collision, and <code>-rigid</code> imports the mesh as a <code>RigidBody3D</code>. Type them onto the object name in Blender, and the physics setup survives every re-import.</p>
<h3>Why are my textures missing when I import from Blender to Godot?</h3>
<p>Usually one of five things: you exported glTF Separate and copied only the <code>.gltf</code>, the exporter's <code>Materials</code> option was <code>Placeholder</code>, the <code>.blend</code> import's <code>Export Materials</code> was set to <code>Named Placeholder</code>, the material used procedural nodes glTF can't store, or the Image Texture node pointed at a file Blender couldn't find. Export a GLB with <code>Materials: Export</code> and image textures wired into a Principled BSDF.</p>
<h3>Does Godot 4 use Skeleton3D for Blender armatures?</h3>
<p>Yes. A Blender armature imports as a <code>Skeleton3D</code> node with the skinned meshes as <code>MeshInstance3D</code> children, and the actions become animations on an <code>AnimationPlayer</code>. To share animations between characters, give the <code>Skeleton3D</code> a <code>BoneMap</code> with the <code>SkeletonProfileHumanoid</code> profile in Advanced Import Settings and enable <code>Overwrite Axis</code>, because Blender bone rests differ per rig even when the names match.</p>
<h2>Related</h2>
<ul>
<li><a href="/guides/blender-to-unity-export-checklist">Blender to Unity Export Checklist</a>: the FBX side of the same problem, with the 100x scale and Humanoid Avatar mapping</li>
<li><a href="/guides/blender-to-unreal-export-checklist">Blender to Unreal Export Checklist</a>: centimetres, Z-up, bone axes and retargeting onto the UE5 Mannequin</li>
<li><a href="/guides/godot-vs-unity-web-games">Godot vs Unity for Web Games (2026)</a>: if you're still choosing the engine</li>
<li><a href="/guides/optimize-glb-for-web">How to Optimize GLB Files for the Web</a>: texture caps, quantization and when Draco or Meshopt is worth it</li>
<li><a href="/tools/glb-viewer">GLB Viewer and glTF Inspector</a>: inspect the scene graph, materials, skeleton and animations of your export before Godot sees it</li>
<li><a href="/blender-addon/">Cinevva Rig for Blender</a>: rig, animate and export for Godot from one panel in Blender</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Blender to Unity Export Checklist: Scale, Axes, Bones, and Animations That Land Right (2026)]]></title>
            <link>https://app.cinevva.com/guides/blender-to-unity-export-checklist</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/blender-to-unity-export-checklist</guid>
            <pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Blender to Unity export checklist: the FBX settings that fix the 0.01 scale, the -90 X rotation, _end leaf bones, Humanoid mapping, clips and pink materials.]]></description>
            <content:encoded><![CDATA[<h1>Blender to Unity Export Checklist: Scale, Axes, Bones, and Animations That Land Right (2026)</h1>
<p><em>Last updated: September 2026.</em></p>
<figure class="guide-hero">
<img src="https://cdn.cinevva.com/guides/blender-to-unity-export-checklist-hero.jpg?v=1" alt="A rigged low-poly character passing from a Blender viewport into a Unity scene at the same size" width="1216" height="640">
</figure>
<style>
.guide-hero { margin: 1.25rem 0 1.75rem; }
.guide-hero img { width: 100%; height: auto; border-radius: 12px; display: block; }
.guide-fig { margin: 1.5rem 0; }
.guide-fig > a { display: block; }
.guide-fig img { width: 100%; height: auto; border-radius: 10px; border: 1px solid var(--vp-c-divider); display: block; }
.guide-fig svg { width: 100%; height: auto; display: block; }
.guide-fig figcaption { font-size: 0.9rem; color: var(--vp-c-text-2); margin: 0.5rem 0 0; }
.video-embed { position: relative; width: 100%; max-width: 720px; margin: 1.5rem 0; }
.video-embed iframe { width: 100%; aspect-ratio: 16/9; border-radius: 8px; }
.video-caption { font-size: 0.9rem; color: var(--vp-c-text-2); margin-top: 0.5rem; margin-bottom: 1.5rem; }
</style>
<p>To get a Blender model into Unity at the right size, facing the right way, with a rig Unity can read, export FBX from <code>File &gt; Export &gt; FBX (.fbx)</code> with Apply Scalings set to FBX Units Scale (or FBX All), Forward -Z and Up Y, Apply Unit on, Add Leaf Bones off, Smoothing set to Face, and Path Mode Copy with Embed Textures on. Don't drop the .blend file into Assets, and keep glTF for static props until Unity's glTFast importer plays animation without extra work. Everything below explains why each setting matters, what it looks like when it's wrong, and how to fix it on either side.</p>
<h2>Quick answer</h2>
<ul>
<li><strong>Format:</strong> FBX for anything rigged or animated. glTF (.glb) only for static props, and only after installing the <code>com.unity.cloud.gltfast</code> package. Never the raw .blend.</li>
<li><strong>Scale:</strong> Blender Scene Properties, Unit System Metric, Unit Scale 1.0. In the exporter, Scale 1.00, Apply Scalings FBX Units Scale, Apply Unit ticked. In Unity, Scale Factor 1 and Convert Units ticked. A 1.8 m character should read 1.8 units tall with a scale of 1 on every transform.</li>
<li><strong>Axes:</strong> Forward -Z, Up Y in the exporter (the defaults). In Unity's Model tab, tick Bake Axis Conversion so the -90 on X disappears from the root transform.</li>
<li><strong>Bones:</strong> untick Add Leaf Bones. Tick Only Deform Bones if you export a Rigify or Auto-Rig Pro control rig. Model in a T-pose and name bones after body parts so the Humanoid Avatar maps itself.</li>
<li><strong>Animation:</strong> one Action per clip, or one NLA strip per clip. Leave NLA Strips and All Actions on, Key All Bones on, Sampling Rate 1. In Unity the clips appear in the Animation tab, one per FBX AnimStack.</li>
<li><strong>Textures:</strong> Path Mode Copy, Embed Textures on. In Unity's Materials tab press Extract Textures, then Extract Materials. Pink means the shader doesn't match your render pipeline, not that the texture is missing.</li>
</ul>
<h2>Quick reference</h2>
<p>The Blender FBX exporter settings that matter for Unity, with the value to use and the reason. Option names and descriptions come from the <a href="https://docs.blender.org/manual/en/latest/addons/import_export/scene_fbx.html">Blender manual</a> and the exporter's <a href="https://projects.blender.org/blender/blender/src/branch/main/scripts/addons_core/io_scene_fbx/__init__.py">source</a>.</p>
<table>
<thead>
<tr>
<th>Panel</th>
<th>Setting</th>
<th>For Unity</th>
<th>Why</th>
</tr>
</thead>
<tbody>
<tr>
<td>Include</td>
<td>Selected Objects</td>
<td>On</td>
<td>Cameras, lights and reference planes shouldn't ship</td>
</tr>
<tr>
<td>Include</td>
<td>Object Types</td>
<td>Armature, Mesh (Empty if you use locators)</td>
<td>Cameras and lights import as Unity components you'll delete</td>
</tr>
<tr>
<td>Transform</td>
<td>Scale</td>
<td>1.00</td>
<td>Any other value bakes a mystery multiplier into the file</td>
</tr>
<tr>
<td>Transform</td>
<td>Apply Scalings</td>
<td>FBX Units Scale or FBX All</td>
<td>Puts the metre-to-centimetre factor in the file header, not on every object</td>
</tr>
<tr>
<td>Transform</td>
<td>Forward / Up</td>
<td>-Z Forward, Y Up</td>
<td>Unity is Y up, Z forward</td>
</tr>
<tr>
<td>Transform</td>
<td>Apply Unit</td>
<td>On</td>
<td>Honours your Scene unit settings</td>
</tr>
<tr>
<td>Transform</td>
<td>Use Space Transform</td>
<td>On</td>
<td>Writes the axis conversion into object rotations</td>
</tr>
<tr>
<td>Transform</td>
<td>Apply Transform</td>
<td>Off</td>
<td>The exporter itself says it is broken with armatures and animation</td>
</tr>
<tr>
<td>Geometry</td>
<td>Smoothing</td>
<td>Face</td>
<td>Unity needs smoothing groups for blend shape normals</td>
</tr>
<tr>
<td>Geometry</td>
<td>Apply Modifiers</td>
<td>On</td>
<td>Exports the evaluated mesh (mirror, subdivision, triangulate)</td>
</tr>
<tr>
<td>Armature</td>
<td>Primary / Secondary Bone Axis</td>
<td>Y / X (defaults)</td>
<td>Unity doesn't care, but retargeting tools do</td>
</tr>
<tr>
<td>Armature</td>
<td>Armature FBXNode Type</td>
<td>Null</td>
<td>Default, imports as an empty root GameObject</td>
</tr>
<tr>
<td>Armature</td>
<td>Only Deform Bones</td>
<td>On for control rigs, off for plain armatures</td>
<td>Keeps IK targets and widgets out of the skeleton</td>
</tr>
<tr>
<td>Armature</td>
<td>Add Leaf Bones</td>
<td>Off</td>
<td>Otherwise every chain ends in a <code>_end</code> bone Unity shows</td>
</tr>
<tr>
<td>Bake Animation</td>
<td>Key All Bones, NLA Strips, All Actions, Force Start/End Keying</td>
<td>All on</td>
<td>One AnimStack per clip, every bone keyed</td>
</tr>
<tr>
<td>Bake Animation</td>
<td>Sampling Rate / Simplify</td>
<td>1.0 / 1.0</td>
<td>A key per frame, light curve cleanup</td>
</tr>
<tr>
<td>Main</td>
<td>Path Mode / Embed Textures</td>
<td>Copy / On</td>
<td>Textures travel inside the .fbx</td>
</tr>
</tbody>
</table>
<h2>Don't drop the .blend into Assets</h2>
<p>Unity will accept a .blend file, and that's the trap. Unity's <a href="https://docs.unity3d.com/Manual/HOWTO-ImportObjectsFrom3DApps.html">proprietary format</a> page explains what happens: &quot;You need to have the 3D modeling software installed to import proprietary files directly into Unity&quot;, and &quot;the first time you import a proprietary file into Unity, the 3D modeling software has to launch in a command-line process.&quot; Unity is running Blender's FBX exporter in the background with settings you don't control, so you get the exporter's defaults, including the leaf bones and the scale layout that produce most of the problems on this page.</p>
<p>The same page lists what the .blend route can't do: &quot;Textures and diffuse color are not assigned automatically&quot;, and &quot;Blender does not export the visibility value inside animations in the FBX file.&quot; Unity's <a href="https://docs.unity3d.com/Manual/3D-formats.html">3D formats</a> page adds the team problem: assets saved as .blend &quot;fail to import unless you have the corresponding 3D modeling software installed on your computer&quot;, so &quot;everybody working on your Unity project must have the correct software installed&quot;, including your build machine. Unity's own verdict: &quot;It's best practice to use the .fbx file format whenever possible, and not use proprietary model file formats in production.&quot;</p>
<p>Keep the .blend in a source folder outside Assets (or in a folder ending in <code>~</code>, which Unity ignores) and export FBX into Assets.</p>
<h2>FBX or glTF for Unity in 2026</h2>
<p>FBX. Unity's importer reads <code>.fbx</code>, <code>.dae</code>, <code>.dxf</code> and <code>.obj</code> natively, and its 3D formats page doesn't mention glTF at all. glTF support comes from <a href="https://docs.unity3d.com/Packages/com.unity.cloud.gltfast@latest">Unity glTFast</a>, a package you add through Window &gt; Package Manager &gt; Add package by name with <code>com.unity.cloud.gltfast</code>. It's an official Unity package since December 2023, at version 6.17.0 as of March 2026, and its <a href="https://docs.unity3d.com/Packages/com.unity.cloud.gltfast@6.17/manual/installation.html">installation page</a> says the Editor installs the latest version plus dependencies. Once it's in, dropping a <code>.glb</code> into Assets works through a ScriptedImporter, and it supports Built-in, URP and HDRP.</p>
<p>Three things stop it being the default for characters. Its <a href="https://docs.unity3d.com/Packages/com.unity.cloud.gltfast@6.17/manual/features.html">features page</a> lists animation as fully supported only &quot;via legacy Animation System&quot;, and for Mecanim says &quot;Animation clips can be imported Mecanim compatible, but they won't be assigned and cannot be played back without further work.&quot; Draco, KTX2 and Meshopt each need another package (<code>com.unity.cloud.draco</code>, <code>com.unity.cloud.ktx</code>, <code>com.unity.meshopt.decompress</code>). And Unity's <a href="https://docs.unity3d.com/Manual/ImportingTextures.html">texture importer</a> reads BMP, EXR, GIF, HDR, IFF, JPG, PICT, PNG, PSD, TGA and TIFF, not WebP, which is why glTFast 6.17 added an explicit error for WebP images. A GLB tuned for the web (WebP textures, Draco) is the wrong file for Unity.</p>
<p>glTF earns its place for static props and for anything loaded at runtime from a server, where glTFast is excellent. For a rigged, animated character going into an Animator Controller, export FBX. If you already have a GLB, the <a href="/tools/glb-viewer">GLB viewer</a> shows you what's in it, and Blender imports it cleanly for a re-export.</p>
<h2>Scale: why the model arrives 100x too big, or with 0.01 on everything</h2>
<p>FBX measures in centimetres, Blender in metres. The exporter's <a href="https://projects.blender.org/blender/blender/src/branch/main/scripts/addons_core/io_scene_fbx/fbx_utils.py">unit code</a> is one line: the Blender-to-FBX factor is <code>100.0 * scene.unit_settings.scale_length</code>, with a comment that FBX stores &quot;the 'reference' unit of a file in its UnitScaleFactor property (1.0 meaning centimeter)&quot;. So every metre export carries a factor of 100 somewhere, and the Apply Scalings dropdown decides where.</p>
<p>The default, <strong>All Local</strong>, is described as &quot;Apply custom scaling and units scaling to each object transformation, FBX scale remains at 1.0&quot;. Every object in the file gets a scale of 100 on its transform. Unity's Model tab then applies Convert Units, which &quot;converts the model scaling defined in the model file to Unity's scale&quot;, and the prefab looks the right size, with a scale of 100 on the mesh and a file scale of 0.01 to cancel it. That's the famous 0.01. It works until you parent something to a bone, drive a transform from code, or retarget, and the hidden 100 shows up.</p>
<p><strong>FBX Units Scale</strong> is &quot;Apply custom scaling to each object transformation, and units scaling to FBX scale&quot;: the 100 moves into the file's unit header and every object keeps a scale of 1. <strong>FBX All</strong> puts both the unit factor and your custom Scale value in the header, which is the same result as long as Scale stays at 1.00. Either is right for Unity. The Unity side wants the defaults: Unity's <a href="https://docs.unity3d.com/Manual/FBXImporter-Model.html">Model tab</a> says Scale Factor exists because &quot;Unity's physics system expects 1 m in the game world to be 1 unit in the imported file&quot;, so leave it at 1 and leave Convert Units ticked.</p>
<figure class="guide-fig">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 400" role="img" aria-label="A 1 metre cube exported from Blender three ways: with Apply Scalings All Local it arrives at the right size but with scale 100 on the object and file scale 0.01; with FBX Units Scale or FBX All it arrives at scale 1 and 1 metre; with Convert Units unticked in Unity it arrives 100 metres wide.">
  <rect width="720" height="400" rx="14" fill="#0b1020"/>
  <g font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif">
    <text x="24" y="40" font-size="20" font-weight="800" fill="#e8edf5">One metre cube, three landings</text>
    <text x="24" y="62" font-size="13" fill="#9aa7b4">FBX counts in centimetres, so every export carries a factor of 100. Apply Scalings decides where it goes.</text>
    <g>
      <rect x="24" y="84" width="150" height="292" rx="10" fill="#121a31"/>
      <text x="99" y="110" font-size="13" font-weight="700" fill="#e8edf5" text-anchor="middle">Blender</text>
      <text x="99" y="128" font-size="11" fill="#9aa7b4" text-anchor="middle">Unit Scale 1.0, metres</text>
      <rect x="64" y="180" width="70" height="70" rx="6" fill="none" stroke="#7dd3fc" stroke-width="2"/>
      <path d="M64 180 l14 -14 h70 v70 l-14 14 M134 180 l14 -14" fill="none" stroke="#7dd3fc" stroke-width="2" opacity="0.6"/>
      <text x="99" y="280" font-size="12" font-weight="700" fill="#7dd3fc" text-anchor="middle">1 m cube</text>
      <text x="99" y="298" font-size="11" fill="#9aa7b4" text-anchor="middle">scale 1, 1, 1</text>
      <text x="99" y="350" font-size="11" fill="#9aa7b4" text-anchor="middle">File &gt; Export &gt; FBX</text>
    </g>
    <g stroke="#9aa7b4" stroke-width="1.5" fill="none">
      <path d="M174 230 C 200 230, 200 150, 226 150"/>
      <path d="M174 230 L 226 230"/>
      <path d="M174 230 C 200 230, 200 310, 226 310"/>
    </g>
    <g>
      <rect x="230" y="96" width="466" height="96" rx="10" fill="#121a31" stroke="#fbbf24" stroke-width="1.5"/>
      <text x="246" y="120" font-size="13" font-weight="700" fill="#fbbf24">All Local (the default)</text>
      <text x="246" y="140" font-size="11" fill="#9aa7b4">The 100 lands on every object transform. Unity cancels it with Convert Units.</text>
      <rect x="600" y="118" width="60" height="60" rx="5" fill="none" stroke="#fbbf24" stroke-width="2"/>
      <text x="246" y="164" font-size="12" font-weight="700" fill="#e8edf5">Looks right. Transform reads scale 100, file scale 0.01.</text>
      <text x="246" y="182" font-size="11" fill="#9aa7b4">Bites when you parent props to bones or drive transforms from code.</text>
    </g>
    <g>
      <rect x="230" y="200" width="466" height="76" rx="10" fill="#121a31" stroke="#6ee7b7" stroke-width="1.5"/>
      <text x="246" y="224" font-size="13" font-weight="700" fill="#6ee7b7">FBX Units Scale, or FBX All</text>
      <text x="246" y="244" font-size="11" fill="#9aa7b4">The 100 goes into the file's UnitScaleFactor header. Objects keep scale 1.</text>
      <rect x="600" y="208" width="60" height="60" rx="5" fill="none" stroke="#6ee7b7" stroke-width="2"/>
      <text x="246" y="266" font-size="12" font-weight="700" fill="#e8edf5">Looks right. Transform reads scale 1, 1, 1.</text>
    </g>
    <g>
      <rect x="230" y="284" width="466" height="92" rx="10" fill="#121a31" stroke="#fb7185" stroke-width="1.5"/>
      <text x="246" y="308" font-size="13" font-weight="700" fill="#fb7185">Convert Units off, or Scale Factor changed, in Unity</text>
      <text x="246" y="328" font-size="11" fill="#9aa7b4">Nothing cancels the 100. The cube is 100 units on a side.</text>
      <rect x="592" y="290" width="100" height="82" rx="5" fill="none" stroke="#fb7185" stroke-width="2" stroke-dasharray="5 4"/>
      <text x="642" y="336" font-size="12" font-weight="800" fill="#fb7185" text-anchor="middle">100 m</text>
      <text x="246" y="352" font-size="12" font-weight="700" fill="#e8edf5">Fix in Unity: Scale Factor 1, Convert Units ticked. Then reimport.</text>
    </g>
  </g>
</svg>
<figcaption>The exporter always writes a factor of 100 for a metre scene. All Local stores it as a scale of 100 on each object and lets Unity's Convert Units undo it, which is why imported Blender objects show 100 and 0.01. FBX Units Scale and FBX All store it in the file header instead, and the transforms come in clean.</figcaption>
</figure>
<p>Two other scale mistakes are common. If you changed Unit Scale in Scene Properties to work in centimetres, the exporter multiplies by 100 times that Unit Scale, and the Blender manual notes the setting &quot;only influences the values displayed in the user interface and not how things behave internally&quot;, so a 0.01 Unit Scale with Apply Unit on can shrink a 180 cm character to 1.8 cm. And an object scale that isn't 1.0 gets baked into the FBX. Select everything and run <code>Object &gt; Apply &gt; All Transforms</code> (Ctrl-A). The <a href="https://docs.blender.org/manual/en/latest/scene_layout/object/editing/apply.html">Blender manual</a> agrees: &quot;It is recommended to apply transforms before rigging and animation.&quot; Don't apply scale to an armature that already carries animation, because that rescales the keyframes.</p>
<h2>Axes: where the -90 on X comes from</h2>
<p>Blender is Z up. The FBX manual states it plainly: &quot;Blender uses Y Forward, Z Up (since the front view looks along the +Y direction). For example, its common for applications to use Y as the up axis, in that case -Z Forward, Y Up is needed.&quot; Unity is Y up and Z forward. Blender's front view looks along +Y, so a character modelled to face the front camera faces -Y, and the exporter's defaults of -Z Forward and Y Up are what map that to Unity's forward. Leave them.</p>
<p>Even with the right axes, the root object of a Blender FBX shows a rotation of -90 (often -89.98) on X in Unity's Inspector, with a compensating rotation on the children. That's the axis conversion stored as a transform rather than baked into vertices. Three ways to remove it, in order of preference.</p>
<p><strong>Bake Axis Conversion in Unity.</strong> The Model tab option &quot;Bakes the results of axis conversion directly into your application's asset data (for example, vertex or animation data) when you import a model that uses a different axis system than Unity.&quot; Tick it and the root reads 0, 0, 0, and nothing changes in Blender.</p>
<p><strong>Counter-rotate in Blender.</strong> With all transforms applied, rotate the object -90 on X, apply rotation, then rotate it +90 on X and export without applying. The exporter's Use Space Transform (&quot;Apply global space transform to the object rotations&quot;) turns that +90 into a zero rotation on the Unity side. Community add-ons automate this: the <a href="https://github.com/EdyJ/blender-to-unity-fbx-exporter">blender-to-unity-fbx-exporter</a> project gives every exported object &quot;a rotation of +90 degrees around the X axis in their transform without actually modifying the visual pose&quot;, reverted after export.</p>
<p><strong>Apply Transform in the exporter.</strong> Don't, for anything rigged. Its own description ends &quot;(WARNING! experimental option, use at own risk, known to be broken with armatures/animations)&quot;, and the exporter draws an error icon next to it. It works on a static prop, and it's still fine to skip.</p>
<figure class="guide-fig">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 340" role="img" aria-label="Axis conventions side by side: Blender is right-handed with Z up, X right and the front of a model facing minus Y; Unity is left-handed with Y up, X right and Z forward. The exporter maps them with Forward minus Z and Up Y, which is a 90 degree rotation about X, and Unity's Bake Axis Conversion bakes that rotation into the mesh.">
  <defs>
    <marker id="axarrow" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
      <path d="M0,0 L10,5 L0,10 z" fill="#e8edf5"/>
    </marker>
  </defs>
  <rect width="720" height="340" rx="14" fill="#0b1020"/>
  <g font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif">
    <text x="24" y="40" font-size="20" font-weight="800" fill="#e8edf5">Blender axes vs Unity axes</text>
    <text x="24" y="62" font-size="13" fill="#9aa7b4">Same character, two conventions. The exporter's -Z Forward, Y Up setting is the bridge.</text>
    <rect x="24" y="84" width="292" height="232" rx="10" fill="#121a31"/>
    <rect x="404" y="84" width="292" height="232" rx="10" fill="#121a31"/>
    <text x="40" y="110" font-size="14" font-weight="700" fill="#e8edf5">Blender</text>
    <text x="40" y="128" font-size="11" fill="#9aa7b4">right-handed, Z up, front view looks along +Y</text>
    <text x="420" y="110" font-size="14" font-weight="700" fill="#e8edf5">Unity</text>
    <text x="420" y="128" font-size="11" fill="#9aa7b4">left-handed, Y up, Z forward</text>
    <g stroke-width="2.5" fill="none" stroke-linecap="round">
      <line x1="150" y1="250" x2="150" y2="160" stroke="#7dd3fc" marker-end="url(#axarrow)"/>
      <line x1="150" y1="250" x2="240" y2="250" stroke="#fb7185" marker-end="url(#axarrow)"/>
      <line x1="150" y1="250" x2="90" y2="290" stroke="#6ee7b7" marker-end="url(#axarrow)"/>
      <line x1="150" y1="250" x2="204" y2="214" stroke="#6ee7b7" stroke-dasharray="4 4" opacity="0.5" marker-end="url(#axarrow)"/>
    </g>
    <g font-size="12" font-weight="700">
      <text x="156" y="156" fill="#7dd3fc">Z up</text>
      <text x="246" y="254" fill="#fb7185">X</text>
      <text x="40" y="300" fill="#6ee7b7">-Y, the model's front</text>
      <text x="208" y="210" fill="#6ee7b7" opacity="0.6">+Y</text>
    </g>
    <g stroke-width="2.5" fill="none" stroke-linecap="round">
      <line x1="530" y1="250" x2="530" y2="160" stroke="#7dd3fc" marker-end="url(#axarrow)"/>
      <line x1="530" y1="250" x2="620" y2="250" stroke="#fb7185" marker-end="url(#axarrow)"/>
      <line x1="530" y1="250" x2="584" y2="214" stroke="#6ee7b7" marker-end="url(#axarrow)"/>
    </g>
    <g font-size="12" font-weight="700">
      <text x="536" y="156" fill="#7dd3fc">Y up</text>
      <text x="626" y="254" fill="#fb7185">X</text>
      <text x="588" y="210" fill="#6ee7b7">Z forward</text>
    </g>
    <g fill="#c8a8ff" font-size="11" font-weight="700" text-anchor="middle">
      <rect x="322" y="150" width="76" height="100" rx="8" fill="#1a1a3a" stroke="#c8a8ff" stroke-width="1.5"/>
      <text x="360" y="176">Exporter</text>
      <text x="360" y="194" fill="#e8edf5">-Z Forward</text>
      <text x="360" y="210" fill="#e8edf5">Y Up</text>
      <text x="360" y="236" fill="#9aa7b4">= 90 about X</text>
    </g>
    <text x="360" y="300" font-size="11" fill="#9aa7b4" text-anchor="middle">Unity stores that 90 as -90 on the root transform unless Bake Axis Conversion is ticked.</text>
    <text x="360" y="272" font-size="11" fill="#9aa7b4" text-anchor="middle">Blender Z becomes Unity Y. Blender -Y becomes Unity +Z.</text>
  </g>
</svg>
<figcaption>Blender's up axis is Z and a front-facing model looks down -Y. Unity's up axis is Y and forward is +Z. The exporter's default Forward -Z, Up Y is exactly the 90 degree turn about X that maps one to the other, and Unity either keeps that turn as a -90 rotation on the root or, with Bake Axis Conversion, writes it into the vertices.</figcaption>
</figure>
<h2>Bones: leaf bones, orientation, and the Humanoid Avatar</h2>
<p><strong>Leaf bones.</strong> Add Leaf Bones is on by default and described as &quot;Append a final bone to the end of each chain to specify last bone length (use this when you intend to edit the armature from exported data)&quot;. The exporter names each one after its parent plus <code>_end</code>, so Unity's hierarchy fills with <code>Head_end</code>, <code>LeftHand_end</code> and <code>LeftToeBase_end</code>. They're harmless for Generic rigs and they confuse Humanoid automapping and retargeting tools. Untick it. If you're re-importing someone else's FBX, the importer's Ignore Leaf Bones option strips them.</p>
<p><strong>Control rigs.</strong> A Rigify or Auto-Rig Pro rig has hundreds of non-deforming bones for controls, IK targets and mechanisms. Only Deform Bones writes &quot;Only deforming bones (and non-deforming ones when they have deforming children)&quot;, which is the skeleton Unity wants. Bake the animation onto the deform bones first, since control-rig constraints don't export, only their result as keyframes.</p>
<p><strong>Bone orientation.</strong> Blender bones point along their local Y. Unity reads the bind pose and the skin weights and plays what it's given, so the Primary and Secondary Bone Axis settings can stay at Y and X. They matter when the same FBX goes to a tool that assumes a convention, such as Unreal or a retargeting add-on.</p>
<p><strong>The Humanoid Avatar.</strong> Unity's <a href="https://docs.unity3d.com/Manual/FBXImporter-Rig.html">Rig tab</a> gives you Generic (&quot;if your rig is non-humanoid (quadruped or any entity to be animated)&quot;) or Humanoid (&quot;if your rig is humanoid (it has two legs, two arms and a head)&quot;). Humanoid unlocks retargeting between characters, and it has rules, from the <a href="https://docs.unity3d.com/Manual/ConfiguringtheAvatar.html">Avatar configuration</a> page. The skeleton needs &quot;at least 15 bones organized in a way that loosely conforms to an actual human skeleton&quot;. &quot;If Unity can't create the Avatar, a cross appears next to the Configure button, and no Avatar sub-asset appears.&quot; Inside Configure, a bone Unity accepts &quot;appears in green in the Avatar Mapping tab&quot; and a rejected one &quot;appears in red&quot;. And the pose: &quot;If the bone assignment is correct, but the character is not in the correct pose, you will see the message 'Character not in T-Pose'. You can try to fix that by choosing Enforce T-Pose from the Pose menu.&quot;</p>
<p>So rig in a T-pose with the rest pose in a T-pose too, and name bones after body parts (Unity's guidance for automatic mapping is to name bones &quot;in a way that reflects the body parts they represent&quot;). Mixamo names (<code>mixamorig:Hips</code>, <code>mixamorig:LeftArm</code>) automap reliably, which is one reason so many riggers output them. If a few bones fail, drag them from the Hierarchy onto the slots, then Pose &gt; Enforce T-Pose, then Apply, and save the result as a Human Template (<code>.ht</code>) for the next export of the same rig.</p>
<p>If you don't have a rig yet, the <a href="/guides/automatic-rigging-explained">automatic rigging guide</a> covers what auto riggers need from a mesh, and the <a href="/blender-addon/">Cinevva Rig add-on</a> produces a Mixamo-named humanoid armature inside Blender, on your own machine, offline, for a one-time $29 launch price, on Blender 4.2 and newer for Windows, macOS and Linux.</p>
<h2>Root motion</h2>
<p>Root motion is the movement of the character's root through the world, as opposed to the limbs moving in place. Unity's <a href="https://docs.unity3d.com/Manual/RootMotion.html">root motion</a> page works from a Root Transform that &quot;is a projection on the Y plane of the Body Transform and is computed at runtime&quot;, and per clip you choose whether to bake rotation, Y and XZ into the pose or keep them as motion that moves the GameObject. Bake Into Pose on XZ is the normal setting for idles &quot;to force the delta Position (XZ) to be 0&quot; so the character doesn't drift. For Generic rigs the page says &quot;instead of using the Body Transform to compute/project a Root Transform, the transform set in Root Node is used&quot;, and that Root Node defaults to None in the Rig tab, so pick your hips or root bone there or root motion silently does nothing.</p>
<p>On the Blender side the rule is: animate travel on a bone, not on the armature object. The exporter writes the armature object as a Null node (Armature FBXNode Type, &quot;similar to Blender's Empty&quot;), and Unity's root motion settings look at bones under the Avatar, not at that empty. A dedicated root bone at the floor, parent of Hips, keyed with the travel, is the layout Unity's Root Node option is designed for. Clips authored in place with the travel handled by code need no root bone at all, and that's what most animation libraries ship.</p>
<h2>Animations: actions, NLA strips, and baking</h2>
<p>Unity reads FBX AnimStacks and shows each one as a clip in the <a href="https://docs.unity3d.com/Manual/class-AnimationClip.html">Animation tab</a>, where you can split, rename, loop and trim them. Blender's Bake Animation panel decides how many AnimStacks you get.</p>
<p><strong>One Action per clip.</strong> With All Actions on, the exporter will &quot;export each action as a separated FBX's AnimStack, instead of global scene animation (note that animated objects will get all actions compatible with them, others will get no animation at all)&quot;. Name your Actions <code>Idle</code>, <code>Walk</code>, <code>Run</code>, <code>Jump</code>, and Unity lists them under those names. The catch in that description: any Action whose channels match the armature counts as compatible, so a stray Action from another rig attaches itself. Delete Actions you don't want shipped.</p>
<p><strong>One NLA strip per clip.</strong> With NLA Strips on, the exporter will &quot;export each non-muted NLA strip as a separated FBX's AnimStack, if any, instead of global scene animation&quot;. Push each Action down to its own track, mute the ones you're not shipping, and you get exact control over frame ranges, plus a way to export a clip that blends two Actions.</p>
<p><strong>Bake first when constraints are involved.</strong> The Blender FBX manual lists constraints under things that don't export: &quot;The result of using constraints is exported as a keyframe animation however the constraints themselves are not saved in the FBX.&quot; IK, Copy Rotation and Child Of get sampled at the export Sampling Rate, which is why Key All Bones (&quot;Force exporting at least one key of animation for all bones&quot;) and Force Start/End Keying should stay on. Unity's own Bake Animations option is &quot;only available for Autodesk Maya, Autodesk 3ds Max and Cinema 4D files&quot;, so the baking has to happen in Blender. <code>Object &gt; Animation &gt; Bake Action</code> with Visual Keying and Clear Constraints, on a copy, gives you an FK-only Action nothing can misread.</p>
<p><strong>Simplify.</strong> The exporter's Simplify (&quot;How much to simplify baked values (0.0 to disable, the higher the more simplified)&quot;) defaults to 1.0 and is safe for game clips. If a clip wobbles in Unity but not in Blender, set it to 0 and let Unity's Anim. Compression do the keyframe reduction.</p>
<p>Two Unity habits round it off. Files named <code>modelName@animationName.fbx</code> are collected automatically: per the <a href="https://docs.unity3d.com/Manual/Splittinganimations.html">splitting animations</a> page, &quot;Unity automatically imports all four files and collects all animations to the file without the @ sign in&quot;, so <code>hero.fbx</code> plus <code>hero@walk.fbx</code> gives one character with a Walk clip, and you can re-export a single clip without touching the mesh. And set Loop Time on cycles in the Animation tab, since FBX has no notion of looping.</p>
<div class="video-embed"><iframe src="https://www.youtube.com/embed/z3cdbYTl3Ms" title="Blender to Unity - Generic Character Setup: #1 Rigging &amp; FBX Export (CGDive)" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></div>
<div class="video-caption">CGDive walks through a Generic character rig in Blender and the FBX export settings for Unity, including the deform-bone and leaf-bone choices above.</div>
<h2>Textures and the pink material</h2>
<p>Blender's FBX exporter references textures by path unless you tell it to carry them. Set Path Mode to Copy, and then the Embed Textures toggle becomes available, described as &quot;Embed textures in FBX binary file (only for 'Copy' path mode!)&quot;. The .fbx now contains the images. In Unity, the <a href="https://docs.unity3d.com/Manual/FBXImporter-Materials.html">Materials tab</a> keeps materials as sub-assets by default (&quot;Use Embedded Materials&quot;), and two buttons pull them out: Extract Textures writes the embedded images into a folder, and Extract Materials turns the sub-assets into editable <code>.mat</code> files. Do Textures first, then Materials, so the extracted materials point at the extracted textures. Once extracted, &quot;new imports or changes to the original asset do not affect extracted materials&quot;, which is what you want: you can re-export the mesh a hundred times without losing the Unity-side material tweaks.</p>
<p>What arrives is the base colour and a few slots. FBX has no PBR standard that Blender's Principled BSDF maps onto one-to-one, so expect to assign roughness, metallic and normal maps by hand in Unity. The Material Creation Mode &quot;Import via MaterialDescription&quot; reads the material description embedded in the FBX and gets closer than the Standard (Legacy) mode.</p>
<p>Then the pink. Unity's <a href="https://docs.unity3d.com/Manual/shader-error.html">error shader</a> page: &quot;Unity renders an object with the default error shader when there's a problem with that object's material or shader&quot;, such as a shader that doesn't compile or isn't supported, and &quot;the default error shader is magenta (bright pink).&quot; The specific case for imports: &quot;If your project uses the Universal Rendering Pipeline (URP), Unity might render an object using the default error shader if the object uses a shader from the Built-In Render Pipeline.&quot; Imported FBX materials default to Built-in shaders, so in a URP or HDRP project they come in pink. Missing textures do not turn a material pink, they turn it grey or white.</p>
<p>The fix is one menu. Select the pink materials and run <code>Edit &gt; Rendering &gt; Materials &gt; Convert Selected Materials to URP</code>, or open <code>Window &gt; Rendering &gt; Render Pipeline Converter</code>, choose Built-in Render Pipeline to URP, tick Material Upgrade and run it, per the <a href="https://docs.unity3d.com/Manual/urp/features/rp-converter.html">converter docs</a>. The one limit: &quot;This converter doesn't support materials with custom shaders&quot;, which imported FBX materials never are. HDRP has the equivalent under Edit &gt; Rendering &gt; Materials.</p>
<h2>Smoothing and normals</h2>
<p>Blender's Smoothing dropdown has four options and one of them breaks a Unity feature. Normals Only exports &quot;only normals instead of writing edge or face smoothing data&quot;, and the manual notes that &quot;if the importer supports custom split normals, using Normals Only is generally the most accurate&quot;. Face writes face smoothing, Edge writes edge smoothing, Smoothing Groups writes groups of faces shaded together. Unity imports the normals fine in every case (its Normals setting defaults to Import). But Unity's Model tab warns, under Import BlendShapes: &quot;Importing blend shape normals requires smoothing groups in the FBX file.&quot; Export a face with shape keys using Normals Only and the morph targets arrive with flat or broken shading.</p>
<p>Face is the safe default for Unity, and Smoothing Groups if you're also sending the file to 3ds Max style tools. If your hard edges come from the Smooth by Angle modifier, tick Apply Modifiers or they vanish. If a mesh looks faceted in Unity and smooth in Blender, switch Unity's Normals to Calculate and Smoothness Source to From Angle as a quick check, then fix the export.</p>
<h2>Symptom, cause, fix</h2>
<table>
<thead>
<tr>
<th>Symptom in Unity</th>
<th>Cause</th>
<th>Fix</th>
</tr>
</thead>
<tbody>
<tr>
<td>Model tiny, or 100 times too big</td>
<td>Scale Factor changed, Convert Units off, or a Blender Unit Scale other than 1.0 with Apply Unit on</td>
<td>Unity: Scale Factor 1, Convert Units on. Blender: Unit Scale 1.0, Scale 1.00</td>
</tr>
<tr>
<td>Right size, but scale reads 100 and File Scale 0.01</td>
<td>Apply Scalings left at All Local</td>
<td>Apply Scalings FBX Units Scale or FBX All, reimport</td>
</tr>
<tr>
<td>Root rotated -90 (or -89.98) on X</td>
<td>Axis conversion stored as a transform</td>
<td>Tick Bake Axis Conversion in the Model tab</td>
</tr>
<tr>
<td>Character faces backwards or sideways</td>
<td>Modelled facing +Y or +X in Blender</td>
<td>Face -Y in Blender (front view), keep Forward -Z</td>
</tr>
<tr>
<td>Extra <code>Head_end</code>, <code>Hand_end</code> bones</td>
<td>Add Leaf Bones left on</td>
<td>Untick Add Leaf Bones</td>
</tr>
<tr>
<td>Hundreds of bones, IK targets, widgets in the hierarchy</td>
<td>Control rig exported whole</td>
<td>Tick Only Deform Bones, bake to deform bones first</td>
</tr>
<tr>
<td>Cross next to Configure, no Avatar</td>
<td>Fewer than 15 required bones matched, or bones unrecognised</td>
<td>Rename bones after body parts, check the 15 required, map by hand</td>
</tr>
<tr>
<td>&quot;Character not in T-Pose&quot;</td>
<td>Rest pose is an A-pose or relaxed</td>
<td>Pose &gt; Enforce T-Pose, or fix the rest pose in Blender</td>
</tr>
<tr>
<td>Animation plays but character doesn't move</td>
<td>Root Node is None on a Generic rig, or travel keyed on the armature object</td>
<td>Set Root Node in the Rig tab, key travel on a root bone</td>
</tr>
<tr>
<td>Only one clip imported</td>
<td>NLA Strips and All Actions off, or Actions have no fake user</td>
<td>Turn both on, one Action or strip per clip</td>
</tr>
<tr>
<td>Limbs drift or snap where IK was</td>
<td>Constraints exported as sampled keys with Simplify too high</td>
<td>Bake Action in Blender, Simplify 0</td>
</tr>
<tr>
<td>Materials bright pink</td>
<td>Built-in shaders in a URP or HDRP project</td>
<td>Convert Selected Materials to URP (or HDRP)</td>
</tr>
<tr>
<td>Materials grey, textures missing</td>
<td>Path Mode not Copy, Embed Textures off</td>
<td>Copy plus Embed Textures, then Extract Textures in Unity</td>
</tr>
<tr>
<td>Blend shapes shade flat or wrong</td>
<td>Smoothing set to Normals Only</td>
<td>Smoothing Face or Smoothing Groups</td>
</tr>
<tr>
<td>Faceted where Blender was smooth</td>
<td>Smooth by Angle modifier not applied</td>
<td>Tick Apply Modifiers</td>
</tr>
<tr>
<td>Everyone on the team gets an import error</td>
<td>.blend in Assets and no Blender on their machine</td>
<td>Export FBX, keep .blend out of Assets</td>
</tr>
</tbody>
</table>
<figure class="guide-fig">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 460" role="img" aria-label="Decision flow for a bad Blender to Unity import: check size first, then rotation, then the bone list, then the Avatar, then animation clips, then materials. Each step names the one setting to change: Apply Scalings, Bake Axis Conversion, Add Leaf Bones, T-pose and bone names, NLA Strips and All Actions, Convert Materials to URP.">
  <defs>
    <marker id="flarrow" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="8" markerHeight="8" orient="auto-start-reverse">
      <path d="M0,0 L10,5 L0,10 z" fill="#9aa7b4"/>
    </marker>
  </defs>
  <rect width="720" height="460" rx="14" fill="#0b1020"/>
  <g font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif">
    <text x="24" y="40" font-size="20" font-weight="800" fill="#e8edf5">Six questions, in the order that saves time</text>
    <text x="24" y="62" font-size="13" fill="#9aa7b4">Fix size before rotation and bones before animation, because each later check assumes the earlier ones pass.</text>
    <g stroke="#9aa7b4" stroke-width="1.5" marker-end="url(#flarrow)">
      <line x1="170" y1="132" x2="170" y2="146"/>
      <line x1="170" y1="192" x2="170" y2="206"/>
      <line x1="170" y1="252" x2="170" y2="266"/>
      <line x1="170" y1="312" x2="170" y2="326"/>
      <line x1="170" y1="372" x2="170" y2="386"/>
      <line x1="316" y1="108" x2="344" y2="108"/>
      <line x1="316" y1="168" x2="344" y2="168"/>
      <line x1="316" y1="228" x2="344" y2="228"/>
      <line x1="316" y1="288" x2="344" y2="288"/>
      <line x1="316" y1="348" x2="344" y2="348"/>
      <line x1="316" y1="408" x2="344" y2="408"/>
    </g>
    <g font-size="10" font-weight="700" fill="#fb7185" text-anchor="middle">
      <text x="330" y="101">no</text>
      <text x="330" y="161">no</text>
      <text x="330" y="221">no</text>
      <text x="330" y="281">no</text>
      <text x="330" y="341">no</text>
      <text x="330" y="401">no</text>
    </g>
    <g>
      <rect x="24" y="84" width="292" height="48" rx="8" fill="#121a31" stroke="#7dd3fc" stroke-width="1.5"/>
      <text x="40" y="104" font-size="13" font-weight="700" fill="#e8edf5">Is it the right size, with scale 1 on transforms?</text>
      <text x="40" y="122" font-size="11" fill="#9aa7b4">1.8 m character reads 1.8 units tall</text>
      <rect x="348" y="84" width="348" height="48" rx="8" fill="#1a1424" stroke="#fb7185" stroke-width="1.5"/>
      <text x="362" y="104" font-size="12" font-weight="700" fill="#e8edf5">Apply Scalings: FBX Units Scale. Unity: Convert Units on.</text>
      <text x="362" y="122" font-size="11" fill="#9aa7b4">Blender Unit Scale 1.0, exporter Scale 1.00</text>
    </g>
    <g>
      <rect x="24" y="144" width="292" height="48" rx="8" fill="#121a31" stroke="#7dd3fc" stroke-width="1.5"/>
      <text x="40" y="164" font-size="13" font-weight="700" fill="#e8edf5">Is the root rotation 0, 0, 0?</text>
      <text x="40" y="182" font-size="11" fill="#9aa7b4">and does it face +Z</text>
      <rect x="348" y="144" width="348" height="48" rx="8" fill="#1a1424" stroke="#fb7185" stroke-width="1.5"/>
      <text x="362" y="164" font-size="12" font-weight="700" fill="#e8edf5">Tick Bake Axis Conversion in Unity's Model tab.</text>
      <text x="362" y="182" font-size="11" fill="#9aa7b4">Keep -Z Forward, Y Up. Face -Y in Blender.</text>
    </g>
    <g>
      <rect x="24" y="204" width="292" height="48" rx="8" fill="#121a31" stroke="#7dd3fc" stroke-width="1.5"/>
      <text x="40" y="224" font-size="13" font-weight="700" fill="#e8edf5">Is the bone list only the deform skeleton?</text>
      <text x="40" y="242" font-size="11" fill="#9aa7b4">no _end bones, no IK targets or widgets</text>
      <rect x="348" y="204" width="348" height="48" rx="8" fill="#1a1424" stroke="#fb7185" stroke-width="1.5"/>
      <text x="362" y="224" font-size="12" font-weight="700" fill="#e8edf5">Untick Add Leaf Bones. Tick Only Deform Bones.</text>
      <text x="362" y="242" font-size="11" fill="#9aa7b4">Bake control-rig motion onto deform bones first</text>
    </g>
    <g>
      <rect x="24" y="264" width="292" height="48" rx="8" fill="#121a31" stroke="#7dd3fc" stroke-width="1.5"/>
      <text x="40" y="284" font-size="13" font-weight="700" fill="#e8edf5">Does the Humanoid Avatar map green?</text>
      <text x="40" y="302" font-size="11" fill="#9aa7b4">no cross next to Configure, no T-pose message</text>
      <rect x="348" y="264" width="348" height="48" rx="8" fill="#1a1424" stroke="#fb7185" stroke-width="1.5"/>
      <text x="362" y="284" font-size="12" font-weight="700" fill="#e8edf5">Body-part bone names, 15 required bones, T-pose rest.</text>
      <text x="362" y="302" font-size="11" fill="#9aa7b4">Pose &gt; Enforce T-Pose, map red bones by hand</text>
    </g>
    <g>
      <rect x="24" y="324" width="292" height="48" rx="8" fill="#121a31" stroke="#7dd3fc" stroke-width="1.5"/>
      <text x="40" y="344" font-size="13" font-weight="700" fill="#e8edf5">Are all the clips there, and do they move?</text>
      <text x="40" y="362" font-size="11" fill="#9aa7b4">one clip per Action or strip, root motion works</text>
      <rect x="348" y="324" width="348" height="48" rx="8" fill="#1a1424" stroke="#fb7185" stroke-width="1.5"/>
      <text x="362" y="344" font-size="12" font-weight="700" fill="#e8edf5">NLA Strips + All Actions on, Key All Bones on.</text>
      <text x="362" y="362" font-size="11" fill="#9aa7b4">Generic rig: set Root Node. Bake IK before export.</text>
    </g>
    <g>
      <rect x="24" y="384" width="292" height="48" rx="8" fill="#121a31" stroke="#7dd3fc" stroke-width="1.5"/>
      <text x="40" y="404" font-size="13" font-weight="700" fill="#e8edf5">Are the materials textured, not pink or grey?</text>
      <text x="40" y="422" font-size="11" fill="#9aa7b4">pink = wrong pipeline, grey = no textures</text>
      <rect x="348" y="384" width="348" height="48" rx="8" fill="#1a1424" stroke="#fb7185" stroke-width="1.5"/>
      <text x="362" y="404" font-size="12" font-weight="700" fill="#e8edf5">Convert Selected Materials to URP. Copy + Embed Textures.</text>
      <text x="362" y="422" font-size="11" fill="#9aa7b4">Then Extract Textures, then Extract Materials</text>
    </g>
  </g>
</svg>
<figcaption>Work down the left column. A no sends you right to the one setting responsible. Size comes first because a scale of 100 on the armature hides behind everything else, and bones come before animation because a clip can't play on a skeleton Unity didn't recognise.</figcaption>
</figure>
<h2>The 10-step checklist</h2>
<p>Run this in Blender on a copy of the file, then in Unity.</p>
<ol>
<li><strong>Clean the scene.</strong> Delete cameras, lights, reference images and anything not shipping. Join meshes that share a material where sensible, and make sure every mesh that should deform is parented to the armature with an Armature modifier.</li>
<li><strong>Check units.</strong> Scene Properties, Units: Unit System Metric, Unit Scale 1.0, Length Meters. Read the Dimensions panel (N) on your character: 1.6 to 2.0 m for a human.</li>
<li><strong>Apply transforms.</strong> Select meshes, <code>Object &gt; Apply &gt; All Transforms</code>. For an armature without animation, apply too. For an animated armature, leave it and make sure its scale already reads 1.0.</li>
<li><strong>Fix the pose and names.</strong> Rest pose in a T-pose, facing -Y (the front view). Bone names that read as body parts, mirrored <code>.L</code> and <code>.R</code> or <code>Left</code> and <code>Right</code>. No <code>_end</code> bones of your own.</li>
<li><strong>Prepare the clips.</strong> One Action per clip with a fake user, or one NLA strip per clip. Bake anything driven by IK or constraints with <code>Object &gt; Animation &gt; Bake Action</code>, Visual Keying on.</li>
<li><strong>Export.</strong> <code>File &gt; Export &gt; FBX (.fbx)</code>. Selected Objects on. Object Types Armature and Mesh. Scale 1.00, Apply Scalings FBX Units Scale, Forward -Z, Up Y, Apply Unit on, Use Space Transform on, Apply Transform off. Smoothing Face, Apply Modifiers on. Only Deform Bones on for control rigs, Add Leaf Bones off. Bake Animation on with Key All Bones, NLA Strips, All Actions and Force Start/End Keying on, Sampling Rate 1.0, Simplify 1.0. Path Mode Copy, Embed Textures on. Save these as an operator preset (the + at the top of the panel).</li>
<li><strong>Import.</strong> Drop the .fbx into Assets. Model tab: Scale Factor 1, Convert Units on, Bake Axis Conversion on, Import BlendShapes on if you have shape keys. Apply.</li>
<li><strong>Rig.</strong> Rig tab: Humanoid for a biped, Generic otherwise. Avatar Definition Create From This Model. Press Configure and check for green bones and no T-pose message. For Generic, set Root Node if the clip should move the character. Apply.</li>
<li><strong>Animation.</strong> Animation tab: confirm one clip per Action. Set Loop Time on cycles. Set Root Transform Position (XZ) Bake Into Pose on idles. Apply.</li>
<li><strong>Materials.</strong> Materials tab: Extract Textures to a Textures folder, then Extract Materials to a Materials folder. In a URP or HDRP project, select the extracted materials and <code>Edit &gt; Rendering &gt; Materials &gt; Convert Selected Materials to URP</code>. Drag the prefab into a scene and check scale, facing and shading against Blender.</li>
</ol>
<h2>The one-click route</h2>
<p>If you'd rather not remember step 6, the <a href="/blender-addon/">Cinevva Rig add-on</a> has an export card with a Unity preset that applies exactly this recipe: FBX, Forward -Z, Up Y, unit scale applied with FBX All, no leaf bones, Face smoothing, textures embedded and capped at 2048 px. Before you press Export, its size analysis splits the estimated file into geometry, textures, animation and shape keys, so you can see that the 60 MB is three 4K textures and not the mesh. Measured against a plain Blender GLB export, the presets produced files 68%, 89%, 92% and 98% smaller on four real models, almost all of it from the texture cap and re-encoding. Export runs locally with no key, no account and no network. The paid half of the add-on is rigging: one $29 launch-price purchase, unlimited local rigging after a one-time engine download of about 2.4 GB, on Blender 4.2 and newer, plus 260 CC0 animation clips retargeted onto the rig inside Blender, which then export as the Actions described above.</p>
<p>The established paid fix for the FBX round trip is <a href="https://superhivemarket.com/products/better-fbx-importer--exporter">Better FBX Importer &amp; Exporter</a> by Mesh Online, 12,800+ sales on Superhive. It's a from-scratch FBX implementation on Autodesk's official FBX SDK, &quot;compatible with all FBX versions, from ASCII to binary, from FBX 5.3 to FBX 2020&quot;, with exports &quot;verified in Unity Engine 2021, Unreal Engine 4/5 and Godot Engine v4.1.1&quot; per its product page. Its two standout features are automatic bone orientation on import (the bone axes Blender's importer leaves twisted) and an &quot;Optimize For Game Engine&quot; export that writes armatures with &quot;unit scale and zero rotations&quot;. If you import a lot of FBX from other artists or round-trip through Maya or 3ds Max, it pays for itself the first week. If you only export your own Blender work to Unity, the settings on this page get the same result for free.</p>
<h2>Common Questions</h2>
<h3>How do I export from Blender to Unity?</h3>
<p>Export an FBX, not the .blend. <code>File &gt; Export &gt; FBX (.fbx)</code> with Selected Objects on, Scale 1.00, Apply Scalings FBX Units Scale, Forward -Z, Up Y, Add Leaf Bones off, Smoothing Face, Path Mode Copy with Embed Textures on. In Unity's Model tab tick Convert Units and Bake Axis Conversion, then extract textures and materials from the Materials tab.</p>
<h3>Why is my Blender model scaled 0.01 or 100 in Unity?</h3>
<p>FBX counts in centimetres, so Blender's exporter multiplies a metre scene by 100. With the default Apply Scalings of All Local that 100 lands on every object's transform and Unity's Convert Units cancels it with a 0.01 file scale. Choose FBX Units Scale or FBX All instead and the factor goes into the file header, leaving every transform at 1. If the model is 100 times too big, Convert Units is off or Scale Factor was changed in Unity.</p>
<h3>Why does my Blender FBX have a -90 rotation on X in Unity?</h3>
<p>Blender is Z up and Unity is Y up, and the exporter stores the 90 degree turn between them as a rotation on the root object, which Unity displays as -90 (often -89.98). Tick Bake Axis Conversion in Unity's Model tab and the rotation is baked into the vertices and the root reads zero. Don't use the exporter's Apply Transform on a rigged model, since its own description says it's broken with armatures and animation.</p>
<h3>How do I export animations from Blender to Unity?</h3>
<p>Make one Action per clip (or one NLA strip per clip), bake any IK or constraint-driven motion with Bake Action, and export with Bake Animation on, Key All Bones, NLA Strips, All Actions and Force Start/End Keying ticked. Each Action arrives as a clip in Unity's Animation tab under its Blender name. For a Generic rig set Root Node in the Rig tab if you want root motion, and set Loop Time on cycles.</p>
<h3>Should I use FBX or glTF for Unity?</h3>
<p>FBX for anything rigged or animated. Unity imports FBX natively, while glTF needs the <code>com.unity.cloud.gltfast</code> package, whose animation import is complete only for the legacy Animation system and needs &quot;further work&quot; for Mecanim, and Unity can't read WebP textures. glTF is a good choice for static props and for models loaded at runtime from a server.</p>
<h3>Why are my materials pink in Unity after importing from Blender?</h3>
<p>Pink is Unity's error shader, and for imports it almost always means the material uses a Built-in Render Pipeline shader in a URP or HDRP project. Select the materials and run <code>Edit &gt; Rendering &gt; Materials &gt; Convert Selected Materials to URP</code>, or use <code>Window &gt; Rendering &gt; Render Pipeline Converter</code>. Missing textures make a material grey, not pink: for those, export with Path Mode Copy and Embed Textures, then press Extract Textures in Unity.</p>
<h3>Why won't Unity make a Humanoid Avatar from my Blender rig?</h3>
<p>Unity needs at least 15 required bones it can recognise and a T-pose. A cross next to Configure means the mapping failed, red bones in the Mapping tab are the ones it couldn't place, and &quot;Character not in T-Pose&quot; means the rest pose is off. Name bones after body parts (Mixamo names always map), untick Add Leaf Bones so <code>_end</code> bones don't confuse it, drag any red bones into place by hand, and use Pose &gt; Enforce T-Pose.</p>
<h2>Related</h2>
<ul>
<li><a href="/guides/blender-to-unreal-export-checklist">Blender to Unreal Export Checklist</a>: the same walk for Unreal, where the units and bone axes go the other way</li>
<li><a href="/guides/blender-to-godot-export-checklist">Blender to Godot Export Checklist</a>: glTF is the native path in Godot 4, and the settings differ</li>
<li><a href="/guides/automatic-rigging-explained">How Automatic Rigging Works</a>: what a rigger needs from your mesh before any of this matters</li>
<li><a href="/guides/optimize-glb-for-web">How to Optimize GLB Files for the Web</a>: Draco, Meshopt and KTX2 for the browser, where glTF is the right format</li>
<li><a href="/tools/glb-viewer">GLB Viewer</a>: inspect a glTF's scene graph, bones and clips before you re-export it for Unity</li>
<li><a href="/blender-addon/">Cinevva Rig for Blender</a>: rigging, 260 CC0 clips and the Unity export preset in one add-on</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Blender to Unreal Engine Export Checklist: FBX Settings, Bone Axes, and Scale (2026)]]></title>
            <link>https://app.cinevva.com/guides/blender-to-unreal-export-checklist</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/blender-to-unreal-export-checklist</guid>
            <pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Blender to Unreal Engine export checklist: the FBX settings for scale, axes, bone axes, root bone, smoothing groups and animation that import into UE5 clean.]]></description>
            <content:encoded><![CDATA[<h1>Blender to Unreal Engine Export Checklist: FBX Settings, Bone Axes, and Scale (2026)</h1>
<p><em>Last updated: September 2026.</em></p>
<figure class="guide-hero">
<img src="https://cdn.cinevva.com/guides/blender-to-unreal-export-checklist-hero.jpg?v=1" alt="A rigged low-poly character crossing from a Blender viewport into an Unreal Engine level" width="1216" height="640">
</figure>
<style>
.guide-hero { margin: 1.25rem 0 1.75rem; }
.guide-hero img { width: 100%; height: auto; border-radius: 12px; display: block; }
.guide-fig { margin: 1.5rem 0; }
.guide-fig > a { display: block; }
.guide-fig img { width: 100%; height: auto; border-radius: 10px; border: 1px solid var(--vp-c-divider); display: block; }
.guide-fig svg { width: 100%; height: auto; display: block; }
.guide-fig figcaption { font-size: 0.9rem; color: var(--vp-c-text-2); margin: 0.5rem 0 0; }
.video-embed { position: relative; width: 100%; max-width: 720px; margin: 1.5rem 0; }
.video-embed iframe { width: 100%; aspect-ratio: 16/9; border-radius: 8px; }
.video-caption { font-size: 0.9rem; color: var(--vp-c-text-2); margin-top: 0.5rem; margin-bottom: 1.5rem; }
</style>
<p>Getting a Blender character into Unreal Engine cleanly comes down to six FBX exporter settings and one scene setting. In <code>File &gt; Export &gt; FBX (.fbx)</code>: Selected Objects on, Apply Unit on with Apply Scalings set to FBX All (or leave it on All Local and set the scene's Unit Scale to 0.01), Smoothing set to Face, Add Leaf Bones off, Primary Bone Axis Y with Secondary X, and Bake Animation with NLA Strips or All Actions depending on how you store clips. Rename the armature object to <code>root</code> before you press Export, because Unreal turns that object into your root bone. Everything below explains why each setting matters, what the failure looks like when you skip it, and how to retarget the result onto the UE5 Mannequin or a MetaHuman.</p>
<h2>Quick answer</h2>
<ul>
<li><strong>Scale:</strong> Unreal works in centimetres, Blender's internal unit is a metre. Either set <code>Scene Properties &gt; Units &gt; Unit Scale</code> to 0.01 and model at Unreal size, or keep 1.0 and export with Apply Scalings: FBX All so the file's header carries the conversion. Leaving both at defaults is what puts a scale of 100 on your root bone.</li>
<li><strong>Axes:</strong> leave Forward -Z and Up Y (Blender's default). Unreal's Convert Scene import option reads the FBX header and rotates into its Z-up, X-forward frame. Model the character facing -Y in Blender (looking at you in Numpad 1 front view) and it faces +X in Unreal.</li>
<li><strong>Bones:</strong> Primary Bone Axis Y, Secondary Bone Axis X. These are Blender's defaults and also what Epic's own Send to Unreal add-on ships. Changing them is the usual cause of &quot;my bones import rotated 90 degrees&quot;.</li>
<li><strong>Root bone:</strong> the armature object becomes Unreal's root bone under the object's name. Rename it <code>root</code>, keep the hips as its first child, and don't skin anything to it.</li>
<li><strong>Leaf bones and smoothing:</strong> Add Leaf Bones off (otherwise every chain grows a <code>_end</code> bone), Smoothing set to Face (otherwise Unreal warns about missing smoothing groups).</li>
<li><strong>Animation:</strong> one Action per clip, Bake Animation on, Key All Bones on, Simplify 0. Import onto the existing Skeleton asset with Import Mesh off.</li>
<li><strong>One-click route:</strong> the <a href="/blender-addon/">Cinevva Rig add-on</a> has an Unreal export preset that applies these conventions for you and shows a size analysis first. It runs on your own machine, offline, for one $29 purchase (launch price), on Blender 4.2 and newer for Windows, macOS and Linux.</li>
</ul>
<h2>Quick reference</h2>
<p>The matrix. Find the symptom you're seeing in Unreal, read across.</p>
<table>
<thead>
<tr>
<th>Symptom in Unreal</th>
<th>Cause</th>
<th>Fix in Blender</th>
</tr>
</thead>
<tbody>
<tr>
<td>Root bone shows Scale 100, or the character is tiny once you reset it</td>
<td>Unit Scale 1.0 with Apply Scalings: All Local bakes the metre-to-centimetre factor into the armature object's transform</td>
<td>Set Unit Scale to 0.01 and model at Unreal size, or export with Apply Scalings: FBX All</td>
</tr>
<tr>
<td>Character faces -X or lies on its side</td>
<td>Modelled facing +Y, or Forward/Up changed away from a consistent pair</td>
<td>Face the character toward -Y in Blender and apply rotation. Leave Forward -Z, Up Y</td>
</tr>
<tr>
<td>Bones point the wrong way, animation retargets twisted</td>
<td>Primary/Secondary Bone Axis changed from Y/X</td>
<td>Set Primary Y, Secondary X</td>
</tr>
<tr>
<td>A bone named &quot;Armature&quot; sits above the hips</td>
<td>The armature object is exported as a Null node and Unreal makes it the root bone</td>
<td>Rename the armature object to <code>root</code></td>
</tr>
<tr>
<td>Extra bones ending in <code>_end</code> on fingers, head, feet</td>
<td>Add Leaf Bones is on (the exporter's default)</td>
<td>Turn Add Leaf Bones off</td>
</tr>
<tr>
<td>&quot;No smoothing group information was found in this FBX scene&quot;</td>
<td>Smoothing left on Normals Only</td>
<td>Set Smoothing to Face</td>
</tr>
<tr>
<td>&quot;Found multiple roots. The importer only supports one root per mesh.&quot;</td>
<td>Several top-level bones and no single parent</td>
<td>Parent every top-level bone to <code>root</code></td>
</tr>
<tr>
<td>&quot;Scene does not contain a Bind Pose&quot;</td>
<td>Bind pose data missing from the file</td>
<td>Import with Use T0 As Ref Pose on, or re-export with the armature in rest pose</td>
</tr>
<tr>
<td>Materials arrive with only Color and Normal wired</td>
<td>Unreal auto-connects only those two inputs</td>
<td>Export textures separately and rebuild roughness and metallic in the material editor</td>
</tr>
<tr>
<td>One long animation instead of separate clips</td>
<td>Clips stored in one Action, or NLA Strips and All Actions both off</td>
<td>One Action per clip, All Actions on, or one NLA strip per clip with NLA Strips on</td>
</tr>
<tr>
<td>Animation plays but the mesh doesn't move</td>
<td>Mesh not parented to the armature, or Only Deform Bones dropped a bone the skin needs</td>
<td>Parent mesh to armature with an Armature modifier, check deform flags</td>
</tr>
</tbody>
</table>
<h2>Units and scale: where &quot;scale 100&quot; comes from</h2>
<p>Unreal's FBX importer works in centimetres. Its Convert Scene Unit option is described in the <a href="https://dev.epicgames.com/documentation/en-us/unreal-engine/fbx-import-options-reference-in-unreal-engine">FBX Import Options Reference</a> as converting &quot;from the FBX units of measurement to UE's unit of measure, centimeters.&quot; Blender's internal unit is a metre. The exporter's source says it plainly: &quot;Default Blender unit is equivalent to meter, while FBX one is centimeter&quot;. So something has to multiply by 100, and the only question is where that 100 gets written.</p>
<p>Blender's exporter (<a href="https://projects.blender.org/blender/blender/src/branch/blender-v4.2-release/scripts/addons_core/io_scene_fbx"><code>io_scene_fbx</code></a>, version 5.12.4 in Blender 4.2) gives you two settings for it. Apply Unit, on by default, means &quot;take into account current Blender units settings&quot;. Apply Scalings decides where the factor lands. Its first option, All Local (<code>FBX_SCALE_NONE</code>), applies &quot;custom scaling and units scaling to each object transformation, FBX scale remains at 1.0&quot;. Its last, FBX All (<code>FBX_SCALE_ALL</code>), applies &quot;custom scaling and units scaling to FBX scale&quot;, meaning the file's header.</p>
<p>Read the code and the famous symptom falls out. With Unit Scale 1.0 and All Local, the exporter multiplies every top-level object transform by 100 and writes a <code>UnitScaleFactor</code> of 1.0. The mesh arrives the right size because its transform carries the 100. So does the armature object, and Unreal turns that object into the root bone, which is why the root reads Scale 100.0 in the skeleton tree. The Scale field's own tooltip warns &quot;Some importers do not support scaled armatures!&quot;, and this is the case it means.</p>
<figure class="guide-fig">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 372" role="img" aria-label="Three scale paths from Blender to Unreal. Unit Scale 1.0 with Apply Scalings All Local multiplies object transforms by 100 and writes a header factor of 1.0, so the root bone arrives at scale 100. Unit Scale 0.01 with All Local multiplies by 1 and writes 1.0, so the root bone is scale 1 and you model at 180 units. Unit Scale 1.0 with FBX All leaves transforms alone and writes a header factor of 100, which Unreal's Convert Scene Unit converts, so the root bone is scale 1.">
  <rect width="720" height="372" rx="14" fill="#0b1020"/>
  <g font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif">
    <text x="24" y="40" font-size="20" font-weight="800" fill="#e8edf5">Where the x100 goes</text>
    <text x="24" y="62" font-size="13" fill="#9aa7b4">Blender metres to Unreal centimetres. Same mesh, three exporter paths, one bad outcome.</text>
    <g font-size="11" font-weight="700" fill="#9aa7b4">
      <text x="24" y="96">Blender scene</text>
      <text x="212" y="96">Apply Scalings</text>
      <text x="380" y="96">Written to the FBX</text>
      <text x="566" y="96">Root bone in Unreal</text>
    </g>
    <g stroke="#2a3655" stroke-width="1">
      <line x1="24" y1="104" x2="696" y2="104"/>
    </g>
    <g>
      <rect x="24" y="118" width="160" height="60" rx="8" fill="#121a31"/>
      <text x="36" y="142" font-size="13" font-weight="700" fill="#e8edf5">Unit Scale 1.0</text>
      <text x="36" y="162" font-size="11" fill="#9aa7b4">1.8 m character = 1.8 units</text>
      <rect x="212" y="118" width="140" height="60" rx="8" fill="#121a31"/>
      <text x="224" y="142" font-size="13" font-weight="700" fill="#e8edf5">All Local</text>
      <text x="224" y="162" font-size="11" fill="#9aa7b4">FBX_SCALE_NONE</text>
      <rect x="380" y="118" width="160" height="60" rx="8" fill="#121a31"/>
      <text x="392" y="142" font-size="12" font-weight="700" fill="#fb7185">objects x100</text>
      <text x="392" y="162" font-size="11" fill="#9aa7b4">UnitScaleFactor 1.0</text>
      <rect x="566" y="118" width="130" height="60" rx="8" fill="#1a1424" stroke="#fb7185" stroke-width="1.5"/>
      <text x="580" y="142" font-size="13" font-weight="800" fill="#fb7185">Scale 100</text>
      <text x="580" y="162" font-size="11" fill="#9aa7b4">the classic bug</text>
    </g>
    <g>
      <rect x="24" y="196" width="160" height="60" rx="8" fill="#121a31"/>
      <text x="36" y="220" font-size="13" font-weight="700" fill="#e8edf5">Unit Scale 0.01</text>
      <text x="36" y="240" font-size="11" fill="#9aa7b4">1.8 m character = 180 units</text>
      <rect x="212" y="196" width="140" height="60" rx="8" fill="#121a31"/>
      <text x="224" y="220" font-size="13" font-weight="700" fill="#e8edf5">All Local</text>
      <text x="224" y="240" font-size="11" fill="#9aa7b4">FBX_SCALE_NONE</text>
      <rect x="380" y="196" width="160" height="60" rx="8" fill="#121a31"/>
      <text x="392" y="220" font-size="12" font-weight="700" fill="#6ee7b7">objects x1</text>
      <text x="392" y="240" font-size="11" fill="#9aa7b4">UnitScaleFactor 1.0</text>
      <rect x="566" y="196" width="130" height="60" rx="8" fill="#0f1f1c" stroke="#6ee7b7" stroke-width="1.5"/>
      <text x="580" y="220" font-size="13" font-weight="800" fill="#6ee7b7">Scale 1</text>
      <text x="580" y="240" font-size="11" fill="#9aa7b4">model at Unreal size</text>
    </g>
    <g>
      <rect x="24" y="274" width="160" height="60" rx="8" fill="#121a31"/>
      <text x="36" y="298" font-size="13" font-weight="700" fill="#e8edf5">Unit Scale 1.0</text>
      <text x="36" y="318" font-size="11" fill="#9aa7b4">1.8 m character = 1.8 units</text>
      <rect x="212" y="274" width="140" height="60" rx="8" fill="#121a31"/>
      <text x="224" y="298" font-size="13" font-weight="700" fill="#e8edf5">FBX All</text>
      <text x="224" y="318" font-size="11" fill="#9aa7b4">FBX_SCALE_ALL</text>
      <rect x="380" y="274" width="160" height="60" rx="8" fill="#121a31"/>
      <text x="392" y="298" font-size="12" font-weight="700" fill="#7dd3fc">objects x1</text>
      <text x="392" y="318" font-size="11" fill="#9aa7b4">UnitScaleFactor 100</text>
      <rect x="566" y="274" width="130" height="60" rx="8" fill="#0f1f1c" stroke="#6ee7b7" stroke-width="1.5"/>
      <text x="580" y="298" font-size="13" font-weight="800" fill="#6ee7b7">Scale 1</text>
      <text x="580" y="318" font-size="11" fill="#9aa7b4">Convert Scene Unit does it</text>
    </g>
    <g stroke="#2a3655" stroke-width="1.5" fill="none">
      <line x1="184" y1="148" x2="212" y2="148"/>
      <line x1="352" y1="148" x2="380" y2="148"/>
      <line x1="540" y1="148" x2="566" y2="148"/>
      <line x1="184" y1="226" x2="212" y2="226"/>
      <line x1="352" y1="226" x2="380" y2="226"/>
      <line x1="540" y1="226" x2="566" y2="226"/>
      <line x1="184" y1="304" x2="212" y2="304"/>
      <line x1="352" y1="304" x2="380" y2="304"/>
      <line x1="540" y1="304" x2="566" y2="304"/>
    </g>
    <text x="24" y="358" font-size="11" fill="#9aa7b4">Factor = 100 x Unit Scale when Apply Unit is on. All Local bakes it into transforms, FBX All writes it in the header.</text>
  </g>
</svg>
<figcaption>The exporter computes the unit factor as 100 times the scene's Unit Scale. All Local multiplies object transforms by that factor and writes a header factor of 1.0, which is how the armature object, and therefore Unreal's root bone, ends up at scale 100. The two clean paths either make the factor 1 (Unit Scale 0.01) or move it into the header (FBX All) where Unreal's Convert Scene Unit handles it.</figcaption>
</figure>
<p>You have two clean ways out, and both are fine.</p>
<p><strong>The 0.01 trick.</strong> In <code>Properties &gt; Scene &gt; Units</code> set Unit Scale to 0.01 and Length to Centimeters. The <a href="https://projects.blender.org/blender/blender-manual/src/branch/blender-v4.2-release/manual/scene_layout/scene/properties.rst">Blender manual</a> describes Unit Scale as the &quot;scale factor to use when converting between internal units and values displayed in the user interface&quot;, and notes it &quot;only influences the values displayed in the user interface and not how things behave internally&quot;. A 180 cm character is now 180 Blender units tall, the exporter's factor becomes 100 times 0.01, which is 1, and the root bone imports at scale 1. Downsides: existing metre-scale assets need scaling up by 100, physics and cloth run at the wrong scale (the manual says exactly this), and viewport clip distances need raising. Unreal-first pipelines tend to settle here because everything made afterwards is already at Unreal size.</p>
<p><strong>FBX All.</strong> Keep Unit Scale at 1.0 and set Apply Scalings to FBX All. The header now carries <code>UnitScaleFactor</code> 100, transforms stay at 1, and Unreal's Convert Scene Unit turns metres into centimetres on import. The tooltip cautions that &quot;Blender uses FBX scale to detect units on import, but many other applications do not handle the same way&quot;. Unreal does, so this is the setting that lets you keep modelling in metres.</p>
<p>Whichever you pick, leave the exporter's Scale field at 1.0. It multiplies on top of the unit factor and is one more place for a stray 100 to hide.</p>
<h2>Axes: Z-up in both, but not the same Z-up</h2>
<p>Both applications are Z-up, which is why people expect this part to be free. It isn't, because the forward axis and the handedness differ. Blender's manual states that &quot;Blender uses Y Forward, Z Up (since the front view looks along the +Y direction)&quot;. Numpad 1 puts the camera on the -Y side looking toward +Y, so a character modelled to face the front view faces -Y. Unreal is Z-up with X forward, and its importer's Force Front XAxis option is described as converting the scene &quot;with the front X axis instead of -Y axis&quot;, which tells you the importer assumes an FBX file's front is -Y unless you say otherwise.</p>
<figure class="guide-fig">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 340" role="img" aria-label="Axis conventions side by side. Blender: Z up, X right, Y away from the viewer, right-handed, the character faces minus Y toward the front view camera. Unreal: Z up, X forward, Y right, left-handed, the character faces plus X. Between them, the FBX header declares the file's up and front axes and Unreal's Convert Scene option rotates into its frame.">
  <defs>
    <marker id="axArrow" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
      <path d="M0,0 L10,5 L0,10 z" fill="#e8edf5"/>
    </marker>
  </defs>
  <rect width="720" height="340" rx="14" fill="#0b1020"/>
  <g font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif">
    <text x="24" y="40" font-size="20" font-weight="800" fill="#e8edf5">Same up axis, different forward</text>
    <text x="24" y="62" font-size="13" fill="#9aa7b4">Blender is right-handed with the front view looking along +Y. Unreal is left-handed with X forward.</text>
    <rect x="24" y="80" width="300" height="236" rx="10" fill="#121a31"/>
    <rect x="396" y="80" width="300" height="236" rx="10" fill="#121a31"/>
    <text x="40" y="106" font-size="14" font-weight="700" fill="#e8edf5">Blender</text>
    <text x="412" y="106" font-size="14" font-weight="700" fill="#e8edf5">Unreal Engine</text>
    <g stroke-width="2.5" fill="none" stroke-linecap="round">
      <line x1="140" y1="240" x2="140" y2="140" stroke="#7dd3fc" marker-end="url(#axArrow)"/>
      <line x1="140" y1="240" x2="250" y2="240" stroke="#fb7185" marker-end="url(#axArrow)"/>
      <line x1="140" y1="240" x2="200" y2="180" stroke="#6ee7b7" marker-end="url(#axArrow)"/>
    </g>
    <g font-size="12" font-weight="700">
      <text x="146" y="136" fill="#7dd3fc">Z up</text>
      <text x="256" y="244" fill="#fb7185">X</text>
      <text x="206" y="176" fill="#6ee7b7">+Y (away)</text>
    </g>
    <g fill="#3b4a75">
      <circle cx="90" cy="222" r="8"/>
      <rect x="84" y="230" width="12" height="26" rx="4"/>
    </g>
    <path d="M96 240 L118 240" stroke="#fbbf24" stroke-width="2" fill="none" stroke-linecap="round"/>
    <path d="M78 240 L58 240" stroke="#fbbf24" stroke-width="2.5" fill="none" stroke-linecap="round" marker-end="url(#axArrow)"/>
    <text x="40" y="286" font-size="11" fill="#fbbf24">character faces -Y, toward the Numpad 1 camera</text>
    <text x="40" y="304" font-size="11" fill="#9aa7b4">right-handed</text>
    <g stroke-width="2.5" fill="none" stroke-linecap="round">
      <line x1="512" y1="240" x2="512" y2="140" stroke="#7dd3fc" marker-end="url(#axArrow)"/>
      <line x1="512" y1="240" x2="622" y2="240" stroke="#6ee7b7" marker-end="url(#axArrow)"/>
      <line x1="512" y1="240" x2="452" y2="180" stroke="#fb7185" marker-end="url(#axArrow)"/>
    </g>
    <g font-size="12" font-weight="700">
      <text x="518" y="136" fill="#7dd3fc">Z up</text>
      <text x="628" y="244" fill="#6ee7b7">Y (right)</text>
      <text x="404" y="176" fill="#fb7185">X forward</text>
    </g>
    <g fill="#3b4a75">
      <circle cx="600" cy="282" r="8"/>
      <rect x="594" y="290" width="12" height="20" rx="4"/>
    </g>
    <path d="M610 296 L640 296" stroke="#fbbf24" stroke-width="2.5" fill="none" stroke-linecap="round" marker-end="url(#axArrow)"/>
    <text x="412" y="304" font-size="11" fill="#fbbf24">character faces +X</text>
    <text x="412" y="286" font-size="11" fill="#9aa7b4">left-handed</text>
    <g>
      <line x1="324" y1="198" x2="396" y2="198" stroke="#c8a8ff" stroke-width="2" marker-end="url(#axArrow)"/>
      <text x="360" y="186" font-size="11" font-weight="700" fill="#c8a8ff" text-anchor="middle">FBX header</text>
      <text x="360" y="216" font-size="10" fill="#9aa7b4" text-anchor="middle">Convert Scene</text>
    </g>
  </g>
</svg>
<figcaption>The exporter writes the file's up and front axes into the FBX header from whatever Forward and Up you chose, and Unreal's Convert Scene reads that header and rotates into its own frame. That's why the default -Z Forward, Y Up works, and why what actually matters is which way the character faces in Blender.</figcaption>
</figure>
<p>Here's the part most tutorials skip. The Forward and Up dropdowns don't rotate your model into Unreal's frame by themselves. The exporter builds a conversion matrix from them and, in the same pass, writes the matching <code>UpAxis</code> and <code>FrontAxis</code> values into the file's GlobalSettings. Unreal's Convert Scene, described as converting &quot;the scene from the FBX coordinate system to use UE's coordinate system&quot;, reads those values, so any consistent pair works. Blender's default -Z Forward, Y Up writes a Y-up file. Epic's Send to Unreal ships Y Forward, Z Up, Blender's axes verbatim. Both import facing the same way.</p>
<p>What does change the result is the character's facing inside Blender. Model it facing -Y, apply rotation (<code>Ctrl+A &gt; Rotation</code>), and it arrives in Unreal facing +X, the engine's forward direction. If a downloaded model faces +Y or +X, rotate it in Object Mode, apply, re-export. Don't fix facing with the Forward dropdown, or the header and the geometry disagree and later animation exports won't match.</p>
<p>Leave Use Space Transform on and Apply Transform off. Apply Transform (<code>bake_space_transform</code>) is labelled in the exporter's own tooltip as a &quot;WARNING! experimental option, use at own risk, known to be broken with armatures/animations&quot;. It exists for static props where you want the axis conversion baked into vertex data. Never use it on a rigged character.</p>
<h2>Bone axes: why bones import rotated</h2>
<p>Blender bones have a fixed local frame. The manual's <a href="https://projects.blender.org/blender/blender-manual/src/branch/blender-v4.2-release/manual/animation/armatures/bones/structure.rst">bone structure page</a> says &quot;The Y axis is always aligned along the bone, oriented from root to tip, this is the 'roll' axis of the bones.&quot; Many Maya-built rigs, and the tutorials written around them, run X along the bone instead. FBX doesn't care which axis points down a bone. It stores each bone's full transform. What matters is that the mesh's skin weights, the bind pose, and every animation key agree on the same frame.</p>
<figure class="guide-fig">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 300" role="img" aria-label="Two bone frames. Left: a Blender bone with its local Y axis running from head to tail along the bone and X as the secondary axis, the exporter's default Primary Y Secondary X writes this as-is. Right: the same bone re-expressed with X along the bone, which is what happens when Primary Bone Axis is changed to X, so every bone frame in the file turns 90 degrees relative to Blender's.">
  <defs>
    <marker id="bnArrow" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
      <path d="M0,0 L10,5 L0,10 z" fill="#e8edf5"/>
    </marker>
  </defs>
  <rect width="720" height="300" rx="14" fill="#0b1020"/>
  <g font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif">
    <text x="24" y="40" font-size="20" font-weight="800" fill="#e8edf5">Which axis runs along the bone</text>
    <text x="24" y="62" font-size="13" fill="#9aa7b4">Primary Bone Axis picks it. Blender's own frame is Y along the bone.</text>
    <rect x="24" y="80" width="324" height="196" rx="10" fill="#121a31"/>
    <rect x="372" y="80" width="324" height="196" rx="10" fill="#121a31"/>
    <text x="40" y="106" font-size="14" font-weight="700" fill="#6ee7b7">Primary Y, Secondary X (default)</text>
    <text x="388" y="106" font-size="14" font-weight="700" fill="#fb7185">Primary X (a Maya habit)</text>
    <g fill="#3b4a75" stroke="#5b6b95" stroke-width="1.5" stroke-linejoin="round">
      <path d="M80 200 L110 186 L250 200 L110 214 Z"/>
      <path d="M428 200 L458 186 L598 200 L458 214 Z"/>
    </g>
    <circle cx="80" cy="200" r="4" fill="#e8edf5"/>
    <circle cx="250" cy="200" r="3" fill="#e8edf5"/>
    <circle cx="428" cy="200" r="4" fill="#e8edf5"/>
    <circle cx="598" cy="200" r="3" fill="#e8edf5"/>
    <g stroke-width="2.5" fill="none" stroke-linecap="round">
      <line x1="80" y1="200" x2="200" y2="200" stroke="#6ee7b7" marker-end="url(#bnArrow)"/>
      <line x1="80" y1="200" x2="80" y2="140" stroke="#fb7185" marker-end="url(#bnArrow)"/>
      <line x1="428" y1="200" x2="548" y2="200" stroke="#fb7185" marker-end="url(#bnArrow)"/>
      <line x1="428" y1="200" x2="428" y2="140" stroke="#6ee7b7" marker-end="url(#bnArrow)"/>
    </g>
    <g font-size="12" font-weight="700">
      <text x="206" y="196" fill="#6ee7b7">Y along the bone</text>
      <text x="88" y="140" fill="#fb7185">X</text>
      <text x="554" y="196" fill="#fb7185">X along the bone</text>
      <text x="436" y="140" fill="#6ee7b7">Y</text>
    </g>
    <text x="40" y="250" font-size="11" fill="#9aa7b4">Written as-is. Skin, bind pose and keys all agree.</text>
    <text x="388" y="250" font-size="11" fill="#9aa7b4">Every bone frame turns 90 degrees relative to Blender's.</text>
    <text x="388" y="266" font-size="11" fill="#9aa7b4">Fine if everything was authored that way. Not fine mid-pipeline.</text>
  </g>
</svg>
<figcaption>The exporter's Primary and Secondary Bone Axis settings define the frame each bone is written in. Y and X are Blender's own convention and the exporter's defaults. Switching to X because a Maya-oriented tutorial said so re-expresses every bone frame in the file, which shows up as bones that look rotated in Unreal's skeleton view and as twisted limbs when you retarget.</figcaption>
</figure>
<p>Keep Primary Bone Axis at Y and Secondary Bone Axis at X. They're the exporter's defaults, and they're the defaults Epic ships in Send to Unreal's <a href="https://github.com/EpicGamesExt/BlenderTools/blob/main/send2ue/resources/settings.json">FBX settings</a>. Unreal imports the bones in whatever frame the file declares, so a Blender rig with Y-along-bone works, animates and retargets correctly. Where the mismatch bites is mixing: exporting the mesh with one primary axis and an animation with another, or exporting Blender animations for a skeleton that was originally authored in Maya. If you're targeting a skeleton that already exists in Unreal, either export from the same Blender file every time, or import the Unreal skeleton into Blender first and animate on that.</p>
<h2>The root bone question</h2>
<p>Unreal's <a href="https://dev.epicgames.com/documentation/en-us/unreal-engine/fbx-skeletal-mesh-pipeline-in-unreal-engine">skeletal mesh pipeline</a> page says the pivot of a skeletal mesh &quot;is always located at the root bone/joint of the skeleton&quot;, and its importer wants exactly one. The <a href="https://dev.epicgames.com/documentation/en-us/unreal-engine/fbx-import-errors-in-unreal-engine">FBX Import Errors</a> page lists the message you get otherwise: &quot;Found multiple roots. The importer only supports one root per mesh.&quot;</p>
<p>Blender's exporter writes your armature object as its own node above the bones. The Armature FBXNode Type option controls what kind: the default is Null, &quot;similar to Blender's Empty&quot;, with Root and LimbNode as alternatives the tooltip advises against unless &quot;you experience issues with the other app&quot;. Unreal reads that node as the top of the bone hierarchy and makes it the root bone, named after the armature object. Epic documents this behaviour in Send to Unreal's <a href="https://epicgames.github.io/BlenderTools/send2ue/settings/export.html">export settings</a>: its &quot;Export object name as root bone&quot; option &quot;uses the armature object's name in blender as the root bone name in Unreal, otherwise the first bone in the armature hierarchy is used as the root bone&quot;.</p>
<p>This is why a bone called &quot;Armature&quot; shows up above your hips. The fix is renaming the armature object, not the armature data block, to <code>root</code> in the Outliner. Keep it at the world origin with unit scale and zero rotation, parent your hips (or pelvis) to nothing so it becomes the first child of that node, and don't skin any vertices to it. You now have the same shape as Epic's skeletons: a <code>root</code> at the floor, a pelvis above it. That shape matters later, because Unreal's <a href="https://dev.epicgames.com/documentation/en-us/unreal-engine/ik-rig-animation-retargeting-in-unreal-engine">IK Retargeter</a> asks you to designate a pelvis bone on both rigs to transfer root motion between characters.</p>
<p>If you'd rather the armature node disappear entirely, that's what Send to Unreal's &quot;first bone in the armature hierarchy&quot; mode does, and Better FBX Importer &amp; Exporter does the equivalent. Blender's built-in exporter can't drop it, so rename it.</p>
<h2>Leaf bones and deform bones</h2>
<p>Add Leaf Bones is on by default, and the exporter's source even carries a comment marking it as meant to be off. Its tooltip: &quot;Append a final bone to the end of each chain to specify last bone length (use this when you intend to edit the armature from exported data)&quot;. The code generates one hidden bone per chain end, named <code>&lt;bone&gt;_end</code>. Unreal shows every one of them in the skeleton tree, on each fingertip, the head, both toes. They're harmless but they pollute the hierarchy, break retarget chain auto-matching, and add bone tracks to every animation. Turn it off for engine exports.</p>
<p>Only Deform Bones is worth turning on if your armature has control bones: IK targets, pole targets, Rigify's control layers. The tooltip says it writes &quot;only deforming bones (and non-deforming ones when they have deforming children)&quot;. Rigify users should export the generated rig with Only Deform Bones on so the deforming bones go across and the control machinery stays behind. Check that every bone the mesh is weighted to has its Deform flag ticked, or the vertices weighted to it will freeze in place in Unreal.</p>
<h2>Smoothing groups, normals and triangulation</h2>
<p>Unreal's importer expects smoothing groups. If it doesn't find them, the FBX Import Errors page lists the exact warning: &quot;No smoothing group information was found in this FBX scene. Please make sure to enable the 'Export Smoothing Groups' option in the FBX Exporter plug-in before exporting the file.&quot; Blender's exporter defaults Smoothing to Normals Only, described as &quot;Export only normals instead of writing edge or face smoothing data&quot;, with a note to &quot;prefer 'Normals Only' option if your target importer understand split normals&quot;. Set Smoothing to Face and the warning stops. On import, Preserve Smoothing Groups is described as splitting &quot;triangles with non-matching smoothing groups&quot;, which is how hard edges survive.</p>
<p>The skeletal mesh pipeline page states that meshes &quot;must be triangulated as the graphics hardware only deals with triangles&quot;. Ticking Triangulate Faces in the exporter gives you control over which diagonal each quad splits on, which matters for normal maps baked in Blender. Tangent Space is optional and, per its tooltip, &quot;will only work correctly with tris/quads only meshes&quot;. If your mesh has n-gons, turn Tangent Space off or triangulate first.</p>
<h2>Textures and materials</h2>
<p>Path Mode set to Copy with the Embed Textures toggle ticked packs your images into the FBX binary, and Unreal's Import Textures option pulls them out into texture assets. Expect a partial material. The <a href="https://dev.epicgames.com/documentation/en-us/unreal-engine/fbx-static-mesh-pipeline-in-unreal-engine">static mesh pipeline</a> page says &quot;Only Color and Normal will automatically be connected&quot; and the skeletal mesh page says the same in different words, &quot;diffuse and normal map only&quot;. Roughness, metallic, emissive and ambient occlusion arrive as textures but not wired to anything. Blender's manual also lists &quot;Material textures&quot; as a known gap in the exporter.</p>
<p>The workable pattern is to embed nothing and treat the FBX as geometry plus skeleton. Export your textures from Blender's Image Editor or straight from Substance, import them into Unreal alongside the FBX, then build one master material with the Principled BSDF inputs you use and make Material Instances per character. Unreal's Material Import Method has a &quot;Create New Instanced Materials&quot; mode that lets you pick a base material for exactly this.</p>
<h2>Skeletal mesh versus static mesh</h2>
<p>Unreal decides what you've sent it by looking for a skin deformer. A mesh parented to an armature with an Armature modifier imports as a Skeletal Mesh, creates a Skeleton asset (the Skeleton option in the import dialog says &quot;If no existing Skeleton is selected, a new one will be created&quot;), and a Physics Asset. A mesh with no armature imports as a Static Mesh. The Import Content Type option lets you force geometry only or skinning only on a skeletal import.</p>
<p>For static props, two Blender-side conventions from the static mesh pipeline page save you work. Collision: Unreal reads meshes named <code>UBX_</code>, <code>UCP_</code>, <code>USP_</code> and <code>UCX_</code> followed by the render mesh's name as box, capsule, sphere and convex collision, in the form <code>[PREFIX]_[RenderMeshName]_##</code>, so a prop called <code>Crate</code> with a child mesh called <code>UCX_Crate_01</code> arrives with its collision built. The page adds one caveat: &quot;when importing multiple meshes with custom collision in a single file, only the first mesh's collision will be imported&quot;, so export props one per file. Vertex colors: &quot;Vertex colors for Static Meshes can be transferred using the FBX pipeline. No special setup is necessary&quot;, which Blender writes from the active Color Attribute (the exporter's default is sRGB).</p>
<p>For skeletal meshes, the pipeline page confirms a character can be &quot;a single, contiguous mesh or several separate meshes all skinned to the same skeleton&quot;, so you needn't join everything, but every piece must be parented to the same armature. Apply Modifiers is on by default and its tooltip warns it &quot;prevents exporting shape keys&quot;. For facial shape keys, turn it off, apply the non-armature modifiers by hand, and tick Import Morph Targets in Unreal.</p>
<h2>Animation: actions, NLA and the Skeleton asset</h2>
<p>Blender's exporter always bakes: every animated bone is sampled at Sampling Rate (1.0 means every frame), and constraints, IK and drivers are written as plain keys. Three toggles decide how many clips come out.</p>
<p>All Actions writes &quot;each action as a separated FBX's AnimStack&quot;, and the manual clarifies these are &quot;all actions compatible with the selected armatures&quot;. NLA Strips writes &quot;each non-muted NLA strip as a separated FBX's AnimStack&quot;. With both off, you get one clip covering the scene's frame range with the armature's current action. Unreal imports each AnimStack as its own Animation Sequence, and the <a href="https://dev.epicgames.com/documentation/en-us/unreal-engine/importing-animations-using-fbx-in-unreal-engine">animation import</a> page confirms &quot;Unreal allows content creators to import multiple animations in a single FBX file&quot;. So keep one Action per clip, named as you want the sequence named, and tick All Actions. If you assemble clips in the NLA editor instead, tick NLA Strips and leave All Actions off, or you'll get both.</p>
<p>Key All Bones forces &quot;at least one key of animation for all bones (needed with some target applications, like UE4)&quot;. Leave it on. Force Start/End Keying adds a key at the first and last frame so Unreal's Animation Length set to Exported Time gets the range you meant. Simplify defaults to 1.0 and the tooltip says &quot;0.0 to disable&quot;. Set it to 0 for game animation, because simplified curves can lose the exact contact frames.</p>
<p>On the Unreal side, do two imports. First the character with Import Animations off, which creates the Skeletal Mesh and Skeleton. Then the animation FBX (same armature, same bone axes, same scale settings, mesh not required) with Import Mesh off and the Skeleton dropdown pointed at the one you just made. Use Default Sample Rate is 30 frames per second per the reference, and Custom Sample Rate &quot;when set to 0, the best sample rate is automatically determined&quot;. Match your Blender frame rate. If the import reports &quot;Scene does not contain a Bind Pose&quot;, import with Use T0 As Ref Pose enabled, which uses frame 0 &quot;to replace the Skeletal Mesh's reference pose&quot;.</p>
<p>Newer engine versions may show a different dialog. Epic's <a href="https://dev.epicgames.com/documentation/en-us/unreal-engine/interchange-framework-in-unreal-engine">Interchange Framework</a> is its &quot;import and export framework. It is file format agnostic, asynchronous, customizable, and can be used at runtime&quot;, and the 5.5 release notes call it &quot;production ready for asset imports and beta for level imports&quot;. Its <a href="https://dev.epicgames.com/documentation/en-us/unreal-engine/interchange-import-reference-in-unreal-engine">import reference</a> uses different names for familiar things: Offset Uniform Scale, Use 30Hz to Bake Bone Animation, Import Only Animations for the animation-onto-existing-skeleton case, and Skeleton where &quot;Leaving this empty creates a new skeleton&quot;. The Blender-side checklist is identical either way.</p>
<h2>Retargeting onto the UE5 Mannequin or a MetaHuman</h2>
<p>Your Blender skeleton won't share bone names with Epic's, and it doesn't need to. Unreal 5's IK Retargeter is built to &quot;transfer animation between skeletons with varying numbers of bones, bone names, and orientations&quot;. The process, from Epic's <a href="https://dev.epicgames.com/documentation/en-us/unreal-engine/ik-rig-animation-retargeting-in-unreal-engine">IK Rig retargeting</a> page:</p>
<ol>
<li>Create an IK Rig asset for your imported Skeletal Mesh (<code>Animation &gt; IK Rig</code> in the Content Browser). Right-click your pelvis bone in the hierarchy and choose Set Pelvis. Press Auto Create Retarget Chains. Do the same for the target character if it doesn't already have an IK Rig.</li>
<li>Create an IK Retargeter, set the Source IK Rig to yours and the Target IK Rig to the Mannequin's (or the reverse if you're bringing Epic's animations onto your character).</li>
<li>Check the chain mapping. Epic uses fuzzy string matching, so a chain named <code>ArmLeft</code> matches <code>left_arm</code> when nothing better exists. Fix any chain it mapped wrong.</li>
<li>If your character was rigged in an A-pose and the target is a T-pose, open Edit Retarget Pose and align the arms, or use the Auto Align option.</li>
<li>Select the animations in the Asset Browser and click Export Selected Animations. You get new Animation Sequences on the target skeleton, with an optional prefix or suffix.</li>
</ol>
<p>Two Blender-side details make this painless. Name bones by side and segment (<code>upperarm_l</code>, <code>lowerarm_l</code>, <code>hand_l</code>) so auto-mapping lands, and keep the root-then-pelvis hierarchy from the section above so Set Pelvis has an obvious bone and root motion transfers &quot;proportionally between characters&quot;, as the page puts it. A Mixamo-named rig auto-maps well too, because the chain names come from bone names like <code>LeftArm</code> and <code>LeftForeArm</code> and the matcher reads words, which is one reason the <a href="/blender-addon/">Cinevva Rig add-on</a> rigs to Mixamo names.</p>
<h2>Send to Unreal: what Epic's add-on automates, and its state in 2026</h2>
<p>Epic's <a href="https://github.com/EpicGamesExt/BlenderTools">BlenderTools</a> repository holds Send to Unreal, &quot;a one-click solution for sending data from Blender to Unreal Engine&quot;, and UE to Rigify. Send to Unreal wraps Blender's own FBX exporter (&quot;All the standard FBX export settings that are in the blender FBX addon are available in this section to be customized&quot;) and adds the pipe: it writes the FBX, then uses Unreal's Python remote execution to import it into your open project. Setup on the Unreal side is the Python Editor Script Plugin, remote execution in Project Settings, and turning off &quot;Use Less CPU when in Background&quot; so the editor listens while Blender has focus. In Blender you move assets into a collection named <code>Export</code> and run <code>Pipeline &gt; Export &gt; Send to Unreal</code>.</p>
<p>Its defaults are what Epic chose, so they're a good sanity check: All Local scaling, Y Forward and Z Up, Face smoothing, Primary Bone Axis Y with Secondary X, leaf bones off, and the armature object's name as the root bone. It also does what the built-in exporter can't: drop the armature node, export LODs, and stash the active action into the NLA so each clip becomes its own sequence.</p>
<p>Maintenance is the caveat. The last release is Send to Unreal 2.4.3 from November 9, 2023, whose notes list tests passing on Blender 3.3 and 3.6 with Unreal 5.3, and the add-on's metadata sets Blender 3.3 as the minimum. The repository isn't archived, has around 3,300 stars, and took a documentation commit in September 2026, but the last code merge was July 2024 and close to a hundred issues sit open. It predates Blender's 4.2 extensions system, so test it on your version before building on it. If it works, it's the most complete free pipeline there is. If not, the checklist below gets you the same file.</p>
<div class="video-embed"><iframe src="https://www.youtube.com/embed/y51-tXjKEzc" title="[Blender to UE] Custom Characters #4 - Send to Unreal VS FBX Export" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></div>
<div class="video-caption">CGDive compares Send to Unreal with a manual FBX export on the same custom character, and shows the root bone and scale differences in Unreal's skeleton tree. The manual settings match this checklist.</div>
<p>On the import side, Better FBX Importer &amp; Exporter deserves the credit it gets. It's a paid add-on from Mesh Online, around $25 for a single seat and one of Superhive's best sellers, and it exists because imports kept breaking. Its <a href="https://mesh-online.net/fbx.html">product page</a> says it was built &quot;with official FBX SDK from scratch&quot;, that the &quot;exported armature and 3d models have unit scale and zero rotations&quot;, that it &quot;supports automatic bone orientation&quot; on import, and that its output was &quot;verified in Unity Engine 2019, Unreal Engine 4/5 and Godot Engine v3.2&quot;. If you round-trip Epic's Mannequin or Marketplace animations into Blender and back, that automatic bone orientation is the feature you're paying for. For a one-way Blender-to-Unreal trip of your own character, the built-in exporter with the settings below is enough.</p>
<h2>The checklist</h2>
<p>Do these in order. Steps 1 to 5 are once per project, 6 to 13 once per export.</p>
<ol>
<li><code>Properties &gt; Scene &gt; Units</code>: Unit System Metric. Either Unit Scale 0.01 with Length Centimeters (then scale existing metre-scale assets by 100), or Unit Scale 1.0 and remember to pick FBX All in step 9.</li>
<li>Model the character facing -Y, feet on the floor at the origin. Numpad 1 should show its face.</li>
<li>In Object Mode select mesh and armature, <code>Ctrl+A &gt; All Transforms</code>. Both should read location 0, rotation 0, scale 1.</li>
<li>Rename the armature object to <code>root</code> in the Outliner. Make sure the hips are the only top-level bone, or that every top-level bone has a real parent. Give <code>root</code> no weights.</li>
<li>Check every deforming bone has Deform ticked (Bone Properties). If you use Rigify or control bones, plan to export with Only Deform Bones on.</li>
<li>One Action per clip, named as you want the Animation Sequence named. Set the scene frame rate to what you'll use in Unreal (30 is Unreal's default sample rate).</li>
<li>Select the mesh objects and the armature. Nothing else. Cameras, lights and empties become extra nodes.</li>
<li><code>File &gt; Export &gt; FBX (.fbx)</code>. Include: Selected Objects on, Object Types limited to Armature and Mesh.</li>
<li>Transform: Scale 1.00, Apply Scalings FBX All (or All Local if your Unit Scale is 0.01), Forward -Z, Up Y, Apply Unit on, Use Space Transform on, Apply Transform off.</li>
<li>Geometry: Smoothing Face, Apply Modifiers on (off if you need shape keys), Triangulate Faces on, Tangent Space off unless the mesh is all tris and quads.</li>
<li>Armature: Primary Bone Axis Y, Secondary Bone Axis X, Armature FBXNode Type Null, Only Deform Bones as decided in step 5, Add Leaf Bones off.</li>
<li>Bake Animation: on for the character export only if you want clips in the same file, otherwise off here and on in a second animation-only export. Key All Bones on, NLA Strips off, All Actions on, Force Start/End Keying on, Sampling Rate 1.0, Simplify 0.</li>
<li>Path Mode Copy with Embed Textures only if you want Unreal to create placeholder materials, otherwise leave it and import textures separately.</li>
<li>In Unreal, drag the FBX into the Content Browser. Import as Skeletal Mesh with Skeleton empty, Import Animations off, Convert Scene on, Convert Scene Unit on, Import Uniform Scale 1.0. Open the result and confirm the root bone reads Scale 1.0, the character faces +X, and the bone count matches Blender's deform bone count.</li>
<li>Import the animation FBX with Import Mesh off and Skeleton set to the one from step 14. Play a clip and watch feet and hands.</li>
</ol>
<p>If step 14 shows Scale 100 on the root, go back to step 1 or 9. If the character faces the wrong way, step 2. If there's a bone called Armature, step 4. If the tree has <code>_end</code> bones, step 11.</p>
<h2>The one-click route</h2>
<p>Every setting above is a convention, and conventions are what software is for. The <a href="/blender-addon/">Cinevva Rig add-on</a> ships an Unreal export preset that writes FBX with forward -Y and up Z, unit scale applied with FBX_SCALE_NONE, primary bone axis Y and secondary X, no leaf bones, face smoothing, and textures embedded and capped at 2048 px, so a rigged character from the add-on goes to Unreal without touching the exporter dialog. Before it exports, a size analysis splits the estimated file into geometry, textures, animation and shape keys, which is how you find out that the 40 MB character is 36 MB of 4K textures on a 3,000-triangle mesh. Against a plain Blender GLB export, the presets produced files 68%, 89%, 92% and 98% smaller on four real models. Export needs no key, no account and no network. The rigging half rigs a mesh to a skinned, Mixamo-named humanoid armature on your own machine, offline, after a one-time engine download of about 2.4 GB, for one $29 purchase (launch price) with no per-rig charge, and it runs on Blender 4.2 and newer on Windows, macOS and Linux. The same 260 CC0 clips it retargets in Blender come along in the FBX as separate actions, ready for step 15.</p>
<h2>Common Questions</h2>
<h3>How do I export from Blender to Unreal Engine 5?</h3>
<p>Select the mesh and armature, <code>File &gt; Export &gt; FBX (.fbx)</code>, tick Selected Objects, set Apply Scalings to FBX All (or use a 0.01 Unit Scale scene with All Local), Smoothing to Face, Add Leaf Bones off, Primary Bone Axis Y and Secondary X, and Bake Animation with All Actions on. Rename the armature object to <code>root</code> first. In Unreal, drag the file into the Content Browser and import with Convert Scene and Convert Scene Unit on.</p>
<h3>What are the correct Blender FBX export settings for Unreal?</h3>
<p>Scale 1.0, Apply Unit on, Apply Scalings FBX All, Forward -Z, Up Y, Use Space Transform on, Apply Transform off, Smoothing Face, Apply Modifiers on, Primary Bone Axis Y, Secondary Bone Axis X, Armature FBXNode Type Null, Add Leaf Bones off, Key All Bones on, All Actions on, Simplify 0. These match what Epic's Send to Unreal add-on ships apart from the scaling choice, where Send to Unreal uses All Local and expects you to work at Unreal scale.</p>
<h3>Why is my Blender model scale 100 in Unreal?</h3>
<p>Because Blender's metre and Unreal's centimetre differ by 100, and with the exporter's defaults (Unit Scale 1.0, Apply Scalings All Local) that 100 gets multiplied into the armature object's transform, which Unreal then reads as the root bone. Either set the scene's Unit Scale to 0.01 and model at Unreal size, or export with Apply Scalings set to FBX All so the factor goes into the file header and Unreal's Convert Scene Unit applies it.</p>
<h3>Why do my bones import rotated in Unreal?</h3>
<p>Blender bones always run along their local Y axis, and the exporter's Primary Bone Axis Y with Secondary X writes that frame as-is. If you changed Primary to X because a Maya tutorial said to, every bone frame in the file turns 90 degrees relative to the skin and animation data. Set the axes back to Y and X and re-export both mesh and animations from the same file.</p>
<h3>How do I get rid of the Armature root bone in Unreal?</h3>
<p>You can't remove it with Blender's built-in exporter, but you can name it. Unreal turns the armature object into the root bone under the object's name, so rename the armature object (not the armature data) to <code>root</code>, keep it at the origin, and make the hips its first child. Send to Unreal and Better FBX Importer &amp; Exporter can both drop the node and promote the first bone instead.</p>
<h3>Is the Send to Unreal Blender add-on still maintained in 2026?</h3>
<p>Barely. The last release is 2.4.3 from November 2023, tested on Blender 3.3 and 3.6 with Unreal 5.3, and the last code merge was July 2024. The repository is still public, not archived, and picked up a documentation commit in September 2026, but there's been no release for Blender 4.x. Test it on your Blender version before building a pipeline on it, and keep the manual checklist as the fallback.</p>
<h3>How do I retarget Blender animations to the UE5 Mannequin?</h3>
<p>Import your character as a Skeletal Mesh, create an IK Rig for it, Set Pelvis on the hips bone and press Auto Create Retarget Chains. Create an IK Retargeter with your IK Rig as Source and the Mannequin's shipped IK Rig as Target, check the chain mapping, fix the retarget pose if your rig is an A-pose, then select your animations and click Export Selected Animations. The same steps work in reverse to put Epic's animations on your character.</p>
<h2>Related</h2>
<ul>
<li><a href="/guides/automatic-rigging-explained">How Automatic Rigging Works</a>: what a skeleton, bind pose and skin weights are, and how to prepare a mesh for rigging</li>
<li><a href="/guides/free-character-animations-rigging">Free Character Animations and Auto-Rigging</a>: CC0 clip libraries and free riggers to fill the Actions you'll export</li>
<li><a href="/guides/blender-to-unity-export-checklist">Blender to Unity Export Checklist</a>: the same walk for Unity, where the axis and scale answers differ</li>
<li><a href="/guides/blender-to-godot-export-checklist">Blender to Godot Export Checklist</a>: glTF instead of FBX, and why Godot skips most of this</li>
<li><a href="/tools/glb-viewer">GLB Viewer</a>: inspect a skeleton hierarchy, bone count and animations in the browser before you import</li>
<li><a href="/blender-addon/">Cinevva Rig for Blender</a>: the add-on with the Unreal export preset and size analysis described above</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Blender Weight Painting: The 7 Problems Everyone Hits, How to Fix Them, and How to Skip the Step]]></title>
            <link>https://app.cinevva.com/guides/blender-weight-painting-problems</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/blender-weight-painting-problems</guid>
            <pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Blender weight painting fixes: bone heat weighting error, bleeding across limbs, more than 4 influences, un-normalized or asymmetric weights, twisting wrists.]]></description>
            <content:encoded><![CDATA[<h1>Blender Weight Painting: The 7 Problems Everyone Hits, How to Fix Them, and How to Skip the Step</h1>
<p><em>Last updated: September 2026.</em></p>
<figure class="guide-hero">
<img src="https://cdn.cinevva.com/guides/blender-weight-painting-problems-hero.jpg?v=1" alt="Blender character arm in weight paint mode, blue to red heat gradient across the elbow" width="1216" height="640">
</figure>
<style>
.guide-hero { margin: 1.25rem 0 1.75rem; }
.guide-hero img { width: 100%; height: auto; border-radius: 12px; display: block; }
.guide-fig { margin: 1.5rem 0; }
.guide-fig > a { display: block; }
.guide-fig img { width: 100%; height: auto; border-radius: 10px; border: 1px solid var(--vp-c-divider); display: block; }
.guide-fig svg { width: 100%; height: auto; display: block; }
.guide-fig figcaption { font-size: 0.9rem; color: var(--vp-c-text-2); margin: 0.5rem 0 0; }
.video-embed { position: relative; width: 100%; max-width: 720px; margin: 1.5rem 0; }
.video-embed iframe { width: 100%; aspect-ratio: 16/9; border-radius: 8px; }
.video-caption { font-size: 0.9rem; color: var(--vp-c-text-2); margin-top: 0.5rem; margin-bottom: 1.5rem; }
</style>
<p>Nearly every weight painting problem in Blender is one of seven: automatic weights refuse to run, weights bleed from one limb into another, a vertex has more than four bones pulling on it, weights don't add up to one, the two sides don't match, a wrist collapses when it twists, or a jacket stays behind when the body moves. Each has a specific tool in the <code>Weights</code> menu of Weight Paint Mode (Normalize All, Clean, Limit Total, Smooth, Mirror Vertex Group, Transfer Weights) or a modifier setting, and this guide gives the exact path for each. If you'd rather not paint at all, two add-ons skin a character for you, and we cover both at the end.</p>
<h2>Quick answer</h2>
<ul>
<li><strong>Automatic weights fail</strong> with <code>Bone Heat Weighting: failed to find solution for one or more bones</code>: clean the mesh. <code>Mesh &gt; Clean Up &gt; Merge by Distance</code>, <code>Degenerate Dissolve</code>, <code>Delete Loose</code>, then <code>Select &gt; Select All by Trait &gt; Non Manifold</code>. Rig one connected body, attach clothes afterwards.</li>
<li><strong>Weights bleed into the wrong limb:</strong> select the affected faces, then <code>Weights &gt; Assign Automatic from Bones</code> for only the bones that should own them, or paint them out and run <code>Weights &gt; Smooth</code> and <code>Weights &gt; Clean</code>.</li>
<li><strong>Too many bones per vertex:</strong> <code>Weights &gt; Limit Total</code> with Limit 4, then <code>Weights &gt; Normalize All</code>.</li>
<li><strong>Weights don't sum to one:</strong> <code>Weights &gt; Normalize All</code> with Lock Active off, then Auto Normalize on in the tool options.</li>
<li><strong>One side is right, the other isn't:</strong> <code>Weights &gt; Mirror Vertex Group</code> with Mirror Weights and Flip Group Names, or paint with Mirror Vertex Groups on in the Symmetry panel.</li>
<li><strong>Candy-wrapper wrist:</strong> Preserve Volume on the Armature modifier for renders, twist bones for a game engine.</li>
<li><strong>Clothing doesn't follow the body:</strong> a Data Transfer modifier on the clothing, Vertex Groups, Nearest Face Interpolated, source set to the body.</li>
<li><strong>Skip the step:</strong> <a href="https://superhivemarket.com/products/voxel-heat-diffuse-skinning">Voxel Heat Diffuse Skinning</a> (about $30) skins meshes Blender's solver rejects. The <a href="/blender-addon/">Cinevva Rig add-on</a> ($29 launch price, runs offline on your own machine, Blender 4.2+ on Windows, macOS and Linux) places the skeleton and the weights together.</li>
</ul>
<h2>Quick reference</h2>
<table>
<thead>
<tr>
<th>Problem</th>
<th>What you see</th>
<th>The fix</th>
<th>Where</th>
</tr>
</thead>
<tbody>
<tr>
<td>Automatic weights fail</td>
<td><code>Bone Heat Weighting: failed to find solution for one or more bones</code></td>
<td>Merge by Distance, Degenerate Dissolve, Delete Loose, fix non-manifold edges, rig the body alone</td>
<td>Edit Mode, <code>Mesh &gt; Clean Up</code>, <code>Select &gt; Select All by Trait</code></td>
</tr>
<tr>
<td>Weights bleed</td>
<td>Raising an arm lifts the ribs, a hand drags the hip</td>
<td>Assign Automatic from Bones on a face selection, then Smooth and Clean</td>
<td>Weight Paint Mode, <code>Weights</code> menu with face masking</td>
</tr>
<tr>
<td>More than 4 influences</td>
<td>Engine or viewer deforms differently from Blender</td>
<td>Limit Total 4, then Normalize All</td>
<td>Weight Paint Mode, <code>Weights</code> menu</td>
</tr>
<tr>
<td>Un-normalized weights</td>
<td>Looks fine in Blender, wrong after export</td>
<td>Normalize All (Lock Active off), Auto Normalize on</td>
<td><code>Weights</code> menu, tool Options panel</td>
</tr>
<tr>
<td>Asymmetric weights</td>
<td>Left bends cleanly, right doesn't</td>
<td>Mirror Vertex Group with Flip Group Names</td>
<td><code>Weights &gt; Mirror Vertex Group</code></td>
</tr>
<tr>
<td>Candy-wrapper twist</td>
<td>Forearm pinches to a point when the wrist rotates</td>
<td>Preserve Volume, or twist bones</td>
<td>Armature modifier, or the rig</td>
</tr>
<tr>
<td>Clothing shells</td>
<td>Jacket or skirt stays behind, legs poke through</td>
<td>Data Transfer modifier, Vertex Groups, Nearest Face Interpolated</td>
<td>Modifier on the clothing object</td>
</tr>
</tbody>
</table>
<h2>What skin weights are, in one paragraph</h2>
<p>Every vertex on a character carries a small list: which bones move it and by how much. Blender stores that list as <a href="https://docs.blender.org/manual/en/latest/modeling/meshes/properties/vertex_groups/vertex_groups.html">vertex groups</a> named after bones, one weight per vertex per group, and the <a href="https://docs.blender.org/manual/en/latest/modeling/modifiers/deform/armature.html">Armature modifier</a> reads them: &quot;a bone named 'forearm', will only affect the vertices in the 'forearm' vertex group. The influence of one bone on a given vertex is controlled by the weight of this vertex in the relevant group.&quot; Weight Paint Mode is a way to see and edit those numbers as colour. The <a href="https://docs.blender.org/manual/en/latest/sculpt_paint/weight_paint/introduction.html">manual's colour code</a>: &quot;areas of low value (with weights close to 0.0) are displayed as blue (cold) and areas of high value (with weights close to 1.0) are displayed as red (hot)&quot;, with green and yellow in between.</p>
<p>A good joint is a short gradient. A bad joint is either a hard step, which folds like paper, or a gradient that reaches somewhere it shouldn't.</p>
<figure class="guide-fig">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 340" role="img" aria-label="Skin weights as a heat gradient across an elbow, good versus bad: on the left the forearm bone's weight ramps from blue 0.0 to red 1.0 over three edge loops centred on the elbow, on the right the weight steps from blue to red in one loop and a stray red patch sits on the chest">
  <defs>
    <linearGradient id="wpGood" gradientUnits="userSpaceOnUse" x1="120" y1="0" x2="280" y2="0">
      <stop offset="0" stop-color="#7dd3fc"/>
      <stop offset="0.3" stop-color="#7dd3fc"/>
      <stop offset="0.5" stop-color="#6ee7b7"/>
      <stop offset="0.7" stop-color="#fb7185"/>
      <stop offset="1" stop-color="#fb7185"/>
    </linearGradient>
    <linearGradient id="wpBad" gradientUnits="userSpaceOnUse" x1="470" y1="0" x2="630" y2="0">
      <stop offset="0" stop-color="#7dd3fc"/>
      <stop offset="0.49" stop-color="#7dd3fc"/>
      <stop offset="0.51" stop-color="#fb7185"/>
      <stop offset="1" stop-color="#fb7185"/>
    </linearGradient>
  </defs>
  <rect width="720" height="340" rx="14" fill="#0b1020"/>
  <g font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif">
    <text x="24" y="40" font-size="20" font-weight="800" fill="#e8edf5">Weights across an elbow</text>
    <text x="24" y="62" font-size="13" fill="#9aa7b4">The forearm bone's vertex group, shown as Blender's cold-to-hot colours. Blue is 0.0, red is 1.0.</text>
    <rect x="24" y="80" width="336" height="236" rx="10" fill="#121a31"/>
    <rect x="360" y="80" width="336" height="236" rx="10" fill="#121a31"/>
    <circle cx="48" cy="104" r="9" fill="#6ee7b7"/>
    <path d="M43.5 104 l3 3 l6 -6" stroke="#0b1020" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round"/>
    <text x="64" y="109" font-size="14" font-weight="700" fill="#6ee7b7">Bends like an elbow</text>
    <circle cx="384" cy="104" r="9" fill="#fb7185"/>
    <path d="M380 100 l8 8 M388 100 l-8 8" stroke="#0b1020" stroke-width="2" fill="none" stroke-linecap="round"/>
    <text x="400" y="109" font-size="14" font-weight="700" fill="#fb7185">Folds, and pulls the chest</text>
    <rect x="60" y="150" width="240" height="44" rx="22" fill="url(#wpGood)" opacity="0.9"/>
    <g stroke="#0b1020" stroke-width="1.5" opacity="0.8">
      <line x1="150" y1="150" x2="150" y2="194"/>
      <line x1="180" y1="150" x2="180" y2="194"/>
      <line x1="210" y1="150" x2="210" y2="194"/>
      <line x1="240" y1="150" x2="240" y2="194"/>
    </g>
    <circle cx="200" cy="172" r="6" fill="#e8edf5" stroke="#0b1020" stroke-width="2"/>
    <text x="200" y="216" font-size="11" fill="#e8edf5" text-anchor="middle">elbow joint</text>
    <text x="72" y="216" font-size="11" font-weight="700" fill="#7dd3fc">0.0</text>
    <text x="290" y="216" font-size="11" font-weight="700" fill="#fb7185" text-anchor="end">1.0</text>
    <text x="72" y="232" font-size="11" fill="#9aa7b4">upper arm</text>
    <text x="290" y="232" font-size="11" fill="#9aa7b4" text-anchor="end">forearm</text>
    <text x="40" y="266" font-size="12" fill="#e8edf5">Weight ramps over three or four edge loops.</text>
    <text x="40" y="284" font-size="12" fill="#9aa7b4">Each loop shares the bend, so the crease curves.</text>
    <text x="40" y="302" font-size="12" fill="#9aa7b4">Nothing outside the arm is red.</text>
    <rect x="396" y="150" width="240" height="44" rx="22" fill="url(#wpBad)" opacity="0.9"/>
    <line x1="516" y1="150" x2="516" y2="194" stroke="#0b1020" stroke-width="1.5" opacity="0.8"/>
    <circle cx="516" cy="172" r="6" fill="#e8edf5" stroke="#0b1020" stroke-width="2"/>
    <text x="516" y="216" font-size="11" fill="#e8edf5" text-anchor="middle">elbow joint</text>
    <text x="408" y="216" font-size="11" font-weight="700" fill="#7dd3fc">0.0</text>
    <text x="626" y="216" font-size="11" font-weight="700" fill="#fb7185" text-anchor="end">1.0</text>
    <rect x="600" y="92" width="76" height="46" rx="8" fill="#1a1424" stroke="#fb7185" stroke-width="1.5"/>
    <ellipse cx="638" cy="115" rx="18" ry="10" fill="#fb7185" opacity="0.85"/>
    <text x="638" y="150" font-size="10" fill="#fb7185" text-anchor="middle">bleed on the chest</text>
    <text x="376" y="266" font-size="12" fill="#e8edf5">Weight jumps from 0 to 1 in a single loop.</text>
    <text x="376" y="284" font-size="12" fill="#9aa7b4">One loop takes the whole bend and pinches flat.</text>
    <text x="376" y="302" font-size="12" fill="#9aa7b4">The red patch on the chest moves with the forearm.</text>
  </g>
</svg>
<figcaption>Same forearm bone, two vertex groups. On the left the blend spans several edge loops around the elbow, so the crease curves. On the right the blend is one loop wide, which folds like paper, and a stray patch of forearm weight sits on the chest, which is what "bleeding" looks like in Weight Paint Mode.</figcaption>
</figure>
<h2>See what you've got before you fix anything</h2>
<p>Set up the view the way the <a href="https://docs.blender.org/manual/en/latest/sculpt_paint/weight_paint/usage.html">manual's workflow</a> describes: select the armature, <code>Ctrl-Tab</code> into Pose Mode, then select the mesh and switch to Weight Paint Mode. <code>Edit &gt; Lock Object Modes</code> in the topbar must be unchecked or the second step fails. In the viewport header tick Bone Selection, then <code>Alt-LMB</code> a bone to show its vertex group on the mesh. Bones hide inside the body, so turn on In Front for the armature in its Viewport Display settings.</p>
<p>Then open Viewport Overlays and set Zero Weights to All. Per the <a href="https://docs.blender.org/manual/en/latest/editors/3dview/display/overlays.html">overlay docs</a>, vertices &quot;are shown in black if they have no weight in any vertex group&quot;. Those are the vertices that stay behind when the character moves.</p>
<div class="video-embed"><iframe src="https://www.youtube.com/embed/5SLlp3AwShM" title="[Blender] Character Weight Paint: #3 Weight Paint Workflow (beginner tutorial)" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></div>
<div class="video-caption">CGDive's weight paint workflow tutorial walks through the same setup: pose the armature, select a bone, paint, and check the result by moving the bone.</div>
<h2>Problem 1: Automatic weights fail</h2>
<p>You press <code>Ctrl-P</code>, choose <code>Armature Deform &gt; With Automatic Weights</code>, and Blender answers:</p>
<blockquote>
<p>Bone Heat Weighting: failed to find solution for one or more bones</p>
</blockquote>
<p>That string lives in Blender's source, in <code>source/blender/editors/armature/meshlaplacian.cc</code>, and the function around it tells you what went wrong. Automatic weights treat each bone as a heat source and solve a diffusion problem over the mesh surface, which the <a href="https://docs.blender.org/manual/en/latest/animation/armatures/skinning/parenting.html">manual</a> describes as influence &quot;based on the distance from those vertices to a particular bone ('bone heat' algorithm)&quot;. Two details from the code matter: the mesh is triangulated first (&quot;bone heat needs triangulated faces&quot;), and a bone only heats a vertex it can see, tested with a ray cast against the mesh. The error fires when the linear solve for a bone fails, and it fails when the mesh hands it a degenerate system. In practice that means one of these:</p>
<ol>
<li><strong>Doubled vertices and zero-area faces.</strong> Common after FBX or OBJ import, or a Boolean. In Edit Mode select all, then <code>Mesh &gt; Clean Up &gt; Merge by Distance</code> (the <a href="https://docs.blender.org/manual/en/latest/modeling/meshes/editing/mesh/cleanup.html">manual</a>: &quot;Merges the selected vertices that are closer to each other than a certain distance&quot;), then <code>Mesh &gt; Clean Up &gt; Degenerate Dissolve</code>, which &quot;Collapses any selected edges that are shorter than a certain length. This also results in the removal of small faces.&quot;</li>
<li><strong>Loose geometry.</strong> <code>Mesh &gt; Clean Up &gt; Delete Loose</code>.</li>
<li><strong>Non-manifold edges and interior faces.</strong> <code>Select &gt; Select All by Trait &gt; Non Manifold</code> selects &quot;edges that do not belong to any face&quot;, &quot;edges at boundaries and holes&quot;, and &quot;edges that belong to three or more faces&quot;. <code>Select &gt; Select All by Trait &gt; Interior Faces</code> finds &quot;faces that may have been accidentally created inside the mesh instead of on the mesh's surface&quot;. Fix what lights up. A hole with a bone poking through it is a problem, and <code>Mesh &gt; Clean Up &gt; Fill Holes</code> closes it.</li>
<li><strong>Many separate shells.</strong> A character assembled from body, hair, eyes, teeth, boots and belt as separate islands is the classic trigger, and the reason the Voxel Heat Diffuse Skinning add-on exists. Rig the body alone first and attach the rest with the Data Transfer method in Problem 7, or join the pieces with <code>Ctrl-J</code> and Merge by Distance.</li>
<li><strong>Scale.</strong> Rigify's documentation states the assumption plainly: &quot;Rigify assumes that 1 unit corresponds to 1 meter. So a human is about 2 units tall.&quot; A 180-unit character is far outside that. Scale mesh and armature, <code>Object &gt; Apply &gt; All Transforms</code>, then parent again.</li>
</ol>
<p>If the error persists, split the problem: select part of the mesh with face selection masking and run <code>Weights &gt; Assign Automatic from Bones</code> for a few bones at a time. Every tool on the <a href="https://docs.blender.org/manual/en/latest/sculpt_paint/weight_paint/editing.html">Weight Paint tools page</a> works &quot;with Vertex Selection Masking and Face Selection Masking&quot;, so you can find the one region that breaks the solve.</p>
<h2>Problem 2: Weights bleed across limbs</h2>
<p>The arm goes up and the ribcage comes with it. The thigh bends and the crotch of the trousers folds inward. The hand bone grabs a patch of hip because the hand rested near the hip in the bind pose. The manual is blunt about the cause: automatic weights &quot;can often lead to armatures which do not deform child objects in ways you would want. Overlaps can occur when it comes to determining which bones should influence certain vertices&quot;.</p>
<p>The cleanest fix reruns the solver on a subset. In Weight Paint Mode turn on face selection masking, select the faces that should belong to the arm (and only those), select the arm bones in Pose Mode, then <code>Weights &gt; Assign Automatic from Bones</code>. Per the manual this applies &quot;from the selected bone(s) to the vertex group the same 'auto-weighting' methods as available in the Parent armature menu&quot;, but now the chest faces aren't in the selection, so nothing can bleed onto them. Repeat per limb.</p>
<p>For smaller bleeds, paint. Set the brush's Blend to Subtract with a low Strength, or hold <code>Ctrl</code> with the Draw brush to subtract, and brush the stray weight off the chest while the arm bone is active. Then <code>Weights &gt; Smooth</code>, which &quot;blends the weights of selected vertices based on the average of adjacent vertices&quot;. Factor 0.5 and two or three Iterations is a good start. Then <code>Weights &gt; Clean</code> to drop the near-zero residue that Smooth leaves behind (details in the export checklist below).</p>
<p>The two checks that stop bleeding before it starts: pose the character so limbs are apart (a T-pose or A-pose, with a gap between hand and hip), and don't rig a mesh whose arms touch its sides. Our <a href="/guides/automatic-rigging-explained">automatic rigging guide</a> covers the pose and single-mesh preparation in detail.</p>
<h2>Problem 3: More than four bones per vertex</h2>
<p>Blender doesn't care how many groups a vertex belongs to. Game engines do. The <a href="https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html#skins">glTF 2.0 specification</a> stores skinning in <code>JOINTS_0</code> and <code>WEIGHTS_0</code> attributes and says &quot;The number of joints that influence one vertex is limited to 4 per set&quot;. More than four means a second set (<code>JOINTS_1</code>, <code>WEIGHTS_1</code>), which many runtimes ignore. Unity's <a href="https://docs.unity3d.com/6000.2/Documentation/Manual/class-SkinnedMeshRenderer.html">Skinned Mesh Renderer</a> offers Skin Weights of 1 Bone, 2 Bones, 4 Bones or Auto, and warns that &quot;If you import a custom number of skin weights and you want to allow more than four bones of influence, you must choose this option and make sure you set Skin Weights to Unlimited&quot;. Blender's own <a href="https://docs.blender.org/manual/en/latest/addons/import_export/scene_gltf2.html">glTF exporter</a> has a Bone Influences setting with the note &quot;Models may appear incorrectly in many viewers with value different to 4 or 8&quot;.</p>
<p>So a vertex with six influences in Blender is silently truncated on export or on import, and the character deforms differently in the engine than in your viewport. Automatic weights produce six or seven influences routinely around the shoulders, hips and fingers.</p>
<p>The fix is two clicks. <code>Weights &gt; Limit Total</code>, Limit 4. The manual: &quot;Reduce the number of weight groups per vertex to the specified Limit. The tool removes lowest weights first until the limit is reached.&quot; Then <code>Weights &gt; Normalize All</code>, because removing the smallest weights leaves the remaining ones summing to less than one.</p>
<figure class="guide-fig">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 330" role="img" aria-label="One vertex with six bone influences (0.42, 0.31, 0.15, 0.07, 0.03, 0.02) passes through Limit Total 4, which drops the two smallest and leaves a sum of 0.95, then Normalize All rescales the four survivors to 0.44, 0.33, 0.16 and 0.07, summing to 1.0, which is what the glTF WEIGHTS_0 attribute holds">
  <rect width="720" height="330" rx="14" fill="#0b1020"/>
  <g font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif">
    <text x="24" y="40" font-size="20" font-weight="800" fill="#e8edf5">One vertex, six bones, four slots</text>
    <text x="24" y="62" font-size="13" fill="#9aa7b4">A shoulder vertex after automatic weights, then Limit Total 4, then Normalize All.</text>
    <g font-size="12" font-weight="700" fill="#e8edf5">
      <text x="24" y="98">After automatic weights</text>
      <text x="264" y="98">Limit Total, Limit 4</text>
      <text x="504" y="98">Normalize All</text>
    </g>
    <g font-size="11" fill="#9aa7b4">
      <text x="24" y="114">6 influences, sum 1.00</text>
      <text x="264" y="114">4 influences, sum 0.95</text>
      <text x="504" y="114">4 influences, sum 1.00</text>
    </g>
    <g font-size="11" fill="#e8edf5">
      <text x="24" y="146">upper arm</text>
      <text x="24" y="172">shoulder</text>
      <text x="24" y="198">chest</text>
      <text x="24" y="224">neck</text>
      <text x="24" y="250">spine</text>
      <text x="24" y="276">head</text>
    </g>
    <g>
      <rect x="96" y="134" width="92" height="16" rx="3" fill="#fb7185"/>
      <rect x="96" y="160" width="68" height="16" rx="3" fill="#fbbf24"/>
      <rect x="96" y="186" width="33" height="16" rx="3" fill="#6ee7b7"/>
      <rect x="96" y="212" width="15" height="16" rx="3" fill="#7dd3fc"/>
      <rect x="96" y="238" width="7" height="16" rx="3" fill="#c8a8ff"/>
      <rect x="96" y="264" width="4" height="16" rx="3" fill="#f0abfc"/>
    </g>
    <g font-size="11" fill="#e8edf5">
      <text x="194" y="147">0.42</text>
      <text x="194" y="173">0.31</text>
      <text x="194" y="199">0.15</text>
      <text x="194" y="225">0.07</text>
      <text x="194" y="251">0.03</text>
      <text x="194" y="277">0.02</text>
    </g>
    <g>
      <rect x="336" y="134" width="92" height="16" rx="3" fill="#fb7185"/>
      <rect x="336" y="160" width="68" height="16" rx="3" fill="#fbbf24"/>
      <rect x="336" y="186" width="33" height="16" rx="3" fill="#6ee7b7"/>
      <rect x="336" y="212" width="15" height="16" rx="3" fill="#7dd3fc"/>
      <rect x="336" y="238" width="60" height="16" rx="3" fill="none" stroke="#fb7185" stroke-width="1" stroke-dasharray="3 3"/>
      <rect x="336" y="264" width="60" height="16" rx="3" fill="none" stroke="#fb7185" stroke-width="1" stroke-dasharray="3 3"/>
    </g>
    <g font-size="11" fill="#e8edf5">
      <text x="434" y="147">0.42</text>
      <text x="434" y="173">0.31</text>
      <text x="434" y="199">0.15</text>
      <text x="434" y="225">0.07</text>
    </g>
    <g font-size="10" fill="#fb7185">
      <text x="342" y="250">removed</text>
      <text x="342" y="276">removed</text>
    </g>
    <g font-size="11" fill="#e8edf5">
      <text x="264" y="146">upper arm</text>
      <text x="264" y="172">shoulder</text>
      <text x="264" y="198">chest</text>
      <text x="264" y="224">neck</text>
      <text x="264" y="250" fill="#9aa7b4">spine</text>
      <text x="264" y="276" fill="#9aa7b4">head</text>
    </g>
    <g>
      <rect x="576" y="134" width="97" height="16" rx="3" fill="#fb7185"/>
      <rect x="576" y="160" width="72" height="16" rx="3" fill="#fbbf24"/>
      <rect x="576" y="186" width="35" height="16" rx="3" fill="#6ee7b7"/>
      <rect x="576" y="212" width="16" height="16" rx="3" fill="#7dd3fc"/>
    </g>
    <g font-size="11" fill="#e8edf5">
      <text x="504" y="146">upper arm</text>
      <text x="504" y="172">shoulder</text>
      <text x="504" y="198">chest</text>
      <text x="504" y="224">neck</text>
    </g>
    <g font-size="11" fill="#e8edf5" text-anchor="end">
      <text x="696" y="147">0.44</text>
      <text x="696" y="173">0.33</text>
      <text x="696" y="199">0.16</text>
      <text x="696" y="225">0.07</text>
    </g>
    <g stroke="#9aa7b4" stroke-width="1.5" fill="none">
      <path d="M232 200 L252 200"/>
      <path d="M472 200 L492 200"/>
    </g>
    <g fill="#9aa7b4">
      <path d="M252 196 L258 200 L252 204 Z"/>
      <path d="M492 196 L498 200 L492 204 Z"/>
    </g>
    <rect x="504" y="240" width="192" height="60" rx="8" fill="#121a31" stroke="#6ee7b7" stroke-width="1.5"/>
    <text x="516" y="262" font-size="12" font-weight="700" fill="#6ee7b7">Fits JOINTS_0 / WEIGHTS_0</text>
    <text x="516" y="280" font-size="11" fill="#9aa7b4">Four joints, four weights,</text>
    <text x="516" y="294" font-size="11" fill="#9aa7b4">sum 1.0, one attribute set.</text>
    <text x="24" y="314" font-size="11" fill="#9aa7b4">Weights scaled by 1/0.95 in the last step. Blender normalizes on the fly, so the middle column looks identical in the viewport.</text>
  </g>
</svg>
<figcaption>Limit Total keeps the four largest weights and drops the rest, which leaves the vertex summing to 0.95. Normalize All scales the survivors back to 1.0. Blender's viewport shows all three columns identically because the Armature modifier normalizes as it evaluates, which is why the problem only appears after export.</figcaption>
</figure>
<h2>Problem 4: Weights don't add up to one</h2>
<p>This one hides. The manual's <a href="https://docs.blender.org/manual/en/latest/sculpt_paint/weight_paint/introduction.html">normalized weight workflow</a> explains why: &quot;The Armature modifier in Blender does this automatically, so it is technically not necessary to ensure that weights are normalized at the painting stage.&quot; A vertex whose weights sum to 0.6 or 1.7 deforms correctly in Blender. The glTF spec says weights' &quot;linear sum SHOULD be as close as reasonably possible to 1.0 for a given vertex&quot; and explains the stakes: &quot;an error of 1/255 in the weight sum would result in an unacceptably large difference in the joint position.&quot; Don't count on an exporter to fix this quietly.</p>
<p><code>Weights &gt; Normalize All</code>. The manual: &quot;For each vertex, this tool makes sure that the sum of the weights across all vertex groups is equal to 1. This tool normalizes all of the vertex groups, except for locked groups&quot;. Untick Lock Active unless you want the active group kept and everything else rebalanced around it. Then, in the tool settings, turn on Auto Normalize, which &quot;Ensures that all deforming vertex groups add up to one while painting.&quot; From then on every stroke redistributes weight among the unlocked groups instead of adding on top.</p>
<p>Don't confuse Normalize All with <code>Weights &gt; Normalize</code>, which &quot;only works on the active vertex group&quot; and scales it so &quot;the highest weight value is 1.0&quot;.</p>
<p>Locking is the companion skill. Lock a group with the padlock in the Vertex Groups panel or the <code>K</code> pie menu, and Auto Normalize will &quot;redistribute only between the unlocked groups&quot;. That's how you fix a shoulder without disturbing a chest you've already got right.</p>
<h2>Problem 5: The two sides don't match</h2>
<p>You painted the left arm for an hour and the right arm is still the raw automatic result. <code>Weights &gt; Mirror Vertex Group</code> copies one side to the other, with two conditions from the manual. First, &quot;Mirroring only works when the object's rest pose is perfectly symmetrical across the X axis.&quot; If your mesh is only nearly symmetric, tick Topology Mirror, which is &quot;for meshes which are not fully symmetric (approximate mirror)&quot;. Second, &quot;the weights are not transferred to the corresponding opposite bone weight group&quot; unless you tell it to, which is what Flip Group Names does: it swaps assignments between groups with symmetrical names &quot;(with components like 'L', 'R', 'right', 'left')&quot;. Tick Mirror Weights, Flip Group Names and All Groups to do the whole character at once.</p>
<p>That depends on your bones being named for it. The <a href="https://docs.blender.org/manual/en/latest/animation/armatures/bones/editing/naming.html">naming conventions page</a> accepts <code>hand_L</code> and <code>hand_R</code>, <code>hand.l</code> and <code>hand.r</code>, <code>handLeft</code> and <code>handRight</code>, and the same with the side prefixed, but not <code>handL</code> with no separator. Mixamo-style <code>LeftHand</code> and <code>RightHand</code> work. An armature with <code>Bone_012</code> names has to be renamed first, since mirroring can't know which bone pairs with which.</p>
<p>To avoid the problem, paint symmetrically from the start. In the Tool settings, Symmetry panel, tick Mirror Vertex Groups, which the manual describes as &quot;mirrored painting on groups that have symmetrical names&quot;. Every stroke on the left arm now lands on the right arm's group too.</p>
<h2>Problem 6: The candy-wrapper wrist</h2>
<p>Twist a wrist 90 degrees and the forearm narrows to a pinched waist halfway along. This isn't a painting mistake. It's the mathematics of linear blend skinning: a vertex weighted half to the forearm and half to the hand gets the average of a rotated and an unrotated transform, and that average collapses toward the axis. The Armature modifier's Preserve Volume option swaps in quaternion blending, and the manual describes the trade exactly: &quot;Without it, rotations at joints tend to scale down the neighboring geometry, up to nearly zero at 180 degrees from rest position. With it, the geometry is no longer scaled down, but there is a 'gap', a discontinuity when reaching 180 degrees from rest position.&quot;</p>
<p>Tick Preserve Volume for renders inside Blender. For a game, know that it's a modifier setting, not mesh data, and glTF and FBX don't carry it. Engines skin linearly unless you switch them to something else, so the pinch comes back on import. The fixes that survive export are the old ones: a forearm twist bone (or two) that splits the rotation into smaller steps, each with its own gradient, or spreading the wrist weights over more edge loops so no vertex sits at the 50/50 point.</p>
<p>The Smooth Corrective modifier is the other in-Blender tool, &quot;typically useful after an Armature modifier, where distortion around joints may be hard to avoid, even with careful weight painting.&quot; Same caveat: it deforms in Blender and doesn't export as weights.</p>
<h2>Problem 7: Clothing shells don't follow the body</h2>
<p>You rigged the body and it moves well. The jacket, a separate mesh, either got its own bad automatic weights (the thigh pushes through the trouser leg because body and cloth blended slightly differently) or never got weights at all and hangs in the air. The right answer is to give the clothing the body's weights, not its own.</p>
<p>Add a Data Transfer modifier to the clothing object. Set Source to the body, tick Vertex Data, choose Vertex Groups, set the mapping to Nearest Face Interpolated, and click Generate Data Layers. The <a href="https://docs.blender.org/manual/en/latest/modeling/modifiers/modify/data_transfer.html">manual</a> warns this button matters: &quot;The modifier doesn't do this automatically, so make sure to click this button (or add the missing layers yourself) as the transfer may not work otherwise.&quot; Nearest Face Interpolated finds &quot;the nearest point on the nearest source face, then use that point to interpolate between the values&quot; of that face's vertices, which is what you want for a shell that sits a few millimetres off the skin. Set Layer Mapping to By Name so <code>LeftArm</code> on the body feeds <code>LeftArm</code> on the jacket. Then add an Armature modifier below it pointing at the same armature. Apply the Data Transfer modifier before export so the weights become real vertex groups.</p>
<p>The same thing exists as an operator: in Weight Paint Mode, select the body, then the clothing (active), <code>Weights &gt; Transfer Weights</code>, and in the Adjust Last Operation panel set Source Layers Selection to By Name. The manual notes the objects &quot;must be at the same location. If they are placed side-by-side, then the weight transfer will not work.&quot;</p>
<p>Where the shell is thick (a heavy coat, armour) rather than skin-tight, transferred weights still beat automatic ones, because they can't disagree with the body underneath.</p>
<h2>Clean weights for game export, in order</h2>
<p>Do these in Weight Paint Mode with no face or vertex masking active, so each tool touches the whole mesh.</p>
<ol>
<li><strong>Delete groups that aren't bones.</strong> In the Vertex Groups panel, remove any group that doesn't match a deforming bone. The Armature modifier docs note &quot;Removing empty vertex groups helps to reduce dependencies&quot;.</li>
<li><strong>Fix bleeding and asymmetry first</strong> (Problems 2 and 5). The tools below don't know a stray weight from a correct one.</li>
<li><strong><code>Weights &gt; Limit Total</code>, Limit 4.</strong> For glTF, three.js, Babylon.js, Unity at default settings and most mobile targets. If your engine and export are both set for eight, use 8.</li>
<li><strong><code>Weights &gt; Normalize All</code>, Lock Active off.</strong> Sums are back to 1.0 after Limit Total removed the tail.</li>
<li><strong><code>Weights &gt; Clean</code>, Limit 0.001, Keep Single on.</strong> Clean &quot;unassigns vertices from Vertex Groups whose weights are below the Limit&quot;. A weight of 0.0004 does nothing visible but still occupies one of the four slots. Keep Single guarantees &quot;each vertex will keep at least one weight&quot;. glTF commonly stores weights as normalized bytes, where the smallest step is 1/255, so anything under 0.004 rounds to nothing anyway.</li>
<li><strong><code>Weights &gt; Normalize All</code> again.</strong> Clean can leave a vertex at 0.999.</li>
<li><strong>Check Zero Weights.</strong> Overlay set to All, look for black.</li>
<li><strong>Export.</strong> In the glTF exporter, Data, Skinning, leave Bone Influences at 4 and Include All Bone Influences off. Data, Armature, tick Use Rest Position Armature so the bind pose is the rest pose, not the current frame.</li>
</ol>
<figure class="guide-fig">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 420" role="img" aria-label="Problem to fix matrix: seven weight painting problems in rows, each with the Blender tool and the menu path that fixes it: bone heat error to Clean Up tools, bleeding to Assign Automatic from Bones with face masking, more than four influences to Limit Total 4, un-normalized to Normalize All plus Auto Normalize, asymmetric to Mirror Vertex Group, candy wrapper to Preserve Volume or twist bones, clothing shells to Data Transfer modifier">
  <rect width="720" height="420" rx="14" fill="#0b1020"/>
  <g font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif">
    <text x="24" y="40" font-size="20" font-weight="800" fill="#e8edf5">Seven problems, seven tools</text>
    <text x="24" y="62" font-size="13" fill="#9aa7b4">Weight Paint Mode unless the path says otherwise. Every tool respects face and vertex masking.</text>
    <g font-size="11" font-weight="700" fill="#9aa7b4">
      <text x="24" y="92">Problem</text>
      <text x="262" y="92">Tool</text>
      <text x="478" y="92">Path</text>
    </g>
    <line x1="24" y1="100" x2="696" y2="100" stroke="#2a3655" stroke-width="1"/>
    <g>
      <rect x="24" y="108" width="672" height="40" rx="6" fill="#121a31"/>
      <rect x="24" y="152" width="672" height="40" rx="6" fill="#0f1628"/>
      <rect x="24" y="196" width="672" height="40" rx="6" fill="#121a31"/>
      <rect x="24" y="240" width="672" height="40" rx="6" fill="#0f1628"/>
      <rect x="24" y="284" width="672" height="40" rx="6" fill="#121a31"/>
      <rect x="24" y="328" width="672" height="40" rx="6" fill="#0f1628"/>
      <rect x="24" y="372" width="672" height="40" rx="6" fill="#121a31"/>
    </g>
    <g>
      <rect x="32" y="120" width="6" height="16" rx="3" fill="#fb7185"/>
      <rect x="32" y="164" width="6" height="16" rx="3" fill="#fbbf24"/>
      <rect x="32" y="208" width="6" height="16" rx="3" fill="#7dd3fc"/>
      <rect x="32" y="252" width="6" height="16" rx="3" fill="#6ee7b7"/>
      <rect x="32" y="296" width="6" height="16" rx="3" fill="#c8a8ff"/>
      <rect x="32" y="340" width="6" height="16" rx="3" fill="#f0abfc"/>
      <rect x="32" y="384" width="6" height="16" rx="3" fill="#fbbf24"/>
    </g>
    <g font-size="12" font-weight="700" fill="#e8edf5">
      <text x="48" y="127">Bone heat error</text>
      <text x="48" y="171">Bleeding across limbs</text>
      <text x="48" y="215">More than 4 influences</text>
      <text x="48" y="259">Weights don't sum to 1</text>
      <text x="48" y="303">Asymmetric weights</text>
      <text x="48" y="347">Candy-wrapper wrist</text>
      <text x="48" y="391">Clothing shells</text>
    </g>
    <g font-size="10" fill="#9aa7b4">
      <text x="48" y="141">failed to find solution for one or more bones</text>
      <text x="48" y="185">arm lifts the ribs, hand grabs the hip</text>
      <text x="48" y="229">engine deforms differently from Blender</text>
      <text x="48" y="273">fine in Blender, wrong after export</text>
      <text x="48" y="317">left is right, right is wrong</text>
      <text x="48" y="361">forearm pinches when the wrist twists</text>
      <text x="48" y="405">jacket stays behind, legs poke through</text>
    </g>
    <g font-size="12" fill="#e8edf5">
      <text x="262" y="127">Merge by Distance, Degenerate</text>
      <text x="262" y="171">Assign Automatic from Bones</text>
      <text x="262" y="215">Limit Total 4, Normalize All</text>
      <text x="262" y="259">Normalize All, Auto Normalize</text>
      <text x="262" y="303">Mirror Vertex Group</text>
      <text x="262" y="347">Preserve Volume, twist bones</text>
      <text x="262" y="391">Data Transfer modifier</text>
    </g>
    <g font-size="10" fill="#9aa7b4">
      <text x="262" y="141">Dissolve, Delete Loose, Non Manifold</text>
      <text x="262" y="185">on a face selection, then Smooth, Clean</text>
      <text x="262" y="229">lowest weights dropped first</text>
      <text x="262" y="273">Lock Active off, then paint normalized</text>
      <text x="262" y="317">Mirror Weights, Flip Group Names</text>
      <text x="262" y="361">modifier for Blender, bones for engines</text>
      <text x="262" y="405">Vertex Groups, Nearest Face Interpolated</text>
    </g>
    <g font-size="10" fill="#7dd3fc">
      <text x="478" y="127">Edit Mode, Mesh > Clean Up</text>
      <text x="478" y="141">Select > Select All by Trait</text>
      <text x="478" y="171">Weights > Assign Automatic from Bones</text>
      <text x="478" y="185">header: face selection masking on</text>
      <text x="478" y="215">Weights > Limit Total</text>
      <text x="478" y="229">Weights > Normalize All</text>
      <text x="478" y="259">Weights > Normalize All</text>
      <text x="478" y="273">Tool settings > Options > Auto Normalize</text>
      <text x="478" y="303">Weights > Mirror Vertex Group</text>
      <text x="478" y="317">Tool > Symmetry > Mirror Vertex Groups</text>
      <text x="478" y="347">Modifiers > Armature > Preserve Volume</text>
      <text x="478" y="361">or add twist bones to the armature</text>
      <text x="478" y="391">Modifiers > Add > Data Transfer</text>
      <text x="478" y="405">or Weights > Transfer Weights</text>
    </g>
  </g>
</svg>
<figcaption>The seven problems, the tool for each, and where to click. Rows one and seven happen outside Weight Paint Mode: mesh cleanup is an Edit Mode job and the Data Transfer modifier lives on the clothing object.</figcaption>
</figure>
<h2>Skip the step</h2>
<p>People pay to not do this. Two products prove it in different ways.</p>
<p><strong>Voxel Heat Diffuse Skinning</strong> by Mesh Online is the add-on Blender users buy when automatic weights refuse. Its <a href="https://superhivemarket.com/products/voxel-heat-diffuse-skinning">Superhive listing</a> shows an Indie licence at $30, more than 12,500 sales, and support for Blender 3.6 through 5.1 as an extension. The listing leads with the exact problem: &quot;Blender throws a message: 'bone heat weighting: failed to find solution for one or more bones'.&quot; Its method is what the name says. Blender's built-in solver diffuses heat across the surface, which is why it needs a clean surface. This add-on voxelizes the character into a solid and lets &quot;heat diffuse in the solid statue&quot;, so a character built from twenty overlapping shells skins as one body. The author is honest about the trade-off: the built-in surface method &quot;can get much better result in detailed areas such as fingers and toes&quot;, so the add-on combines both. It wants at least 8 GB of memory. If your mesh is a mess and you want Blender's own skeleton, this is the one to buy.</p>
<p><strong>The Cinevva Rig add-on</strong> takes the other route: don't fix the weights, don't place the bones either. Select a mesh, press Rig, and it places a Mixamo-named humanoid skeleton and skins it in one pass, with the weights already limited, normalized and cleaned for engines. It runs on your own machine, offline, after a one-time engine download of about 2.4 GB, for a single $29 launch-price purchase with no per-rig charge, on Blender 4.2 and newer for Windows, macOS and Linux. It also carries 260 CC0 animation clips that retarget onto the result inside Blender, and free Web, Unity, Unreal and Godot export presets that set Bone Influences, rest pose, axes and scale for you. It doesn't replace weight painting for a custom skeleton, a tail, or a face rig. It replaces it for the humanoid you need in a game by Friday. The <a href="/blender-addon/">Blender add-on page</a> has the details.</p>
<p>For one character without opening Blender, the web <a href="/tools/rigger">Auto Rigger</a> takes a GLB, FBX or OBJ up to 50 MB and returns a rigged GLB, first character free, already in the four-influence, sum-to-one shape this guide spends its middle third reaching.</p>
<p>Rigify is the free option, bundled with Blender, and its <a href="https://docs.blender.org/manual/en/latest/addons/rigging/rigify/basics.html">documentation</a> sets expectations fairly: &quot;Usually armature deform with automatic weights do a really good job out of the box if you correctly place your bones (and there is enough topology to work with!).&quot; The parenthesis is the whole story of this article.</p>
<h2>Common Questions</h2>
<h3>Why is Blender weight paint not working?</h3>
<p>Usually one of three things. You're painting on the wrong vertex group, so <code>Alt-LMB</code> the bone with Bone Selection on and check the active group in the header. The armature isn't in Pose Mode, or <code>Edit &gt; Lock Object Modes</code> is ticked. Or face selection masking is on and you're painting outside the selection. The Zero Weights overlay shows which vertices have any weight at all.</p>
<h3>How do I fix &quot;Bone Heat Weighting: failed to find solution for one or more bones&quot;?</h3>
<p>Clean the mesh in Edit Mode: <code>Mesh &gt; Clean Up &gt; Merge by Distance</code>, <code>Degenerate Dissolve</code>, <code>Delete Loose</code>, then <code>Select &gt; Select All by Trait &gt; Non Manifold</code> and fix what lights up. Make the character about 2 metres tall with transforms applied, and rig a single connected body before attaching clothes. If it still fails, the Voxel Heat Diffuse Skinning add-on skins non-watertight meshes without the bone heat solver.</p>
<h3>How do I mirror weight paint in Blender?</h3>
<p><code>Weights &gt; Mirror Vertex Group</code> with Mirror Weights, Flip Group Names and All Groups ticked, plus Topology Mirror if the mesh isn't perfectly symmetric. It needs a symmetrical rest pose across X and bones named in pairs like <code>hand.L</code> and <code>hand.R</code>. To paint both sides at once, tick Mirror Vertex Groups in the Symmetry panel of the tool settings.</p>
<h3>How do I normalize weights in Blender?</h3>
<p><code>Weights &gt; Normalize All</code> makes every vertex's weights sum to 1 across all unlocked groups. Turn Lock Active off unless you want the active group preserved. Then enable Auto Normalize in the tool Options so new strokes keep the sum at 1. Plain <code>Weights &gt; Normalize</code> is different: it scales only the active group so its maximum is 1.0.</p>
<h3>How do I smooth weight paint in Blender?</h3>
<p>Enable vertex selection masking, select the vertices around the joint, and run <code>Weights &gt; Smooth</code>. Factor controls how far each weight moves toward the average of its neighbours (0.5 is a good start), Iterations repeats the pass, and Expand/Contract grows or shrinks the affected area. Follow it with <code>Weights &gt; Clean</code> at a small Limit, then <code>Normalize All</code>.</p>
<h3>Why does my mesh deform wrong in Blender when I move a bone?</h3>
<p>Either the wrong vertices belong to that bone's group (bleeding, fixed with <code>Weights &gt; Assign Automatic from Bones</code> on a face selection or by painting them out), or the transition across the joint is too abrupt (<code>Weights &gt; Smooth</code>), or the bone sits in the wrong place inside the mesh so the automatic weights were wrong from the start. Check Zero Weights too: vertices in no group stay put while everything around them moves.</p>
<h3>What is the difference between heat weighting and voxel heat diffuse skinning?</h3>
<p>Blender's bone heat weighting diffuses each bone's influence across the mesh surface, so it needs a clean, connected surface. Voxel heat diffuse skinning fills the character's volume with voxels and diffuses through the solid, so it doesn't care whether the mesh is watertight or built from separate shells. The Voxel Heat Diffuse Skinning add-on (about $30 on Superhive) brings that method to Blender and combines both for fine details like fingers.</p>
<h2>Related</h2>
<ul>
<li><a href="/guides/automatic-rigging-explained">How Automatic Rigging Works (and How to Prepare a Model for It)</a>: the mesh preparation that prevents most weight problems before they start</li>
<li><a href="/guides/how-to-rig-a-character-in-blender">How to Rig a Character in Blender</a>: the full rigging walkthrough this guide plugs into</li>
<li><a href="/guides/free-character-animations-rigging">Free Character Animations and Auto-Rigging</a>: where to get CC0 clips for the rig once it deforms properly</li>
<li><a href="/blender-addon/">Cinevva Rig for Blender</a>: bones and weights in one pass, local and offline, with game export presets</li>
<li><a href="/tools/rigger">Auto Rigger</a>: rig one character in the browser, first one free</li>
<li><a href="/tools/glb-viewer">GLB Viewer</a>: check the exported skin and play the clips outside Blender</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How to Rig a Character in Blender (2026): Rigify, Manual Armatures, and the One-Click Route]]></title>
            <link>https://app.cinevva.com/guides/how-to-rig-a-character-in-blender</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/how-to-rig-a-character-in-blender</guid>
            <pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[How to rig a character in Blender: prepare the mesh, fit a Rigify metarig and generate the rig, build a manual IK armature, or auto-rig in one click.]]></description>
            <content:encoded><![CDATA[<h1>How to Rig a Character in Blender (2026): Rigify, Manual Armatures, and the One-Click Route</h1>
<p><em>Last updated: September 2026.</em></p>
<figure class="guide-hero"><img src="https://cdn.cinevva.com/guides/how-to-rig-a-character-in-blender-hero.jpg?v=1" alt="Blender viewport with a stylised character in A-pose and a glowing Rigify metarig fitted inside it" width="1216" height="640"></figure>
<style>
.guide-hero { margin: 1.25rem 0 1.75rem; }
.guide-hero img { width: 100%; height: auto; border-radius: 12px; display: block; }
.guide-fig { margin: 1.5rem 0; }
.guide-fig > a { display: block; }
.guide-fig img { width: 100%; height: auto; border-radius: 10px; border: 1px solid var(--vp-c-divider); display: block; }
.guide-fig svg { width: 100%; height: auto; display: block; }
.guide-fig figcaption { font-size: 0.9rem; color: var(--vp-c-text-2); margin: 0.5rem 0 0; }
.video-embed { position: relative; width: 100%; max-width: 720px; margin: 1.5rem 0; }
.video-embed iframe { width: 100%; aspect-ratio: 16/9; border-radius: 8px; }
.video-caption { font-size: 0.9rem; color: var(--vp-c-text-2); margin-top: 0.5rem; margin-bottom: 1.5rem; }
</style>
<p>To rig a character in Blender you fit a skeleton (an armature) inside the mesh, bind the mesh to it, and check that elbows, knees, hips and wrists bend without tearing. For most humanoids the fastest free route is Rigify: add the Human metarig from <code>Add &gt; Armature</code>, move its bones onto your character, press Generate Rig, then parent the mesh with <code>Ctrl-P &gt; With Automatic Weights</code>. If you'd rather not place bones at all, an auto rigger inside Blender does the whole job in one click, and a hand-built armature with IK constraints is the route when you want a small custom skeleton with exactly the bones your game needs.</p>
<h2>Quick picks</h2>
<ul>
<li><strong>Most people, free:</strong> Rigify, bundled with Blender. Fit the metarig, Generate Rig, automatic weights. Budget an evening the first time.</li>
<li><strong>Smallest game skeleton or a non-human shape:</strong> a manual armature with IK. Around 17 bones for a biped, an hour or three, and you name every bone yourself.</li>
<li><strong>Fastest:</strong> the <a href="/blender-addon/">Cinevva Rig add-on</a>. Select the mesh, press Rig, get a skinned Mixamo-named armature in about fifteen seconds. Runs on your own machine, offline, for one $29 purchase (launch price), Blender 4.2 and newer on Windows, macOS and Linux.</li>
<li><strong>The established paid option:</strong> Auto-Rig Pro, $50 for the Full edition or $25 for Lite on Superhive, with Smart bone placement for humanoids and its own FBX and glTF export module.</li>
<li><strong>Nothing to install:</strong> upload a GLB, FBX or OBJ to the web <a href="/tools/rigger">Auto Rigger</a>. Your first rigged character is free.</li>
<li><strong>Before any of them:</strong> one mesh, A-pose or T-pose, origin at the feet, <code>Ctrl-A &gt; All Transforms</code>. Skipping this step causes most rigging failures.</li>
</ul>
<h2>Quick reference</h2>
<table>
<thead>
<tr>
<th>Route</th>
<th>Time for a first rig</th>
<th>What you place by hand</th>
<th>Cost</th>
<th>What you end up with</th>
</tr>
</thead>
<tbody>
<tr>
<td>Rigify</td>
<td>An evening, under an hour once practised</td>
<td>Every metarig bone, then weight fixes</td>
<td>Free, bundled with Blender</td>
<td>Full control rig with IK/FK switching, <code>DEF-</code> bones for export</td>
</tr>
<tr>
<td>Manual armature + IK</td>
<td>One to three hours</td>
<td>Every bone, every constraint</td>
<td>Free</td>
<td>Exactly the bones you chose, named your way</td>
</tr>
<tr>
<td><a href="/blender-addon/">Cinevva Rig add-on</a></td>
<td>About fifteen seconds after a one-time 2.4 GB engine download</td>
<td>Nothing, you pick the front view and body plan</td>
<td>$29 once, no subscription</td>
<td>Skinned Mixamo-named armature, 260 CC0 clips, export presets</td>
</tr>
<tr>
<td>Auto-Rig Pro</td>
<td>Minutes for a humanoid with Smart</td>
<td>Markers to confirm, or reference bones without Smart</td>
<td>$50 Full, $25 Lite</td>
<td>Control rig plus FBX/glTF export for Unity and Unreal</td>
</tr>
<tr>
<td>Web <a href="/tools/rigger">Auto Rigger</a></td>
<td>Under a minute</td>
<td>Nothing</td>
<td>First character free</td>
<td>Rigged GLB with clips baked in</td>
</tr>
</tbody>
</table>
<h2>Prepare the mesh first</h2>
<p>Every route below wants the same input, and the ten minutes you spend here save an hour of weight painting later. Our <a href="/guides/automatic-rigging-explained">automatic rigging explainer</a> goes deeper on why.</p>
<ol>
<li><strong>Join into one shell.</strong> Select all the body parts and press <code>Ctrl-J</code>. Separate shells for shirt, trousers and skin can stay as one object. What hurts is a floating hat, sword or backpack: parent those to a bone afterwards instead of skinning them.</li>
<li><strong>Delete any existing armature</strong> and remove the old Armature modifier and vertex groups from the mesh (Object Data Properties, Vertex Groups, the small down-arrow menu, Delete All Groups). Old groups with bone names will otherwise be overwritten or, worse, half-kept.</li>
<li><strong>Pose the arms out.</strong> A-pose (arms 30 to 45 degrees down from horizontal) or T-pose. Arms hanging at the sides put the hands next to the thighs, and every weighting method will bleed leg weights into the fingers.</li>
<li><strong>Set the scale.</strong> Rigify's own documentation says it &quot;assumes that 1 unit corresponds to 1 meter. So a human is about 2 units tall&quot;. Check Dimensions in the N panel. A character that reads 180 metres came in from FBX at centimetre scale, so scale it down in Object Mode.</li>
<li><strong>Put the origin at the feet</strong> and the feet on the floor at the world origin: <code>Object &gt; Set Origin &gt; Origin to 3D Cursor</code> with the cursor at world zero, then move the mesh up until the soles sit on Z=0.</li>
<li><strong>Face the character toward -Y.</strong> Blender's front view (<code>Numpad 1</code>) looks along +Y, so a correctly oriented character looks at you in front view.</li>
<li><strong>Apply transforms:</strong> <code>Ctrl-A &gt; All Transforms</code>. The <a href="https://docs.blender.org/manual/en/latest/scene_layout/object/editing/apply.html">Apply page of the manual</a> says it plainly: &quot;It is recommended to apply transforms before rigging and animation.&quot; Unapplied scale and rotation are the reason rigs come out 100 times too big or lying on their back in a game engine.</li>
</ol>
<h2>Route A: Rigify</h2>
<p>Rigify ships inside Blender. In Blender's own words it &quot;helps automate the creation of character rigs&quot; from &quot;smaller rig parts (e.g. arms, legs, spines, fingers...)&quot;, and once generated &quot;that rig should no longer need Rigify&quot;, so you can hand the file to anyone (<a href="https://docs.blender.org/manual/en/latest/addons/rigify/introduction.html">Rigify introduction</a>). One line from the same page sets expectations: &quot;Rigify only automates the creation of the rig controls and bones. It does not attach the rig to a mesh, so you still have to do skinning etc. yourself.&quot;</p>
<h3>Step 1: enable it</h3>
<p><code>Edit &gt; Preferences &gt; Add-ons</code>, search &quot;Rigify&quot;, tick the checkbox. It ships inside Blender's core add-ons, so there's nothing to download.</p>
<h3>Step 2: add a metarig</h3>
<p>In Object Mode, <code>Shift-A &gt; Armature</code>. With Rigify enabled the menu grows to include the metarigs the <a href="https://docs.blender.org/manual/en/latest/addons/rigify/basics.html">Basics page</a> lists: &quot;Basic Human (doesn't include face and fingers), Basic Quadruped, Human, Cat, Wolf, Horse, Shark&quot;. For a game character pick <strong>Basic Human</strong> unless you need finger bones, in which case pick <strong>Human</strong> and delete the face later. Rigify stores everything it needs to build the final rig inside this simpler armature, which is why the metarig is what you edit and keep.</p>
<h3>Step 3: align the bones to the mesh</h3>
<p>This is the step that takes the time, and the one that decides how the rig deforms. Before you start, select the metarig, go to Object Properties, Viewport Display, and set Display As to Wire with In Front ticked so bones stay visible inside the mesh. In the armature's Edit Mode, turn on X-Axis Mirror (the Options dropdown in the viewport header, also under the N panel's Tool tab) so moving a <code>.L</code> joint moves its <code>.R</code> twin.</p>
<p>Then work through the joints. The manual's <a href="https://docs.blender.org/manual/en/latest/addons/rigify/bone_positioning.html">Bone Positioning Guide</a> and the alignment tips on the Basics page are the source for every hint here.</p>
<p><strong>Hips and spine.</strong> The hips bone sits in the centre of the pelvis. Keep the spine &quot;as centered as possible inside the mesh bounding volume, just apply a slight offset toward the back&quot;. Keep it &quot;as straight as possible in the front view&quot;. The chain runs spine, chest, neck, head: the Basics page notes &quot;the last bone of the spine is the head. By default the next two bones (top to bottom) are considered the neck bones&quot;.</p>
<p><strong>Shoulders.</strong> The shoulder bones are &quot;general deformers&quot;, so don't push them forward onto the collar bone, which &quot;could cause undesired deformations&quot;.</p>
<p><strong>Arms.</strong> First make &quot;a straight line that goes from the shoulder to the hand in both front and top view&quot;, then add a slight bend at the elbow. The bend matters more than it looks: &quot;Give the knee and the elbow a slight bend angle (Rigify needs to know where your knee/elbow is pointing).&quot; Elbows point backward. Since Rigify 0.5 that bend also sets the bone roll for you, because &quot;the generate function will take care of that for you by evaluating it from bend axis&quot;.</p>
<p><strong>Legs.</strong> Same idea: a straight line from hips to ankle in front view, then a slight forward bend at the knee in side view. Place the foot and toe bones on the actual foot, and set the heel bone in front view so it fills &quot;the foot size from side to side&quot;, then in side view &quot;at the point where the heel just touches the ground floor&quot;. The leg rig type requires &quot;a chain of four connected bones (thigh, shin, foot, toe) with one unconnected child of the foot to be used as the heel pivot&quot; (<a href="https://docs.blender.org/manual/en/latest/addons/rigify/rig_types/limbs.html">Limbs rig types</a>), so don't delete that odd little heel bone.</p>
<p><strong>Fingers.</strong> Place knuckle by knuckle. The manual's trick: in the mesh's Edit Mode select the edge loop around a knuckle, <code>Shift-S &gt; Cursor to Selected</code>, then in the armature's Edit Mode select the bone joint and <code>Shift-S &gt; Selection to Cursor</code>. Once all fingers are placed, select every finger bone and run <code>Armature &gt; Bone Roll &gt; Recalculate Roll &gt; Global -Z Axis</code>. The thumb &quot;may require more tweaking&quot;, with <code>Global +Y Axis</code> as the suggested start. Keep the palm bones' heads &quot;at a little distance between each other&quot;, because Rigify uses that gap to build the palm controls.</p>
<p><strong>Face.</strong> Unless you're animating expressions with bones, delete it. Show only the Face bone collection, select all, delete in Edit Mode. Game characters use shape keys or a separate facial rig anyway, and the manual itself says face bones &quot;are almost useless if you plan to make facial animation through shape keys&quot;.</p>
<figure class="guide-fig">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 470" role="img" aria-label="A Rigify metarig drawn over an A-pose character with seven numbered alignment points: hips centred in the pelvis and slightly back, spine straight in front view with the last bone as head, shoulder bones kept back off the collar bone, elbows in a straight shoulder-to-hand line with a slight backward bend, knees with a slight forward bend, a heel bone spanning the foot on the floor, and finger knuckles snapped to edge loops with roll recalculated to Global -Z">
  <rect width="720" height="470" rx="14" fill="#0b1020"/>
  <g font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif">
    <text x="24" y="36" font-size="20" font-weight="800" fill="#e8edf5">Where the metarig bones go</text>
    <text x="24" y="58" font-size="13" fill="#9aa7b4">Front view. Rigify Human metarig over an A-pose character, 1 unit = 1 m.</text>
    <g fill="#121a31" stroke="#2a3655" stroke-width="1.5">
      <circle cx="230" cy="100" r="26"/>
      <rect x="190" y="130" width="80" height="130" rx="18"/>
      <path d="M198 142 L128 220 L92 296" stroke="#2a3655" stroke-width="30" stroke-linecap="round" fill="none"/>
      <path d="M262 142 L332 220 L368 296" stroke="#2a3655" stroke-width="30" stroke-linecap="round" fill="none"/>
      <path d="M198 142 L128 220 L92 296" stroke="#121a31" stroke-width="27" stroke-linecap="round" fill="none"/>
      <path d="M262 142 L332 220 L368 296" stroke="#121a31" stroke-width="27" stroke-linecap="round" fill="none"/>
      <path d="M212 262 L208 348 L206 428" stroke="#2a3655" stroke-width="34" stroke-linecap="round" fill="none"/>
      <path d="M248 262 L252 348 L254 428" stroke="#2a3655" stroke-width="34" stroke-linecap="round" fill="none"/>
      <path d="M212 262 L208 348 L206 428" stroke="#121a31" stroke-width="31" stroke-linecap="round" fill="none"/>
      <path d="M248 262 L252 348 L254 428" stroke="#121a31" stroke-width="31" stroke-linecap="round" fill="none"/>
    </g>
    <line x1="150" y1="446" x2="320" y2="446" stroke="#2a3655" stroke-width="2" stroke-dasharray="4 4"/>
    <g stroke="#c8a8ff" stroke-width="3" stroke-linecap="round" fill="none">
      <path d="M230 258 L230 228 L230 200 L230 166 L230 140 L230 128 L230 84"/>
      <path d="M230 160 L198 142 L128 216 L92 292"/>
      <path d="M230 160 L262 142 L332 216 L368 292"/>
      <path d="M214 258 L208 344 L206 424 L190 436"/>
      <path d="M246 258 L252 344 L254 424 L270 436"/>
      <path d="M188 436 L226 436" stroke="#fbbf24"/>
      <path d="M232 436 L270 436" stroke="#fbbf24"/>
    </g>
    <g fill="#7dd3fc" stroke="#0b1020" stroke-width="2">
      <circle cx="230" cy="258" r="6"/>
      <circle cx="230" cy="228" r="4"/>
      <circle cx="230" cy="200" r="4"/>
      <circle cx="230" cy="166" r="4"/>
      <circle cx="230" cy="140" r="4"/>
      <circle cx="230" cy="128" r="4"/>
      <circle cx="230" cy="84" r="4"/>
      <circle cx="198" cy="142" r="4"/>
      <circle cx="262" cy="142" r="4"/>
      <circle cx="128" cy="216" r="5"/>
      <circle cx="332" cy="216" r="5"/>
      <circle cx="92" cy="292" r="4"/>
      <circle cx="368" cy="292" r="4"/>
      <circle cx="208" cy="344" r="5"/>
      <circle cx="252" cy="344" r="5"/>
      <circle cx="206" cy="424" r="4"/>
      <circle cx="254" cy="424" r="4"/>
    </g>
    <g stroke="#3a4a6e" stroke-width="1" stroke-dasharray="3 3">
      <line x1="236" y1="258" x2="420" y2="258"/>
      <line x1="236" y1="200" x2="420" y2="200"/>
      <line x1="266" y1="140" x2="420" y2="140"/>
      <line x1="338" y1="216" x2="420" y2="216"/>
      <line x1="258" y1="344" x2="420" y2="344"/>
      <line x1="272" y1="436" x2="420" y2="436"/>
      <line x1="372" y1="292" x2="420" y2="292"/>
    </g>
    <g font-size="12" fill="#e8edf5">
      <g><circle cx="432" cy="140" r="9" fill="#6ee7b7"/><text x="432" y="144" font-size="11" font-weight="800" fill="#0b1020" text-anchor="middle">1</text>
        <text x="448" y="137" font-weight="700">Shoulders</text><text x="448" y="152" fill="#9aa7b4">keep them back, not on the collar bone</text></g>
      <g><circle cx="432" cy="200" r="9" fill="#7dd3fc"/><text x="432" y="204" font-size="11" font-weight="800" fill="#0b1020" text-anchor="middle">2</text>
        <text x="448" y="197" font-weight="700">Spine</text><text x="448" y="212" fill="#9aa7b4">straight in front view, centred, a touch back</text></g>
      <g><circle cx="432" cy="216" r="0"/><circle cx="432" cy="236" r="9" fill="#c8a8ff"/><text x="432" y="240" font-size="11" font-weight="800" fill="#0b1020" text-anchor="middle">3</text>
        <text x="448" y="233" font-weight="700">Elbows</text><text x="448" y="248" fill="#9aa7b4">straight shoulder to hand, then a slight bend, pointing back</text></g>
      <g><circle cx="432" cy="258" r="0"/><circle cx="432" cy="272" r="9" fill="#f0abfc"/><text x="432" y="276" font-size="11" font-weight="800" fill="#0b1020" text-anchor="middle">4</text>
        <text x="448" y="269" font-weight="700">Hips</text><text x="448" y="284" fill="#9aa7b4">centre of the pelvis, the root of the whole spine chain</text></g>
      <g><circle cx="432" cy="304" r="9" fill="#fb7185"/><text x="432" y="308" font-size="11" font-weight="800" fill="#0b1020" text-anchor="middle">5</text>
        <text x="448" y="301" font-weight="700">Fingers</text><text x="448" y="316" fill="#9aa7b4">knuckles snapped to edge loops, roll Global -Z</text></g>
      <g><circle cx="432" cy="344" r="9" fill="#6ee7b7"/><text x="432" y="348" font-size="11" font-weight="800" fill="#0b1020" text-anchor="middle">6</text>
        <text x="448" y="341" font-weight="700">Knees</text><text x="448" y="356" fill="#9aa7b4">straight hip to ankle, then a slight bend, pointing forward</text></g>
      <g><circle cx="432" cy="436" r="9" fill="#fbbf24"/><text x="432" y="440" font-size="11" font-weight="800" fill="#0b1020" text-anchor="middle">7</text>
        <text x="448" y="433" font-weight="700">Heel bone</text><text x="448" y="448" fill="#9aa7b4">spans the foot side to side, touching the floor</text></g>
    </g>
    <text x="448" y="392" font-size="12" fill="#9aa7b4">Head is the last spine bone, the two below it are the neck.</text>
    <text x="448" y="408" font-size="12" fill="#9aa7b4">Edit with X-Axis Mirror on, armature shown as Wire, In Front.</text>
  </g>
</svg>
<figcaption>The seven placements that decide how a Rigify rig deforms. The slight bends at elbow and knee aren't cosmetic: Rigify reads the bend direction to orient the IK chain and set bone roll.</figcaption>
</figure>
<h3>Step 4: Generate Rig</h3>
<p>Back in Object Mode, with the metarig selected, open the Armature tab in Properties, scroll to the bottom and click <strong>Generate Rig</strong>. The manual says generation takes &quot;from few seconds to one minute&quot;. A new armature called <code>rig</code> appears with coloured control shapes. Don't delete the metarig. Rigify &quot;is designed assuming a workflow where the meta-rig is kept available&quot;, so if a knee bends wrong you move the metarig bone and press Generate Rig again, and Rigify overwrites the existing rig &quot;retaining all your modifiers and constraints&quot;. For that overwrite to work &quot;you need to have both the rig and the meta-rig visible before generating again&quot;.</p>
<h3>Step 5: bind the mesh</h3>
<p>Select the mesh, then <code>Shift</code>-click the generated <code>rig</code> so the armature is active, then <code>Ctrl-P &gt; With Automatic Weights</code>. Blender's <a href="https://docs.blender.org/manual/en/latest/animation/armatures/skinning/parenting.html">Armature Deform Parent page</a> describes what happens: it &quot;calculates how much influence a particular bone would have on vertices based on the distance from those vertices to a particular bone (&quot;bone heat&quot; algorithm)&quot;. Only bones with Deform ticked get vertex groups, and on a Rigify rig those are the ones in the <code>DEF</code> bone collection.</p>
<p>Rigify's own verdict on this step is encouraging: &quot;Usually armature deform with automatic weights does a really good job out of the box if you correctly place your bones (and there is enough topology to work with!)&quot;. The parenthesis is the catch. A knee with one edge loop can't crease no matter how good the weights are. Give joints three loops.</p>
<h3>Step 6: understand what you got</h3>
<p>Rigify generates three kinds of bones, named by prefix in its <a href="https://projects.blender.org/blender/blender/src/branch/main/scripts/addons_core/rigify/utils/naming.py">source</a>: <code>ORG-</code> for original bones copied from the metarig, <code>MCH-</code> for mechanism bones, and <code>DEF-</code> for deformation bones. On top sit the control bones with no prefix: the gear-shaped limb masters, red IK and green FK controls, blue tweak spheres. Select any control and the Item tab of the N panel shows the Rig Main Properties panel with an IK-FK slider that blends &quot;between full IK at 0 and full FK at 1&quot;, IK Stretch, a Toggle Pole switch and parent switching (<a href="https://docs.blender.org/manual/en/latest/addons/rigify/rig_features.html">Generated Rig Features</a>).</p>
<p>A game engine wants none of that. It needs the <code>DEF-</code> bones and their weights, nothing else, because constraints and drivers don't survive export and the control bones would add hundreds of useless transforms. Blender's glTF exporter has a checkbox for exactly this under Data, Armature: &quot;Export Deformation Bones only: Export Deformation bones only, not other bones. Animation for deformation bones are baked&quot; (<a href="https://docs.blender.org/manual/en/latest/addons/scene_gltf2.html">glTF 2.0 exporter</a>). The FBX exporter's Armature panel has Only Deform Bones and Add Leaf Bones (turn the second off) (<a href="https://docs.blender.org/manual/en/latest/files/import_export/fbx_legacy.html">FBX exporter</a>).</p>
<p>Two things to know before you plan around a Rigify game export. First, Rigify splits each limb into &quot;multiple deform bone segments with tweaks&quot;, so you'll have more deform bones per limb than a hand-built skeleton, and they're named <code>DEF-upper_arm.L</code>, <code>DEF-upper_arm.L.001</code> and so on, not <code>mixamorig:LeftArm</code>. Unity's Humanoid avatar needs &quot;at least 15 bones organized in a way that loosely conforms to an actual human skeleton&quot; (<a href="https://docs.unity3d.com/Manual/ConfiguringtheAvatar.html">Unity manual</a>), and you'll map them by hand in the Avatar configuration. Second, the exported deform hierarchy isn't the simple hips-to-fingers tree that retargeting tools expect, so plan to animate in Blender and bake, rather than dropping Mixamo clips on the exported skeleton.</p>
<div class="video-embed"><iframe src="https://www.youtube.com/embed/RdTuAY23vzk" title="Easy Rigging Using RIGIFY in Blender" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></div>
<div class="video-caption">Grant Abbitt walks through the Rigify workflow end to end: metarig, alignment, Generate Rig, automatic weights, then testing and fixing. Fifteen minutes, worth watching once before your first attempt.</div>
<h2>Route B: a manual armature with IK</h2>
<p>Build your own armature when Rigify gives you too much: a low-poly web character that should ship with 17 bones and a 300 KB file, a creature with a body plan no metarig covers, a mech with rigid parts, or a skeleton whose bone names must match an existing animation set exactly. You trade Rigify's controls for total knowledge of every bone.</p>
<h3>The minimal biped</h3>
<table>
<thead>
<tr>
<th>Chain</th>
<th>Bones</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td>Spine</td>
<td><code>hips</code>, <code>spine</code>, <code>chest</code>, <code>neck</code>, <code>head</code></td>
<td><code>hips</code> is the root and the only bone without a parent</td>
</tr>
<tr>
<td>Arm (×2)</td>
<td><code>shoulder.L</code>, <code>upper_arm.L</code>, <code>forearm.L</code>, <code>hand.L</code></td>
<td><code>shoulder</code> can be skipped on very low-poly characters</td>
</tr>
<tr>
<td>Leg (×2)</td>
<td><code>thigh.L</code>, <code>shin.L</code>, <code>foot.L</code></td>
<td>add <code>toe.L</code> if the feet ever bend</td>
</tr>
<tr>
<td>Non-deforming</td>
<td><code>foot_ik.L</code>, <code>knee_pole.L</code>, <code>hand_ik.L</code>, <code>elbow_pole.L</code></td>
<td>Deform unticked, these are targets, not skin bones</td>
</tr>
</tbody>
</table>
<p>That's 17 deforming bones with shoulders, 15 without, which is exactly Unity's Humanoid minimum. Use the <code>.L</code> suffix on everything on the character's left. Blender's <a href="https://docs.blender.org/manual/en/latest/animation/armatures/bones/editing/naming.html">naming conventions</a> accept <code>.L</code>/<code>.R</code>, <code>_L</code>/<code>_R</code> and a few more, and that suffix is what makes mirroring tools work.</p>
<h3>Building it</h3>
<ol>
<li><code>Shift-A &gt; Armature</code> in Object Mode with the 3D cursor at the world origin. Rename the object and the armature data to something like <code>Armature_Hero</code>. Set Viewport Display to In Front.</li>
<li><code>Tab</code> into Edit Mode. Move the single bone's head to the pelvis centre and its tail up to the belly: this is <code>hips</code>. Select the tail and press <code>E</code> to extrude <code>spine</code>, <code>chest</code>, <code>neck</code>, <code>head</code> up the torso. Each bone's tail is the next joint.</li>
<li>Select the <code>chest</code> tail, extrude <code>shoulder.L</code> out to the shoulder joint, then <code>upper_arm.L</code> to the elbow, <code>forearm.L</code> to the wrist, <code>hand.L</code> to the knuckles. For the leg, <code>Shift-A</code> a new bone at the hip joint, name it <code>thigh.L</code>, set its Parent to <code>hips</code> in Bone Properties with Connected off, then extrude <code>shin.L</code> to the ankle and <code>foot.L</code> to the toes. Give the elbow a slight backward bend and the knee a slight forward bend, for the same reason Rigify wants them.</li>
<li>Add the non-deforming bones. <code>Shift-A</code> adds a bone at the cursor. Place <code>foot_ik.L</code> at the ankle and <code>hand_ik.L</code> at the wrist as unparented bones. Place <code>knee_pole.L</code> about half a metre in front of the knee and <code>elbow_pole.L</code> about half a metre behind the elbow. For each, open Bone Properties and untick the <strong>Deform</strong> checkbox. The manual notes this &quot;also excludes the active bone in the automatic weight calculation&quot; (<a href="https://docs.blender.org/manual/en/latest/animation/armatures/bones/properties/deform.html">Deform panel</a>), so these bones won't steal skin.</li>
<li>Fix the rolls. Select all bones, <code>Shift-N</code> (<code>Armature &gt; Bone Roll &gt; Recalculate Roll</code>, see the <a href="https://docs.blender.org/manual/en/latest/animation/armatures/bones/editing/bone_roll.html">Bone Roll page</a>) and pick one Global axis for the whole chain, then turn on the Axes overlay in Armature Properties, Viewport Display, and check that local X points the same way along every bone of a limb. A limb whose bones disagree about roll will twist when the IK solves.</li>
<li>Mirror. Select every <code>.L</code> bone and run <code>Armature &gt; Symmetrize</code>. Blender &quot;mirrors selected bones along the X axis using Blender's bone naming convention&quot;, creating the <code>.R</code> side with its constraints and collection assignments mirrored (<a href="https://docs.blender.org/manual/en/latest/animation/armatures/bones/editing/symmetrize.html">Symmetrize</a>). Do this after step 7 if you'd rather mirror the IK constraints too.</li>
</ol>
<h3>Adding IK</h3>
<p>Blender's <a href="https://docs.blender.org/manual/en/latest/animation/armatures/posing/bone_constraints/inverse_kinematics/introduction.html">IK introduction</a> describes the payoff: IK lets you &quot;position the last bone in a bone chain and the other bones are positioned automatically. This is like how moving someone's finger would cause their arm to follow it.&quot;</p>
<ol>
<li><code>Ctrl-Tab</code> into Pose Mode. Click <code>foot_ik.L</code>, then <code>Shift</code>-click <code>shin.L</code> so the shin is active.</li>
<li>Press <code>Shift-I</code> and choose <strong>Target Selected Bone</strong> (<a href="https://docs.blender.org/manual/en/latest/animation/armatures/posing/editing/inverse_kinematics.html">Add IK to Bone</a>). The shin turns yellow: it now carries an Inverse Kinematics constraint targeting the foot control.</li>
<li>In Bone Constraint Properties set <strong>Chain Length</strong> to 2. The <a href="https://docs.blender.org/manual/en/latest/animation/constraints/tracking/ik_solver.html">constraint page</a> explains the count: &quot;a value of 2 will rotate the bone and its parent&quot;, so the chain is shin plus thigh and stops before the hips. Leaving it at 0 &quot;will include all of the bone's ancestors (up to the root)&quot;, which drags the whole spine when you move a foot.</li>
<li>Set <strong>Pole Target</strong> to the armature and <strong>Bone</strong> to <code>knee_pole.L</code>. The pole &quot;determines the roll of the IK chain, or put differently, the position of the elbow&quot;, or here the knee. The leg will likely snap sideways: adjust <strong>Pole Angle</strong> until the knee points at the pole, which often lands at -90 or 90 degrees.</li>
<li>Repeat for the arm: <code>hand_ik.L</code> as target on <code>forearm.L</code>, Chain Length 2, <code>elbow_pole.L</code> as pole.</li>
<li>Give <code>foot.L</code> a Copy Rotation constraint targeting <code>foot_ik.L</code> so the foot tilts with the control, or simply key the foot directly.</li>
<li>Lock what shouldn't bend. In Bone Properties, Inverse Kinematics, tick <strong>Lock</strong> on the two shin axes a knee doesn't rotate around, leaving only the hinge axis free, with the manual's caveat that &quot;if a Pole Target is used, IK locking will not work on the root bone&quot; of the chain.</li>
</ol>
<p>Then bind exactly as in Rigify: select the mesh, <code>Shift</code>-click the armature, <code>Ctrl-P &gt; With Automatic Weights</code>. Because the IK and pole bones have Deform off, they get no vertex groups.</p>
<h2>Route C: auto-rigging inside Blender</h2>
<p>Auto-rigging means software finds the joints and computes the weights, and you check the result instead of building it. Three options fit a Blender pipeline.</p>
<p><strong>The <a href="/blender-addon/">Cinevva Rig add-on</a>.</strong> Install it as a standard Blender extension (Blender 4.2 or newer, Windows, macOS, Linux). Select the mesh, pick the front of the character from four rendered views, choose a body plan, press <strong>Rig</strong>. About fifteen seconds later the character has a skinned, Mixamo-named humanoid armature and is already playing Idle. Rigging runs on your own machine, offline, after a one-time engine download of about 2.4 GB, with no per-rig charge and no count, unlocked by one $29 key (launch price) that activates up to three machines. The panel reports what it built in plain words, including how many fingers it found. Two more parts come free with the download, no key or account needed: 260 CC0 animation clips (walks, runs, idles, combat, climbing, crawling, emotes) that retarget onto the rigged character inside Blender from a browser docked in the viewport, and an Export card that shows where the file's bytes go, then applies Web, Unity, Unreal or Godot conventions in one click. Against a plain Blender GLB export those presets produced files 68%, 89%, 92% and 98% smaller on four real models. Online rigging exists too, billed in Cinevva credits, for machines that shouldn't hold the engine download.</p>
<p><strong>Auto-Rig Pro.</strong> The category leader on Superhive, listed there with more than 65,000 sales, at $50 for the Full edition or $25 for Lite, supporting Blender 2.93 through 5.1 (<a href="https://superhivemarket.com/products/auto-rig-pro">Superhive listing</a>). Its Smart tool &quot;works for biped characters only, the model must be in T-Pose or A-Pose. It detects the feet, legs, spine, arms, fingers position and optionally the facial bones&quot; (<a href="https://www.lucky3d.fr/auto-rig-pro/doc/faq.html">Auto-Rig Pro FAQ</a>). Non-humanoids are rigged by placing reference bones yourself, with Human, Dog, Horse and Bird presets. The Full edition adds the Remap retargeter and an FBX/glTF export module with dedicated settings for Unity, Unreal and Godot. If you rig characters weekly and need a production control rig with bendy bones and a picker, it earns its price. What it doesn't ship is an animation library.</p>
<p><strong>The web <a href="/tools/rigger">Auto Rigger</a>.</strong> No install. Upload a GLB, FBX or OBJ up to 50 MB, get a rigged GLB back with clips baked in. Your first rigged character is free to download, which makes it the right way to sanity-check a mesh before you commit an evening to Rigify.</p>
<p>For the Mixamo route, know its status in 2026. Adobe's <a href="https://helpx.adobe.com/creative-cloud/faq/mixamo-faq.html">Mixamo FAQ</a> says &quot;the auto-rigger and animation libraries are for bipedal humanoids only&quot;, and the official <a href="https://www.adobe.com/products/substance3d/plugins/mixamo-in-blender.html">Mixamo Blender add-on</a>, which builds an IK control rig on a Mixamo skeleton, is offered as a Blender 3.6 version. The <a href="https://extensions.blender.org/add-ons/mixamo-rig/">community &quot;Mixamo Rig&quot; extension</a> on <a href="http://extensions.blender.org">extensions.blender.org</a> describes itself as a &quot;3rd party upgrade to official addon because it is no longer supported&quot;, points to Adobe's version for Blender 3.6, and lists Blender 4.2 LTS compatibility with a 1.2.2 release in April 2026.</p>
<figure class="guide-fig">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 420" role="img" aria-label="Three routes to a rigged character compared on time, what you place by hand, cost, what you get and game export. Rigify: an evening the first time, every metarig bone placed by hand, free and bundled, a full control rig with DEF bones, export deform bones only. Manual armature with IK: one to three hours, every bone and constraint by hand, free, exactly the bones you chose, a clean hierarchy with your naming. Cinevva Rig add-on: about fifteen seconds per rig after a one-time 2.4 GB download, nothing placed by hand, 29 dollars once and offline, a Mixamo-named skinned armature plus 260 CC0 clips, Web Unity Unreal and Godot presets. Footer: Auto-Rig Pro at 50 dollars Full or 25 dollars Lite on Superhive with Smart placement for humanoids and an FBX and glTF export module.">
  <rect width="720" height="420" rx="14" fill="#0b1020"/>
  <g font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif">
    <text x="24" y="36" font-size="20" font-weight="800" fill="#e8edf5">Three routes to a rigged character</text>
    <text x="24" y="58" font-size="13" fill="#9aa7b4">What each one costs you in time, hand work and money, and what comes out.</text>
    <g fill="#121a31" stroke="#2a3655" stroke-width="1">
      <rect x="24" y="76" width="216" height="296" rx="12"/>
      <rect x="252" y="76" width="216" height="296" rx="12"/>
      <rect x="480" y="76" width="216" height="296" rx="12"/>
    </g>
    <rect x="24" y="76" width="216" height="6" rx="3" fill="#7dd3fc"/>
    <rect x="252" y="76" width="216" height="6" rx="3" fill="#c8a8ff"/>
    <rect x="480" y="76" width="216" height="6" rx="3" fill="#6ee7b7"/>
    <g font-size="15" font-weight="800" fill="#e8edf5">
      <text x="40" y="108">Rigify</text>
      <text x="268" y="108">Manual armature + IK</text>
      <text x="496" y="108">Cinevva Rig add-on</text>
    </g>
    <g font-size="11" fill="#9aa7b4" font-weight="700">
      <text x="40" y="136">TIME TO FIRST RIG</text><text x="268" y="136">TIME TO FIRST RIG</text><text x="496" y="136">TIME TO FIRST RIG</text>
      <text x="40" y="190">YOU PLACE BY HAND</text><text x="268" y="190">YOU PLACE BY HAND</text><text x="496" y="190">YOU PLACE BY HAND</text>
      <text x="40" y="244">COST</text><text x="268" y="244">COST</text><text x="496" y="244">COST</text>
      <text x="40" y="298">YOU GET</text><text x="268" y="298">YOU GET</text><text x="496" y="298">YOU GET</text>
    </g>
    <g font-size="12.5" fill="#e8edf5">
      <text x="40" y="154">An evening the first time,</text><text x="40" y="170">under an hour once practised</text>
      <text x="268" y="154">One to three hours</text><text x="268" y="170">for a 17-bone biped</text>
      <text x="496" y="154">About 15 s per rig after a</text><text x="496" y="170">one-time 2.4 GB download</text>
      <text x="40" y="208">Every metarig bone,</text><text x="40" y="224">then weight fixes</text>
      <text x="268" y="208">Every bone,</text><text x="268" y="224">every constraint</text>
      <text x="496" y="208">Nothing. Pick the front view,</text><text x="496" y="224">choose a body plan, press Rig</text>
      <text x="40" y="262">Free, bundled with Blender</text>
      <text x="268" y="262">Free</text>
      <text x="496" y="262">$29 once, offline, no subscription</text>
      <text x="40" y="316">Full control rig, IK/FK,</text><text x="40" y="332">DEF bones for export</text>
      <text x="268" y="316">Exactly the bones you chose,</text><text x="268" y="332">named your way</text>
      <text x="496" y="316">Mixamo-named skinned armature,</text><text x="496" y="332">260 CC0 clips, export presets</text>
    </g>
    <g font-size="11.5" fill="#9aa7b4">
      <text x="40" y="358">Export: deform bones only</text>
      <text x="268" y="358">Export: clean hierarchy, any engine</text>
      <text x="496" y="358">Export: Web, Unity, Unreal, Godot</text>
    </g>
    <text x="24" y="398" font-size="12" fill="#9aa7b4">Also: Auto-Rig Pro, $50 Full or $25 Lite on Superhive. Smart placement for humanoids, Remap retargeting, FBX/glTF export module. No clip library.</text>
  </g>
</svg>
<figcaption>Pick by what you have more of. Time and curiosity favour Rigify or a manual rig. A deadline favours the one-click routes.</figcaption>
</figure>
<h2>Test the rig in 60 seconds</h2>
<p>A rest pose hides every weighting problem. Before you animate anything, <code>Ctrl-Tab</code> into Pose Mode and run four checks. They apply to all three routes.</p>
<p><strong>Bend an elbow and a knee to 90 degrees.</strong> Select the forearm or shin (or the IK control) and rotate. The inside should crease and the outside should keep its volume. A joint that collapses flat is usually one edge loop where three are needed, a mesh problem more than a weight problem.</p>
<p><strong>Raise both arms overhead.</strong> Look at the armpits and the side of the chest. If the ribcage lifts with the arm, chest vertices are weighted to the upper arm. If the armpit tears open, shoulder weights are missing from the underarm.</p>
<p><strong>Squat.</strong> Look at the hips and crotch. Trouser legs pierced by the thigh mean the clothing shell got different weights from the leg under it.</p>
<p><strong>Twist a wrist 90 degrees along the forearm.</strong> If the forearm narrows to a pinched waist halfway along, that's the candy-wrapper artefact of linear blend skinning. Blender's <a href="https://docs.blender.org/manual/en/latest/modeling/modifiers/deform/armature.html">Armature modifier</a> has a checkbox for it: <strong>Preserve Volume</strong>, which uses quaternions because without it &quot;rotations at joints tend to scale down the neighboring geometry, up to nearly zero at 180 degrees from rest position&quot;. Game engines can't read that checkbox, so a shipped rig fixes the same twist with a forearm twist bone, which is why the manual's own IK example &quot;uses two bones to overcome the twist problem for the forearm&quot;.</p>
<figure class="guide-fig">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 330" role="img" aria-label="Rig check panel with four tests. Elbow and knee bent to 90 degrees: pass keeps volume on the outside, fail folds flat. Arms overhead: pass moves the arm alone, fail lifts the ribcage. Squat: pass keeps trousers over the thigh, fail has the thigh pierce the trousers. Wrist twist 90 degrees: pass keeps the forearm cylindrical, fail pinches it to a candy-wrapper waist.">
  <rect width="720" height="330" rx="14" fill="#0b1020"/>
  <g font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif">
    <text x="24" y="36" font-size="20" font-weight="800" fill="#e8edf5">The 60-second rig check</text>
    <text x="24" y="58" font-size="13" fill="#9aa7b4">Pose Mode. Four poses, what a pass and a fail look like, and what to fix.</text>
    <g fill="#121a31" stroke="#2a3655" stroke-width="1">
      <rect x="24" y="76" width="160" height="230" rx="12"/>
      <rect x="196" y="76" width="160" height="230" rx="12"/>
      <rect x="368" y="76" width="160" height="230" rx="12"/>
      <rect x="540" y="76" width="156" height="230" rx="12"/>
    </g>
    <g font-size="13" font-weight="800" fill="#e8edf5">
      <text x="40" y="100">1. Elbow and knee 90°</text>
      <text x="212" y="100">2. Arms overhead</text>
      <text x="384" y="100">3. Squat</text>
      <text x="556" y="100">4. Wrist twist 90°</text>
    </g>
    <g fill="none" stroke-width="14" stroke-linecap="round" stroke-linejoin="round">
      <path d="M44 160 L84 160 L84 200" stroke="#6ee7b7"/>
      <path d="M116 160 L156 160 L156 200" stroke="#fb7185" stroke-width="14"/>
      <path d="M156 160 L150 174" stroke="#0b1020" stroke-width="10"/>
    </g>
    <g fill="none" stroke-width="12" stroke-linecap="round">
      <path d="M222 200 L238 150" stroke="#6ee7b7"/>
      <rect x="240" y="150" width="30" height="50" rx="8" fill="#121a31" stroke="#6ee7b7" stroke-width="3"/>
      <path d="M300 200 L316 150" stroke="#fb7185"/>
      <rect x="318" y="140" width="30" height="50" rx="8" fill="#121a31" stroke="#fb7185" stroke-width="3" transform="rotate(-8 333 165)"/>
    </g>
    <g fill="none" stroke-width="3">
      <rect x="392" y="150" width="34" height="50" rx="10" stroke="#6ee7b7"/>
      <path d="M400 156 L400 196" stroke="#6ee7b7" stroke-width="10" stroke-linecap="round"/>
      <rect x="466" y="150" width="34" height="50" rx="10" stroke="#fb7185"/>
      <path d="M474 156 L474 196" stroke="#fb7185" stroke-width="10" stroke-linecap="round"/>
      <path d="M464 168 L452 176 L464 184" stroke="#fb7185" stroke-width="6" stroke-linecap="round" stroke-linejoin="round" fill="#fb7185"/>
    </g>
    <g fill="none" stroke-width="3">
      <rect x="556" y="160" width="56" height="26" rx="13" stroke="#6ee7b7"/>
      <path d="M630 160 C650 160 654 173 660 173 C666 173 670 160 690 160 L690 186 C670 186 666 173 660 173 C654 173 650 186 630 186 Z" stroke="#fb7185"/>
    </g>
    <g font-size="11.5" fill="#9aa7b4">
      <text x="40" y="228">Pass: outside keeps volume.</text>
      <text x="40" y="244">Fail: joint folds flat.</text>
      <text x="40" y="266" fill="#e8edf5">Fix: three edge loops at</text>
      <text x="40" y="282" fill="#e8edf5">the joint, then re-weight.</text>
      <text x="212" y="228">Pass: arm moves alone.</text>
      <text x="212" y="244">Fail: ribcage lifts too.</text>
      <text x="212" y="266" fill="#e8edf5">Fix: paint chest weight</text>
      <text x="212" y="282" fill="#e8edf5">off the upper arm group.</text>
      <text x="384" y="228">Pass: trousers stay on.</text>
      <text x="384" y="244">Fail: thigh pierces cloth.</text>
      <text x="384" y="266" fill="#e8edf5">Fix: Transfer Weights from</text>
      <text x="384" y="282" fill="#e8edf5">body to clothing shell.</text>
      <text x="556" y="228">Pass: forearm stays round.</text>
      <text x="556" y="244">Fail: candy-wrapper pinch.</text>
      <text x="556" y="266" fill="#e8edf5">Fix: Preserve Volume in</text>
      <text x="556" y="282" fill="#e8edf5">Blender, twist bone in-engine.</text>
    </g>
  </g>
</svg>
<figcaption>Run all four before animating. If two of them fail on an auto-rigged character, fix the mesh and rig again rather than painting weights. The second attempt takes a minute.</figcaption>
</figure>
<p>To fix weights by hand, use the workflow the manual gives on its <a href="https://docs.blender.org/manual/en/latest/sculpt_paint/weight_paint/usage.html">Vertex Groups for Bones</a> page: put the armature in Pose Mode, make sure <code>Edit &gt; Lock Object Modes</code> is unticked, select the mesh and switch it to Weight Paint Mode, tick Bone Selection in the header, then <code>Alt</code>-click a bone to show its weights (blue is 0, red is 1) and paint. Turn on Auto Normalize in the Tool settings so weights at a joint always sum to one, and reach for the Blur brush before anything else. Since Blender 5.1 you can also loop-select vertices in Weight Paint mode with Vertex Selection on (<a href="https://developer.blender.org/docs/release_notes/5.1/animation_rigging/">5.1 release notes</a>), which makes isolating a knee loop quick. When a fix takes longer than ten minutes, our <a href="/guides/blender-weight-painting-problems">weight painting problems guide</a> covers the seven failures that account for nearly all of them.</p>
<h2>Common failures and fixes</h2>
<p><strong>&quot;Bone Heat Weighting: failed to find solution for one or more bones&quot;.</strong> The exact message comes from Blender's <a href="https://projects.blender.org/blender/blender/src/branch/main/source/blender/editors/armature/meshlaplacian.cc">mesh Laplacian code</a>, and it means the heat solver couldn't reach some vertices from some bones. Causes, in order of likelihood: overlapping duplicate vertices (<code>Mesh &gt; Clean Up &gt; Merge by Distance</code>), interior faces or non-manifold geometry, a bone entirely outside the mesh, or a mesh so dense the solve gives up. Try again on a lower-resolution copy, or bind with a Decimate modifier temporarily applied. This message is common enough that a paid add-on exists to sidestep it: Voxel Heat Diffuse Skinning ($30 on <a href="https://superhivemarket.com/products/voxel-heat-diffuse-skinning">Superhive</a>, more than 12,500 sales) lists solving this exact error as its first selling point.</p>
<p><strong>The mesh doesn't move at all.</strong> The Armature modifier is missing (check the Modifier tab, the Object field should name your rig), or the bones have Deform off, or the vertex group names don't match bone names. Blender's Armature modifier binds by name: &quot;a bone named &quot;forearm&quot;, will only affect the vertices in the &quot;forearm&quot; vertex group&quot;.</p>
<p><strong>A limb drags the wrong body part.</strong> Two bones were too close when the heat solve ran (a hand resting on a thigh, fingers touching). Re-pose the mesh into a proper A-pose and rebind, or paint the stray weight out.</p>
<p><strong>Rigify fingers curl on the wrong axis.</strong> Rolls were inconsistent. Select the finger bones in the metarig, <code>Recalculate Roll &gt; Global -Z Axis</code>, regenerate, and if they still rotate wrong, change Bend Rotation Axis under Rigify Type on the first finger bone.</p>
<p><strong>Rigify says it can't overwrite the rig.</strong> Unhide both the metarig and the generated <code>rig</code> before pressing Generate Rig. The manual is explicit that both must be visible.</p>
<p><strong>The character is tiny or huge in Blender.</strong> You imported at centimetre scale. Scale in Object Mode until Dimensions read about 1.8 m, then <code>Ctrl-A &gt; All Transforms</code>, and rig after that, never before.</p>
<p><strong>The character lies on its back or is 100 times too big in Unity or Unreal.</strong> Blender is Z-up and Y-forward. The FBX exporter's Forward and Up axes exist to convert: &quot;Blender uses Y Forward, Z Up. For example, it's common for applications to use Y as the up axis, in that case -Z Forward, Y Up is needed.&quot; Unity wants FBX with Forward -Z, Up Y, Apply Scalings set to FBX All. Unreal wants Forward -Y, Up Z, Apply Scalings All Local, Primary Bone Axis Y and Secondary Bone Axis X. Godot's own docs recommend glTF: &quot;glTF 2.0 (recommended)&quot;, with FBX supported through ufbx since 4.3 (<a href="https://docs.godotengine.org/en/stable/tutorials/assets_pipeline/importing_3d_scenes/available_formats.html">Godot manual</a>). In every case tick Only Deform Bones and untick Add Leaf Bones. If your pipeline lives on FBX round-trips from Maya or 3ds Max, credit where due: Better FBX Importer and Exporter ($25 on <a href="https://superhivemarket.com/products/better-fbx-importer--exporter">Superhive</a>, more than 12,600 sales) exists because imports stop breaking, and its listing says as much: &quot;If you do everything within Blender, you don't need this add-on.&quot;</p>
<p><strong>Your animation vanished after upgrading Blender.</strong> Not a rig bug. Blender 4.4 made every Action &quot;slotted&quot;, and old files are upgraded automatically with each Action getting one &quot;Legacy Slot&quot; (<a href="https://developer.blender.org/docs/release_notes/4.4/animation_rigging/">4.4 release notes</a>). If you assign an existing Action to a new armature, Blender may not auto-pick a slot, so the rig sits still until you select one in the Action Editor. Blender 5.0 also moved bone visibility and selection state onto the pose bone so armature instances stop sharing them (<a href="https://developer.blender.org/docs/release_notes/5.0/animation_rigging/">5.0 release notes</a>), a change the notes flag as breaking the Python API for older rig scripts.</p>
<h2>Which route should you take?</h2>
<p>If you're learning Blender and have an evening, do Rigify once. You'll understand what a rig is, and the control rig it gives you is the best free animation rig there is. Keep the metarig and regenerate as you refine.</p>
<p>If you're building for a web game or a mobile game and every bone costs draw time, build the manual armature. Seventeen bones, your names, your hierarchy, and nothing in the file you didn't put there.</p>
<p>If you have a deadline, a folder of characters, or no interest in rigging as a craft, auto-rig. Inside Blender the <a href="/blender-addon/">Cinevva Rig add-on</a> rigs on your machine for one $29 purchase, plays 260 CC0 clips on the result and exports for your engine. Auto-Rig Pro is the right buy if you want a production control rig with a retargeter and don't mind placing markers. And if you're not sure your mesh will rig cleanly, run it through the free first character on the web <a href="/tools/rigger">Auto Rigger</a> before you spend the evening.</p>
<h2>Common Questions</h2>
<h3>How do I rig a character in Blender?</h3>
<p>Prepare the mesh (one shell, A-pose, origin at the feet, <code>Ctrl-A &gt; All Transforms</code>), add a skeleton, bind the mesh, then test. The free built-in route is Rigify: <code>Shift-A &gt; Armature &gt; Human (Meta-Rig)</code>, move the bones onto your character in Edit Mode, press Generate Rig in the Armature tab, then select mesh and rig and <code>Ctrl-P &gt; With Automatic Weights</code>. The one-click alternative is an auto-rigging add-on that places and skins the skeleton for you.</p>
<h3>How do I use Rigify in Blender?</h3>
<p>Enable it under <code>Edit &gt; Preferences &gt; Add-ons</code>, add a metarig from <code>Shift-A &gt; Armature</code>, fit the bones to your mesh with a slight bend at elbows and knees, then click Generate Rig at the bottom of the Armature properties. Rigify creates a separate <code>rig</code> object with IK/FK controls. Bind your mesh to that rig, not the metarig, and keep the metarig so you can regenerate.</p>
<h3>Is Rigify good for game rigs?</h3>
<p>Yes with one export step. Rigify's control bones, constraints and drivers don't export, so tick Export Deformation Bones only (glTF) or Only Deform Bones (FBX) to ship just the <code>DEF-</code> bones and baked animation. Expect more deform bones than a hand-built skeleton, since limbs are split into segments, and expect to map Unity's Humanoid avatar by hand.</p>
<h3>What is the difference between an armature and a rig in Blender?</h3>
<p>An armature is the object type: a hierarchy of bones with a rest position you edit in Edit Mode and pose in Pose Mode. A rig is the whole setup built on it: the armature, the constraints and controls that drive it, and the skinned mesh. Rigify's metarig is a plain armature, and the object it generates, called <code>rig</code>, is a rig.</p>
<h3>Does Blender have auto rigging?</h3>
<p>Blender itself has automatic weights, not automatic bone placement: Rigify still needs you to fit the metarig. Add-ons fill the gap. The <a href="/blender-addon/">Cinevva Rig add-on</a> places and skins a Mixamo-named humanoid skeleton in one click on your own machine for a one-time $29, and Auto-Rig Pro's Smart tool places its markers on humanoids in a T-pose or A-pose.</p>
<h3>Does the Mixamo Blender add-on still work?</h3>
<p>Adobe's official add-on is offered for Blender 3.6, and the community extension called Mixamo Rig on <a href="http://extensions.blender.org">extensions.blender.org</a>, which describes the official one as &quot;no longer supported&quot;, carries it forward with Blender 4.2 LTS compatibility and a 1.2.2 release in April 2026. Mixamo's own auto-rigger remains &quot;for bipedal humanoids only&quot; per Adobe's FAQ.</p>
<h3>How do I rig a character in Blender for Unity?</h3>
<p>Rig with any route above, make sure the skeleton has the 15 bones Unity's Humanoid avatar needs, then export FBX with Forward -Z, Up Y, Apply Scalings FBX All, Only Deform Bones on and Add Leaf Bones off. In Unity set the Rig type to Humanoid and check the avatar mapping. If the character imports lying down or 100 times too large, you skipped <code>Ctrl-A &gt; All Transforms</code> before rigging.</p>
<h2>Related</h2>
<ul>
<li><a href="/guides/automatic-rigging-explained">How Automatic Rigging Works (and How to Prepare a Model for It)</a>: what joints and skin weights are, and the mesh checklist every rigger wants</li>
<li><a href="/guides/free-character-animations-rigging">Free Character Animations and Auto-Rigging: Mixamo and Its Alternatives</a>: CC0 clip libraries and free riggers, licences checked</li>
<li><a href="/guides/blender-weight-painting-problems">Blender Weight Painting: The 7 Problems Everyone Hits</a>: the bone heat error, bleeding limbs, twisting wrists, and when to skip the step</li>
<li><a href="/guides/auto-rig-pro-alternatives">Auto-Rig Pro Alternatives for Blender</a>: Rigify, Quick Rig, Voxel Heat and the one-time auto-riggers compared on price and limits</li>
<li><a href="/blender-addon/">Cinevva Rig for Blender</a>: one-click rigging on your own machine, 260 CC0 clips, game-ready export presets</li>
<li><a href="/tools/rigger">Auto Rigger</a>: rig a GLB, FBX or OBJ in the browser, first character free</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Mixamo to Blender in 2026: The Add-on, the Manual Import, and What to Use Instead]]></title>
            <link>https://app.cinevva.com/guides/mixamo-to-blender-2026</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/mixamo-to-blender-2026</guid>
            <pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Mixamo to Blender in 2026: where the Mixamo Blender add-on stands on 4.x and 5.x, the manual FBX import with the scale and T-pose fixes, and CC0 alternatives.]]></description>
            <content:encoded><![CDATA[<h1>Mixamo to Blender in 2026: The Add-on, the Manual Import, and What to Use Instead</h1>
<p><em>Last updated: September 2026.</em></p>
<figure class="guide-hero">
<img src="https://cdn.cinevva.com/guides/mixamo-to-blender-2026-hero.jpg?v=1" alt="A Mixamo character in T-pose beside its imported armature in the Blender viewport" width="1216" height="640">
</figure>
<style>
.guide-hero { margin: 1.25rem 0 1.75rem; }
.guide-hero img { width: 100%; height: auto; border-radius: 12px; display: block; }
.guide-fig { margin: 1.5rem 0; }
.guide-fig > a { display: block; }
.guide-fig img { width: 100%; height: auto; border-radius: 10px; border: 1px solid var(--vp-c-divider); display: block; }
.guide-fig svg { width: 100%; height: auto; display: block; }
.guide-fig figcaption { font-size: 0.9rem; color: var(--vp-c-text-2); margin: 0.5rem 0 0; }
.video-embed { position: relative; width: 100%; max-width: 720px; margin: 1.5rem 0; }
.video-embed iframe { width: 100%; aspect-ratio: 16/9; border-radius: 8px; }
.video-caption { font-size: 0.9rem; color: var(--vp-c-text-2); margin-top: 0.5rem; margin-bottom: 1.5rem; }
</style>
<p>Mixamo still works in September 2026 and is still free with an Adobe ID, but Adobe's own Blender add-on was built for Blender 3.6 and the community build that replaced it on Blender Extensions lists Blender 4.2 LTS as its compatibility and 5.5 and above as unsupported. If you're on Blender 4.2 through 5.4, install the &quot;Mixamo Rig&quot; extension and you get the control rig and baking workflow back. On anything newer, or if you'd rather not depend on an add-on at all, import the FBX files by hand, fix the 0.01 scale and the <code>mixamorig:</code> bone names once, and stack clips in the NLA editor. If what you actually want is a library of animations on your own character, a CC0 library retargeted inside Blender saves you the Mixamo round trip entirely.</p>
<h2>Quick answer</h2>
<ul>
<li><strong>Blender 4.2 to 5.4, want the control rig:</strong> install <a href="https://extensions.blender.org/add-ons/mixamo-rig/">Mixamo Rig</a> from Blender Extensions (version 1.2.2, April 2026). It's the community continuation of Adobe's add-on, GPL, and does the same one-click IK control rig and bake in and out.</li>
<li><strong>Blender 5.5 or newer, or no add-on:</strong> <code>File &gt; Import &gt; FBX (.fbx)</code>, leave Apply Transform off, tick Automatic Bone Orientation on the legacy importer, and don't fight the 0.01 armature scale until every clip is in.</li>
<li><strong>Several clips on one character:</strong> download the character once &quot;With Skin&quot;, every animation &quot;Without Skin&quot;, import each, assign its action to the main armature by name, Push Down into the NLA, delete the spare armatures.</li>
<li><strong>Animations won't play, character stays in T-pose:</strong> the action isn't assigned, or the bone prefix in the action (<code>mixamorig:</code>) doesn't match the armature. Check the prefix before anything else.</li>
<li><strong>Root motion:</strong> untick &quot;In Place&quot; on Mixamo before downloading, then bake the hips' horizontal motion into a root bone. The <a href="https://extensions.blender.org/add-ons/import-mixamo-root-motion/">Import Mixamo - Root Motion</a> extension automates that on Blender 4.2 LTS.</li>
<li><strong>Want to skip Mixamo:</strong> retarget any clip inside Blender with the free Rokoko plugin or Auto-Rig Pro's Remap, pull clips from Quaternius' CC0 Universal Animation Library, or use <a href="/blender-addon/">the Cinevva Rig add-on</a>, which retargets 260 CC0 clips onto a character it rigged inside Blender, runs on your own machine offline for one $29 launch-price purchase, and supports Blender 4.2 and newer on Windows, macOS and Linux.</li>
</ul>
<h2>Quick reference</h2>
<table>
<thead>
<tr>
<th>Route</th>
<th>Blender versions</th>
<th>What you get</th>
<th>Where it breaks</th>
</tr>
</thead>
<tbody>
<tr>
<td>Adobe's original add-on</td>
<td>Built for 3.6, per Adobe's plugin page</td>
<td>IK control rig, bake animations in and out</td>
<td>Blender 4.0 replaced bone layers with bone collections, so it fails on 4.x</td>
</tr>
<tr>
<td>Mixamo Rig extension (community)</td>
<td>4.2 LTS listed, 5.5+ marked unsupported</td>
<td>Same control rig and bake, extension install, 69,700+ downloads</td>
<td>Not supported on 5.5 and above</td>
</tr>
<tr>
<td>Manual FBX import</td>
<td>Every version</td>
<td>Full control, nothing to install</td>
<td>0.01 scale, <code>mixamorig:</code> prefix mismatches, one armature per file</td>
</tr>
<tr>
<td>Import Mixamo - Root Motion extension</td>
<td>4.2 LTS listed, 5.1+ marked unsupported</td>
<td>Batch import, strips the prefix, bakes root motion</td>
<td>Not supported past 5.0</td>
</tr>
<tr>
<td>Retarget inside Blender (Rokoko, Auto-Rig Pro Remap)</td>
<td>Rokoko: current plugin, ARP: 2.93 to 5.1</td>
<td>Any clip onto any rig</td>
<td>Setup per skeleton pair</td>
</tr>
<tr>
<td>CC0 library on your own rig</td>
<td>Depends on the tool</td>
<td>No licence line in the shipped game</td>
<td>You still need a rigged character</td>
</tr>
</tbody>
</table>
<h2>Where Mixamo stands in September 2026</h2>
<p>Everything Adobe states publicly is on one page, the <a href="https://helpx.adobe.com/creative-cloud/faq/mixamo-faq.html">Mixamo FAQ</a>, and that page was last updated on September 14, 2021. It says Mixamo &quot;is available free for anyone with an Adobe ID and does not require a subscription to Creative Cloud&quot;, that it isn't available for Enterprise and Federated IDs, and that it isn't available to users with a country code from China. Characters and animations are royalty free for personal, commercial and non-profit projects, including video games. The auto-rigger and the animation library are for bipedal humanoids only, and the FAQ closes with &quot;Adobe does not support troubleshooting for third-party programs&quot;, which covers Blender.</p>
<p>Adobe has announced no shutdown on those pages, and we won't speculate beyond them. What the pages do tell you is that nothing has moved in five years. Treat Mixamo as a working legacy service: fine for downloading what you need, not something to build a pipeline on if you can avoid it. The longer view, with alternatives outside Blender, is in <a href="/guides/free-character-animations-rigging">Free Character Animations and Auto-Rigging</a>.</p>
<h2>The official Mixamo Blender add-on, and what replaced it</h2>
<p>Adobe's <a href="https://www.adobe.com/products/substance3d/plugins/mixamo-in-blender.html">Mixamo Blender add-on page</a> still hosts the download and describes it plainly: an auto control-rig add-on for characters that were auto-rigged with Mixamo, which &quot;provides a one-click solution to create an IK control rig and to bake animations in and out of the character control rig and skeleton&quot;. It's released under GPL 3.0. That last detail is why it survived Adobe losing interest.</p>
<p>The add-on broke with Blender 4.0. The <a href="https://developer.blender.org/docs/release_notes/4.0/animation_rigging/">Blender 4.0 release notes</a> explain the cause: &quot;New bone collections replace both legacy numbered layers and bone groups&quot;, and the bone layer operators were replaced by bone collection operators. The Adobe add-on organised its rig into numbered layers, so on 4.0 it errored out. A community fix by Xin, documented by <a href="https://cgdive.com/mixamo-rig-in-blender-4-community-fix/">CGDive</a>, moved the rig into three bone collections named Control, DEF and MCH. That GitHub repository now says it's retired and points to the Blender Extensions listing.</p>
<p>Which brings us to the version you should actually install. The <a href="https://extensions.blender.org/add-ons/mixamo-rig/">Mixamo Rig</a> extension by tyler.tofu describes itself as a &quot;3rd party upgrade to official addon because it is no longer supported&quot; and links Adobe's page for the Blender 3.6 original. Version 1.2.2 shipped on April 16, 2026, the listing shows Blender 4.2 LTS as its compatibility with 5.5 and above marked unsupported, it's GPL 3.0 or later, and it had 69,726 downloads when we checked. The changelog shows someone maintaining it against current Blender: the December 2025 release fixed errors when applying animations to the control rig on Blender 4.4 and reworked F-curve access for Blender 5.0's layered actions, and the April 2026 releases fixed IK/FK snapping and controller scaling.</p>
<p>Installing it takes one drag. Open the listing in your browser, drag the &quot;Get Add-on&quot; button into a Blender window, and confirm. Or go to <code>Edit &gt; Preferences &gt; Get Extensions</code>, search for &quot;Mixamo Rig&quot;, and click Install. Offline, download the zip and use <code>Install from Disk</code> from the dropdown in the top right of the same window.</p>
<p>The workflow is the one Adobe designed. Rig your character on Mixamo, download it &quot;With Skin&quot; in the T-pose or with any animation, open the add-on's panel in the 3D viewport sidebar (press <code>N</code>, look for the Mixamo tab), import the FBX through the panel, and press the button that creates the control rig. Import further Mixamo clips through the same panel and they land on the control rig as actions you can bake in and out.</p>
<figure class="guide-fig">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 420" role="img" aria-label="Two routes from Mixamo into Blender. Add-on route: download FBX with skin, install the Mixamo Rig extension on Blender 4.2 to 5.4, import through the add-on panel, create the control rig, import more clips and bake. Manual route: download the T-pose with skin and every clip without skin, File Import FBX, assign each action to the main armature by name, Push Down into the NLA, export. Note: on Blender 5.5 and above the extension is marked unsupported, so use the manual route.">
  <rect width="720" height="420" rx="14" fill="#0b1020"/>
  <g font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif">
    <text x="24" y="40" font-size="20" font-weight="800" fill="#e8edf5">Two routes from Mixamo into Blender</text>
    <text x="24" y="62" font-size="13" fill="#9aa7b4">Pick by Blender version. Both start with a rigged character on mixamo.com.</text>
    <rect x="24" y="84" width="328" height="34" rx="8" fill="#7dd3fc" fill-opacity="0.16"/>
    <text x="40" y="107" font-size="14" font-weight="700" fill="#7dd3fc">Add-on route (Blender 4.2 to 5.4)</text>
    <rect x="368" y="84" width="328" height="34" rx="8" fill="#6ee7b7" fill-opacity="0.16"/>
    <text x="384" y="107" font-size="14" font-weight="700" fill="#6ee7b7">Manual route (any Blender)</text>
    <g fill="#e8edf5" font-size="13">
      <circle cx="44" cy="146" r="11" fill="#7dd3fc"/><text x="40" y="150" font-size="12" font-weight="800" fill="#0b1020">1</text>
      <text x="66" y="150">Download the character, FBX Binary, With Skin</text>
      <circle cx="44" cy="186" r="11" fill="#7dd3fc"/><text x="40" y="190" font-size="12" font-weight="800" fill="#0b1020">2</text>
      <text x="66" y="190">Install "Mixamo Rig" from Blender Extensions</text>
      <circle cx="44" cy="226" r="11" fill="#7dd3fc"/><text x="40" y="230" font-size="12" font-weight="800" fill="#0b1020">3</text>
      <text x="66" y="230">Import the FBX through the add-on panel (N sidebar)</text>
      <circle cx="44" cy="266" r="11" fill="#7dd3fc"/><text x="40" y="270" font-size="12" font-weight="800" fill="#0b1020">4</text>
      <text x="66" y="270">Create the IK control rig</text>
      <circle cx="44" cy="306" r="11" fill="#7dd3fc"/><text x="40" y="310" font-size="12" font-weight="800" fill="#0b1020">5</text>
      <text x="66" y="310">Import more clips, bake in and out of the rig</text>
      <circle cx="388" cy="146" r="11" fill="#6ee7b7"/><text x="384" y="150" font-size="12" font-weight="800" fill="#0b1020">1</text>
      <text x="410" y="150">T-pose With Skin once, every clip Without Skin</text>
      <circle cx="388" cy="186" r="11" fill="#6ee7b7"/><text x="384" y="190" font-size="12" font-weight="800" fill="#0b1020">2</text>
      <text x="410" y="190">File &gt; Import &gt; FBX, Apply Transform off</text>
      <circle cx="388" cy="226" r="11" fill="#6ee7b7"/><text x="384" y="230" font-size="12" font-weight="800" fill="#0b1020">3</text>
      <text x="410" y="230">Assign each clip's action to the main armature</text>
      <circle cx="388" cy="266" r="11" fill="#6ee7b7"/><text x="384" y="270" font-size="12" font-weight="800" fill="#0b1020">4</text>
      <text x="410" y="270">Push Down into the NLA, delete spare armatures</text>
      <circle cx="388" cy="306" r="11" fill="#6ee7b7"/><text x="384" y="310" font-size="12" font-weight="800" fill="#0b1020">5</text>
      <text x="410" y="310">Export for your engine</text>
    </g>
    <line x1="24" y1="340" x2="696" y2="340" stroke="#1f2a44"/>
    <rect x="24" y="356" width="10" height="40" rx="3" fill="#fbbf24"/>
    <text x="46" y="374" font-size="13" fill="#e8edf5">Blender 5.5 and above: the extension listing says unsupported.</text>
    <text x="46" y="392" font-size="13" fill="#9aa7b4">Use the manual route, or retarget a CC0 library inside Blender instead.</text>
  </g>
</svg>
<figcaption>The add-on route gives you a control rig to edit poses on. The manual route is more steps but has no version ceiling.</figcaption>
</figure>
<div class="video-embed"><iframe src="https://www.youtube.com/embed/UNDXffLwtq4" title="[FIXED] Mixamo addon for Blender 4!" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></div>
<div class="video-caption">CGDive walks through the community-fixed Mixamo add-on on Blender 4, including what broke and how the fixed rig is organised into bone collections.</div>
<h2>The manual route, step by step</h2>
<p>This works on every Blender version, and it's worth understanding even if you use the add-on, because every &quot;Mixamo animations not working&quot; thread ends in one of the details below.</p>
<h3>1. Download the right files</h3>
<p>On Mixamo, rig or pick your character, then download it once in the T-pose with Format set to FBX Binary and Skin set to With Skin. That file is your character: mesh, materials, skeleton. Then for every animation you want, apply it and download again with Skin set to Without Skin. Those files carry only the skeleton and the motion, so they're small and import fast. For a walk or run you intend to drive from game code, tick &quot;In Place&quot; so the character moves on the spot. If you want the forward motion in the clip so you can bake root motion later, leave it unticked. Keep keyframe reduction at none, since Blender's legacy importer reads FBX curves as baked keys anyway.</p>
<h3>2. Import with the right settings</h3>
<p><code>File &gt; Import &gt; FBX (.fbx)</code>. On Blender 4.2 through 4.4 that menu item is the Python importer. Blender 4.5 added a second item marked experimental, a new C++ importer built on ufbx that the <a href="https://developer.blender.org/docs/release_notes/4.5/pipeline_assets_io/">4.5 release notes</a> describe as &quot;generally 3x-15x faster than the old one&quot;. In Blender 5.0 the <a href="https://developer.blender.org/docs/release_notes/5.0/pipeline_io/">release notes</a> make the C++ importer the default and mark the Python one as &quot;FBX (.fbx) (Legacy)&quot;. Both handle Mixamo files, and the settings that matter differ slightly.</p>
<p>On the legacy importer, the <a href="https://docs.blender.org/manual/en/latest/addons/import_export/scene_fbx.html">Blender manual</a> lists the options under Transform and Armature. Leave Manual Orientation off, since the importer reads the file's axes. Leave Apply Transform off. The manual is blunt about that checkbox: &quot;Experimental option, use at own risk, known to be broken with armatures/animations.&quot; Under Armature, tick Ignore Leaf Bones so you don't get an extra <code>_end</code> bone at every fingertip, and tick Automatic Bone Orientation, which Rokoko's retargeting guide also asks for because it gives you bone rolls Blender's constraints and retargeters can work with.</p>
<p>On the new importer, the <a href="https://docs.blender.org/manual/en/latest/files/import_export/fbx.html">manual page</a> is shorter: a Scale value, Custom Normals, a Material Name Collision option (Make Unique or Reference Existing), an animation Offset, and Ignore Leaf Bones. It also notes that each FBX take &quot;is imported as a separate Action, with each animated object assigned to its own Action Slot&quot;, which matters in the next step.</p>
<h3>3. Look at what arrived</h3>
<p>Select the armature and press <code>N</code>. The Item tab shows Scale 0.010 on X, Y and Z. That isn't a bug. Mixamo works in centimetres, the file says so, and the importer keeps the unit conversion on the armature object rather than rewriting every bone and keyframe. The mesh is parented under it and displays at the right size. Every bone is named <code>mixamorig:Hips</code>, <code>mixamorig:Spine</code>, <code>mixamorig:LeftArm</code> and so on, with the prefix and a colon.</p>
<p>The temptation is to select everything and press <code>Ctrl+A &gt; All Transforms</code> to get a clean 1.0 scale. Hold off until you've imported every clip, and read the scale section below before you do it at all.</p>
<h3>4. Bring in the other clips</h3>
<p>Import each Without Skin FBX the same way. Each one arrives as its own armature, <code>Armature.001</code>, <code>Armature.002</code>, with an action attached. Because the bone names inside those actions are identical to the ones on your main armature, the actions are interchangeable: an action is just a set of F-curves addressed by bone name.</p>
<p>Select your main armature, open the Dope Sheet, switch it to Action Editor mode, and pick the imported action from the dropdown in the header. The character plays it. On Blender 4.4 and newer, actions have slots, and the imported action's slot needs to be assigned to the armature as well, which the header does for you when you pick it. Once it plays, click Push Down. The <a href="https://docs.blender.org/manual/en/latest/editors/nla/tracks.html">manual</a> describes what that does: it &quot;creates a new track below the Action Track and moves the active action into it as a strip, leaving the Action Track empty&quot;. Repeat for every clip, then delete the spare armatures. Their actions stay in the file because the strips reference them.</p>
<p>If you want each animation to survive as a separate clip in Unity, Unreal or Godot, leave them as separate NLA strips and tick NLA Strips under Bake Animation in the FBX exporter, or export glTF, whose <a href="https://docs.blender.org/manual/en/latest/addons/import_export/scene_gltf2.html">exporter</a> writes every stashed or pushed-down action as its own animation in the default Actions mode and, in NLA Tracks mode, exports &quot;each NLA Track as an independent glTF animation&quot;. If you want one long sequence, drag the strips end to end on one track instead.</p>
<h3>5. Root motion</h3>
<p>Mixamo bakes forward motion into the hips bone. Game engines want it on a root bone at the character's origin so the engine can read the character's displacement and move the collider. There's no button for this in stock Blender, so you either do it by hand or use the extension built for the job.</p>
<p>By hand: add a bone named <code>root</code> at the armature origin, parent <code>mixamorig:Hips</code> to it, give the root a Copy Location constraint from the hips limited to X and Y, bake the root with <code>Object &gt; Animation &gt; Bake Action</code> (Pose mode, Visual Keying, Clear Constraints), and remove the horizontal location keys from the hips. Once per clip.</p>
<p>With the extension: <a href="https://extensions.blender.org/add-ons/import-mixamo-root-motion/">Import Mixamo - Root Motion</a> by DevilMayCry adds <code>File &gt; Import &gt; Mixamo fbx (folder/*.fbx)</code>. It imports a whole folder of Mixamo FBX files in one go, and its listing says it will &quot;batch remove prefix name mixamorig:&quot;, rename each action after its file, apply transformations, remove the redundant <code>Armature.00*</code> skeletons, and &quot;batch create root bones to record Root Motion information&quot;, with several ways to calculate the baked keys. Version 1.0.4 from November 2025 added a Copy Rotation option so the root also takes the hips' turning. It lists Blender 4.2 LTS as its compatibility and 5.1 and above as unsupported, with 51,467 downloads.</p>
<h2>The four things that break</h2>
<h3>The character stays frozen in T-pose</h3>
<p>Nine times in ten the action isn't assigned to the armature you're looking at. Check the Action Editor dropdown. The tenth time, it's the prefix. Mixamo bone names are <code>mixamorig:Hips</code>, and if the action's F-curves address <code>mixamorig1:Hips</code> or plain <code>Hips</code>, none of the curves find a bone and nothing moves, with no error. This happens when the clips were downloaded against a different upload of the same character, or when one file came through a tool that stripped the prefix. Open the Graph Editor, expand a channel, and compare the bone name in the data path with the names in your armature. Fix it by renaming one side. <a href="https://docs.blender.org/manual/en/latest/files/blend/rename.html">Batch Rename</a> (<code>Edit &gt; Batch Rename</code>, or <code>Ctrl+F2</code>) with Data Type set to Bones handles a whole skeleton with Find <code>mixamorig:</code> and Replace empty, and the root motion extension above does the same as a batch import option.</p>
<h3>The character is tiny, or flies away</h3>
<p>The tiny character is the 0.01 object scale with the mesh not parented, or a file imported at a Scale value other than 1.0. The flying character is the more interesting one. If you applied scale to your main armature so it reads 1.0, its hips bone now expects location keys in metres. The actions you imported still have location keys in centimetres, so the hips move 100 times too far on every step and the character launches out of frame. Either keep the 0.01 scale on the armature and never apply it, which every engine importer handles, or apply it consistently to every armature before you move any actions across, so the location curves get rescaled along with the bones. Never mix the two states in one file.</p>
<h3>Extra bones and wrong orientations</h3>
<p>An <code>_end</code> bone on every finger and toe means Ignore Leaf Bones was off on import. Bones pointing the wrong way with rolls all over the place means Automatic Bone Orientation was off. Both are cosmetic for playback and both bite as soon as you retarget or add constraints, so re-import with the boxes ticked rather than fixing bones by hand. If you're round-tripping to another package, the exporter's Add Leaf Bones and Primary/Secondary Bone Axis settings on the same manual page are the mirror image of these.</p>
<h3>Textures come in grey or pink</h3>
<p>If the mesh renders pink in Material Preview, an image path is broken: <code>File &gt; External Data &gt; Find Missing Files</code> and point it at the folder you unzipped. If it's flat grey, the importer built the material but didn't wire the image, so open the Shader Editor and connect the texture to Base Color.</p>
<figure class="guide-fig">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 340" role="img" aria-label="Two Mixamo import failures. Left, bone prefix mismatch: the armature has bones named mixamorig:Hips, mixamorig:Spine, mixamorig:LeftArm, but the imported action's curves address mixamorig1:Hips, so no curve finds a bone and the character stays in T-pose. Right, scale mismatch: the armature imports with object scale 0.010 and hips location keys in centimetres. Applying scale to 1.0 without rescaling the action makes every hips move 100 times too large.">
  <rect width="720" height="340" rx="14" fill="#0b1020"/>
  <g font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif">
    <text x="24" y="40" font-size="20" font-weight="800" fill="#e8edf5">Why the character freezes, and why it flies</text>
    <text x="24" y="62" font-size="13" fill="#9aa7b4">The two silent failures behind most "Mixamo not working in Blender" threads.</text>
    <text x="24" y="98" font-size="14" font-weight="700" fill="#c8a8ff">Bone prefix mismatch</text>
    <rect x="24" y="112" width="150" height="112" rx="8" fill="#141b33" stroke="#1f2a44"/>
    <text x="36" y="132" font-size="11" fill="#9aa7b4">Armature bones</text>
    <g font-family="ui-monospace,SFMono-Regular,Menlo,monospace" font-size="11" fill="#e8edf5">
      <text x="36" y="152">mixamorig:Hips</text>
      <text x="36" y="170">mixamorig:Spine</text>
      <text x="36" y="188">mixamorig:LeftArm</text>
      <text x="36" y="206">mixamorig:LeftLeg</text>
    </g>
    <rect x="202" y="112" width="150" height="112" rx="8" fill="#141b33" stroke="#fb7185"/>
    <text x="214" y="132" font-size="11" fill="#9aa7b4">Action F-curves</text>
    <g font-family="ui-monospace,SFMono-Regular,Menlo,monospace" font-size="11" fill="#fb7185">
      <text x="214" y="152">mixamorig1:Hips</text>
      <text x="214" y="170">mixamorig1:Spine</text>
      <text x="214" y="188">mixamorig1:LeftArm</text>
      <text x="214" y="206">mixamorig1:LeftLeg</text>
    </g>
    <line x1="174" y1="168" x2="202" y2="168" stroke="#fb7185" stroke-width="2" stroke-dasharray="4 3"/>
    <text x="24" y="250" font-size="12" fill="#e8edf5">No curve finds a bone. Nothing moves, no error.</text>
    <text x="24" y="268" font-size="12" fill="#6ee7b7">Fix: Batch Rename, find "mixamorig:" replace with nothing, on both.</text>
    <text x="384" y="98" font-size="14" font-weight="700" fill="#fbbf24">Scale mismatch</text>
    <rect x="384" y="112" width="150" height="112" rx="8" fill="#141b33" stroke="#1f2a44"/>
    <text x="396" y="132" font-size="11" fill="#9aa7b4">As imported</text>
    <text x="396" y="154" font-size="12" fill="#e8edf5">Object scale 0.010</text>
    <text x="396" y="172" font-size="12" fill="#e8edf5">Hips keys in cm</text>
    <text x="396" y="190" font-size="12" fill="#e8edf5">96.4 cm x 0.01</text>
    <text x="396" y="208" font-size="12" font-weight="700" fill="#6ee7b7">= 0.964 m, correct</text>
    <rect x="562" y="112" width="134" height="112" rx="8" fill="#141b33" stroke="#fb7185"/>
    <text x="574" y="132" font-size="11" fill="#9aa7b4">Scale applied, action not</text>
    <text x="574" y="154" font-size="12" fill="#e8edf5">Object scale 1.0</text>
    <text x="574" y="172" font-size="12" fill="#e8edf5">Hips keys still cm</text>
    <text x="574" y="190" font-size="12" fill="#e8edf5">96.4 cm x 1</text>
    <text x="574" y="208" font-size="12" font-weight="700" fill="#fb7185">= 96.4 m, flies</text>
    <text x="384" y="250" font-size="12" fill="#e8edf5">Keep 0.01 on every armature, or apply it to every one before</text>
    <text x="384" y="268" font-size="12" fill="#e8edf5">moving actions across. Never mix the two in one file.</text>
    <line x1="24" y1="292" x2="696" y2="292" stroke="#1f2a44"/>
    <text x="24" y="316" font-size="12" fill="#9aa7b4">Leaf bones and bone rolls are the other two, both fixed by re-importing with the Armature boxes ticked.</text>
  </g>
</svg>
<figcaption>A prefix mismatch fails silently and a half-applied scale fails loudly. Both come from importing several FBX files that don't agree with each other.</figcaption>
</figure>
<h2>Exporting what you built</h2>
<p>Once the clips are on one armature, the export is a normal Blender export, with the usual per-engine details. Unity and Unreal take FBX (<code>File &gt; Export &gt; FBX (.fbx)</code>), Godot and the web take glTF (<code>File &gt; Export &gt; glTF 2.0 (.glb/.gltf)</code>). Tick Selected Objects and select the armature and mesh only, so the spare cameras and lights from the import don't come along. Under Bake Animation, NLA Strips exports each strip as its own take and All Actions exports every action &quot;compatible with the selected armatures&quot;, which is more than you want if the file still holds actions from deleted armatures. Add Leaf Bones off, because the exporter otherwise writes an extra bone at the end of every chain to mark the last bone's length, and engines show it as <code>_end</code>. If your imports keep failing on FBX files from other packages rather than Mixamo, the paid <a href="https://superhivemarket.com/products/better-fbx-importer--exporter">Better FBX Importer &amp; Exporter</a> ($25 for one seat, 12,600+ sales, listed for Blender 3.6 to 5.1) exists because it reads every FBX version from 5.3 to 2020 and exports Unity and Unreal-friendly armatures, and that's what people pay for.</p>
<p>If the export step is what you dread, the Cinevva Rig add-on's export card is free without a key or an account: it reports where the bytes in your file go (geometry, textures, animation, shape keys) and its Unity, Unreal, Godot and Web presets set the axes, scale, bone axes, texture caps and compression for you. Measured against a plain Blender GLB export, the presets produced files 68% to 98% smaller on four real models.</p>
<h2>What to use instead of Mixamo</h2>
<p>The reason most people go to Mixamo from Blender is the animation library, not the rigging. Blender ships <a href="https://docs.blender.org/manual/en/latest/addons/rigging/rigify/index.html">Rigify</a> as a bundled add-on for free, and there are several ways to get a library of clips onto a rig without leaving Blender.</p>
<p><strong>Retarget any clip with the Rokoko plugin.</strong> Rokoko's Studio Live plugin for Blender is open source on GitHub and its <a href="https://support.rokoko.com/hc/en-us/articles/4410463481489-Retarget-an-animation-in-Blender">retargeting guide</a> states that &quot;the retargeting feature is not a paid feature and does not need a premium account&quot;. The steps: import the FBX with Automatic Bone Orientation ticked, open the Retargeting panel, pick the animated armature as source and yours as target, press Build Bone List, check the pairings, tick Auto Scale if the two skeletons differ in size, make sure both are in the same pose, and press Retarget Animation. If feet sink or the hips stay put, Rokoko says to try turning Auto Scale off or switching Use Pose to Current. It's the cheapest way to move a Mixamo clip onto a Rigify or custom rig.</p>
<p><strong>Retarget with Auto-Rig Pro's Remap.</strong> <a href="https://superhivemarket.com/products/auto-rig-pro">Auto-Rig Pro</a> is the category leader on Superhive, with over 65,000 sales and a listed range of Blender 2.93 to 5.1. The Lite edition is $25 and covers the rig itself. Remap, the retargeter, is in the $50 Full edition alongside the Smart biped detection and the FBX and glTF export presets for Unreal and Unity. The product page describes Remap as retargeting &quot;any armature action to another one, with different bone names and bone orientations&quot;, and names Mixamo files as the example. If you already own ARP, this is your retargeter.</p>
<p><strong>Retarget with constraints and a bake.</strong> Blender can do it with no add-on: give each bone on your rig a Copy Rotation constraint targeting the matching Mixamo bone, a Copy Location on the hips, then <code>Object &gt; Animation &gt; Bake Action</code> with Visual Keying and Clear Constraints. It's tedious for a full skeleton, and you'll set it up again for every skeleton pair.</p>
<p><strong>Use a CC0 library instead of Mixamo's.</strong> Quaternius' <a href="https://quaternius.com/packs/universalanimationlibrary.html">Universal Animation Library</a> (March 2025, 120+ clips) and <a href="https://quaternius.com/packs/universalanimationlibrary2.html">Universal Animation Library 2</a> (January 2026, 130+ clips) are CC0, ship as FBX, GLB and .blend, and were built on one humanoid rig &quot;ready for retargeting&quot; into Unreal, Godot and Unity. Locomotion in eight directions, jog, sprint, crawling, swimming, melee and armed combos, parkour, farming, fishing, zombie sets. CC0 is a public domain dedication, so nothing follows the clip into your game, and you can redistribute the raw files, which Mixamo's terms don't allow. You still retarget them onto your character with one of the tools above.</p>
<p><strong>Skip the round trip.</strong> <a href="/blender-addon/">The Cinevva Rig add-on</a> does the rig and the library in one place. Select a mesh, press Rig, and you get a skinned humanoid armature with Mixamo bone names, so every workflow on this page still applies. Then a browser docked in the viewport previews 260 CC0 clips (walks, runs, idles, combat, climbing, crawling, emotes) and one click retargets the clip onto your character inside Blender, with foot planting and floor contact handled during the retarget. Rigging runs on your own machine after a one-time engine download of about 2.4 GB, offline, with no per-rig count, for a single $29 launch-price purchase that activates up to three machines. It supports Blender 4.2 and newer on Windows, macOS and Linux and installs as a standard extension. If you'd rather not install anything, the same 260 clips retarget onto an uploaded rigged GLB or FBX in the browser at <a href="/tools/animations">the animation library</a>, and <a href="/tools/animate">Prompt Animations</a> turns a sentence into a clip for the odd motion no library has.</p>
<p><strong>If the rig is what you'd redo.</strong> Mixamo's skin weights are what they are, and repainting them is the job people pay to skip. <a href="https://superhivemarket.com/products/voxel-heat-diffuse-skinning">Voxel Heat Diffuse Skinning</a> ($30, 12,500+ sales, Blender 3.6 to 5.1) re-skins a mesh to any armature with a voxel heat solve, and it's the standard answer when Mixamo's automatic weights pinch a cloak or a skirt.</p>
<figure class="guide-fig">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 400" role="img" aria-label="Comparison matrix of ways to get animations onto a Blender character. Mixamo plus the Mixamo Rig extension: free, Mixamo royalty-free licence with no redistribution, inside Blender, Blender 4.2 to 5.4. Rokoko plugin retargeting: free and open source, licence follows the clip, inside Blender. Auto-Rig Pro Remap: 50 dollars Full edition, licence follows the clip, inside Blender, 2.93 to 5.1. Constraints plus bake: free, licence follows the clip, inside Blender, any version. Quaternius Universal Animation Library: free, CC0, needs a retargeter. Cinevva Rig add-on: 29 dollars one purchase, 260 CC0 clips, inside Blender, 4.2 and newer. Cinevva web animation library: free preview, CC0, in the browser.">
  <rect width="720" height="400" rx="14" fill="#0b1020"/>
  <g font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif">
    <text x="24" y="40" font-size="20" font-weight="800" fill="#e8edf5">Getting animations onto a Blender character</text>
    <text x="24" y="62" font-size="13" fill="#9aa7b4">Cost, licence of the clips you ship, and where the work happens.</text>
    <g font-size="12" font-weight="700" fill="#9aa7b4">
      <text x="24" y="96">Option</text>
      <text x="262" y="96">Cost</text>
      <text x="392" y="96">Clip licence</text>
      <text x="536" y="96">Inside Blender</text>
      <text x="640" y="96">Blender</text>
    </g>
    <line x1="24" y1="106" x2="696" y2="106" stroke="#1f2a44"/>
    <g font-size="12" fill="#e8edf5">
      <text x="24" y="132">Mixamo + Mixamo Rig extension</text>
      <text x="262" y="132" fill="#6ee7b7">Free, Adobe ID</text>
      <text x="392" y="132" fill="#fbbf24">Royalty-free, no redistribution</text>
      <text x="536" y="132" fill="#6ee7b7">Yes</text>
      <text x="640" y="132">4.2 to 5.4</text>
      <text x="24" y="168">Rokoko plugin retargeting</text>
      <text x="262" y="168" fill="#6ee7b7">Free, open source</text>
      <text x="392" y="168">Follows the clip</text>
      <text x="536" y="168" fill="#6ee7b7">Yes</text>
      <text x="640" y="168">Current</text>
      <text x="24" y="204">Auto-Rig Pro Remap</text>
      <text x="262" y="204" fill="#fbbf24">$50 Full edition</text>
      <text x="392" y="204">Follows the clip</text>
      <text x="536" y="204" fill="#6ee7b7">Yes</text>
      <text x="640" y="204">2.93 to 5.1</text>
      <text x="24" y="240">Constraints + Bake Action</text>
      <text x="262" y="240" fill="#6ee7b7">Free, built in</text>
      <text x="392" y="240">Follows the clip</text>
      <text x="536" y="240" fill="#6ee7b7">Yes</text>
      <text x="640" y="240">Any</text>
      <text x="24" y="276">Quaternius Universal Anim. Library</text>
      <text x="262" y="276" fill="#6ee7b7">Free</text>
      <text x="392" y="276" fill="#6ee7b7">CC0</text>
      <text x="536" y="276" fill="#fbbf24">Needs a retargeter</text>
      <text x="640" y="276">n/a</text>
      <text x="24" y="312">Cinevva Rig add-on</text>
      <text x="262" y="312" fill="#fbbf24">$29 once, offline</text>
      <text x="392" y="312" fill="#6ee7b7">CC0, 260 clips</text>
      <text x="536" y="312" fill="#6ee7b7">Yes</text>
      <text x="640" y="312">4.2 and newer</text>
      <text x="24" y="348">Cinevva web animation library</text>
      <text x="262" y="348" fill="#6ee7b7">Free preview</text>
      <text x="392" y="348" fill="#6ee7b7">CC0, 260 clips</text>
      <text x="536" y="348" fill="#7dd3fc">Browser</text>
      <text x="640" y="348">n/a</text>
    </g>
    <line x1="24" y1="366" x2="696" y2="366" stroke="#1f2a44"/>
    <text x="24" y="388" font-size="12" fill="#9aa7b4">Prices and version ranges as listed on Blender Extensions, Superhive and Rokoko's docs, September 2026.</text>
  </g>
</svg>
<figcaption>"Follows the clip" means the retargeter adds no terms of its own, so a Mixamo clip stays under Mixamo's licence and a CC0 clip stays CC0.</figcaption>
</figure>
<h2>Common Questions</h2>
<h3>Is there a Mixamo add-on for Blender 4.2?</h3>
<p>Yes. Adobe's original was written for Blender 3.6 and broke on 4.0's bone collections, but the community continuation is on Blender Extensions as <a href="https://extensions.blender.org/add-ons/mixamo-rig/">Mixamo Rig</a>, version 1.2.2 from April 2026, listed for Blender 4.2 LTS with 5.5 and above marked unsupported. It does the same one-click IK control rig and bakes animations in and out. Install it from <code>Edit &gt; Preferences &gt; Get Extensions</code>.</p>
<h3>Is Mixamo still free in 2026?</h3>
<p>According to Adobe's <a href="https://helpx.adobe.com/creative-cloud/faq/mixamo-faq.html">Mixamo FAQ</a>, Mixamo is free for anyone with an Adobe ID and needs no Creative Cloud subscription, with the exceptions that Enterprise and Federated IDs can't use it and it isn't available to accounts with a China country code. Characters and animations are royalty free for commercial projects including games. The FAQ was last updated in September 2021, and Adobe says it doesn't support troubleshooting in third-party programs such as Blender.</p>
<h3>How do I import a Mixamo animation into Blender?</h3>
<p>Download the character once With Skin and each animation Without Skin, then <code>File &gt; Import &gt; FBX (.fbx)</code> for each file with Apply Transform off and, on the legacy importer, Automatic Bone Orientation and Ignore Leaf Bones on. Select your main armature, pick the imported action in the Action Editor dropdown, and press Push Down to store it as an NLA strip. Delete the extra armatures when you're done. Blender 5.0 and newer default to the faster C++ importer and keep the Python one as &quot;(Legacy)&quot;.</p>
<h3>Why is my Mixamo character so small in Blender?</h3>
<p>Mixamo files are in centimetres, so the importer sets the armature object's scale to 0.010 and parents the mesh under it, which displays at the right size. It looks tiny only when the mesh isn't parented or you changed the importer's Scale value. Don't apply the scale to one armature and not the others, because the imported actions keep hips location keys in centimetres and the character will fly 100 times too far.</p>
<h3>Why are my Mixamo animations not working in Blender?</h3>
<p>The character stays in T-pose when no action is assigned to that armature, or when the bone names in the action don't match the armature's. Mixamo bones are <code>mixamorig:Hips</code> and friends, and if one file came back as <code>mixamorig1:</code> or had the prefix stripped, none of the F-curves find a bone and nothing moves, with no error. Check the Action Editor dropdown first, then compare a bone name in the Graph Editor's data path against the armature, and use <code>Ctrl+F2</code> Batch Rename to make them match.</p>
<h3>How do I get root motion from Mixamo in Blender?</h3>
<p>Download the clip with &quot;In Place&quot; unticked so the forward motion is in the hips, then move the hips' horizontal location into a root bone and bake it. The <a href="https://extensions.blender.org/add-ons/import-mixamo-root-motion/">Import Mixamo - Root Motion</a> extension does this for a whole folder of files at once, strips the <code>mixamorig:</code> prefix, and names each action after its file. It's listed for Blender 4.2 LTS with 5.1 and above unsupported, so on newer Blender you do it by hand with a Copy Location constraint and Bake Action.</p>
<h3>What's the best Mixamo alternative for Blender?</h3>
<p>For the animations, Quaternius' CC0 Universal Animation Library gives you 250+ clips you can ship and redistribute with no licence line, retargeted onto your rig with Rokoko's free plugin or Auto-Rig Pro's Remap. If you'd like the rig and the library in one add-on, the Cinevva Rig add-on rigs a mesh and retargets 260 CC0 clips onto it inside Blender, on your own machine, for one $29 purchase, on Blender 4.2 and newer. Mixamo itself is still fine for grabbing a clip or two.</p>
<h2>Related</h2>
<ul>
<li><a href="/blender-addon/">Cinevva Rig for Blender</a>: rig a mesh, play 260 CC0 clips on it, export game-ready files, all inside Blender.</li>
<li><a href="/guides/free-character-animations-rigging">Free Character Animations and Auto-Rigging</a>: Mixamo's status and every free library and rigger, with licences verified.</li>
<li><a href="/guides/automatic-rigging-explained">How Automatic Rigging Works</a>: what an auto rigger does to your mesh and how to prepare a model for it.</li>
<li><a href="/guides/ai-animation-generators-3d">AI Animation Generators for 3D Characters</a>: text to motion, video mocap and library tools compared.</li>
<li><a href="/tools/animations">Character Animation Library</a>: upload a rigged GLB or FBX and preview 260 CC0 animations on it in the browser.</li>
<li><a href="/tools/animate">Prompt Animations</a>: describe a movement and get a clip retargeted onto your character.</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How to Optimize GLB Files for the Web: Draco, Meshopt, and KTX2 (2026)]]></title>
            <link>https://app.cinevva.com/guides/optimize-glb-for-web</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/optimize-glb-for-web</guid>
            <pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Optimize a GLB for the web: shrink textures first (WebP or KTX2), quantize, then Meshopt or Draco, then simplify. With gltf-transform and gltfpack commands.]]></description>
            <content:encoded><![CDATA[<h1>How to Optimize GLB Files for the Web: Draco, Meshopt, and KTX2 (2026)</h1>
<p><em>Last updated: September 2026.</em></p>
<figure class="guide-hero">
<img src="https://cdn.cinevva.com/guides/optimize-glb-for-web-hero.jpg?v=1" alt="A large treasure chest funnels through a tube into a tiny copy of itself" width="1216" height="640">
</figure>
<style>
.guide-hero { margin: 1.25rem 0 1.75rem; }
.guide-hero img { width: 100%; height: auto; border-radius: 12px; display: block; }
.guide-fig { margin: 1.5rem 0; }
.guide-fig > a { display: block; }
.guide-fig img, .guide-fig svg { width: 100%; height: auto; border-radius: 10px; border: 1px solid var(--vp-c-divider); display: block; }
.guide-fig svg { border: 0; }
.guide-fig figcaption { font-size: 0.9rem; color: var(--vp-c-text-2); margin: 0.5rem 0 0; }
</style>
<p>To optimize a GLB for the web, work in this order: shrink the textures first (cap them at 1024 or 2048, re-encode as WebP for download size or KTX2 for GPU memory), quantize the vertex data, compress the geometry with Meshopt (or Draco when the last few hundred kilobytes matter more than decode time), simplify the mesh if the triangle count is still silly, then prune, dedupe and join what's left. One command does most of it: <code>gltf-transform optimize in.glb out.glb --texture-compress webp</code>. The order matters because textures are usually 80 percent or more of the file and all of the video memory.</p>
<h2>Quick answer</h2>
<ul>
<li><strong>Texture-heavy model (most models):</strong> resize to 1024 or 2048, then <code>gltf-transform webp</code>. If it stutters or crashes on phones, convert to KTX2 instead, in the browser with the <a href="/tools/ktx2-compressor">KTX2 compressor</a> or with <code>gltf-transform etc1s</code>/<code>uastc</code>.</li>
<li><strong>Geometry-heavy model (scans, CAD, AI-generated):</strong> <code>gltf-transform simplify</code>, then <code>meshopt</code>. Draco compresses a bit smaller but decodes slower and needs a ten times larger decoder.</li>
<li><strong>Animated character:</strong> Meshopt, not Draco. Draco leaves animation tracks and morph targets untouched.</li>
<li><strong>File has to open in an engine you don't control:</strong> <code>gltf-transform quantize</code>. No decoder, only <code>KHR_mesh_quantization</code>, which every loader here reads.</li>
<li><strong>No terminal:</strong> the <a href="/tools/glb-optimizer">GLB optimizer</a> runs prune, weld, join, simplify, texture resizing to WebP and Meshopt in your browser with a size readout per step.</li>
</ul>
<h2>Quick reference</h2>
<table>
<thead>
<tr>
<th></th>
<th>Quantization only</th>
<th>Meshopt</th>
<th>Draco</th>
</tr>
</thead>
<tbody>
<tr>
<td>Extension</td>
<td><code>KHR_mesh_quantization</code></td>
<td><code>EXT_meshopt_compression</code> (+ quantization)</td>
<td><code>KHR_draco_mesh_compression</code></td>
</tr>
<tr>
<td>What it compresses</td>
<td>Vertex attributes (fewer bits)</td>
<td>Vertices, indices, morph targets, animation</td>
<td>Triangle-mesh geometry only</td>
</tr>
<tr>
<td>Size on our 28 MB test model</td>
<td>22.8 MB (8.1 MB gzipped)</td>
<td>5.1 MB (3.3 MB gzipped)</td>
<td>2.6 MB (2.5 MB gzipped)</td>
</tr>
<tr>
<td>Decoder</td>
<td>None</td>
<td>32 KB JS module with inline WASM</td>
<td>192 to 286 KB WASM plus 58 KB wrapper, 719 KB JS fallback</td>
</tr>
<tr>
<td>Decode speed</td>
<td>Instant, the GPU reads it directly</td>
<td>About 1 GB/s with WASM SIMD, per the spec</td>
<td>Considerably slower than Meshopt, per glTF-Transform docs</td>
</tr>
<tr>
<td>Needs gzip/brotli on the server</td>
<td>Helps a lot</td>
<td>Yes, designed for it</td>
<td>Little gain</td>
</tr>
<tr>
<td>Loaders</td>
<td>three.js, Babylon.js, PlayCanvas, glTFast</td>
<td>three.js r122+, Babylon.js 5.0+, glTFast (extra package), not PlayCanvas</td>
<td>three.js, Babylon.js, PlayCanvas, glTFast (extra package)</td>
</tr>
</tbody>
</table>
<p>The same numbers as bars, with the gltfpack and simplify results from the bake-off alongside.</p>
<figure class="guide-fig">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 420" role="img" aria-label="Bar chart of the 28.7 MB test model after each step: quantize 22.8 MB (8.1 MB gzipped), Meshopt 5.1 MB (3.3 MB gzipped), gltfpack -cc 4.4 MB (3.1 MB gzipped), Draco 2.6 MB (2.5 MB gzipped), simplify at ratio 0.25 gives 8.1 MB before compression">
  <rect width="720" height="420" rx="14" fill="#0b1020"/>
  <g font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif">
    <text x="24" y="40" font-size="20" font-weight="800" fill="#e8edf5">One model, every codec</text>
    <text x="24" y="62" font-size="13" fill="#9aa7b4">28.7 MB TRELLIS.2 output, 978,226 triangles. gltf-transform 4.5.0 and gltfpack 1.2.</text>
    <rect x="24" y="76" width="12" height="12" rx="2" fill="#7dd3fc"/>
    <text x="42" y="86" font-size="12" fill="#9aa7b4">raw file</text>
    <rect x="110" y="76" width="12" height="12" rx="2" fill="#6ee7b7"/>
    <text x="128" y="86" font-size="12" fill="#9aa7b4">gzipped</text>
    <g transform="translate(0,104)">
      <text x="24" y="12" font-size="13" fill="#e8edf5">Original</text>
      <text x="24" y="27" font-size="11" fill="#9aa7b4">float32 geometry, 1.1 MB textures</text>
      <rect x="210" y="0" width="430" height="14" rx="3" fill="#7dd3fc"/>
      <text x="648" y="11" font-size="12" fill="#e8edf5">28.7 MB</text>
    </g>
    <g transform="translate(0,150)">
      <text x="24" y="12" font-size="13" fill="#e8edf5">quantize</text>
      <text x="24" y="27" font-size="11" fill="#9aa7b4">KHR_mesh_quantization, no decoder</text>
      <rect x="210" y="0" width="342" height="14" rx="3" fill="#7dd3fc"/>
      <text x="560" y="11" font-size="12" fill="#e8edf5">22.8 MB</text>
      <rect x="210" y="17" width="121" height="14" rx="3" fill="#6ee7b7"/>
      <text x="339" y="28" font-size="12" fill="#e8edf5">8.1 MB</text>
    </g>
    <g transform="translate(0,196)">
      <text x="24" y="12" font-size="13" fill="#e8edf5">meshopt --level high</text>
      <text x="24" y="27" font-size="11" fill="#9aa7b4">EXT_meshopt_compression</text>
      <rect x="210" y="0" width="76" height="14" rx="3" fill="#7dd3fc"/>
      <text x="294" y="11" font-size="12" fill="#e8edf5">5.1 MB</text>
      <rect x="210" y="17" width="49" height="14" rx="3" fill="#6ee7b7"/>
      <text x="267" y="28" font-size="12" fill="#e8edf5">3.3 MB</text>
    </g>
    <g transform="translate(0,242)">
      <text x="24" y="12" font-size="13" fill="#e8edf5">gltfpack -cc</text>
      <text x="24" y="27" font-size="11" fill="#9aa7b4">Meshopt, higher compression mode</text>
      <rect x="210" y="0" width="66" height="14" rx="3" fill="#7dd3fc"/>
      <text x="284" y="11" font-size="12" fill="#e8edf5">4.4 MB</text>
      <rect x="210" y="17" width="46" height="14" rx="3" fill="#6ee7b7"/>
      <text x="264" y="28" font-size="12" fill="#e8edf5">3.1 MB</text>
    </g>
    <g transform="translate(0,288)">
      <text x="24" y="12" font-size="13" fill="#e8edf5">draco</text>
      <text x="24" y="27" font-size="11" fill="#9aa7b4">KHR_draco_mesh_compression</text>
      <rect x="210" y="0" width="39" height="14" rx="3" fill="#7dd3fc"/>
      <text x="257" y="11" font-size="12" fill="#e8edf5">2.6 MB</text>
      <rect x="210" y="17" width="37" height="14" rx="3" fill="#6ee7b7"/>
      <text x="255" y="28" font-size="12" fill="#e8edf5">2.5 MB</text>
    </g>
    <g transform="translate(0,334)">
      <text x="24" y="12" font-size="13" fill="#e8edf5">simplify --ratio 0.25</text>
      <text x="24" y="27" font-size="11" fill="#9aa7b4">244,556 triangles</text>
      <rect x="210" y="0" width="121" height="14" rx="3" fill="#c8a8ff"/>
      <text x="339" y="11" font-size="12" fill="#e8edf5">8.1 MB</text>
      <text x="210" y="28" font-size="11" fill="#9aa7b4">before compression, so any codec above still applies</text>
    </g>
    <line x1="24" y1="380" x2="696" y2="380" stroke="#ffffff14"/>
    <text x="24" y="400" font-size="12" fill="#9aa7b4">optimize defaults (ratio 0, error 0.0001) took the same file to 6,582 triangles.</text>
  </g>
</svg>
<figcaption>Draco wins on bytes but gzip adds almost nothing to it, while Meshopt and quantized output lean on the server compressor. Simplify is the only step that changes the triangle count, so its 8.1 MB is a new starting point rather than a finish line.</figcaption>
</figure>
<h2>Where the bytes go in a GLB</h2>
<p>Run <code>gltf-transform inspect model.glb</code> before anything else. It lists every mesh with vertex count and attribute types, every texture with its encoded size and <code>gpuSize</code>, and every animation with its keyframe count. The numbers in this guide come from the tool docs and extension specs plus a bake-off we ran this week with gltf-transform 4.5.0 and gltfpack 1.2 on two real files, and they show the two shapes you'll meet.</p>
<p>A 2.2 MB Sketchfab prop (a low-poly cup) had 680 triangles and 39 KB of geometry. The other 2.18 MB was three 1024×1024 PNGs, so textures were 98 percent of the file, and <code>inspect</code> estimated 5.59 MB of VRAM for each once mipmapped. That's the common case for hand-made assets.</p>
<p>A 28.7 MB TRELLIS.2 output was the opposite: 978,226 triangles and 27.5 MB of float32 geometry with only 1.1 MB of textures. But those two textures were 4096×4096, which <code>inspect</code> puts at 89.5 MB of VRAM each. Models from the <a href="/tools/hunyuan3d">3D model generator</a> and its peers routinely arrive like this, dense and over-textured, so they need the geometry steps as well as the texture steps.</p>
<figure class="guide-fig">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 320" role="img" aria-label="Stacked bars of encoded bytes by content: a typical hand-made asset is 80 percent or more textures, the 2.2 MB cup is 98 percent textures with 39 KB of geometry, the 28.7 MB TRELLIS.2 model is 27.5 MB geometry and 1.1 MB textures, with VRAM per texture of 5.59 MB and 89.5 MB">
  <rect width="720" height="320" rx="14" fill="#0b1020"/>
  <g font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif">
    <text x="24" y="40" font-size="20" font-weight="800" fill="#e8edf5">Where the bytes go</text>
    <text x="24" y="62" font-size="13" fill="#9aa7b4">Encoded size by content. GPU memory is a separate number, on the right.</text>
    <rect x="24" y="76" width="12" height="12" rx="2" fill="#7dd3fc"/>
    <text x="42" y="86" font-size="12" fill="#9aa7b4">textures</text>
    <rect x="112" y="76" width="12" height="12" rx="2" fill="#c8a8ff"/>
    <text x="130" y="86" font-size="12" fill="#9aa7b4">geometry</text>
    <rect x="206" y="76" width="12" height="12" rx="2" fill="#4b5563"/>
    <text x="224" y="86" font-size="12" fill="#9aa7b4">everything else (animation, JSON, skins)</text>
    <g transform="translate(0,114)">
      <text x="24" y="0" font-size="13" fill="#e8edf5">Typical hand-made asset</text>
      <rect x="24" y="8" width="397" height="22" rx="4" fill="#7dd3fc"/>
      <text x="34" y="24" font-size="12" font-weight="700" fill="#0b1020">textures, 80 percent or more</text>
      <rect x="421" y="8" width="99" height="22" rx="4" fill="#4b5563"/>
      <text x="431" y="23" font-size="10" fill="#e8edf5">everything else</text>
      <text x="536" y="24" font-size="12" fill="#9aa7b4">typical split</text>
    </g>
    <g transform="translate(0,184)">
      <text x="24" y="0" font-size="13" fill="#e8edf5">2.2 MB Sketchfab cup, 680 triangles</text>
      <rect x="24" y="8" width="486" height="22" rx="4" fill="#7dd3fc"/>
      <text x="34" y="24" font-size="12" font-weight="700" fill="#0b1020">three 1024x1024 PNGs, 2.18 MB (98 percent)</text>
      <rect x="510" y="8" width="10" height="22" rx="2" fill="#c8a8ff"/>
      <rect x="24" y="38" width="8" height="8" rx="1" fill="#c8a8ff"/>
      <text x="38" y="46" font-size="11" fill="#9aa7b4">geometry 39 KB</text>
      <text x="536" y="20" font-size="13" font-weight="800" fill="#fbbf24">5.59 MB VRAM</text>
      <text x="536" y="36" font-size="11" fill="#9aa7b4">per texture, mipmapped</text>
    </g>
    <g transform="translate(0,254)">
      <text x="24" y="0" font-size="13" fill="#e8edf5">28.7 MB TRELLIS.2 output, 978,226 triangles</text>
      <rect x="24" y="8" width="477" height="22" rx="4" fill="#c8a8ff"/>
      <text x="34" y="24" font-size="12" font-weight="700" fill="#0b1020">float32 geometry, 27.5 MB</text>
      <rect x="501" y="8" width="19" height="22" rx="4" fill="#7dd3fc"/>
      <rect x="24" y="38" width="8" height="8" rx="1" fill="#7dd3fc"/>
      <text x="38" y="46" font-size="11" fill="#9aa7b4">textures 1.1 MB, two 4096x4096</text>
      <text x="536" y="20" font-size="13" font-weight="800" fill="#fb7185">89.5 MB VRAM</text>
      <text x="536" y="36" font-size="11" fill="#9aa7b4">per texture, mipmapped</text>
    </g>
  </g>
</svg>
<figcaption>The typical row is the rule of thumb, the other two are the real files from the bake-off. Note the right column: the cup's 1024 textures and the TRELLIS.2 4096 textures are both small on disk and wildly different in video memory.</figcaption>
</figure>
<p>Note that encoded texture size and GPU size are unrelated. A 4 MB PNG and a 200 KB WebP of the same 2048×2048 image both become about 22 MB in video memory, raw pixels plus mipmaps. Only KTX2 changes that number.</p>
<p>The six steps below run in this order because each one shrinks what the next has to work on.</p>
<figure class="guide-fig">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 380" role="img" aria-label="Six-step triage order for shrinking a GLB: textures, quantize, Meshopt or Draco, simplify, prune and join, then animation, each with its effect on the 28.7 MB test model">
  <rect width="720" height="380" rx="14" fill="#0b1020"/>
  <g font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif">
    <text x="24" y="40" font-size="20" font-weight="800" fill="#e8edf5">The triage order</text>
    <text x="24" y="62" font-size="13" fill="#9aa7b4">Biggest win first. Sizes are from the 28.7 MB test model.</text>
    <line x1="40" y1="100" x2="40" y2="340" stroke="#ffffff22" stroke-width="2"/>
    <g transform="translate(0,100)">
      <circle cx="40" cy="0" r="14" fill="#7dd3fc"/>
      <text x="40" y="5" font-size="13" font-weight="800" fill="#0b1020" text-anchor="middle">1</text>
      <text x="68" y="-3" font-size="14" font-weight="700" fill="#e8edf5">Textures: cap at 1024 or 2048, then WebP or KTX2</text>
      <text x="68" y="15" font-size="12" fill="#9aa7b4">Usually 80 percent or more of the file and all of the video memory</text>
    </g>
    <g transform="translate(0,148)">
      <circle cx="40" cy="0" r="14" fill="#c8a8ff"/>
      <text x="40" y="5" font-size="13" font-weight="800" fill="#0b1020" text-anchor="middle">2</text>
      <text x="68" y="-3" font-size="14" font-weight="700" fill="#e8edf5">Quantize</text>
      <text x="68" y="15" font-size="12" fill="#9aa7b4">28.7 MB to 22.8 MB (8.1 MB gzipped), no decoder, every loader reads it</text>
    </g>
    <g transform="translate(0,196)">
      <circle cx="40" cy="0" r="14" fill="#6ee7b7"/>
      <text x="40" y="5" font-size="13" font-weight="800" fill="#0b1020" text-anchor="middle">3</text>
      <text x="68" y="-3" font-size="14" font-weight="700" fill="#e8edf5">Meshopt or Draco</text>
      <text x="68" y="15" font-size="12" fill="#9aa7b4">5.1 MB (3.3 gzipped) or 2.6 MB (2.5 gzipped), decoder on the client</text>
    </g>
    <g transform="translate(0,244)">
      <circle cx="40" cy="0" r="14" fill="#fbbf24"/>
      <text x="40" y="5" font-size="13" font-weight="800" fill="#0b1020" text-anchor="middle">4</text>
      <text x="68" y="-3" font-size="14" font-weight="700" fill="#e8edf5">Simplify</text>
      <text x="68" y="15" font-size="12" fill="#9aa7b4">978,226 triangles to 244,556 at ratio 0.25, identical at game distance</text>
    </g>
    <g transform="translate(0,292)">
      <circle cx="40" cy="0" r="14" fill="#f0abfc"/>
      <text x="40" y="5" font-size="13" font-weight="800" fill="#0b1020" text-anchor="middle">5</text>
      <text x="68" y="-3" font-size="14" font-weight="700" fill="#e8edf5">Prune, dedupe, join, instance</text>
      <text x="68" y="15" font-size="12" fill="#9aa7b4">Free wins: drops what nothing references, turns 200 draw calls into a handful</text>
    </g>
    <g transform="translate(0,340)">
      <circle cx="40" cy="0" r="14" fill="#fb7185"/>
      <text x="40" y="5" font-size="13" font-weight="800" fill="#0b1020" text-anchor="middle">6</text>
      <text x="68" y="-3" font-size="14" font-weight="700" fill="#e8edf5">Animation: resample</text>
      <text x="68" y="15" font-size="12" fill="#9aa7b4">Drops keyframes that sit on the line between their neighbours, lossless in practice</text>
    </g>
  </g>
</svg>
<figcaption>Follow the numbers top to bottom. Steps 1 and 4 are where most of the bytes are, step 2 is invisible except on a giant single mesh, and step 5 is the one to run with care on a rigged character, since join fuses parts that should move.</figcaption>
</figure>
<h2>Step 1: textures</h2>
<p>Two separate problems, two separate fixes.</p>
<p><strong>Download size</strong> is fixed by resizing and re-encoding. Few props need more than 1024×1024, and a hero character rarely needs more than 2048. <code>gltf-transform resize --width 1024 --height 1024</code> caps dimensions without ever upscaling, and <code>gltf-transform webp</code> re-encodes with sharp. On the cup, WebP alone took the file from 2.23 MB to 246 KB. Resizing to 512 first took it to 96 KB with no visible change on a prop that size. WebP needs <code>EXT_texture_webp</code>, which the web engines read and Unity's glTFast does not (its feature table says it &quot;will not become supported&quot;).</p>
<p><strong>GPU memory and upload time</strong> are fixed only by KTX2 with Basis Universal supercompression, which keeps the texture in a GPU block format all the way into VRAM at 4 to 8 times less memory than raw RGBA. It gets its own section below because the settings matter.</p>
<p>One caution from the bake-off: <code>gltf-transform optimize</code> defaults to <code>--texture-compress auto</code>, which re-encodes textures in their original format. On the cup that made the PNGs larger and the file grew from 2.2 MB to 2.8 MB. Pass <code>webp</code> or <code>ktx2</code> explicitly.</p>
<h2>Step 2: quantize</h2>
<p>Quantization stores each vertex attribute in fewer bits. A position goes from three 32-bit floats to three 16-bit integers with the scale and offset folded into the node transform (or into <code>inverseBindMatrices</code> for skinned meshes). The <a href="https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_mesh_quantization/README.md">KHR_mesh_quantization</a> spec puts a typical vertex at roughly 20 bytes instead of 48. It's a ratified Khronos extension with no decoder: the GPU reads the integer attributes directly, so quantized files are cheaper in VRAM as well as on the wire.</p>
<p>glTF-Transform's defaults are 14 bits for positions, 10 for normals and tangents, 12 for UVs, 8 for colors and weights. gltfpack's are 14, 8, 12 and 8. Both are invisible except on a giant single mesh, where 14 bits across the whole extent can show as faceting. Alone, quantization is modest: our 28 MB model dropped to 22.8 MB raw and 8.1 MB gzipped. Its real job is to be the first half of Meshopt, and the safe output when the destination loader is uncertain. Draco quantizes internally with the same defaults, so don't run <code>quantize</code> before <code>draco</code>.</p>
<h2>Step 3: Meshopt or Draco</h2>
<p>Both are lossy geometry codecs that decode to plain buffers before GPU upload, so neither makes the model render faster. They shrink the download. The differences are what they compress, how fast they decode, and how much decoder you ship.</p>
<p><strong>Meshopt</strong> (<a href="https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Vendor/EXT_meshopt_compression/README.md">EXT_meshopt_compression</a>) works at the bufferView level, so vertex attributes, indices, morph target deltas and animation keyframes all get compressed. It's designed to sit on top of quantization and under gzip or brotli: the codec makes the bytes regular and the CDN's general-purpose compressor does the rest. The spec quotes decode speeds around 1 GB/s with WebAssembly SIMD, and the three.js decoder is a single 32 KB module. On the test model: 5.1 MB raw, 3.3 MB gzipped, at the default <code>--level high</code>.</p>
<p><strong>Draco</strong> (<a href="https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_draco_mesh_compression/README.md">KHR_draco_mesh_compression</a>) compresses triangle-mesh primitives only. Animation, morph targets, points and lines pass through untouched. It compresses harder, 2.6 MB on the same model, and gzip barely helps because the output is already dense. The cost is decode time and decoder weight: glTF-Transform's docs say plainly that Meshopt decoding is considerably faster, and the WASM decoder three.js bundles is 286 KB (192 KB for the glTF-branch build) plus a 58 KB wrapper, with a 719 KB JavaScript fallback. Draco also reorders and can change the number of vertices.</p>
<p>So: Meshopt for anything animated, anything with morph targets, anything where load time on a phone is the point, and anything served with brotli on. Draco when the asset is a static mesh, geometry dominates, and 20 to 30 percent off the wire is worth a slower first frame. Not sure? Meshopt. gltfpack's <code>-cc</code> (Meshopt in its stronger mode) landed at 4.4 MB raw and 3.1 MB gzipped on the same file.</p>
<h2>Step 4: simplify</h2>
<p>If the model is still large after compression, it has too many triangles, and no codec fixes that. Both tools use the meshoptimizer simplifier, which takes a target ratio and an error bound and stops at whichever it hits first.</p>
<p><code>gltf-transform simplify --ratio 0.25 --error 0.01</code> aims for 25 percent of the vertices within 1 percent of the mesh radius of deviation. On the 978k-triangle model that gave 244,556 triangles and 8.1 MB before compression, identical at game distance. The <code>optimize</code> defaults are more aggressive than you'd guess: <code>--simplify-ratio 0</code> with <code>--simplify-error 0.0001</code>, meaning &quot;remove as much as possible within 0.01 percent error&quot;. On the same over-tessellated model that collapsed it to 6,582 triangles, because the generator had spent nearly a million triangles on flat surfaces. Weld before simplifying (<code>optimize</code> does), because split vertices stop the simplifier at seams.</p>
<p>gltfpack's <code>-si 0.25</code> is the same idea, with <code>-se 0.01</code> as the default error limit, <code>-sa</code> to hit the ratio regardless of quality, and <code>-slb</code> to lock border vertices so modular meshes don't open gaps. Hard-surface props tolerate 50 percent easily, scanned and AI-generated meshes usually tolerate 90 percent removal, and rigged characters need care near joints because collapsing vertices also collapses skin weights.</p>
<h2>Step 5: prune, dedupe, join, instance</h2>
<p>These are free wins and <code>optimize</code> runs all of them. <code>prune</code> removes materials, textures, accessors and nodes nothing references, and converts single-colour textures into material factors. <code>dedup</code> merges identical accessors and textures an exporter wrote twice. <code>flatten</code> collapses the hierarchy and <code>join</code> merges meshes that share a material, which is what turns 200 draw calls into a handful. <code>instance</code> (from 5 copies up) converts repeated meshes into <code>EXT_mesh_gpu_instancing</code>, and <code>palette</code> merges materials that differ only in colour.</p>
<p>Don't <code>join</code> or <code>flatten</code> a rigged character or anything your game moves in parts, because the parts vanish into one mesh. gltfpack's escape is <code>-kn</code> (keep named nodes) and <code>-km</code> (keep named materials).</p>
<h2>Step 6: animation</h2>
<p>Exporters often bake a keyframe on every frame. <code>gltf-transform resample</code> drops keyframes that sit on the line between their neighbours (tolerance <code>1e-4</code> by default), which is lossless in practice. gltfpack's <code>-af 30</code> resamples every track at 30 Hz and quantizes translations to 16 bits, rotations to 12 and scale to 16 (<code>-at</code>, <code>-ar</code>, <code>-as</code>) before Meshopt compresses them. On a typical character with a handful of clips this is a small step. On a motion library it can be most of the bytes.</p>
<h2>The command lines</h2>
<p>glTF-Transform's CLI is <code>npm install --global @gltf-transform/cli</code>, or <code>npx @gltf-transform/cli</code>. One shot:</p>
<pre><code class="language-bash">gltf-transform optimize in.glb out.glb --texture-compress webp --texture-size 1024
</code></pre>
<p>That runs, in order, dedup, instance, palette, flatten, join, weld, simplify (ratio 0, error 0.0001), resample, prune, sparse, texture compression at a 1024 cap, and Meshopt at level high. Add <code>--compress draco</code> for Draco, <code>--compress quantize</code> for quantization only, <code>--no-join --no-flatten</code> for rigged or articulated models, <code>--simplify false</code> if the silhouette matters more than the bytes, and <code>--texture-compress ktx2</code> if KTX-Software is installed.</p>
<p>The individual steps when you want control:</p>
<pre><code class="language-bash">gltf-transform inspect in.glb
gltf-transform resize in.glb a.glb --width 1024 --height 1024
gltf-transform webp a.glb b.glb --quality 80
gltf-transform weld b.glb c.glb
gltf-transform simplify c.glb d.glb --ratio 0.5 --error 0.001
gltf-transform meshopt d.glb out.glb --level high
</code></pre>
<p>Swap the last line for <code>gltf-transform draco d.glb out.glb</code> (<code>--encode-speed</code> and <code>--decode-speed</code> run 0 to 10, default 5, lower is smaller) or <code>gltf-transform quantize d.glb out.glb</code>.</p>
<p>gltfpack is <code>npm install -g gltfpack</code> or a native binary from the meshoptimizer releases, which the README recommends for large files. Its defaults already quantize, optimize vertex order for the GPU cache and merge meshes:</p>
<pre><code class="language-bash">gltfpack -i in.glb -o out.glb -cc -si 0.5 -tw -tl 1024 -kn
</code></pre>
<p><code>-cc</code> is Meshopt in the higher compression mode (<code>-c</code> is the fast mode, <code>-cf</code> adds an uncompressed fallback for loaders without the decoder). <code>-si 0.5</code> halves the triangles within <code>-se 0.01</code>. <code>-tw</code> converts textures to WebP and <code>-tl 1024</code> caps their size. <code>-kn</code> keeps named nodes. For KTX2 swap <code>-tw</code> for <code>-tc</code> (ETC1S) or <code>-tc -tu</code> (UASTC), which needs a gltfpack build with Basis Universal linked in.</p>
<p>If neither CLI is an option, the browser tool runs the same sequence.</p>
<figure class="guide-fig"><a href="/tools/glb-optimizer"><img src="https://cdn.cinevva.com/guides/shots/glb-optimizer.png" alt="GLB optimizer page showing a 4.0 MB sample character shrinking to 676 KB with a size after each step" loading="lazy" width="704" height="788"></a><figcaption>The no-terminal route: prune, weld, join, simplify, texture resizing to WebP and Meshopt in the browser, with a size readout after each step so you can see which one did the work.</figcaption></figure>
<h2>KTX2: ETC1S or UASTC</h2>
<p>KTX2 is Khronos's container for GPU textures. With Basis Universal supercompression the texture is transcoded at load time to whatever block format the device has (BC on desktop, ASTC or ETC2 on mobile) and stays compressed in memory. The glTF extension is <a href="https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_texture_basisu/README.md">KHR_texture_basisu</a>.</p>
<p>Basis has two modes. <strong>ETC1S</strong> is the small one: the <a href="https://github.com/BinomialLLC/basis_universal">Basis README</a> puts it at roughly 0.3 to 3 bits per pixel on disk with a JPEG-like quality dial (1 to 255, default 128), and it lands in memory at 4 bits per pixel in formats like BC1 and ETC1. Use it for base colour on props. <strong>UASTC</strong> is the quality one: 8 bits per pixel in memory, a 19-mode subset of ASTC 4×4, quality levels 0 to 4 (default 2, which glTF-Transform's help lists at 47.47 dB). UASTC files are large on disk, so pair them with Zstandard: glTF-Transform's <code>uastc</code> defaults to <code>--zstd 18</code>, and <code>ktx create --zstd</code> takes 1 to 22.</p>
<p>The arithmetic for a 2048×2048 texture with mipmaps: about 22 MB as RGBA8, about 5.6 MB as UASTC, about 2.8 MB as ETC1S transcoded to a 4 bpp format.</p>
<p>Three rules bite. <strong>Normal and data maps want UASTC and linear.</strong> glTF-Transform warns that RGB normal maps and occlusion/roughness/metalness maps can look bad under ETC1S, and the spec requires colour textures tagged sRGB and non-colour data tagged linear. glTF-Transform sets that per slot for you. In the <a href="/tools/ktx2-compressor">KTX2 compressor</a> it's the sRGB toggle, on for colour, off for normal and data maps. <strong>Dimensions must be multiples of 4</strong>, powers of two recommended. <strong>Generate mipmaps.</strong> The spec says a KTX2 used with mipmapped minification should carry the full pyramid, or the engine has to decompress and build them at runtime. Mipmaps are on by default in glTF-Transform and the browser tool, and <code>--generate-mipmap</code> in <code>ktx create</code>.</p>
<p>The glTF-Transform commands need the <code>ktx</code> binary from <a href="https://github.com/KhronosGroup/KTX-Software">KTX-Software</a>, 4.4.0 or later:</p>
<pre><code class="language-bash">gltf-transform uastc in.glb a.glb --level 2 --zstd 18 --slots &quot;{normalTexture,occlusionTexture,metallicRoughnessTexture}&quot;
gltf-transform etc1s a.glb out.glb --quality 128
</code></pre>
<p>UASTC on the data slots first, ETC1S on the rest. That split, ETC1S for base colour and emissive and UASTC for normals and ORM, is the usual one.</p>
<h2>Loading the result</h2>
<p>Every codec except quantization needs a decoder on the client.</p>
<p><strong>three.js.</strong> <code>GLTFLoader</code> reads <code>KHR_mesh_quantization</code> and <code>EXT_texture_webp</code> with no setup. For the others you attach decoders, which ship in the <code>three</code> package under <code>examples/jsm/libs/</code> as <code>draco/</code>, <code>basis/</code> and <code>meshopt_decoder.module.js</code>. Copy <code>draco/</code> and <code>basis/</code> to a public path, then:</p>
<pre><code class="language-js">import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'
import { DRACOLoader } from 'three/addons/loaders/DRACOLoader.js'
import { KTX2Loader } from 'three/addons/loaders/KTX2Loader.js'
import { MeshoptDecoder } from 'three/addons/libs/meshopt_decoder.module.js'

const draco = new DRACOLoader().setDecoderPath('/libs/draco/')
const ktx2 = new KTX2Loader().setTranscoderPath('/libs/basis/').detectSupport(renderer)
const loader = new GLTFLoader()
  .setDRACOLoader(draco)
  .setKTX2Loader(ktx2)
  .setMeshoptDecoder(MeshoptDecoder)
</code></pre>
<p><code>DRACOLoader</code> picks the WASM decoder when the browser supports it and falls back to JS. <code>detectSupport(renderer)</code> lets <code>KTX2Loader</code> choose the transcode target for the device's GPU.</p>
<p><strong>Babylon.js.</strong> The glTF loader handles Draco, Meshopt (since 5.0, no setup) and KTX2 by downloading decoders from <code>https://cdn.babylonjs.com</code> and running them in web workers. To self-host, set <code>Tools.CDNBaseUrl</code>, or point the individual configs: <code>DracoDecoder.DefaultConfiguration</code> (<code>wasmUrl</code>, <code>wasmBinaryUrl</code>, <code>fallbackUrl</code>), <code>MeshoptCompression.Configuration.decoder.url</code>, and <code>KhronosTextureContainer2.URLConfig</code> for the KTX2 transcoder set. With npm, <code>@babylonjs/ktx2decoder</code> bundles the transcoders.</p>
<p><strong>PlayCanvas.</strong> Draco is configured with <code>dracoInitialize({ jsUrl, wasmUrl, numWorkers, lazyInit })</code>, and the Editor can Draco-compress at import. KTX2 goes through <code>basisInitialize({ glueUrl, wasmUrl, fallbackUrl })</code>. <code>EXT_meshopt_compression</code> is not in the GLB parser as of engine 2.x (the 2020 feature request is still open), so for PlayCanvas pick Draco or quantization-only output.</p>
<p><strong>Unity.</strong> The official importer is glTFast (<code>com.unity.cloud.gltfast</code>). <code>KHR_mesh_quantization</code> works out of the box, Draco needs <code>com.unity.cloud.draco</code>, KTX2 needs <code>com.unity.cloud.ktx</code>, and Meshopt needs <code>com.unity.meshopt.decompress</code>. WebP is unsupported by design, so for a Unity target use KTX2.</p>
<h2>Targets for a mobile web game</h2>
<p>There's no spec for this, but there are numbers that keep phones happy. Keep the whole first scene under about 10 MB over the wire and stream the rest (the <a href="/tutorials/streaming-asset-loading">streaming asset loading tutorial</a> covers the tiers and the code). Keep texture VRAM under 150 to 200 MB, which is four or five 2048 textures as RGBA8 or thirty as ETC1S. Keep props under 5,000 triangles, a hero character under 30,000 to 50,000, and draw calls in the low hundreds. Use 1024 textures for props and 2048 only for what the camera gets close to. Serve GLBs with brotli or gzip on, because Meshopt and quantized output rely on it.</p>
<h2>Verify before you ship</h2>
<p>File size is the easy number. Open the result in the <a href="/tools/glb-viewer">GLB viewer</a> and read the rest: the Extensions panel confirms <code>EXT_meshopt_compression</code>, <code>KHR_draco_mesh_compression</code> or <code>KHR_texture_basisu</code> actually made it into the file, the Textures tab lists each texture with its real VRAM cost largest first, and the status bar shows live draw calls and triangle count. Then check silhouettes and UV seams for simplification artefacts at the distance the player sees them, and play any animations to make sure joining didn't fuse a part that should move. If the source wasn't a GLB to begin with, run the FBX or OBJ through the <a href="/tools/fbx-to-glb">FBX to GLB converter</a> first, so you're compressing the file you'll actually load.</p>
<figure class="guide-fig"><a href="/tools/glb-viewer"><img src="https://cdn.cinevva.com/guides/shots/glb-viewer.png" alt="GLB viewer page with a frog character and an overview panel of triangles, draw calls, bones and geometry size" loading="lazy" width="704" height="876"></a><figcaption>Open the compressed output here to confirm the extension actually made it into the file, then read draw calls and triangle count off the status bar and each texture's real VRAM cost from the Textures tab.</figcaption></figure>
<h2>Common Questions</h2>
<h3>How do I reduce GLB file size?</h3>
<p>Run <code>gltf-transform inspect</code> to see whether textures or geometry dominate. If textures, resize to 1024 or 2048 and convert to WebP or KTX2. If geometry, simplify and then compress with Meshopt or Draco. <code>gltf-transform optimize in.glb out.glb --texture-compress webp</code> does the whole sequence, and the browser <a href="/tools/glb-optimizer">GLB optimizer</a> does it with no install.</p>
<h3>Draco vs Meshopt: which is better?</h3>
<p>Meshopt for most web games. It decodes far faster, ships a 32 KB decoder instead of a few hundred kilobytes of WASM, and compresses animation and morph targets, which Draco skips. Draco produces smaller files for static meshes (2.6 MB against 3.3 MB gzipped on our 28 MB test model) and is the one PlayCanvas supports, so it wins when the asset is a static scan and geometry is most of the bytes.</p>
<h3>What is KTX2 and how is it different from Basis?</h3>
<p>Basis Universal is the compression codec, with two modes, ETC1S and UASTC. KTX2 is the Khronos container file that holds Basis-compressed texture data plus mipmaps and metadata, and it's what glTF references through <code>KHR_texture_basisu</code>. Older pipelines used a bare <code>.basis</code> file. Use <code>.ktx2</code>.</p>
<h3>Should I use ETC1S or UASTC?</h3>
<p>ETC1S for base colour and anything not seen up close: small files and 4 bits per pixel in VRAM. UASTC for normal maps, roughness/metalness/occlusion and hero textures, with Zstandard supercompression on so the download stays reasonable. Tag colour textures sRGB and data textures linear, or the normals will shade wrong.</p>
<h3>How do I compress glTF textures?</h3>
<p>For download size, <code>gltf-transform resize</code> then <code>gltf-transform webp</code>. For GPU memory, <code>gltf-transform etc1s</code> or <code>uastc</code> with KTX-Software installed, or drop the PNGs on the <a href="/tools/ktx2-compressor">KTX2 compressor</a>. Cap dimensions first either way: a 4096 texture is 89 MB of VRAM as RGBA8 and there's almost never a reason to ship one in a browser.</p>
<h3>Why is my GLB too large for three.js on mobile?</h3>
<p>Usually it isn't the file size, it's texture memory. Four 2048 RGBA textures are about 90 MB of VRAM before the scene has drawn anything, and phone browsers kill the tab past a few hundred. Convert to KTX2 so textures stay compressed on the GPU, cap them at 1024 where you can, and call <code>KTX2Loader.detectSupport(renderer)</code> so it transcodes to the device's format.</p>
<h3>Does gltfpack do the same thing as gltf-transform?</h3>
<p>Mostly. gltfpack is a single native binary from the meshoptimizer project that quantizes, reorders vertices for the GPU cache, merges meshes and Meshopt-compresses by default. glTF-Transform is a Node library and CLI with the same operations as separate scriptable steps, plus Draco output, which gltfpack doesn't write. On our test file their Meshopt outputs landed within about 10 percent of each other.</p>
<h2>Related</h2>
<ul>
<li><a href="/tutorials/streaming-asset-loading">Streaming asset loading for web games</a>: tiers, priority queues and progress bars for the files you just shrank</li>
<li><a href="/guides/web-games-stack-2026">Web Games Tech Stack in 2026</a>: WebGL, WebGPU, Wasm and asset formats at the API level</li>
<li><a href="/guides/free-3d-model-sites">Free 3D Model Sites</a>: where the models come from, and why they arrive heavy</li>
<li><a href="/guides/ai-3d-model-generators">Best AI 3D Model Generators</a>: what the generators output and how dense it is</li>
<li><a href="/guides/threejs-vs-babylonjs">Three.js vs Babylon.js</a>: both load Draco, Meshopt and KTX2, with different setup</li>
<li><a href="/guides/playcanvas-vs-threejs">PlayCanvas vs Three.js</a>: engine versus library, including asset pipelines</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[WebGL 2 or WebGPU Not Supported? How to Fix It in Every Browser (2026)]]></title>
            <link>https://app.cinevva.com/guides/webgl-webgpu-not-supported-fix</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/webgl-webgpu-not-supported-fix</guid>
            <pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[How to fix WebGL 2 or WebGPU not supported errors in Chrome, Edge, Firefox and Safari: check chrome://gpu, turn hardware acceleration on, update GPU drivers.]]></description>
            <content:encoded><![CDATA[<h1>WebGL 2 or WebGPU Not Supported? How to Fix It in Every Browser (2026)</h1>
<p><em>Last updated: September 2026.</em></p>
<figure class="guide-hero">
<img src="https://cdn.cinevva.com/guides/webgl-webgpu-not-supported-fix-hero.jpg?v=1" alt="A browser window showing a black game canvas and a WebGL not supported warning" width="1216" height="640">
</figure>
<style>
.guide-hero { margin: 1.25rem 0 1.75rem; }
.guide-hero img { width: 100%; height: auto; border-radius: 12px; display: block; }
.guide-fig { margin: 1.5rem 0; }
.guide-fig > a { display: block; }
.guide-fig img, .guide-fig svg { width: 100%; height: auto; border-radius: 10px; border: 1px solid var(--vp-c-divider); display: block; }
.guide-fig svg { border: 0; }
.guide-fig figcaption { font-size: 0.9rem; color: var(--vp-c-text-2); margin: 0.5rem 0 0; }
</style>
<p>If a game or 3D page says your browser doesn't support WebGL 2 or WebGPU, the cause is almost always one of four things: hardware acceleration is switched off, your GPU or driver is on the browser's blocklist, the browser is too old for the API, or you're in a virtual machine or remote desktop session with no real GPU. Turn hardware acceleration on, update the graphics driver, update the browser, and confirm the result with a capability test. For WebGPU, also check the platform: as of September 2026 Firefox only ships it on Windows and Apple Silicon Macs, and Chrome on Linux only on Intel Gen12+ and recent NVIDIA hardware.</p>
<p>This is the troubleshooting page. To understand the two APIs and pick one to build on, read <a href="/guides/webgpu-vs-webgl-games">WebGPU vs WebGL for Games</a>.</p>
<h2>Quick answer</h2>
<ul>
<li><strong>Diagnose first:</strong> open the <a href="/tools/webgl-webgpu-checker">WebGL and WebGPU checker</a>. It shows whether WebGPU, WebGL 2 and WebGL 1 work and names the GPU your browser is using. If the renderer says SwiftShader, llvmpipe or &quot;Software&quot;, you're on CPU rendering and the fixes below apply.</li>
<li><strong>Chrome and Edge:</strong> Settings, System, turn on &quot;Use graphics acceleration when available&quot;, relaunch. Check <code>chrome://gpu</code> (or <code>edge://gpu</code>). If WebGL is &quot;Software only&quot; or &quot;Unavailable&quot;, update the GPU driver. Last resort: <code>chrome://flags/#ignore-gpu-blocklist</code>.</li>
<li><strong>Firefox:</strong> Settings, General, Performance, untick &quot;Use recommended performance settings&quot;, tick &quot;Use hardware acceleration when available&quot;. Check <code>about:support</code>, Graphics. Last resort: <code>about:config</code>, <code>webgl.force-enabled</code> to <code>true</code>.</li>
<li><strong>Safari:</strong> update to Safari 26 for WebGPU and Safari 15 or newer for WebGL 2. There's no acceleration toggle to flip.</li>
<li><strong>The Unity &quot;does not support graphics API WebGL 2&quot; message</strong> means <code>canvas.getContext('webgl2')</code> returned nothing. Same fixes, and on Safari it means a version older than 15.</li>
<li><strong>Work or school device, VM, remote desktop:</strong> the GPU is blocked by policy or isn't there. Ask IT, or play on a device with a real GPU.</li>
</ul>
<h2>Quick reference</h2>
<p>WebGPU support as of September 2026, from the <a href="https://github.com/gpuweb/gpuweb/wiki/Implementation-Status">WebGPU implementation status</a> wiki (updated August 13, 2026), Firefox and WebKit release notes, and caniuse.</p>
<table>
<thead>
<tr>
<th>Browser</th>
<th>Windows</th>
<th>macOS</th>
<th>Linux</th>
<th>Android</th>
<th>iOS and iPadOS</th>
</tr>
</thead>
<tbody>
<tr>
<td>Chrome and Edge</td>
<td>113+ (Windows on ARM: behind a flag)</td>
<td>113+</td>
<td>144+ on Intel Gen12+, 147+ on NVIDIA (driver 535.183.01+) under Wayland, others behind flags</td>
<td>121+ on Android 12+ with ARM, Qualcomm or Intel GPUs, 139+ for Imagination on Android 16+, Samsung Xclipse in progress</td>
<td>Uses Apple's WebKit engine, so test on the device</td>
</tr>
<tr>
<td>Firefox</td>
<td>141+ (July 22, 2025)</td>
<td>145+ on macOS 26 with Apple Silicon, 147+ on all supported macOS with Apple Silicon, Intel Macs Nightly only</td>
<td>Nightly only, shipping planned for 2026</td>
<td>Behind a flag</td>
<td>Uses Apple's WebKit engine</td>
</tr>
<tr>
<td>Safari</td>
<td>n/a</td>
<td>26+ (September 15, 2025, on macOS Tahoe, Sequoia and Sonoma)</td>
<td>n/a</td>
<td>n/a</td>
<td>26+</td>
</tr>
</tbody>
</table>
<figure class="guide-fig">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 384" role="img" aria-label="WebGPU support grid as of September 2026: Chrome and Edge shipped on Windows and macOS from 113, Android from 121, Linux only on Intel Gen12+ from 144 and NVIDIA from 147. Firefox shipped on Windows from 141, Apple Silicon Macs from 145 and 147, Linux Nightly only, Android behind a flag. Safari 26+ on macOS and iOS.">
  <rect width="720" height="384" rx="14" fill="#0b1020"/>
  <g font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif">
    <text x="24" y="40" font-size="20" font-weight="800" fill="#e8edf5">Where WebGPU ships today</text>
    <text x="24" y="62" font-size="13" fill="#9aa7b4">Release builds, September 2026. Version numbers are the first release with it on by default.</text>
    <g font-size="12" font-weight="700" fill="#9aa7b4" text-anchor="middle">
      <text x="199" y="94">Windows</text>
      <text x="307" y="94">macOS</text>
      <text x="415" y="94">Linux</text>
      <text x="523" y="94">Android</text>
      <text x="631" y="94">iOS, iPadOS</text>
    </g>
    <g font-size="13" font-weight="700" fill="#e8edf5">
      <text x="24" y="140">Chrome, Edge</text>
      <text x="24" y="212">Firefox</text>
      <text x="24" y="284">Safari</text>
    </g>
    <g text-anchor="middle">
      <g transform="translate(148,104)">
        <rect width="102" height="64" rx="8" fill="#6ee7b7"/>
        <text x="51" y="28" font-size="14" font-weight="800" fill="#0b1020">113+</text>
        <text x="51" y="46" font-size="10" fill="#0b1020">ARM: behind a flag</text>
      </g>
      <g transform="translate(256,104)">
        <rect width="102" height="64" rx="8" fill="#6ee7b7"/>
        <text x="51" y="38" font-size="14" font-weight="800" fill="#0b1020">113+</text>
      </g>
      <g transform="translate(364,104)">
        <rect width="102" height="64" rx="8" fill="#6ee7b733" stroke="#6ee7b7" stroke-width="1.5"/>
        <text x="51" y="24" font-size="13" font-weight="800" fill="#e8edf5">Some GPUs</text>
        <text x="51" y="41" font-size="10" fill="#9aa7b4">144+ Intel Gen12+</text>
        <text x="51" y="55" font-size="10" fill="#9aa7b4">147+ NVIDIA</text>
      </g>
      <g transform="translate(472,104)">
        <rect width="102" height="64" rx="8" fill="#6ee7b7"/>
        <text x="51" y="24" font-size="14" font-weight="800" fill="#0b1020">121+</text>
        <text x="51" y="41" font-size="10" fill="#0b1020">Android 12+</text>
        <text x="51" y="55" font-size="10" fill="#0b1020">139+ Imagination</text>
      </g>
      <g transform="translate(580,104)">
        <rect width="102" height="64" rx="8" fill="#ffffff0a"/>
        <text x="51" y="32" font-size="11" fill="#9aa7b4">WebKit engine</text>
        <text x="51" y="48" font-size="10" fill="#9aa7b4">see Safari</text>
      </g>
      <g transform="translate(148,176)">
        <rect width="102" height="64" rx="8" fill="#6ee7b7"/>
        <text x="51" y="38" font-size="14" font-weight="800" fill="#0b1020">141+</text>
      </g>
      <g transform="translate(256,176)">
        <rect width="102" height="64" rx="8" fill="#6ee7b733" stroke="#6ee7b7" stroke-width="1.5"/>
        <text x="51" y="24" font-size="13" font-weight="800" fill="#e8edf5">145+ / 147+</text>
        <text x="51" y="41" font-size="10" fill="#9aa7b4">Apple Silicon only</text>
        <text x="51" y="55" font-size="10" fill="#9aa7b4">Intel: Nightly</text>
      </g>
      <g transform="translate(364,176)">
        <rect width="102" height="64" rx="8" fill="none" stroke="#fb7185" stroke-width="1.5" stroke-dasharray="5 4"/>
        <text x="51" y="30" font-size="12" font-weight="700" fill="#fb7185">Nightly only</text>
        <text x="51" y="47" font-size="10" fill="#9aa7b4">planned for 2026</text>
      </g>
      <g transform="translate(472,176)">
        <rect width="102" height="64" rx="8" fill="none" stroke="#fbbf24" stroke-width="1.5"/>
        <text x="51" y="38" font-size="12" font-weight="700" fill="#fbbf24">Behind a flag</text>
      </g>
      <g transform="translate(580,176)">
        <rect width="102" height="64" rx="8" fill="#ffffff0a"/>
        <text x="51" y="32" font-size="11" fill="#9aa7b4">WebKit engine</text>
        <text x="51" y="48" font-size="10" fill="#9aa7b4">see Safari</text>
      </g>
      <g transform="translate(148,248)">
        <rect width="102" height="64" rx="8" fill="#ffffff0a"/>
        <text x="51" y="38" font-size="11" fill="#9aa7b4">n/a</text>
      </g>
      <g transform="translate(256,248)">
        <rect width="102" height="64" rx="8" fill="#6ee7b7"/>
        <text x="51" y="30" font-size="14" font-weight="800" fill="#0b1020">26+</text>
        <text x="51" y="47" font-size="10" fill="#0b1020">Tahoe to Sonoma</text>
      </g>
      <g transform="translate(364,248)">
        <rect width="102" height="64" rx="8" fill="#ffffff0a"/>
        <text x="51" y="38" font-size="11" fill="#9aa7b4">n/a</text>
      </g>
      <g transform="translate(472,248)">
        <rect width="102" height="64" rx="8" fill="#ffffff0a"/>
        <text x="51" y="38" font-size="11" fill="#9aa7b4">n/a</text>
      </g>
      <g transform="translate(580,248)">
        <rect width="102" height="64" rx="8" fill="#6ee7b7"/>
        <text x="51" y="38" font-size="14" font-weight="800" fill="#0b1020">26+</text>
      </g>
    </g>
    <g font-size="11" fill="#9aa7b4">
      <rect x="24" y="334" width="14" height="14" rx="3" fill="#6ee7b7"/>
      <text x="44" y="345">Shipped</text>
      <rect x="110" y="334" width="14" height="14" rx="3" fill="#6ee7b733" stroke="#6ee7b7" stroke-width="1.5"/>
      <text x="130" y="345">Shipped on some hardware</text>
      <rect x="284" y="334" width="14" height="14" rx="3" fill="none" stroke="#fbbf24" stroke-width="1.5"/>
      <text x="304" y="345">Behind a flag</text>
      <rect x="396" y="334" width="14" height="14" rx="3" fill="none" stroke="#fb7185" stroke-width="1.5" stroke-dasharray="3 2"/>
      <text x="416" y="345">Not in release builds</text>
      <text x="24" y="370">Every browser on iOS and iPadOS runs Apple's WebKit engine, so the Safari row is what counts there.</text>
    </g>
  </g>
</svg>
<figcaption>The same table as a grid. Green means on by default in the release build. Two cells are half green because the answer depends on the GPU: Chrome on Linux (Intel Gen12+ or recent NVIDIA under Wayland) and Firefox on macOS (Apple Silicon only). Firefox on Linux and Android, and Chrome on Windows on ARM, still need Nightly or a flag.</figcaption>
</figure>
<p>WebGL 2 is the baseline. Per <a href="https://caniuse.com/webgl2">caniuse</a> it's in Chrome 56+, Edge 79+, Firefox 51+, Safari 15+ and iOS Safari 15+, and Unity's compatibility page lists Chrome 58+ on Android. If WebGL 2 fails on any current browser, the problem is the machine, not the browser version.</p>
<h2>The 30-second diagnosis</h2>
<p>Start with the <a href="/tools/webgl-webgpu-checker">WebGL and WebGPU checker</a>. It runs when the page loads and uploads nothing. Read three things off it.</p>
<p>On a machine with the problem, the page looks like this.</p>
<figure class="guide-fig">
<a href="/tools/webgl-webgpu-checker"><img src="https://cdn.cinevva.com/guides/shots/checker-fail.png" alt="Checker showing an orange No GPU rendering available banner, a black canvas and three red No cards for WebGPU, WebGL 2 and WebGL 1" loading="lazy" width="720" height="948"></a>
<figcaption>This is what a blocked or software-only browser looks like in the checker: the orange banner, a black render canvas with no FPS reading, and all three API cards marked No. Note the "How to fix it" box, which already points at hardware acceleration.</figcaption>
</figure>
<p><strong>Which APIs pass.</strong> If WebGL 2 works and only WebGPU fails, go to the table above, because WebGPU depends on browser, OS and GPU together and the answer may be &quot;not on this platform yet&quot;. If WebGL 2 also fails, keep reading: that points at acceleration, drivers or a blocklist.</p>
<p><strong>The renderer line.</strong> A real GPU shows up as something like &quot;ANGLE (NVIDIA, NVIDIA GeForce RTX 4060 ...)&quot; or &quot;Apple M2&quot;. SwiftShader, llvmpipe, &quot;Microsoft Basic Render Driver&quot; or anything with &quot;software&quot; in it means your browser is drawing on the CPU. Games crawl, and WebGPU won't appear.</p>
<p><strong>The browser's own GPU page.</strong> In Chrome type <code>chrome://gpu</code> into the address bar (Edge: <code>edge://gpu</code>). &quot;Graphics Feature Status&quot; lists WebGL and WebGL2 as &quot;Hardware accelerated&quot;, &quot;Software only, hardware acceleration unavailable&quot; or &quot;Unavailable&quot;, and &quot;Problems Detected&quot; further down says why, usually naming a blocklist entry or a driver. In Firefox, <code>about:support</code> has a Graphics section where &quot;Compositing&quot; shows whether acceleration is on and a Failure Log or Decision Log explains any block. Safari has no equivalent page.</p>
<p>&quot;Software rendering&quot; means this: browsers keep a list of GPU and driver combinations known to crash or misrender, and when your machine matches an entry they disable the feature or fall back to a CPU rasterizer. Chromium's blocklist disables all GPU acceleration for the Microsoft Basic Render Driver (&quot;GPU access is blocked if users don't have proper graphics driver installed after Windows installation&quot;), for VMware and VirtualBox, and for old Intel and NVIDIA drivers. Entries are keyed on driver versions, which is why &quot;update the driver&quot; fixes so many of these.</p>
<p>One thing changed in 2026. Chromium used to fall back to SwiftShader, a CPU implementation of WebGL, whenever the GPU was blocked, so WebGL &quot;worked&quot;, slowly. Microsoft's <a href="https://learn.microsoft.com/en-us/deployedge/microsoft-edge-browser-policies/enableunsafeswiftshader">Edge policy docs</a> state that starting in version 144 SwiftShader is deprecated and &quot;WebGL context creation fails in scenarios where SwiftShader is used&quot;, and Chromium's <a href="https://github.com/chromium/chromium/blob/main/docs/gpu/swiftshader.md">SwiftShader doc</a> says the same for Chrome, with <code>--enable-unsafe-swiftshader</code> as the opt-in. A blocklisted machine that used to get a slow game now gets a &quot;not supported&quot; error.</p>
<p>Put together, the diagnosis is three questions asked in a fixed order, and each one has a single fix attached.</p>
<figure class="guide-fig">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 528" role="img" aria-label="Diagnosis flowchart: from a black canvas or not supported error, check hardware acceleration, then whether the renderer names a real GPU, then whether the browser ships WebGPU on this OS, with the fix for each no answer: turn acceleration on, update the driver or override the blocklist, update the browser or check the table.">
  <defs>
    <marker id="dxarrow" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="8" markerHeight="8" orient="auto-start-reverse">
      <path d="M0,0 L10,5 L0,10 z" fill="#9aa7b4"/>
    </marker>
  </defs>
  <rect width="720" height="528" rx="14" fill="#0b1020"/>
  <g font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif">
    <text x="24" y="40" font-size="20" font-weight="800" fill="#e8edf5">Three questions, three fixes</text>
    <text x="24" y="62" font-size="13" fill="#9aa7b4">Answer each with the checker and the browser's own GPU page. A no sends you right, a yes sends you down.</text>
    <g>
      <rect x="24" y="84" width="340" height="56" rx="10" fill="#121a31" stroke="#7dd3fc" stroke-width="1.5"/>
      <text x="40" y="108" font-size="14" font-weight="700" fill="#e8edf5">Canvas black, or a "not supported" error</text>
      <text x="40" y="128" font-size="12" fill="#9aa7b4">Open the checker and read the renderer line</text>
    </g>
    <g stroke="#9aa7b4" stroke-width="1.5" marker-end="url(#dxarrow)">
      <line x1="194" y1="140" x2="194" y2="160"/>
      <line x1="194" y1="232" x2="194" y2="256"/>
      <line x1="194" y1="328" x2="194" y2="352"/>
      <line x1="194" y1="424" x2="194" y2="448"/>
      <line x1="364" y1="198" x2="396" y2="198"/>
      <line x1="364" y1="294" x2="396" y2="294"/>
      <line x1="364" y1="390" x2="396" y2="390"/>
    </g>
    <g font-size="11" font-weight="700" fill="#9aa7b4">
      <text x="204" y="249">yes</text>
      <text x="204" y="345">yes</text>
      <text x="204" y="441">yes</text>
      <text x="380" y="191" text-anchor="middle" fill="#fb7185">no</text>
      <text x="380" y="287" text-anchor="middle" fill="#fb7185">no</text>
      <text x="380" y="383" text-anchor="middle" fill="#fb7185">no</text>
    </g>
    <g>
      <rect x="24" y="164" width="340" height="68" rx="10" fill="#121a31" stroke="#c8a8ff" stroke-width="1.5"/>
      <text x="40" y="192" font-size="14" font-weight="700" fill="#e8edf5">Is hardware acceleration on?</text>
      <text x="40" y="214" font-size="12" fill="#9aa7b4">chrome://gpu or about:support says so, after a relaunch</text>
      <rect x="400" y="164" width="296" height="68" rx="10" fill="#1a1424" stroke="#fb7185" stroke-width="1.5"/>
      <text x="412" y="188" font-size="12" fill="#e8edf5">Turn it on. Chrome: Settings, System.</text>
      <text x="412" y="206" font-size="12" fill="#e8edf5">Firefox: Settings, General, Performance.</text>
      <text x="412" y="224" font-size="12" fill="#9aa7b4">Relaunch, the setting needs a restart.</text>
    </g>
    <g>
      <rect x="24" y="260" width="340" height="68" rx="10" fill="#121a31" stroke="#c8a8ff" stroke-width="1.5"/>
      <text x="40" y="288" font-size="14" font-weight="700" fill="#e8edf5">Does the renderer name a real GPU?</text>
      <text x="40" y="310" font-size="12" fill="#9aa7b4">SwiftShader, llvmpipe, Basic Render Driver mean no</text>
      <rect x="400" y="260" width="296" height="68" rx="10" fill="#1a1424" stroke="#fb7185" stroke-width="1.5"/>
      <text x="412" y="284" font-size="12" fill="#e8edf5">Update the GPU driver from its maker.</text>
      <text x="412" y="302" font-size="12" fill="#e8edf5">Stale block? The ignore-gpu-blocklist flag.</text>
      <text x="412" y="320" font-size="12" fill="#9aa7b4">VM or remote desktop: play on the host.</text>
    </g>
    <g>
      <rect x="24" y="356" width="340" height="68" rx="10" fill="#121a31" stroke="#c8a8ff" stroke-width="1.5"/>
      <text x="40" y="384" font-size="14" font-weight="700" fill="#e8edf5">Does your browser ship WebGPU here?</text>
      <text x="40" y="406" font-size="12" fill="#9aa7b4">Only asked when WebGL 2 passes and WebGPU fails</text>
      <rect x="400" y="356" width="296" height="68" rx="10" fill="#1a1424" stroke="#fb7185" stroke-width="1.5"/>
      <text x="412" y="380" font-size="12" fill="#e8edf5">Update the browser, then check the table.</text>
      <text x="412" y="398" font-size="12" fill="#e8edf5">Firefox: Windows and Apple Silicon only.</text>
      <text x="412" y="416" font-size="12" fill="#9aa7b4">Linux Chrome: Intel Gen12+, NVIDIA only.</text>
    </g>
    <g>
      <rect x="24" y="452" width="340" height="56" rx="10" fill="#121a31" stroke="#6ee7b7" stroke-width="1.5"/>
      <text x="40" y="476" font-size="14" font-weight="700" fill="#6ee7b7">Re-run the checker</text>
      <text x="40" y="496" font-size="12" fill="#9aa7b4">WebGL 2 says Supported, WebGPU as the table predicts</text>
    </g>
  </g>
</svg>
<figcaption>Work down the left column and stop at the first no. The order matters: a driver update is pointless while acceleration is off, and the WebGPU question only applies once WebGL 2 already works, because a missing WebGPU on a healthy machine is usually the platform, not a fault.</figcaption>
</figure>
<h2>Chrome and Edge</h2>
<p>Chrome and Edge share the Chromium engine, so everything here applies to both. Swap <code>chrome://</code> for <code>edge://</code> where needed.</p>
<h3>The hardware acceleration toggle</h3>
<p>Open Settings, then System, and make sure &quot;Use graphics acceleration when available&quot; is on (in Edge it's under System and performance). Relaunch, because the setting only applies after a restart. It's off surprisingly often, because a lot of &quot;fix Chrome flicker&quot; advice says to turn it off. Then open <code>chrome://gpu</code>. If WebGL and WebGL2 say &quot;Hardware accelerated&quot;, you're done. If not, the browser is refusing your GPU on purpose, and the reason is under &quot;Problems Detected&quot;.</p>
<h3>Windows</h3>
<p>The usual culprit is a stale or generic driver. If the renderer says &quot;Microsoft Basic Render Driver&quot;, Windows has no real driver for your GPU at all, and Chromium treats that as &quot;block everything&quot;. Install the driver from NVIDIA, AMD or Intel directly rather than waiting on Windows Update. On a laptop with two GPUs, Windows Settings, System, Display, Graphics lets you pin the browser to the high-performance GPU. A browser on the integrated chip passes the checker but can crawl in a heavy game.</p>
<p>Windows on ARM (Snapdragon laptops) is a WebGPU special case: the implementation status wiki lists it as behind <code>chrome://flags/#enable-unsafe-webgpu</code> or the <code>--enable-unsafe-webgpu</code> switch. WebGL 2 works normally there.</p>
<h3>macOS</h3>
<p>Macs rarely hit this because Apple ships the driver with the OS. If Chrome on a Mac reports software rendering, suspect the acceleration toggle, an ancient macOS, or a virtual machine. Updating macOS is the driver update.</p>
<h3>Linux</h3>
<p>Linux is where WebGPU has the most caveats. Per the wiki, Chrome ships WebGPU by default on Linux for Intel Gen12 and newer from Chrome 144, and for NVIDIA with driver 535.183.01 or newer under Wayland from Chrome 147. Everything else (AMD, older Intel, NVIDIA on X11) needs the flag stack the wiki lists: <code>--enable-unsafe-webgpu --ozone-platform=x11 --use-angle=vulkan --enable-features=Vulkan,VulkanFromANGLE</code>. The rollout runs WebGPU on Vulkan while the rest of the browser stays on OpenGL, which is why it's gated per GPU family.</p>
<p>For WebGL 2 on Linux, the question is whether Mesa is using your GPU or the llvmpipe software rasterizer. If the renderer says llvmpipe, update the Mesa drivers for your GPU (or the NVIDIA proprietary driver).</p>
<h3>The blocklist override</h3>
<p><code>chrome://flags/#ignore-gpu-blocklist</code> (&quot;Override software rendering list&quot;) makes Chrome use your GPU even when it's on the blocklist. It's the right move when the list wrongly rejects your GPU, or when you'd rather have occasional glitches than no WebGL. It's the wrong move when the block exists because the driver crashes, so try the driver update first.</p>
<h3>Android Chrome</h3>
<p>WebGL 2 has been in Android Chrome since version 58, so on any current phone a WebGL 2 failure usually means a blocklisted GPU driver, which on Android you can't update separately. Check for a system update, then try <code>chrome://flags/#ignore-gpu-blocklist</code>, which exists on Android too.</p>
<p>WebGPU on Android arrived in Chrome 121 for Android 12 or newer with ARM, Qualcomm or Intel GPUs, and in Chrome 139 for Imagination GPUs on Android 16 or newer. The wiki still lists Samsung's Xclipse GPUs (Exynos Galaxy phones) as in progress, so a fully updated Exynos Galaxy can report no WebGPU. That's not a bug on your end.</p>
<h2>Firefox</h2>
<h3>Hardware acceleration and the override</h3>
<p>Open Settings, General, scroll to Performance, untick &quot;Use recommended performance settings&quot;, and make sure &quot;Use hardware acceleration when available&quot; is ticked. Restart Firefox. Then check <code>about:support</code>, Graphics: &quot;Compositing&quot; should say WebRender, and a blocked WebGL shows up in the Failure Log or Decision Log with the driver or feature that was blocked.</p>
<p>Mozilla's <a href="https://wiki.mozilla.org/Blocklisting/Blocked_Graphics_Drivers">blocked graphics drivers</a> page documents the overrides. In <code>about:config</code>, set <code>webgl.force-enabled</code> to <code>true</code> to override a WebGL block and <code>layers.acceleration.force-enabled</code> to <code>true</code> to override a compositing block. Mozilla's wording: &quot;do this at your own risk. There usually are good reasons why features are blocked&quot;. Update the driver first.</p>
<h3>WebGPU: which Firefox on which OS</h3>
<p>Firefox is where &quot;WebGPU not supported&quot; is most often just the platform. From the release notes: Firefox 141 (July 22, 2025) enabled WebGPU on Windows. Firefox 145 (November 11, 2025) added macOS 26 Tahoe on Apple Silicon. Firefox 147 extended that to &quot;devices with Apple Silicon processors on all supported macOS versions&quot;. Intel Macs, Linux and Android are still out: MDN's <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Experimental_features">experimental features</a> page says that for &quot;other platforms such as Linux and macOS on Intel Silicon it is enabled in nightly&quot;, and the wiki lists Linux as expected in 2026 and Android as behind a flag.</p>
<p>The preference is <code>dom.webgpu.enabled</code> in <code>about:config</code>. On a platform Firefox hasn't shipped, flipping it to <code>true</code> in the release build exposes an implementation Mozilla hasn't finished for that OS, so expect crashes. If you want WebGPU on Linux Firefox today, use Nightly, where it's on by default. Caniuse marks Firefox &quot;disabled by default&quot; because it tracks flags per browser, not per OS, so don't let that page tell a Windows user they lack it.</p>
<h2>Safari</h2>
<p>Safari has no acceleration toggle and no blocklist you can override. The version is the whole story.</p>
<p>WebGL 2 needs Safari 15 or newer on macOS and iOS. Unity's compatibility page puts it plainly: &quot;Apple Safari doesn't support WebGL 2 in versions before Safari 15&quot;. A Mac stuck on an old macOS can't get a newer Safari, so the fix is a macOS update or installing Chrome or Firefox, which run WebGL 2 on older macOS.</p>
<p>WebGPU shipped in Safari 26.0 on September 15, 2025 on macOS Tahoe, Sequoia and Sonoma, plus iOS 26, iPadOS 26 and visionOS 26, on by default. WebKit's <a href="https://webkit.org/blog/17333/webkit-features-in-safari-26-0/">release post</a> says WebGPU &quot;supersedes WebGL on macOS, iOS, iPadOS, and visionOS and is preferred for new sites and web apps&quot;. If you're on Safari 26 and WebGPU still fails, check that the page is served over HTTPS (WebGPU only works in secure contexts in every browser) and that it isn't inside an embedded web view.</p>
<p>On Safari 17 and 18, WebGPU exists behind a feature flag. On macOS, open Safari Settings, Advanced, tick &quot;Show features for web developers&quot;, and a Feature Flags tab appears where you can turn on WebGPU. On iOS 18 the path is Settings, Apps, Safari, Advanced, Feature Flags (older iOS: Settings, Safari, Advanced). That's the pre-release implementation, fine for a demo, not something to ship a game against.</p>
<p>Whichever browser you fixed, reload the checker. A healthy result looks like this.</p>
<figure class="guide-fig">
<a href="/tools/webgl-webgpu-checker"><img src="https://cdn.cinevva.com/guides/shots/checker-ok.png" alt="Checker showing a purple ready banner, a gradient triangle rendering at 60 FPS via WebGPU, and Supported cards for WebGPU and WebGL 2" loading="lazy" width="720" height="948"></a>
<figcaption>What you should see after the fix: the triangle renders at 60 FPS, the live render line names WebGPU, and both WebGPU and WebGL 2 read Supported. WebGL 1 showing No here is normal. The checker asks one canvas for WebGL 2 first, and a canvas holds only one context type, so the legacy probe comes back empty.</figcaption>
</figure>
<h2>Work laptops, school Chromebooks, VMs and remote desktop</h2>
<p>If the toggles are missing or don't stick, look at who manages the device.</p>
<p>Managed browsers can have acceleration turned off by policy. Chrome and Edge both have a <code>HardwareAccelerationModeEnabled</code> policy, and Microsoft's documentation says that when it's disabled the browser &quot;turns off graphics acceleration&quot;. The Settings toggle greys out or reverts, and <code>chrome://policy</code> lists what's applied. Since Chromium 144 there's also <code>EnableUnsafeSwiftShader</code>, a temporary policy that keeps the old CPU fallback alive on machines with no GPU. If you administer a school lab that just lost every WebGL site, that policy is the stopgap while you sort out drivers.</p>
<p>Virtual machines present a virtual GPU that browsers refuse. Chromium's blocklist has explicit entries (&quot;Do not use GPU accelerated rendering with VMware on Windows&quot;, &quot;VirtualBox driver is unstable on linux&quot;, &quot;Parallels drivers older than 7 are buggy&quot;), all disabling every accelerated feature. Enable 3D acceleration in the VM settings with current guest tools, or accept that the VM is for testing the no-GPU path and play on the host.</p>
<p>Remote desktop is the same problem in a different costume. An RDP session, a Citrix or Horizon desktop, or a cloud PC typically exposes a basic display adapter, so the browser sees no usable GPU. Run the browser on the local machine instead of inside the session.</p>
<p>Chromebooks are the easy case: ChromeOS has had WebGPU since Chrome 113, so a failure there is almost always policy or a device past its update date.</p>
<h2>The Unity &quot;does not support graphics API WebGL 2&quot; error</h2>
<p>The exact text players see:</p>
<blockquote>
<p>Your browser does not support graphics API &quot;WebGL 2&quot; which is required for this content.</p>
</blockquote>
<p>It comes from Unity's web loader when the <code>webgl2</code> context request returns <code>null</code>. Unity's <a href="https://docs.unity3d.com/6000.2/Documentation/Manual/webgl-browsercompatibility.html">browser compatibility</a> page says Web builds need a browser that is &quot;WebGL 2 capable&quot;, with WebGL 2 as the default graphics API, so the loader has nothing to fall back to unless the developer added one.</p>
<p>If you're the player, the causes in order of likelihood: hardware acceleration is off, the GPU driver is blocklisted (and since Chromium 144 no longer rescued by SwiftShader), you're in a VM or remote session, or you're on Safari 14 or older. If the checker passes WebGL 2 but the game still fails, the page is probably in an embedded frame or web view without GPU access, and opening the game's URL directly fixes it.</p>
<p>If you're the developer, the Graphics APIs list in Player Settings, Web, Other Settings decides how often players hit this. With Auto Graphics API on, Unity tries WebGL 2 first, and community threads note the same warning appears when the fallback to WebGL 1 succeeded but WebGL 2 didn't, so the message alone doesn't tell you whether the game ran. A Linear color space forces WebGL 2 only. Adding &quot;WebGL 1 (Deprecated)&quot; keeps very old browsers playable at the cost of post-processing and texture formats, for roughly 1.5 MB more in the data file by one developer's measurement. Unity 6 also lets you add WebGPU, still marked experimental, and its <a href="https://docs.unity3d.com/6000.3/Documentation/Manual/WebGPU-enable.html">enabling guide</a> says Unity uses the first API in the list and falls back down it, so the safe order is WebGPU, then WebGL 2. Whatever you pick, replace the default error text in your template with something a player can act on.</p>
<h2>Symptom to cause</h2>
<p><strong>Black or blank canvas, no error.</strong> A context was created but the GPU isn't drawing. Usual causes: a context lost right after creation, a GPU that can't handle the shader, or a privacy extension that spoofs WebGL. Try a private window with extensions off, then read the console for &quot;context lost&quot; or shader compile errors.</p>
<p><strong>&quot;WebGL context lost&quot; mid-game.</strong> MDN's <a href="https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/isContextLost">context loss</a> notes list the reasons: pages competing for the GPU, a laptop switching between integrated and discrete GPUs, the browser resetting the GPU to break a stall from another tab, or a driver updating in the background. Close other GPU-heavy tabs, plug the laptop in so it stops switching GPUs, and reload. If it happens every time, the game is running out of GPU memory on your device, which is a game bug rather than a browser setting.</p>
<p><strong>Runs at 1 to 5 fps.</strong> Software rendering. Check the renderer for SwiftShader, llvmpipe or &quot;Software&quot;, then fix acceleration or drivers. On a phone, a 3x device pixel ratio means nine pixels drawn per CSS pixel, and a game that doesn't cap its resolution will crawl, which is on the developer.</p>
<p><strong>WebGPU missing on a machine with working WebGL 2.</strong> Check the table first. Then the URL: <code>navigator.gpu</code> is undefined on plain <code>http://</code> pages. Then look for a WebGPU line in Graphics Feature Status. On Linux Chrome and non-Windows Firefox the answer is usually &quot;not on this platform yet&quot;.</p>
<h2>For developers: detect, fall back, and tell the player</h2>
<p>Detect both APIs before loading anything heavy, and make the failure path a message rather than a blank page. MDN's pattern for <a href="https://developer.mozilla.org/en-US/docs/Web/API/WebGPU_API">WebGPU</a> is to check <code>navigator.gpu</code>, then call <code>requestAdapter()</code>, which resolves to <code>null</code> when no adapter is available. For WebGL, <code>getContext('webgl2')</code> returns <code>null</code> on failure.</p>
<pre><code class="language-js">async function pickRenderer(canvas) {
  if (navigator.gpu) {
    const adapter = await navigator.gpu.requestAdapter()
    if (adapter) return { api: 'webgpu', adapter }
  }
  const gl2 = canvas.getContext('webgl2', { failIfMajorPerformanceCaveat: true })
  if (gl2) return { api: 'webgl2', gl: gl2 }
  const gl2soft = canvas.getContext('webgl2')
  if (gl2soft) return { api: 'webgl2', gl: gl2soft, software: true }
  return { api: null }
}
</code></pre>
<p>Two details matter. <code>failIfMajorPerformanceCaveat: true</code> makes <code>getContext</code> fail instead of handing you a software-rendered context, so you can detect &quot;this will run at 2 fps&quot;, warn the player, and then decide whether to accept the software context anyway. And a canvas holds exactly one context type, so decide before you create it or use separate canvases. <code>requestAdapter()</code> also accepts <code>featureLevel: 'compatibility'</code>, a restricted WebGPU subset for OpenGL ES 3.1 and Direct3D 11 class hardware.</p>
<p>Handle context loss too. Listen for <code>webglcontextlost</code>, call <code>preventDefault()</code> so the browser knows you intend to recover, and rebuild GPU resources in <code>webglcontextrestored</code>. Games that skip this show the &quot;black canvas, no error&quot; symptom every time a laptop switches GPUs.</p>
<pre><code class="language-js">canvas.addEventListener('webglcontextlost', (e) =&gt; {
  e.preventDefault()
  pauseGame()
})
canvas.addEventListener('webglcontextrestored', () =&gt; {
  recreateGpuResources()
  resumeGame()
})
</code></pre>
<p>Tell the player something useful. &quot;WebGL 2 not supported&quot; is a dead end for a twelve-year-old on a school Chromebook. A better message names what you detected (browser, OS, whether WebGL 1 worked, whether the renderer looked like software), gives the one-line fix for their browser, and links to a page like this one or the <a href="/tools/webgl-webgpu-checker">checker</a> so they can confirm the fix. Log the same result to analytics, because the share of players failing WebGL 2 tells you whether a lighter fallback is worth building.</p>
<p>Engines handle most of this. Three.js's WebGPU renderer, Babylon.js and PlayCanvas fall back to WebGL 2 automatically, and the <a href="/guides/web-games-stack-2026">web games tech stack guide</a> covers which does what. If you're writing to the APIs directly, the <a href="/tutorials/webgpu-getting-started">WebGPU getting started</a> and <a href="/tutorials/webgl-fundamentals-for-games">WebGL fundamentals</a> tutorials both start from a working detection block.</p>
<h2>Common Questions</h2>
<h3>How do I check if WebGPU is enabled in my browser?</h3>
<p>Open the <a href="/tools/webgl-webgpu-checker">WebGL and WebGPU checker</a>, which reports WebGPU as supported or not along with the adapter vendor and architecture. In Chrome or Edge, <code>chrome://gpu</code> lists WebGPU under Graphics Feature Status, and in the console <code>navigator.gpu</code> is <code>undefined</code> when the API isn't exposed. It only works on HTTPS pages.</p>
<h3>How do I enable WebGL in Chrome?</h3>
<p>Go to Settings, System, turn on &quot;Use graphics acceleration when available&quot;, and relaunch Chrome. Then open <code>chrome://gpu</code> and confirm WebGL and WebGL2 say &quot;Hardware accelerated&quot;. If they don't, update your GPU driver, and as a last resort enable <code>chrome://flags/#ignore-gpu-blocklist</code>.</p>
<h3>How do I enable WebGPU in Firefox?</h3>
<p>On Windows it's on by default since Firefox 141, and on Apple Silicon Macs since Firefox 145 (macOS 26) and 147 (all supported macOS versions). On Linux, Intel Macs and Android it hasn't shipped: the <code>dom.webgpu.enabled</code> preference in <code>about:config</code> exposes the unfinished build, and Firefox Nightly has it on by default, so use Nightly if you need it there today.</p>
<h3>Does Safari support WebGPU?</h3>
<p>Yes, since Safari 26.0 (September 15, 2025) on macOS Tahoe, Sequoia and Sonoma, iOS 26, iPadOS 26 and visionOS 26, on by default. Safari 17 and 18 had it behind a feature flag under Settings, Advanced, &quot;Show features for web developers&quot;. WebGL 2 needs Safari 15 or newer.</p>
<h3>Why does WebGL say blocked or software rendering when hardware acceleration is on?</h3>
<p>Your GPU or its driver is on the browser's blocklist, so the browser refuses it even with acceleration enabled. <code>chrome://gpu</code> under &quot;Problems Detected&quot; or Firefox's <code>about:support</code> Graphics section names the entry. Update the driver from the GPU maker, and if the block is stale, override it with <code>chrome://flags/#ignore-gpu-blocklist</code> or Firefox's <code>webgl.force-enabled</code>.</p>
<h3>Why is my Unity WebGL game not working in the browser?</h3>
<p>If the page shows &quot;Your browser does not support graphics API WebGL 2&quot;, the browser couldn't create a WebGL 2 context. Turn on hardware acceleration, update the GPU driver, make sure you're not in a VM or remote desktop session, and on Safari update to version 15 or newer. If the checker shows WebGL 2 working but the game still fails, open the game's URL directly rather than inside an embedded frame.</p>
<h3>Does WebGL 2 work in Chrome on Android?</h3>
<p>Yes, since Chrome 58, so on any current phone it works unless the GPU driver is blocklisted, which you fix with a system update or <code>chrome://flags/#ignore-gpu-blocklist</code>. WebGPU is separate: Chrome 121+ on Android 12+ with ARM, Qualcomm or Intel GPUs, Chrome 139+ for Imagination GPUs on Android 16+, and Samsung Xclipse GPUs are still in progress.</p>
<h2>Related</h2>
<ul>
<li><a href="/tools/webgl-webgpu-checker">WebGL Test and WebGPU Checker</a>: see what your browser actually exposes, with GPU name and limits</li>
<li><a href="/guides/webgpu-vs-webgl-games">WebGPU vs WebGL for Games (2026)</a>: what the two APIs are and which to build on</li>
<li><a href="/guides/web-games-stack-2026">Web Games Tech Stack in 2026</a>: WebGL, WebGPU and Wasm, and which engines use which</li>
<li><a href="/tutorials/webgpu-getting-started">WebGPU getting started</a>: your first WebGPU code, starting from detection</li>
<li><a href="/tutorials/webgl-fundamentals-for-games">WebGL fundamentals for games</a>: the baseline API, with code</li>
<li><a href="/tools/cross-origin-isolation-checker">Cross-Origin Isolation Checker</a>: the other &quot;why won't this game load&quot; test, for SharedArrayBuffer and threads</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Best AI Animation Generators for 3D Characters in 2026 (Text to Motion, Video Mocap, Libraries)]]></title>
            <link>https://app.cinevva.com/guides/ai-animation-generators-3d</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/ai-animation-generators-3d</guid>
            <pubDate>Sat, 05 Sep 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[The best AI animation generators for 3D game characters in 2026: text-to-motion tools, video motion capture (DeepMotion, Plask, Rokoko Vision), AI-assisted keyframing (Cascadeur) and auto-rig plus library (Meshy, Tripo, Mixamo) compared on output, price and licence.]]></description>
            <content:encoded><![CDATA[<h1>Best AI Animation Generators for 3D Characters in 2026 (Text to Motion, Video Mocap, Libraries)</h1>
<p><em>Last updated: September 2026.</em></p>
<p>&quot;AI animation generator&quot; means three different things in 2026, and picking the wrong kind is the most common way to waste an afternoon. <strong>Text-to-motion</strong> tools turn a sentence (&quot;a person crouches, then leaps forward&quot;) into skeletal animation, and Cinevva's <a href="/tools/animate">Prompt Animations</a> does that in the browser with BVH and GLB export on a free account. <strong>Video motion capture</strong> tools (DeepMotion, Plask, Rokoko Vision) turn a phone video of you moving into animation, which is the right tool when you can perform the motion yourself. <strong>Auto-rig plus library</strong> tools (Meshy, Tripo, Mixamo, and our own <a href="/tools/animations">Animation Library</a>) don't generate motion at all; they rig your model and apply one of hundreds of existing clips, which covers most of what a game actually needs. Cascadeur sits apart as AI-assisted keyframing for people who want to animate by hand, faster.</p>
<p>Here's each tool, what it produces, what it costs and what you can ship, from their pages in September 2026.</p>
<h2>Quick picks</h2>
<ul>
<li><strong>A motion that doesn't exist yet, from a sentence:</strong> Cinevva <a href="/tools/animate">Prompt Animations</a>. Text to motion, 1 to 10 second clips, retargets onto your humanoid GLB, exports BVH or GLB. Free account.</li>
<li><strong>Walk, run, idle, attack, and 250 more, on your own model, for free:</strong> Cinevva <a href="/tools/animations">Animation Library</a>. 260 CC0 motions retargeted in the browser.</li>
<li><strong>You can perform the motion:</strong> Rokoko Vision (free, single camera) or Plask (free 15 seconds a day, then $18 a month).</li>
<li><strong>Video mocap with hands and face:</strong> DeepMotion Animate 3D. Free 60 seconds a month for non-commercial use, paid from $15.</li>
<li><strong>Rig a generated model and animate it in one place:</strong> Meshy. 600+ preset clips, auto-rig in under 30 seconds, FBX and GLB.</li>
<li><strong>Hand animation with physics doing the hard part:</strong> Cascadeur. Free version, Indie plan around €12 a month.</li>
<li><strong>The classic free library:</strong> Mixamo. Thousands of clips, free with an Adobe account, in maintenance mode.</li>
<li><strong>Skip the pipeline:</strong> describe the game in the <a href="/create">game creator</a> and the characters arrive animated.</li>
</ul>
<h2>Quick reference</h2>
<table>
<thead>
<tr>
<th>Tool</th>
<th>Kind</th>
<th>Input</th>
<th>Output</th>
<th>Free tier</th>
<th>Paid from</th>
<th>Commercial</th>
</tr>
</thead>
<tbody>
<tr>
<td>Cinevva Prompt Animations</td>
<td>Text to motion</td>
<td>Prompt, optional rigged GLB</td>
<td>BVH, GLB, 1 to 10 s</td>
<td>Yes</td>
<td>Credits</td>
<td>Yours</td>
</tr>
<tr>
<td>Cinevva Animation Library</td>
<td>Library + retarget</td>
<td>Rigged GLB or FBX</td>
<td>GLB with clips baked</td>
<td>Preview free</td>
<td>Standard plan for export</td>
<td>CC0 clips</td>
</tr>
<tr>
<td>Meshy</td>
<td>Auto-rig + library</td>
<td>Model</td>
<td>FBX, GLB, 600+ clips</td>
<td>100 credits/mo, CC BY</td>
<td>$20/mo</td>
<td>Paid: yours</td>
</tr>
<tr>
<td>Tripo</td>
<td>Auto-rig + library</td>
<td>Model</td>
<td>FBX, GLB</td>
<td>Free tier</td>
<td>~$20/mo</td>
<td>Paid tiers</td>
</tr>
<tr>
<td>Mixamo</td>
<td>Library + auto-rig</td>
<td>Model</td>
<td>FBX</td>
<td>Everything</td>
<td>n/a</td>
<td>Yes, no redistribution</td>
</tr>
<tr>
<td>DeepMotion Animate 3D</td>
<td>Video mocap</td>
<td>Video</td>
<td>FBX, GLB, BVH</td>
<td>60 s/mo, non-commercial</td>
<td>$15/mo</td>
<td>Paid tiers</td>
</tr>
<tr>
<td>Plask</td>
<td>Video mocap</td>
<td>Video</td>
<td>FBX, GLB, BVH</td>
<td>15 s/day</td>
<td>$18/mo annual</td>
<td>Check terms</td>
</tr>
<tr>
<td>Rokoko Vision</td>
<td>Video mocap</td>
<td>Video</td>
<td>FBX, BVH</td>
<td>Single camera free</td>
<td>Dual camera paid</td>
<td>Yes</td>
</tr>
<tr>
<td>Cascadeur</td>
<td>AI-assisted keyframing</td>
<td>Your keyframes</td>
<td>FBX, DAE</td>
<td>Free version</td>
<td>~€12/mo Indie</td>
<td>Indie under revenue cap</td>
</tr>
<tr>
<td>Motorica</td>
<td>Style-based locomotion synthesis</td>
<td>Styles, paths</td>
<td>Engine and DCC formats</td>
<td>Free Lite</td>
<td>Demo for pricing</td>
<td>Enterprise terms</td>
</tr>
</tbody>
</table>
<h2>The three kinds, and which one you need</h2>
<p><strong>Text to motion</strong> is the newest and the one the phrase &quot;AI animation generator&quot; usually means. You write what the body does, a model trained on motion capture produces a skeletal clip, and you retarget it onto your character. It's the only route to a motion nobody has captured: your specific creature's attack, a stylised victory dance, a fall that matches your level geometry. Quality varies with how concrete the prompt is (&quot;crouches and slowly stands up&quot; works, &quot;stand-up animation&quot; doesn't), and clips are short, one to ten seconds.</p>
<p><strong>Video motion capture</strong> replaces the mocap suit with a phone. You act the motion, the tool tracks your body (and on some tiers hands and face) and exports a clip. It's the right tool when the motion is human, you can perform it, and you want it to feel like a person rather than a preset. The failure mode is foot sliding and jitter on fast motion, which the paid tiers smooth.</p>
<p><strong>Auto-rig plus library</strong> is the boring answer and the one that covers 80% of a game: the character walks, runs, idles, jumps, swings and dies, and every one of those has been captured a thousand times. Upload a model, get a skeleton with skin weights, pick from the library, export. Where the tools differ is licence and price of the clips, and whether the rigger handles your model at all.</p>
<p>Most games use all three. The library for locomotion, video mocap for the cutscene gesture, text to motion for the one move that makes the game yours.</p>
<h2>Cinevva Prompt Animations</h2>
<p>Our <a href="/tools/animate">Prompt Animations</a> tool is text to motion in the browser. Describe a movement, watch it play on a stick figure, then drop in a rigged humanoid GLB and it auto-detects the skeleton (Mixamo, Tripo, Reallusion, Unreal and generic humanoid naming) and retargets the motion onto your character. Clips run from 1 to 10 seconds. Export is BVH for Blender, Maya, Cascadeur or Unreal, or a GLB with the animation baked in for Unity, Godot, Three.js and Babylon.js. It runs on a free account and the output is yours.</p>
<p>Prompts that work describe the body concretely and one action at a time. &quot;A person picks up a heavy box from the floor and carries it forward&quot; beats &quot;carry animation&quot;. Generate three or four variations, keep the best, and clean the foot contacts in your editor if the motion is fast.</p>
<h2>Cinevva Animation Library</h2>
<p>The <a href="/tools/animations">Animation Library</a> is the library half of the same pipeline. Upload a rigged GLB or FBX and preview 260 CC0 character animations retargeted onto it in the browser, walk and run cycles, combat, traversal, emotes, reactions. Nothing is uploaded to a server; the retargeting runs locally. Preview is free on your own model, and exporting the GLB with the clips baked in is part of the Standard and Pro plans. Because every clip is CC0, there's no attribution and no redistribution worry, which is the thing Mixamo can't offer.</p>
<p>If your model isn't rigged yet, the <a href="/tools/rigger">Auto Rigger</a> does that first, for humanoids and quadrupeds, and hands the result straight to the library. Blender users can skip the browser: the <a href="/blender-addon/">Cinevva Rig add-on</a> rigs on your own machine and plays the same 260 clips on the result inside Blender.</p>
<h2>Meshy and Tripo</h2>
<p>Both are text-to-3D generators that grew animation features, and both take the auto-rig plus library approach. Meshy auto-rigs humanoid, biped, quadruped and stylised characters in under 30 seconds and offers more than 600 preset clips (walks, combat, idles, emotes, jumps, dances), exporting FBX or GLB with conventional bone hierarchies. The free plan is 100 credits a month with CC BY 4.0 output, so credit Meshy if you ship it; Pro at $20 a month gives full ownership. Neither Meshy nor Tripo generates motion from text.</p>
<p>Tripo's animation works the same way: generate or upload, auto-rig, apply from its library, download FBX with animation data or GLB. If you're already generating models in either, animating them there is convenient. If you aren't, our library does the same job on a model from anywhere, with CC0 clips.</p>
<h2>Mixamo</h2>
<p>Mixamo is the library everyone started with: thousands of motion-captured clips, an auto-rigger, free with an Adobe account. The licence allows commercial use in games with no attribution. What it doesn't allow is redistributing the raw animation files, which matters if you're building a tool or an asset pack rather than a game. Adobe has kept it running without adding to it for years, so treat it as a fixed catalogue. It exports FBX only, and its auto-rigger is humanoid only.</p>
<h2>DeepMotion Animate 3D</h2>
<p>DeepMotion is the most complete video-mocap tool for a solo developer. Film yourself, upload, and get body animation with optional hand and face tracking, exported as FBX, GLB or BVH. Pricing is by credit, one credit per second of animation or per 3D pose, with hands and face costing half a credit each on top. The free tier is 60 seconds a month for personal, non-commercial use. Paid plans run from about $15 to $300 a month, with the higher tiers adding resolution, frame rate, smoothing and priority, and a Studio plan with unlimited credits at lower priority past a threshold. Commercial rights come with the paid plans.</p>
<h2>Plask and Rokoko Vision</h2>
<p>Plask is browser-based video mocap with full body and hand capture, multi-person tracking, and FBX, GLB and BVH export. The free tier is 15 seconds of capture a day with 1 GB of storage. Standard is $18 a month billed annually for 10 minutes of capture a month, Pro is $50 for an hour. Check the terms for commercial use on the tier you pick; the pricing page doesn't state them.</p>
<p>Rokoko Vision is the free option from a company that sells mocap suits. Single-camera video capture is free, dual-camera capture needs a paid subscription, and the output drops into Rokoko Studio (also free) for cleanup and FBX or BVH export. For a first pass at &quot;does video mocap work for my game&quot;, it's where to start.</p>
<h2>Cascadeur</h2>
<p>Cascadeur is animation software, not a generator, and it's here because its AI is doing something the others don't: making hand keyframing fast. AutoPosing fills in a believable pose from a few controllers, AutoPhysics makes jumps, falls and spins obey gravity and momentum, and the result is that a non-animator can produce a physically plausible action sequence in an afternoon. It also imports video mocap for cleanup.</p>
<p>There's a free version for learning and non-commercial use, an Indie plan at around €12 a month for developers under a revenue cap, and a Pro plan at around €49. Prices here are from Cascadeur's published plans as reported in 2026; check the current page, since the tiers have changed more than once.</p>
<h2>Motorica</h2>
<p>Motorica generates locomotion by synthesising from motion-capture data with style controls: pick a walk, choose from more than 150 styles or supply your own capture, draw a path, and get a grounded, reactive clip that blends styles without the foot sliding that stitching library clips produces. It targets studios (Epic is a customer), integrates with Unreal, Unity, Godot, Maya and Blender, and offers a Free Lite tier with pricing for the rest by demo. If your game's feel depends on locomotion variety, it's the specialist.</p>
<h2>How to judge a generated clip in 30 seconds</h2>
<ul>
<li><strong>Watch the feet.</strong> Sliding, floating or a foot that passes through the floor is the most common defect in every kind of tool. Our <a href="/guides/free-character-animations-rigging">free animations and rigging guide</a> explains why it happens and how a retargeter fixes it.</li>
<li><strong>Watch the hips.</strong> A generated motion whose pelvis bobs or drifts reads as drunk. Good clips keep the root steady and let the limbs do the work.</li>
<li><strong>Loop the cycle.</strong> Walks and runs must return to their first pose. Trim to the cycle in an editor, or use a tool that exports loops.</li>
<li><strong>Check the rig it expects.</strong> BVH is universal; a GLB with baked animation is tied to the skeleton it was made on. Retarget before you judge.</li>
<li><strong>Check the licence on the clip, not the tool.</strong> Library clips carry their own terms. CC0 and Mixamo are fine in a game; Meshy's free tier needs attribution.</li>
</ul>
<h2>Licences in 30 seconds</h2>
<ul>
<li><strong>Cinevva Prompt Animations:</strong> output is yours. <strong>Animation Library:</strong> CC0 clips, anything, no credit.</li>
<li><strong>Mixamo:</strong> commercial use in games, no attribution, no redistributing the files.</li>
<li><strong>Meshy free tier:</strong> CC BY 4.0. Paid: yours. <strong>Tripo:</strong> check the tier.</li>
<li><strong>DeepMotion free tier:</strong> non-commercial. Paid: commercial.</li>
<li><strong>Plask, Cascadeur Indie:</strong> read the current terms and revenue caps.</li>
<li><strong>Rokoko Vision:</strong> free single-camera output is yours to use.</li>
</ul>
<h2>Common Questions</h2>
<h3>What is the best AI animation generator for 3D characters?</h3>
<p>For text to motion, Cinevva's Prompt Animations, free in the browser with BVH and GLB export. For video mocap, DeepMotion for completeness or Rokoko Vision for free. For rigging and standard motions, Meshy if you generate models there, or Cinevva's Animation Library with 260 CC0 clips on any model.</p>
<h3>Can AI generate 3D animation from text?</h3>
<p>Yes. Text-to-motion models trained on motion capture produce short skeletal clips from a description. Results are best for concrete, single-action prompts of one to ten seconds, and they need retargeting onto your character's skeleton, which the better tools do for you.</p>
<h3>Is there a free AI animation generator?</h3>
<p>Cinevva's Prompt Animations and Animation Library preview are free. Rokoko Vision is free for single-camera capture. Mixamo is free with an Adobe account. DeepMotion and Plask have small free tiers for non-commercial use.</p>
<h3>Do I need a rigged character?</h3>
<p>For text to motion and libraries, yes, a humanoid rig with standard bone naming. If your model isn't rigged, an auto-rigger does it in a minute: Cinevva's <a href="/tools/rigger">Auto Rigger</a>, Meshy, Tripo or Mixamo. Video mocap tools export the animation on their own skeleton and you retarget from there.</p>
<h3>Can I use Mixamo animations in a commercial game?</h3>
<p>Yes, with no attribution. You can't redistribute the raw Mixamo files as assets or in a tool. That distinction is why Cinevva's library ships CC0 clips only.</p>
<h2>Related</h2>
<ul>
<li><a href="/guides/free-character-animations-rigging">Free Character Animations and Auto-Rigging</a> - the library and rigging side in depth</li>
<li><a href="/guides/ai-3d-model-generators">Best AI 3D Model Generators</a> - where the characters come from</li>
<li><a href="/guides/free-rigged-3d-character-models">Free Rigged 3D Character Models for Games</a> - characters that arrive rigged and animated</li>
<li><a href="/tools/animate">Cinevva Prompt Animations</a> - text to motion, BVH and GLB export</li>
<li><a href="/tools/animations">Cinevva Animation Library</a> - 260 CC0 clips retargeted in the browser</li>
<li><a href="/tools/rigger">Cinevva Auto Rigger</a> - rig a static model first</li>
<li><a href="/game-assets/free-3d-character-models">Free 3D character models</a> - browse the free library</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Best AI Skybox and HDRI Generators for Games in 2026 (Compared)]]></title>
            <link>https://app.cinevva.com/guides/ai-skybox-generators</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/ai-skybox-generators</guid>
            <pubDate>Sat, 05 Sep 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[The best AI skybox generators in 2026: Blockade Labs Skybox AI, Hyper3D OmniCraft and Cinevva's Skybox Generator compared with the free CC0 HDRI libraries, plus what a browser game actually needs from a 360° sky.]]></description>
            <content:encoded><![CDATA[<h1>Best AI Skybox and HDRI Generators for Games in 2026 (Compared)</h1>
<p><em>Last updated: September 2026.</em></p>
<p>The best AI skybox generator in 2026 is Blockade Labs' Skybox AI if you need production 8K panoramas with a Unity plugin and a paid plan behind them, and Cinevva's <a href="/tools/skybox">Skybox Generator</a> if you want 8K 360° skies with depth maps on a free account and in the browser. Hyper3D's OmniCraft is the one to try when you need a true 32-bit HDR file for lighting rather than a backdrop. And for realistic skies, the free CC0 libraries at Poly Haven and ambientCG are still better than anything generated, because they're photographs.</p>
<p>A skybox is one of the highest-leverage assets in a 3D game. It's a single image, it fills most of the pixels on screen in any outdoor scene, and it sets the mood before the player has moved. It's also one of the assets AI is genuinely good at, because a sky has no topology to get wrong. Here's what each tool produces, what it costs, and what a browser game can actually use, checked in September 2026.</p>
<h2>Quick picks</h2>
<ul>
<li><strong>Production skyboxes with engine plugins:</strong> Blockade Labs Skybox AI. 8K, Unity plugin, Blender and Unreal export, from $20 a month.</li>
<li><strong>8K skyboxes with depth maps, free account, in the browser:</strong> Cinevva's <a href="/tools/skybox">Skybox Generator</a>.</li>
<li><strong>A real HDR file for image-based lighting:</strong> Hyper3D OmniCraft. 8K PNG plus a 32-bit EXR and a depth map per unlock.</li>
<li><strong>Realistic skies for free:</strong> Poly Haven and ambientCG HDRIs, CC0, hundreds of them.</li>
<li><strong>Stylised skies for free:</strong> Kenney's Skyboxes pack, CC0, five cubemaps in the Kenney style.</li>
<li><strong>The game around the sky:</strong> describe the scene in the <a href="/create">game creator</a> and it generates the sky with the level.</li>
</ul>
<h2>Quick reference</h2>
<table>
<thead>
<tr>
<th>Tool</th>
<th>Output</th>
<th>HDR</th>
<th>Depth</th>
<th>Free tier</th>
<th>Paid from</th>
<th>Licence</th>
</tr>
</thead>
<tbody>
<tr>
<td>Blockade Labs Skybox AI</td>
<td>8K equirect, 16K on Business, 3D mesh</td>
<td>On Standard and up</td>
<td>On Standard and up</td>
<td>5 credits, preview only, no export</td>
<td>$20/mo (annual)</td>
<td>Commercial on paid plans</td>
</tr>
<tr>
<td>Cinevva Skybox Generator</td>
<td>8K equirect</td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
<td>Credits</td>
<td>Yours</td>
</tr>
<tr>
<td>Hyper3D OmniCraft</td>
<td>8K PNG + EXR + depth</td>
<td>Yes</td>
<td>Yes</td>
<td>Preview free, 1 credit to unlock</td>
<td>Subscription, 7-day trial</td>
<td>Check terms</td>
</tr>
<tr>
<td>Poly Haven HDRIs</td>
<td>Up to 16K+ HDR</td>
<td>Yes</td>
<td>No</td>
<td>Everything</td>
<td>n/a</td>
<td>CC0</td>
</tr>
<tr>
<td>ambientCG HDRIs</td>
<td>Up to 16K HDR</td>
<td>Yes</td>
<td>No</td>
<td>Everything</td>
<td>n/a</td>
<td>CC0</td>
</tr>
<tr>
<td>Kenney Skyboxes</td>
<td>Cubemaps, stylised</td>
<td>No</td>
<td>No</td>
<td>Everything</td>
<td>n/a</td>
<td>CC0</td>
</tr>
</tbody>
</table>
<h2>What a game needs from a skybox</h2>
<p>Three properties decide whether a generated sky is usable, and the marketing pages rarely mention them.</p>
<p><strong>Projection.</strong> Almost every generator outputs an equirectangular panorama, a 2:1 image that wraps around a sphere. Three.js, Babylon.js, PlayCanvas and Unity all load it directly. Older pipelines and some mobile-first engines want a cubemap, six square faces, which you convert from the equirect in Blender or with a small script. Kenney's pack ships as cubemaps.</p>
<p><strong>Dynamic range.</strong> A standard PNG or JPG skybox is a backdrop: it looks like a sky but can't light the scene. A 32-bit HDR (EXR or .hdr) carries the real brightness of the sun and is what image-based lighting uses to make a chrome sphere look like it's outdoors. If you want the sky to light your models, you need HDR. Blockade's Standard tier, OmniCraft and the photo libraries provide it. Cinevva's generator and most others produce LDR.</p>
<p><strong>Resolution and size.</strong> 8K sounds like the number to want, and for a browser game it's usually too big. An 8K equirect is 8192 by 4096 pixels, which is 128 MB uncompressed and 10 to 20 MB as a JPG, on a page that's already loading a game. Most web games ship a 4K sky compressed to KTX2, which the <a href="/tools/ktx2-compressor">KTX2 Texture Compressor</a> does in the browser. Generate at 8K if it's offered, then downscale for the web.</p>
<p><strong>Seams.</strong> The left and right edges of the equirect have to meet. Every dedicated tool here handles that. A general image generator prompted for &quot;360 panorama&quot; almost never does, and the seam sits right where the player turns around.</p>
<h2>Blockade Labs Skybox AI</h2>
<p>Skybox AI is the established name. It generates seamless 360° environments from a text prompt and a rough sketch, in dozens of art styles, and it's built for pipelines: a native Unity plugin, direct exports to Blender and Unreal, MCP support, and a Business tier with full API access.</p>
<p>The free plan is 5 credits a month and is preview only, with no exports, so it's for evaluating the tool rather than using it. Essential is $20 a month per seat on an annual plan (or $24 month to month) for 100 credits and 8K exports. Standard, at $48 annual or $60 monthly, adds 300 credits, HDRI lighting output and 3D skybox meshes, which is the tier a game project actually wants. Business, at $112 to $140, raises resolution to 16K and adds the API. Every paid plan carries a full commercial licence.</p>
<p>It's the tool to pay for if you're producing skies for a shipped game in Unity or Unreal and want them in the engine in a click. For a browser game the 8K export needs downscaling anyway, so the resolution advantage matters less than the style range and the depth and mesh options.</p>
<h2>Cinevva Skybox Generator</h2>
<p>Our own <a href="/tools/skybox">Skybox Generator</a> produces 8K 360° skyboxes from a text description, in multiple art styles, with a depth map for parallax and 3D integration. It runs in the browser on a free account and the output is yours.</p>
<p>What it doesn't do is HDR: the skies are LDR images, so they're backdrops rather than light sources. For a stylised game that's rarely a problem, because stylised games light their scenes with a couple of directional lights and use the sky for mood. For a realistic outdoor scene where you want the sun in the sky to be the light on the ground, use an HDR source from the next two sections.</p>
<p>If the sky is part of a game you're building rather than an asset on its own, the <a href="/create">game creator</a> generates it as part of the scene when you describe the setting (&quot;a desert canyon at golden hour&quot;).</p>
<h2>Hyper3D OmniCraft</h2>
<p>Hyper3D, the company behind the Rodin 3D generator, has an HDRI generator inside its OmniCraft toolset. It turns a prompt or a reference image into a seamless equirect, previews it as a skybox in a live viewer, and on unlock hands you three files: an 8K PNG, a 32-bit EXR for lighting, and a panoramic depth map. Previews and regenerations are free; unlocking the full pack costs one credit for regular members or is included on a subscription, with a 7-day trial.</p>
<p>That EXR is the reason to use it. It's the only AI generator here that gives you a real HDR lighting file on the entry tier. Check the terms of use for the commercial licence before shipping, since the page doesn't state it as plainly as Blockade does.</p>
<p>A few other sites offer &quot;free AI HDRI generators&quot; with bold claims about commercial rights and hundreds of millions of generations. Treat those numbers as marketing. Generate a preview, check the seam and the sun, read the terms, and only then rely on it.</p>
<h2>The free libraries</h2>
<p>For a realistic sky, a photograph beats a generation, and the two big CC0 libraries are the answer.</p>
<p><strong>Poly Haven</strong> has several hundred HDRIs shot with a proper bracketed workflow, at resolutions up to 16K and beyond, all CC0. They're categorised by time of day, weather and location, and each one comes with a tone-mapped preview so you can judge the mood before downloading. For image-based lighting there is nothing better at any price.</p>
<p><strong>ambientCG</strong> is the other CC0 source, with a smaller but growing HDRI collection alongside its textures, also up to 16K.</p>
<p><strong>Kenney's Skyboxes</strong> pack is five stylised cubemap skies, day and night variants, CC0, in the same flat style as Kenney's models. If your game uses Kenney assets, it's the matching sky.</p>
<p>Our <a href="/game-assets/free-hdri-skies">free HDRI skies</a>, <a href="/game-assets/free-sunset-hdris">sunset</a>, <a href="/game-assets/free-night-hdris">night</a> and <a href="/game-assets/free-studio-hdris">studio HDRI</a> pages let you browse these by mood, and the <a href="/guides/free-textures-hdris-materials">free textures and HDRIs guide</a> covers the libraries in depth.</p>
<h2>How to judge a generated skybox in 30 seconds</h2>
<ul>
<li><strong>Load it on a sphere and turn around.</strong> The seam is behind you. Every dedicated tool passes; general image generators don't.</li>
<li><strong>Look straight up and straight down.</strong> The poles of an equirect are where generators pinch and smear. A good sky has a clean zenith and a plausible ground or horizon fog at the nadir.</li>
<li><strong>Find the sun.</strong> If there's a sun, there should be one, with a plausible position relative to the lighting on the clouds. Two suns, or lit clouds with no source, is a common failure.</li>
<li><strong>Check the horizon line.</strong> It should sit exactly at the vertical centre of the image. A tilted or offset horizon makes the whole scene feel wrong without the player knowing why.</li>
<li><strong>Check the file you'll ship.</strong> 4K KTX2 for the web. If the tool only gives you 8K JPG, downscale before you compress.</li>
</ul>
<h2>Licences in 30 seconds</h2>
<ul>
<li><strong>Blockade Labs:</strong> commercial licence on every paid plan. The free plan can't export at all.</li>
<li><strong>Cinevva Skybox Generator:</strong> output is yours.</li>
<li><strong>Hyper3D:</strong> read the current terms.</li>
<li><strong>Poly Haven, ambientCG, Kenney:</strong> CC0. Anything, no credit.</li>
</ul>
<h2>Common Questions</h2>
<h3>What is the best AI skybox generator?</h3>
<p>Blockade Labs Skybox AI for a paid production pipeline with engine plugins, Cinevva's Skybox Generator for free 8K skies with depth maps in the browser, and Hyper3D OmniCraft when you need a real HDR file for lighting.</p>
<h3>Is there a free AI skybox generator?</h3>
<p>Cinevva's Skybox Generator runs on a free account. Blockade's free plan previews but can't export. Hyper3D previews free and charges a credit to unlock. For fully free skies, Poly Haven, ambientCG and Kenney are CC0.</p>
<h3>Can I use AI skyboxes in a commercial game?</h3>
<p>Yes, on Blockade's paid plans and with Cinevva's generator. Check Hyper3D's terms. The CC0 libraries have no restrictions at all.</p>
<h3>Do I need an HDR skybox?</h3>
<p>Only if you want the sky to light the scene through image-based lighting. For a backdrop behind a stylised game lit with directional lights, an 8-bit skybox is fine and much smaller.</p>
<h3>What resolution skybox should a browser game use?</h3>
<p>4K (4096 by 2048) compressed to KTX2 is the usual ceiling. 8K is 10 to 20 MB even as a JPG, which is too much for a web page to load before the player can move.</p>
<h2>Related</h2>
<ul>
<li><a href="/guides/free-textures-hdris-materials">Free PBR Textures, Materials and HDRIs for Games</a> - Poly Haven and ambientCG in depth</li>
<li><a href="/guides/ai-texture-generators">Best AI Texture Generators for Games</a> - the ground under the sky</li>
<li><a href="/guides/ai-asset-generators-games">Best AI Asset Generators for Games</a> - the whole AI asset stack</li>
<li><a href="/tools/skybox">Cinevva Skybox Generator</a> - 8K skies with depth maps on a free account</li>
<li><a href="/tools/ktx2-compressor">KTX2 Texture Compressor</a> - shrink the sky before it hits a web build</li>
<li><a href="/game-assets/free-hdri-skies">Free HDRI skies</a>, <a href="/game-assets/free-sunset-hdris">sunset</a>, <a href="/game-assets/free-night-hdris">night</a> and <a href="/game-assets/free-studio-hdris">studio HDRIs</a> - browse the free library</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Best AI Sound Effect Generators for Games in 2026 (Compared)]]></title>
            <link>https://app.cinevva.com/guides/ai-sound-effect-generators</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/ai-sound-effect-generators</guid>
            <pubDate>Sat, 05 Sep 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[The best AI sound effect generators for games in 2026: ElevenLabs, Adobe Firefly, Stable Audio, Krotos Studio and Meta's open AudioGen compared on quality, price, licence and what a browser game can actually ship.]]></description>
            <content:encoded><![CDATA[<h1>Best AI Sound Effect Generators for Games in 2026 (Compared)</h1>
<p><em>Last updated: September 2026.</em></p>
<p>The best AI sound effect generator for a game is ElevenLabs if you want punchy, game-style one-shots from a short prompt (impacts, footsteps, UI clicks, spell casts, gunfire), and Adobe Firefly if you already live in Premiere and want to act the timing of a sound into a microphone. Stable Audio is stronger on layered textures and ambient beds than on single hits. Krotos Studio isn't a generator at all, it's performed sound design over real recordings, and it belongs in the comparison because it's what people reach for after prompt-based tools burn them. And the free CC0 libraries are still the right answer for the sounds every game needs, because a recorded door is a recorded door.</p>
<p>Sound is the asset category where AI generation has quietly become good enough. A prompt like &quot;heavy wooden chest opening, creak then thud&quot; gets you a usable clip in seconds from three different services, and the questions that matter are the boring ones: what does a generation cost, can you ship it commercially, and how do you get a clean loop. Here's each tool, with prices and licence terms from their pages in September 2026.</p>
<h2>Quick picks</h2>
<ul>
<li><strong>Game one-shots from a prompt:</strong> ElevenLabs. Fast, forgiving prompts, 200 credits a generation.</li>
<li><strong>The same model on a free account, in the browser, with exact durations:</strong> Cinevva's <a href="/tools/sfx">Sound Effects Generator</a>, 0.5 to 30 seconds per clip.</li>
<li><strong>Perform the timing yourself:</strong> Adobe Firefly. Describe the sound, then act its rhythm into a mic. 10 credits a generation.</li>
<li><strong>Ambient beds and layered textures:</strong> Stable Audio. Longer clips, more structure, commercial rights on the $12 tier.</li>
<li><strong>Hands-on control instead of prompts:</strong> Krotos Studio. Real recordings shaped live, game rights on the Pro plan.</li>
<li><strong>Free and offline:</strong> Meta's AudioGen, but only for non-commercial work.</li>
<li><strong>Free and recorded:</strong> Freesound and the CC0 packs in our <a href="/guides/free-sound-effects-music">free sound effects guide</a>.</li>
<li><strong>Skip the audio pipeline:</strong> describe the game in the <a href="/create">game creator</a> and it generates the sound effects with the game.</li>
</ul>
<h2>Quick reference</h2>
<table>
<thead>
<tr>
<th>Tool</th>
<th>Best for</th>
<th>Max clip</th>
<th>Free tier</th>
<th>Paid from</th>
<th>Commercial use</th>
</tr>
</thead>
<tbody>
<tr>
<td>ElevenLabs Sound Effects</td>
<td>Game one-shots</td>
<td>Short clips</td>
<td>10,000 credits/mo, no commercial licence</td>
<td>$6/mo</td>
<td>Starter and up</td>
</tr>
<tr>
<td>Cinevva Sound Effects Generator</td>
<td>One-shots with exact duration</td>
<td>30 s</td>
<td>Yes</td>
<td>Credits</td>
<td>Yours</td>
</tr>
<tr>
<td>Adobe Firefly Generate Sound Effects</td>
<td>Timed, performed effects</td>
<td>Short clips</td>
<td>Limited credits</td>
<td>$9.99/mo</td>
<td>Yes, &quot;commercially safe&quot;</td>
</tr>
<tr>
<td>Stable Audio</td>
<td>Ambience, textures, layers</td>
<td>3 min on paid</td>
<td>10 clips/mo at 30 s, personal only</td>
<td>$12/mo</td>
<td>Professional and up</td>
</tr>
<tr>
<td>Krotos Studio</td>
<td>Performed sound design</td>
<td>n/a (live)</td>
<td>5-day trial only</td>
<td>$9.99/mo annual</td>
<td>Games need Pro or higher</td>
</tr>
<tr>
<td>Meta AudioGen (open weights)</td>
<td>Local experiments</td>
<td>~10 s</td>
<td>Free</td>
<td>n/a</td>
<td>No (CC BY-NC weights)</td>
</tr>
<tr>
<td>Freesound, CC0 packs</td>
<td>Recorded, real sounds</td>
<td>Any</td>
<td>Everything</td>
<td>n/a</td>
<td>Per clip licence</td>
</tr>
</tbody>
</table>
<h2>What an AI sound effect has to get right</h2>
<p>Before the tools, the four things that separate a usable game SFX from a demo.</p>
<p><strong>The transient.</strong> A hit, a click or a footstep lives in its first 20 milliseconds. Generators that smear the attack produce sounds that feel late no matter how you time them. Listen to the onset at half speed before you listen to anything else.</p>
<p><strong>The tail.</strong> Game sounds end. A generated clip that fades into two seconds of room tone or noise floor has to be trimmed, and if the noise floor is high the trim is audible. Prompt for &quot;dry, no reverb&quot; and add the space in the engine.</p>
<p><strong>Loop points.</strong> Ambiences, engines and hums need to loop without a click. Only Stable Audio produces clips long enough to find a clean loop region in; for the others, generate ten seconds and crossfade the ends in an editor.</p>
<p><strong>Format and size.</strong> Every service hands you MP3 or WAV. A browser game wants OGG or Opus at 48 to 96 kbps, and a one-shot should be under 50 KB. Convert before it goes near a build. Our <a href="/tutorials/web-audio-api-games">Web Audio API tutorial</a> covers loading and playing them.</p>
<h2>ElevenLabs Sound Effects</h2>
<p>ElevenLabs is better known for voices, and its sound effects model has become the default for game one-shots because it understands game vocabulary: &quot;8-bit coin pickup&quot;, &quot;sci-fi door hiss&quot;, &quot;sword unsheathe, metallic ring&quot; all land close to what you meant on the first try. Generations are fast and the prompt control is forgiving.</p>
<p>Pricing is by credit across the whole platform. The free plan is 10,000 credits a month, Starter is $6 for 30,000, Creator is $22 for 121,000 and Pro is $99 for 600,000. A sound effect generation costs 200 credits, so the free plan is about fifty generations a month and Starter about 150. The catch on free is the licence: commercial use starts at Starter, so nothing generated on the free plan can go in a released game.</p>
<p>Its weaknesses are the other side of its strengths. Long, evolving ambiences aren't the point, and it produces one clip per prompt with no way to perform or shape it after the fact.</p>
<h2>Cinevva Sound Effects Generator</h2>
<p>Our <a href="/tools/sfx">Sound Effects Generator</a> runs the same class of prompt-to-audio model in the browser on a free account, with two things the raw service doesn't give you: an exact duration control from 0.5 to 30 seconds, so a footstep is a footstep and not a footstep plus a second of silence, and a prompt-influence slider that trades literal interpretation for variation when you want five different versions of the same hit. The output is yours.</p>
<p>It's also the tool the <a href="/create">game creator</a> uses when it builds a game: describe the game and the sound effects are generated and wired to events along with the code, the models and the music. If you found this page because a game needs sounds rather than because you're building a sound library, that's the shorter path.</p>
<h2>Adobe Firefly Generate Sound Effects</h2>
<p>Firefly's sound effects tool went broadly available in August 2026 alongside Adobe's music and speech generation, and it has one feature nobody else does: you describe the sound, then record yourself acting its timing and intensity into a microphone (&quot;whoosh... whoosh... BANG&quot;) and the generated effect follows your performance. For anything that has to hit on a visual beat, that's the fastest workflow on this list.</p>
<p>Firefly Standard is $9.99 a month for 2,000 generative credits, Pro is $29.99 for 7,000 and Premium is $199.99 for 50,000. Sound effects cost 10 credits a generation, so even Standard is 200 sounds a month, far more per dollar than ElevenLabs. There's a free tier with a limited number of credits. Adobe describes the audio outputs as commercially safe, trained on licensed and public domain material, which is the strongest licence statement in this comparison.</p>
<p>The trade-off is that it lives inside Adobe's ecosystem. If your work happens in Premiere and After Effects, it's the obvious pick. If it doesn't, the round trip is a tax.</p>
<h2>Stable Audio</h2>
<p>Stability's audio model competes on control rather than snap. It produces clips up to three minutes on paid plans, with more structure and layering than the one-shot tools, which makes it the one to reach for when you need an ambient bed (rain on a tin roof, cave drips, a distant crowd) that has to loop and evolve.</p>
<p>The free tier is reported as ten clips a month cropped to 30 seconds for personal use only, and free credits have been unavailable to new signups in some regions. The Professional plan is $12 a month for around 500 tracks with commercial use included for individuals under a revenue cap, and there's a higher tier around $30. Stable Audio Open, the open-weights model, runs locally for free under Stability's community licence, which permits commercial use below a revenue threshold you should read before relying on it.</p>
<p>For single hits and UI sounds it's overkill and slower than ElevenLabs. For everything longer than five seconds it's the better tool.</p>
<h2>Krotos Studio</h2>
<p>Krotos Studio is here because it's the answer to &quot;AI sound effects sound samey and I can't control them&quot;. It isn't generative. It's a library of real recordings you perform live through XY pads while watching your footage, plus a video-to-sound mode that analyses picture and lays matching effects from the library. The result is that the sound is under your hands rather than behind a prompt.</p>
<p>There's no free tier, only a five-day trial. Studio is $19.99 a month, or $9.99 a month billed annually, and its licence covers YouTube, social and client work. Games need Pro, at $49.99 monthly or $23.33 annually, which adds commercial rights for film, TV, games and advertising, stem access and the plugin versions. Max, at $83.33 a month annually, adds a 60,000-effect library and broadcast clearance.</p>
<p>If you have more than a few dozen sounds to design and you care how they feel rather than how fast they arrive, this is the professional's tool on the list.</p>
<h2>Meta AudioGen</h2>
<p>AudioGen is the text-to-sound model in Meta's AudioCraft release. The code is MIT licensed and the weights are free to download, so it runs on your own GPU with no account and no per-generation cost. The quality is a generation behind the commercial services and clips are short.</p>
<p>The reason it's last is the licence. The model weights are released under CC BY-NC 4.0, which forbids commercial use, so anything it generates can't ship in a game you sell or monetise. It's a research and prototyping tool, and a fine one.</p>
<h2>The free libraries</h2>
<p>For the sounds every game needs (doors, footsteps, UI, weather, impacts), a recording beats a generation, and the CC0 sources are large. Freesound has hundreds of thousands of clips with a licence filter, Kenney's audio packs are CC0 and game-ready, and the Sonniss GDC bundles are tens of gigabytes of professional recordings, royalty-free. Our <a href="/guides/free-sound-effects-music">Free Sound Effects and Music for Games</a> guide covers all of them with the licence terms checked, and the <a href="/game-assets/free-footstep-sound-effects">free footstep</a>, <a href="/game-assets/free-ui-sound-effects">UI</a>, <a href="/game-assets/free-explosion-sound-effects">explosion</a> and <a href="/game-assets/free-ambient-game-sounds">ambient</a> pages let you browse by category.</p>
<p>The working pattern most small teams settle on: library for the everyday sounds, generation for the ones that don't exist yet (the alien door, the magic spell, the specific creature), and an editor to make the two sit together.</p>
<h2>Licences in 30 seconds</h2>
<ul>
<li><strong>ElevenLabs free plan:</strong> no commercial licence. Starter and up: yes.</li>
<li><strong>Adobe Firefly:</strong> commercially safe on every plan, per Adobe.</li>
<li><strong>Stable Audio free tier:</strong> personal only. Professional and up: commercial under a revenue cap. Stable Audio Open: community licence, read the threshold.</li>
<li><strong>Krotos Studio:</strong> games need Pro or Max. Studio covers video and social only.</li>
<li><strong>Meta AudioGen:</strong> weights are CC BY-NC. No commercial use.</li>
<li><strong>Cinevva Sound Effects Generator:</strong> output is yours.</li>
<li><strong>Freesound and CC0 packs:</strong> per clip. Filter for CC0 and it's anything, no credit.</li>
</ul>
<p>Our <a href="/guides/game-asset-licenses">Game Asset Licenses Explained</a> guide covers CC0, CC BY and royalty-free in depth, and all of it applies to audio.</p>
<h2>Common Questions</h2>
<h3>What is the best AI sound effect generator for games?</h3>
<p>ElevenLabs for one-shots from a prompt, Adobe Firefly if you want to perform the timing, Stable Audio for ambient beds and anything longer than a few seconds. Cinevva's Sound Effects Generator gives you the one-shot workflow on a free account with exact duration control.</p>
<h3>Is there a free AI sound effect generator?</h3>
<p>Cinevva's Sound Effects Generator runs on a free account. ElevenLabs' free plan gives about fifty generations a month but no commercial licence. Firefly has limited free credits. Meta's AudioGen is free to run locally but non-commercial. For free sounds you can ship, the CC0 libraries are the answer.</p>
<h3>Can I use AI sound effects in a commercial game?</h3>
<p>Yes, on ElevenLabs Starter and up, every Firefly plan, Stable Audio Professional and up, and Krotos Pro and up. Not from ElevenLabs' free plan, Stable Audio's free tier, or AudioGen. Keep a record of which sounds were generated where, since some storefronts ask.</p>
<h3>How do I make AI sound effects loop?</h3>
<p>Generate longer than you need (Stable Audio is the tool for this), find a region where the start and end are similar, and crossfade the last 50 to 100 milliseconds into the first in an editor like Audacity or Reaper. Prompting for &quot;seamless loop&quot; rarely produces one on its own.</p>
<h3>What format should game sound effects be?</h3>
<p>OGG Vorbis or Opus at 48 to 96 kbps for browser games, with one-shots under 50 KB. Every generator outputs MP3 or WAV, so convert before you ship. Our <a href="/tutorials/web-audio-api-games">Web Audio API</a> and <a href="/tutorials/tone-js-game-audio">Tone.js</a> tutorials cover loading and playback.</p>
<h2>Related</h2>
<ul>
<li><a href="/guides/free-sound-effects-music">Free Sound Effects and Music for Games</a> - the recorded, CC0 alternative</li>
<li><a href="/guides/ai-music-generators-games">Best AI Music Generators for Games</a> - the music side of the same question</li>
<li><a href="/guides/ai-asset-generators-games">Best AI Asset Generators for Games</a> - the whole AI asset stack</li>
<li><a href="/guides/game-asset-licenses">Game Asset Licenses Explained</a> - what a free tier actually lets you ship</li>
<li><a href="/tools/sfx">Cinevva Sound Effects Generator</a> - prompt to sound, 0.5 to 30 seconds, free account</li>
<li><a href="/tutorials/web-audio-api-games">Web Audio API for games</a> - loading and playing the clips</li>
<li><a href="/game-assets/free-footstep-sound-effects">Free footstep</a>, <a href="/game-assets/free-ui-sound-effects">UI</a>, <a href="/game-assets/free-explosion-sound-effects">explosion</a> and <a href="/game-assets/free-ambient-game-sounds">ambient sounds</a> - browse the free library</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Best Free Rigged 3D Character Models for Games (2026)]]></title>
            <link>https://app.cinevva.com/guides/free-rigged-3d-character-models</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/free-rigged-3d-character-models</guid>
            <pubDate>Sat, 05 Sep 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Where to get free rigged and animated 3D characters for games in 2026: KayKit, Quaternius, 100 Avatars, Kenney, Mixamo, Poly Pizza and Sketchfab's CC0 filter, with licences checked and what to do when a model arrives unrigged.]]></description>
            <content:encoded><![CDATA[<h1>Best Free Rigged 3D Character Models for Games (2026)</h1>
<p><em>Last updated: September 2026.</em></p>
<p>The best free rigged 3D characters for games come from four sources that ship them already animated: KayKit's character packs (CC0, five rigged adventurers with weapons in the free tier), Quaternius's Ultimate Animated Character Pack (50-plus animated characters), Polygonal Mind's 100 Avatars (167 rigged CC0 characters across two rounds), and Kenney's animated character packs (CC0, in Kenney's blocky style). Mixamo adds a few dozen rigged humanoids free with an Adobe account, and Poly Pizza and Sketchfab's CC0 filter cover thousands more if you're willing to sort. Everything here is free for commercial use. Where a licence has a condition, I've said so.</p>
<p>A rigged character is the difference between a model and a game. A skeleton with skin weights means it can walk, and a model that arrives with animations means it walks today. Here's every source worth bookmarking, what each pack actually contains, and what to do when the character you want has no bones.</p>
<h2>Quick picks</h2>
<ul>
<li><strong>Complete, consistent, ready to drop in:</strong> KayKit Character Pack: Adventurers (CC0). Five rigged, textured, animated characters plus 25 weapons and accessories, free; three more for $7.95.</li>
<li><strong>The biggest single animated set:</strong> Quaternius Ultimate Animated Character Pack. 50-plus animated characters, FBX, OBJ and Blend, free.</li>
<li><strong>Realistic-proportion humanoids that work with Mixamo clips:</strong> 100 Avatars R1 and R2 (CC0), 167 rigged characters in FBX and glTF.</li>
<li><strong>Blocky and cheerful, matches every other Kenney pack:</strong> Kenney's Animated Characters (CC0).</li>
<li><strong>A rigged base to test your pipeline:</strong> Mixamo's character roster, free with an Adobe account.</li>
<li><strong>Thousands to sort through:</strong> Poly Pizza and Sketchfab, filtered to CC0.</li>
<li><strong>A character with no rig:</strong> Cinevva's <a href="/tools/rigger">Auto Rigger</a>, free in the browser, then the <a href="/tools/animations">Animation Library</a> for 260 CC0 clips.</li>
<li><strong>Skip the asset hunt:</strong> describe the game in the <a href="/create">game creator</a> and the characters arrive rigged and animated.</li>
</ul>
<h2>Quick reference</h2>
<table>
<thead>
<tr>
<th>Source</th>
<th>What you get</th>
<th>Rigged</th>
<th>Animations</th>
<th>Formats</th>
<th>Licence</th>
</tr>
</thead>
<tbody>
<tr>
<td>KayKit Adventurers</td>
<td>5 characters, 25+ accessories</td>
<td>Yes</td>
<td>Basic set, more in the free Animations pack</td>
<td>FBX, glTF</td>
<td>CC0</td>
</tr>
<tr>
<td>Quaternius Ultimate Animated</td>
<td>50+ characters</td>
<td>Yes</td>
<td>Included</td>
<td>FBX, OBJ, Blend</td>
<td>Quaternius licence, no attribution</td>
</tr>
<tr>
<td>100 Avatars R1 + R2</td>
<td>73 + 94 humanoids</td>
<td>Yes</td>
<td>Mixamo-compatible</td>
<td>FBX, glTF</td>
<td>CC0</td>
</tr>
<tr>
<td>Kenney Animated Characters</td>
<td>Protagonists, Retro, Survivors packs</td>
<td>Yes</td>
<td>Included</td>
<td>FBX, glTF, more</td>
<td>CC0</td>
</tr>
<tr>
<td>Mixamo</td>
<td>A few dozen humanoids</td>
<td>Yes</td>
<td>Thousands, applied on site</td>
<td>FBX</td>
<td>Free, commercial, no redistribution</td>
</tr>
<tr>
<td>Poly Pizza</td>
<td>10,600+ low-poly models</td>
<td>Some</td>
<td>Some</td>
<td>glTF, others</td>
<td>CC0 and CC BY, per model</td>
</tr>
<tr>
<td>Sketchfab (CC0 filter)</td>
<td>Thousands</td>
<td>Some</td>
<td>Some</td>
<td>glTF, FBX, others</td>
<td>Per model</td>
</tr>
</tbody>
</table>
<h2>KayKit</h2>
<p>Kay Lousberg's KayKit packs are the best-organised free characters in game development. The <strong>Character Pack: Adventurers</strong> gives you five fully textured, rigged and animated fantasy characters with basic movement animations and more than 25 weapons and accessories, in FBX and glTF for Unity, Godot, Unreal and Roblox. The EXTRA tier adds three more characters for $7.95 and the SOURCE tier adds the Blender files for $11.95, but the free tier is a complete, shippable set.</p>
<p>The <strong>Character Animations</strong> pack is a separate free download of additional clips that fit every KayKit character, and the <strong>Skeletons</strong> and other character packs share the same rig, so animations carry across. Everything KayKit publishes is CC0: personal and commercial use, no attribution. The models share a small gradient atlas texture (1024 pixels, and KayKit notes it can be shrunk to 128 without visible loss), which keeps a whole party of characters under a megabyte.</p>
<h2>Quaternius</h2>
<p>Quaternius has released hundreds of low-poly packs over a decade, and the <strong>Ultimate Animated Character Pack</strong> is the one to start with: more than 50 rigged characters with animations, in FBX, OBJ and Blend. The Animated Men, Women, Robot, Zombie, Knight and Alien packs each add a themed set on the same rig, and the Universal Base Characters and Modular Character Outfits packs let you build your own.</p>
<p>One licence note. Quaternius packs were CC0 for years and the pack pages still say so, but the site now publishes a Quaternius Asset Licence (QAL v1.0) that applies going forward: free for personal, educational and commercial projects including games, no attribution required, no fees or royalties, and you may not resell or redistribute the assets themselves as a standalone pack, stock file or template. For a game, nothing changes. For an asset tool or a bundle, read it. Patreon supporters get bonus source kits, but the packs above are free.</p>
<h2>100 Avatars</h2>
<p>Polygonal Mind's <strong>100 Avatars</strong> project released two rounds of rigged low-poly humanoids under CC0, 73 in round one and 94 in round two, in FBX and glTF, on Sketchfab and Poly Pizza. They're humanoid-proportioned rather than chibi, which means Mixamo clips and our <a href="/tools/animations">Animation Library</a> retarget onto them cleanly, and the variety (professions, sports, fantasy) covers a crowd or a multiplayer roster without repeats. Being CC0, they're also the safest base for a character customiser, since you can redistribute modified versions.</p>
<h2>Kenney</h2>
<p>Kenney's character packs come in the same flat, blocky style as the rest of Kenney's CC0 catalogue, which is the point: if your props and environment are Kenney, these match. <strong>Animated Characters Protagonists</strong>, <strong>Animated Characters Retro</strong> and <strong>Animated Characters Survivors</strong> each ship rigged and animated characters in several formats, and <strong>Blocky Characters</strong> and <strong>Mini Characters</strong> add unanimated variants you can rig yourself. All CC0.</p>
<h2>Mixamo</h2>
<p>Mixamo is an animation library first, but it also hosts a few dozen rigged, textured humanoid characters that you can download with any of its clips applied, free with an Adobe account. The licence allows commercial use in games with no attribution and forbids redistributing the raw files, so the characters are fine in a shipped game and not fine in an asset pack. Adobe hasn't added to Mixamo in years, so what's there is what there is. It's the fastest way to get a rigged test character into a pipeline.</p>
<h2>Poly Pizza and Sketchfab</h2>
<p><strong>Poly Pizza</strong> hosts more than 10,600 free low-poly models, including the archived Google Poly collection and years of community uploads, with a licence filter for CC0 and CC BY. Rigged characters are a minority and you'll sort, but the 100 Avatars bundles live there, and the site's own bundles collect character sets by creator.</p>
<p><strong>Sketchfab</strong> still allows free downloads of models their creators marked downloadable, and its CC0 filter is the way to search it. Rigged and animated models show up in the filters too. Check each model's licence line before downloading, because CC BY and CC BY-NC are common and the second is off-limits for a game you sell.</p>
<p>Our <a href="/game-assets/free-3d-character-models">free 3D character models</a> page collects the packs above with their licences, and the <a href="/guides/free-3d-model-sites">Best Free 3D Model Sites</a> guide covers the sources for everything that isn't a character.</p>
<h2>When the character you want has no rig</h2>
<p>Most of the free 3D models in the world are static. A downloaded character, a Sketchfab find, a model out of a generator: none of them arrive with a skeleton. Rigging by hand in Blender is a day's work for a beginner.</p>
<p>Cinevva's <a href="/tools/rigger">Auto Rigger</a> does it in the browser for free: upload a GLB, FBX or OBJ, pick humanoid or quadruped, and get back a rigged GLB with skin weights. From there the <a href="/tools/animations">Animation Library</a> previews 260 CC0 clips on your character, and <a href="/tools/animate">Prompt Animations</a> generates a motion from a sentence when the library doesn't have it. If the character is already open in Blender, the <a href="/blender-addon/">Cinevva Rig add-on</a> does the same rig and the same clips inside Blender, on your own machine, for a one-time $29 launch price. Our <a href="/guides/free-character-animations-rigging">Free Character Animations and Auto-Rigging</a> guide compares every auto-rigger, including Mixamo's and the ones inside Meshy and Tripo.</p>
<p>For the best result, upload a clean single mesh in a T-pose or A-pose with the arms away from the body. Characters with crossed arms, merged limbs or heavy skirts need a cleanup pass afterwards.</p>
<h2>How to judge a rigged character in 30 seconds</h2>
<ul>
<li><strong>Play the walk.</strong> Feet should plant. Sliding or floating means the rig or the clip is off.</li>
<li><strong>Bend the elbows and knees.</strong> Pinching or candy-wrapper twisting at the joints means poor skin weights, which is fixable in Blender but tedious.</li>
<li><strong>Count the bones.</strong> Around 20 to 65 for a game humanoid. More than 100 means facial or finger bones you may not need and a heavier file.</li>
<li><strong>Check the bone names.</strong> Mixamo-style or Unreal-style naming retargets everywhere. A rig with <code>Bone.001</code> names retargets nowhere.</li>
<li><strong>Look at the file size.</strong> A rigged low-poly character should be under 2 MB as a GLB. Larger means an oversized texture or an unoptimised mesh; the <a href="/tools/glb-optimizer">GLB Optimizer</a> fixes both.</li>
</ul>
<h2>Licences in 30 seconds</h2>
<ul>
<li><strong>KayKit, 100 Avatars, Kenney:</strong> CC0. Anything, no credit, redistribute freely.</li>
<li><strong>Quaternius:</strong> free commercial use, no attribution, don't redistribute the assets as assets.</li>
<li><strong>Mixamo:</strong> commercial use in games, no attribution, no redistribution of the files.</li>
<li><strong>Poly Pizza, Sketchfab:</strong> per model. Filter for CC0; CC BY needs a credit line; CC BY-NC can't ship in a paid game.</li>
</ul>
<p>Our <a href="/guides/game-asset-licenses">Game Asset Licenses Explained</a> guide covers the differences in depth.</p>
<h2>Common Questions</h2>
<h3>Where can I get free rigged 3D characters for games?</h3>
<p>KayKit, Quaternius, 100 Avatars and Kenney all ship rigged and animated characters free for commercial use. Mixamo adds rigged humanoids free with an Adobe account. Poly Pizza and Sketchfab have thousands more behind a CC0 filter.</p>
<h3>Are free rigged characters OK for a commercial game?</h3>
<p>Yes, from every source above. KayKit, 100 Avatars and Kenney are CC0. Quaternius and Mixamo permit commercial use in games without attribution but not redistributing the files themselves. Check per-model licences on Poly Pizza and Sketchfab.</p>
<h3>Do free rigged characters come with animations?</h3>
<p>KayKit, Quaternius and Kenney include animations. 100 Avatars are rigged for Mixamo-style clips. For any rigged humanoid, Cinevva's Animation Library retargets 260 CC0 clips in the browser, and Mixamo applies its library on download.</p>
<h3>What if the character I want isn't rigged?</h3>
<p>Auto-rig it. Cinevva's Auto Rigger handles humanoids and quadrupeds in the browser for free, Mixamo's rigger handles humanoids, and Meshy and Tripo rig models generated on their platforms.</p>
<h3>What format should I download?</h3>
<p>glTF or GLB for browser games and modern engines, since the mesh, textures, skeleton and animations travel in one file. FBX for Unity and Unreal pipelines and for anything heading into Blender for edits. The <a href="/tools/fbx-to-glb">FBX to GLB converter</a> handles the crossover.</p>
<h2>Related</h2>
<ul>
<li><a href="/guides/free-character-animations-rigging">Free Character Animations and Auto-Rigging</a> - the clips and riggers in depth</li>
<li><a href="/guides/free-3d-model-sites">Best Free 3D Model Sites for Games</a> - everything that isn't a character</li>
<li><a href="/guides/ai-animation-generators-3d">Best AI Animation Generators for 3D Characters</a> - text to motion and video mocap</li>
<li><a href="/guides/game-asset-licenses">Game Asset Licenses Explained</a> - CC0, CC BY and the rest</li>
<li><a href="/tools/rigger">Cinevva Auto Rigger</a> - rig a static character in the browser</li>
<li><a href="/tools/animations">Cinevva Animation Library</a> - 260 CC0 clips on your own model</li>
<li><a href="/game-assets/free-3d-character-models">Free 3D character models</a> and <a href="/game-assets/free-low-poly-3d-models">low-poly packs</a> - browse the free library</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Best AI Pixel Art and Sprite Generators for Games in 2026 (Compared)]]></title>
            <link>https://app.cinevva.com/guides/ai-pixel-art-generators</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/ai-pixel-art-generators</guid>
            <pubDate>Fri, 04 Sep 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[The best AI pixel art and sprite generators in 2026: PixelLab, Retro Diffusion, Ludo, Scenario, Sprixen, Sprite-AI and Leonardo compared on animation, tilesets, style consistency, price and what you can ship.]]></description>
            <content:encoded><![CDATA[<h1>Best AI Pixel Art and Sprite Generators for Games in 2026 (Compared)</h1>
<p><em>Last updated: September 2026.</em></p>
<p>The best AI pixel art generator for a game is PixelLab if you need animated characters, because it's the only one that treats a sprite as a skeleton you can pose and rotate rather than a picture. Retro Diffusion is the best pick if you already work in Aseprite and would rather pay once than subscribe. Ludo, Scenario and Layer are the studio options for keeping hundreds of assets in one style, and Sprite-AI and Sprixen are the cheap way in if you want to try the idea for less than ten dollars.</p>
<p>The reason to be picky here is that pixel art is unforgiving. A generated sprite that's &quot;in a pixel art style&quot; at 1024 pixels is not pixel art. Real pixel art sits on a grid, uses a small palette, has a consistent outline and reads at 16, 32 or 64 pixels tall, and most image generators produce none of that until you downscale, quantise and clean up by hand. The tools below are ranked partly on how much of that cleanup they save you.</p>
<p>For each tool I went through the pricing page, the licence terms, and the documented features in September 2026. Prices move often, so treat them as the shape of the tiers rather than a quote.</p>
<h2>Quick picks</h2>
<ul>
<li><strong>Animated characters with poses and rotations:</strong> PixelLab. Skeleton animation, 4 and 8 direction rotation, tilesets, an Aseprite plugin.</li>
<li><strong>Pay once, generate locally inside Aseprite:</strong> Retro Diffusion's extension. $20 Lite or $65 full, no credits.</li>
<li><strong>One tool for sprites, backgrounds, icons and everything else:</strong> Ludo. Thirty-plus styles including 8-bit and 16-bit.</li>
<li><strong>The same style across a whole game:</strong> Scenario or Layer, both trained on your reference art. Sprixen's Style Lock is the budget version.</li>
<li><strong>Cheapest way to try it:</strong> Sprite-AI's free tier, then $8 a month.</li>
<li><strong>Editing and finishing everything above:</strong> Aseprite, $19.99, or Libresprite and Piskel for free.</li>
<li><strong>Concept art and backgrounds on a free account:</strong> Cinevva's <a href="/tools/flux">Image Generator</a>, then downscale and quantise in Aseprite.</li>
<li><strong>Skip the asset pipeline and make the game:</strong> describe it in the <a href="/create">game creator</a> and it builds the playable thing, art included.</li>
</ul>
<h2>Quick reference</h2>
<table>
<thead>
<tr>
<th>Tool</th>
<th>Best for</th>
<th>Animation</th>
<th>Tilesets</th>
<th>Style consistency</th>
<th>Free tier</th>
<th>Paid from</th>
</tr>
</thead>
<tbody>
<tr>
<td>PixelLab</td>
<td>Animated pixel characters</td>
<td>Skeleton, rotations</td>
<td>Yes</td>
<td>Per-project references</td>
<td>40 trial generations</td>
<td>$12/mo</td>
</tr>
<tr>
<td>Retro Diffusion</td>
<td>Aseprite users, local</td>
<td>Yes</td>
<td>Yes</td>
<td>Prompt-based</td>
<td>50 web credits</td>
<td>$20 one-time (Lite)</td>
</tr>
<tr>
<td>Ludo</td>
<td>All game assets</td>
<td>Yes</td>
<td>No</td>
<td>Style presets</td>
<td>None</td>
<td>$15/mo (annual)</td>
</tr>
<tr>
<td>Scenario</td>
<td>Studio art direction</td>
<td>No</td>
<td>No</td>
<td>Custom-trained models</td>
<td>50 credits/day, personal only</td>
<td>$15/mo</td>
</tr>
<tr>
<td>Layer</td>
<td>Studio batch generation</td>
<td>Limited</td>
<td>No</td>
<td>Custom-trained models</td>
<td>None</td>
<td>$10/mo for 300 units</td>
</tr>
<tr>
<td>Sprixen</td>
<td>Consistent small sprites</td>
<td>Yes</td>
<td>No</td>
<td>Style Lock</td>
<td>6 credits</td>
<td>$10/mo</td>
</tr>
<tr>
<td>Sprite-AI</td>
<td>Budget pixel sprites</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>15 generations</td>
<td>$8/mo</td>
</tr>
<tr>
<td>Leonardo</td>
<td>General art, pixel preset</td>
<td>No</td>
<td>No</td>
<td>Fine-tuned models</td>
<td>150 tokens/day, non-commercial</td>
<td>$12/mo</td>
</tr>
<tr>
<td>Cinevva Image Generator</td>
<td>Concepts, backgrounds</td>
<td>No</td>
<td>No</td>
<td>Seeds</td>
<td>Yes</td>
<td>Credits</td>
</tr>
</tbody>
</table>
<h2>What &quot;pixel art&quot; means to a generator</h2>
<p>Three things separate a real pixel art tool from an image model with a retro prompt.</p>
<p><strong>Grid.</strong> Pixel art is drawn at its display resolution. A 32 pixel sprite has 32 pixels. Image models generate at 512 pixels or more and then, if they're pixel-aware, downscale to a grid; if they aren't, you get a blurry painting of pixels. PixelLab, Retro Diffusion, Sprixen and Sprite-AI output on a true grid. Ludo, Scenario, Layer and Leonardo can be prompted toward it and usually need a downscale pass.</p>
<p><strong>Palette.</strong> Good pixel art uses eight to thirty-two colours. Generators that respect a palette produce sprites you can edit; generators that don't produce thousands of near-identical shades that fall apart the moment you recolour a shirt.</p>
<p><strong>Animation.</strong> A walk cycle is six to eight frames of the same character in the same style. Only PixelLab, Retro Diffusion and Ludo produce frame sets, and only PixelLab does it from a skeleton you can pose, which is the difference between &quot;generate walking&quot; and &quot;generate this character walking, then swinging a sword, then facing left.&quot;</p>
<h2>PixelLab</h2>
<p>PixelLab is the specialist and the tool with the largest user base among dedicated pixel art generators. It generates characters from text, then lets you animate them with skeleton-based animation, rotate them into four or eight directions, generate tilesets and inpaint corrections, all on a real pixel grid. There's an Aseprite plugin and an API.</p>
<p>The free trial is 40 fast generations with no card. Pixel Apprentice is $12 a month for up to 2,000 generations, Pixel Artisan is $24 with a priority queue, images up to 400 by 400 and early access to experimental tools, and Pixel Architect is $50 for 10,000 generations with twenty simultaneous jobs. Annual billing takes about a quarter off, and the price drops further the longer you stay subscribed.</p>
<p>If your game has more than a couple of animated characters, this is where the time saving actually shows up. Check the current terms for the commercial licence on the tier you pick before shipping.</p>
<h2>Retro Diffusion</h2>
<p>Retro Diffusion, by the developer Astropulse, is the other dedicated pixel art model and it takes the opposite business model. The Aseprite extension is a one-time purchase, $65 for the full version or $20 for Lite, and generates on your own machine with no credits and no subscription. That makes it the cheapest serious option over any period longer than a few months, and the only one where your prompts and your art never leave your computer.</p>
<p>There's also a web app that runs on credits, from $5 for 250 up to $50 for 3,500, with 50 free credits when you create an account. A credit covers a small sprite and larger images cost more. It handles animation and tilesets, and because it lives inside Aseprite the generate-then-fix loop is as short as it gets.</p>
<p>The trade-off is that the extension needs a reasonable GPU for local generation, and you need Aseprite, which is another $19.99.</p>
<h2>Ludo</h2>
<p>Ludo is a game ideation platform that happens to include a strong sprite generator. It produces characters in more than thirty styles, including 8-bit and 16-bit pixel art, and animates them, alongside concept art, icons, backgrounds and a market research tool. If you want one subscription for every 2D asset in a game, it's the one.</p>
<p>There's no free tier. Indie is $15 a month billed annually for 3,000 credits a year, Pro is $35 a month annually with unlimited image generation in the web app plus API and MCP access, and Studio is $300 a month for ten seats. Sprite generation on Indie draws from the shared credit pool, so the effective cost per sprite is higher than the headline suggests.</p>
<h2>Scenario and Layer</h2>
<p>Neither is a pixel art tool. Both are studio platforms whose selling point is training a model on your own reference images so every asset matches your art direction, and if you have a pixel art style already, that's exactly what you feed them.</p>
<p>Scenario's Starter plan is $15 a month for 1,500 credits and Pro is $45 for 5,000 with custom model training. The free tier gives 50 credits a day for personal and evaluation use only, so nothing from it can go in a released game. Layer has no tiers, just consumption from $10 a month for 300 creative units, with a commercial licence for everyone and no seat fees.</p>
<p>For a solo developer these are overkill. For a team with an art bible and a few hundred sprites to produce, they're the two that solve the consistency problem rather than promising to.</p>
<h2>Sprixen and Sprite-AI</h2>
<p>These are the budget tools, and they're better than that sounds.</p>
<p>Sprixen is $10 a month with six free credits on signup, and its one distinctive feature is Style Lock, which pins palette, resolution, proportions and art direction across every sprite in a project. It produces small animated sprites on a real grid and is the cheapest route to consistency without training a model.</p>
<p>Sprite-AI starts free with 15 generations, then $8 a month for Creator, $24 for Studio and $50 for Production. It's pixel art only, on a grid, with a built-in editor. It doesn't animate and it doesn't enforce style across sprites, so it's a fast way to get static props, items and icons rather than characters.</p>
<h2>Leonardo</h2>
<p>Leonardo is a general image generator with game-tuned models, including a pixel art preset, and it's on this list because a lot of people already have it. The free tier is 150 tokens a day and its outputs are non-commercial. Paid plans start at $12 a month (Apprentice, 8,500 tokens), then $30 and $60, all with commercial rights.</p>
<p>Treat its pixel output as concept art. It doesn't sit on a grid, so every sprite needs a downscale, a palette reduction and outline cleanup before it's usable. For backgrounds and key art in a pixel-adjacent style it's fine.</p>
<h2>Aseprite and the free editors</h2>
<p>Whatever generates the sprite, something has to finish it. Aseprite is the standard, $19.99 on Steam or <a href="http://itch.io">itch.io</a>, and you can compile it from source for free for personal use (the built binary can't be redistributed). Libresprite is a free fork of an older Aseprite and Piskel is a free browser editor. The generate-then-clean loop is the whole workflow here, so budget the editor before the generator.</p>
<h2>Where Cinevva fits</h2>
<p>Cinevva's <a href="/tools/flux">Image Generator</a> is an image model, not a pixel art model. Prompt it for &quot;16-bit pixel art, limited palette&quot; and you'll get convincing concept art and backgrounds at up to 1440 pixels that need the same downscale and quantise pass as Leonardo's output. It runs on a free account, with seeds for reproducible variations, which makes it a decent source of background and key-art candidates.</p>
<p>If you found this page because you want a game and not a sprite sheet, the <a href="/create">game creator</a> is the shorter path. Describe the game and it builds the playable thing, generating the art, sound and code together. Our <a href="/guides/vibe-coding-game-prompts">100 AI game prompts</a> are one-click starting points.</p>
<h2>How to judge an AI sprite in 30 seconds</h2>
<ul>
<li><strong>Zoom to 800%.</strong> Every pixel should be a whole pixel. Half-tones, anti-aliased edges and blurry gradients mean it wasn't generated on a grid.</li>
<li><strong>Count the colours.</strong> Open it in Aseprite and look at the palette. Under 32 is editable. Over 200 is a painting.</li>
<li><strong>Check the outline.</strong> Consistent one-pixel outlines (or a consistent absence of them) across a set of sprites is the hardest thing for a generator to hold. Compare two sprites side by side.</li>
<li><strong>Look at frame two.</strong> In an animation, the second frame is where a tool that's really generating variations rather than animating gives itself away: the proportions shift, a colour changes, a detail vanishes.</li>
</ul>
<h2>Licences in 30 seconds</h2>
<ul>
<li><strong>Scenario free tier and Leonardo free tier:</strong> personal or non-commercial only. Nothing from them can ship.</li>
<li><strong>Layer:</strong> commercial licence on every plan.</li>
<li><strong>Retro Diffusion extension:</strong> generated locally, output is yours.</li>
<li><strong>PixelLab, Ludo, Sprixen, Sprite-AI:</strong> read the current terms for the tier you're on; the licence changes more often than the price.</li>
<li><strong>Hand-made free alternative:</strong> Kenney, Pixel Frog, Ansimuz and 0x72 release full CC0 pixel art packs. Our <a href="/guides/free-2d-sprites-tilesets">free 2D sprites guide</a> covers them, and the <a href="/game-assets/free-platformer-sprites">free platformer sprites</a> and <a href="/game-assets/free-tilesets">free tilesets</a> pages let you browse.</li>
</ul>
<h2>Common Questions</h2>
<h3>Which AI pixel art generator is best for animation?</h3>
<p>PixelLab. It animates from a skeleton, so you pose the character rather than describing the motion, and it rotates the same character into four or eight facing directions. Retro Diffusion and Ludo also produce animation frames but from prompts rather than a rig.</p>
<h3>Is there a free AI pixel art generator?</h3>
<p>Sprite-AI gives 15 free generations, PixelLab gives 40 trial generations, Retro Diffusion gives 50 web credits, and Sprixen gives 6. Leonardo's free tier is non-commercial. For genuinely free pixel art, the CC0 packs from Kenney and the <a href="http://itch.io">itch.io</a> creators in our <a href="/guides/free-2d-sprites-tilesets">free sprites guide</a> are still the answer.</p>
<h3>Can I sell a game made with AI-generated sprites?</h3>
<p>On paid tiers, yes, subject to each tool's terms. Not from Scenario's or Leonardo's free tiers. Some storefronts and jams ask you to disclose AI-generated assets, and Steam requires a disclosure on the store page, so keep a record of what was generated where.</p>
<h3>Do AI sprite generators make tilesets?</h3>
<p>PixelLab and Retro Diffusion do, on a grid, with the tile edges designed to meet. The general tools don't, and a tileset generated as one image almost never tiles cleanly.</p>
<h3>How do I make AI output look like real pixel art?</h3>
<p>Downscale to the target size with nearest-neighbour sampling, reduce to a fixed palette (Aseprite's indexed mode or Lospec palettes), then redraw the outline by hand. That last step is the one people skip, and it's the one that makes the difference.</p>
<h2>Related</h2>
<ul>
<li><a href="/guides/free-2d-sprites-tilesets">Best Free 2D Sprites, Pixel Art and Tilesets</a> - the hand-made, CC0 alternative</li>
<li><a href="/guides/ai-asset-generators-games">Best AI Asset Generators for Games</a> - the wider AI asset stack</li>
<li><a href="/guides/best-2d-game-engines-2026">Best 2D Game Engines for 2026</a> - where the sprites end up</li>
<li><a href="/guides/game-asset-licenses">Game Asset Licenses Explained</a> - what a free tier actually lets you do</li>
<li><a href="/tools/flux">Cinevva Image Generator</a> - concept art and backgrounds on a free account</li>
<li><a href="/game-assets/free-platformer-sprites">Free platformer sprites</a>, <a href="/game-assets/free-tilesets">tilesets</a>, <a href="/game-assets/free-ui-sprites">UI sprites</a> and <a href="/game-assets/free-game-icons">game icons</a> - browse the free library</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Best AI Texture Generators for Games in 2026 (PBR and Seamless, Compared)]]></title>
            <link>https://app.cinevva.com/guides/ai-texture-generators</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/ai-texture-generators</guid>
            <pubDate>Fri, 04 Sep 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[The best AI texture generators for games in 2026: Meshy, Polycam, Scenario, Layer, 3D AI Studio and Substance 3D compared with the free open-source options, plus what each one gets wrong about PBR and tiling.]]></description>
            <content:encoded><![CDATA[<h1>Best AI Texture Generators for Games in 2026 (PBR and Seamless, Compared)</h1>
<p><em>Last updated: September 2026.</em></p>
<p>The best AI texture generator for a game depends on which of two jobs you're doing. If you need to texture a model you already have, Meshy is the strongest pick because it paints a full PBR set onto the mesh's existing UVs instead of handing you a flat square. If you need seamless tileable materials for terrain, walls and props, Polycam's material generator produces real base color, normal, roughness and height maps that tile without a visible seam, and the free, open-source Material Maker turns any base color into a full material or builds one procedurally. Everything else in this guide sits somewhere between those two, and a few tools that market themselves as texture generators are image generators with a tiling checkbox.</p>
<p>For each tool I went through the pricing page, the licence terms on the free tier and the published sample output, and I checked what a texture needs to have before a PBR shader in a browser scene will render it correctly. Prices are what the pricing pages said in September 2026. They change often, so treat them as a guide to the tier structure rather than an exact quote.</p>
<h2>Quick picks</h2>
<ul>
<li><strong>Texture an existing 3D model:</strong> Meshy. Mesh-aware, full PBR, free tier for testing.</li>
<li><strong>Seamless tileable PBR materials, realistic:</strong> Polycam. Trained on scanned materials, so the tiling and the roughness map are believable.</li>
<li><strong>Seamless PBR for free, offline:</strong> Material Maker. Open source, node-based, no account, exports for Godot, Unity and Unreal.</li>
<li><strong>A consistent style across hundreds of textures:</strong> Scenario or Layer, both of which let you train on your own reference art.</li>
<li><strong>Stylised albedo and concept textures on a free account, in the browser:</strong> Cinevva's <a href="/tools/flux">Image Generator</a>, then finish the maps in Material Maker.</li>
<li><strong>You just want the game built, textures included:</strong> describe it in the <a href="/create">game creator</a> and let it generate and apply the materials for you.</li>
</ul>
<h2>Quick reference</h2>
<table>
<thead>
<tr>
<th>Tool</th>
<th>Best for</th>
<th>PBR maps</th>
<th>Tiles seamlessly</th>
<th>Free tier</th>
<th>Paid from</th>
</tr>
</thead>
<tbody>
<tr>
<td>Meshy</td>
<td>Texturing a mesh</td>
<td>Base, normal, roughness, metallic</td>
<td>Not the point</td>
<td>100 credits/mo, CC BY 4.0</td>
<td>$20/mo</td>
</tr>
<tr>
<td>Polycam</td>
<td>Realistic tileable materials</td>
<td>Full set</td>
<td>Yes</td>
<td>Preview only</td>
<td>$30/mo</td>
</tr>
<tr>
<td>Material Maker</td>
<td>Procedural PBR</td>
<td>Full set</td>
<td>Yes</td>
<td>Free, open source</td>
<td>n/a</td>
</tr>
<tr>
<td>Scenario</td>
<td>Style-consistent textures</td>
<td>Base color first, others secondary</td>
<td>Yes</td>
<td>50 credits/day, personal use only</td>
<td>$15/mo</td>
</tr>
<tr>
<td>Layer</td>
<td>Studio batch generation</td>
<td>Depends on model</td>
<td>Yes</td>
<td>None</td>
<td>$10/mo for 300 units</td>
</tr>
<tr>
<td>3D AI Studio</td>
<td>All-in-one 3D plus textures</td>
<td>Full set</td>
<td>Retexture and tile</td>
<td>1,000 credits/mo</td>
<td>$20/mo</td>
</tr>
<tr>
<td>Substance 3D Sampler</td>
<td>Photo to material, pro pipeline</td>
<td>Full set, editable</td>
<td>Yes</td>
<td>30-day trial</td>
<td>$59.99/mo</td>
</tr>
<tr>
<td>Cinevva Image Generator</td>
<td>Stylised albedo, concept</td>
<td>Albedo only</td>
<td>Not guaranteed</td>
<td>Yes</td>
<td>Credits</td>
</tr>
</tbody>
</table>
<h2>The two kinds of &quot;texture generator&quot;</h2>
<p>Before the tools, one distinction that saves a lot of wasted credits.</p>
<p>A <strong>mesh texturer</strong> takes a 3D model and a prompt and paints the model. It has to understand the UV layout, hide seams where the UV islands meet, and keep texel density even across a character's face and their boots. Meshy, 3D AI Studio and Tripo do this. The output is a set of textures that only make sense on that one model.</p>
<p>A <strong>material generator</strong> produces a flat square that tiles in every direction and comes with the maps a PBR shader needs: base color, normal, roughness, and usually height or ambient occlusion. Polycam, Material Maker and the Substance tools do this. The output works on any surface with tiling UVs, which is most of an environment.</p>
<p>Most of the disappointment I see with AI textures comes from asking one kind of tool to do the other job. A material generator can't texture your hero character, and a mesh texturer produces a wall texture that won't tile.</p>
<h2>Meshy</h2>
<p>Meshy started as a text-to-3D generator and its texturing tool is the part most game developers end up using. Upload a GLB, FBX or OBJ, describe the look, and it paints a full PBR set (base color, normal, roughness, metallic) directly onto the model's existing UVs. It handles UV projection, seam placement and texel density on its own, so there's no unwrapping step first.</p>
<p>The free plan gives you 100 credits a month and licenses the output under CC BY 4.0, which means commercial use is fine but you have to credit Meshy. The Pro plan at $20 a month raises that to 1,000 credits, gives you full ownership of the output and adds API access. Credits reset monthly and don't roll over.</p>
<p>Where it falls down is the second job. Meshy is not built for standalone tileable materials, and asking it for &quot;seamless brick texture&quot; gets you an image, not a material. For characters, props and vehicles it's the tool I'd reach for first.</p>
<h2>Polycam</h2>
<p>Polycam is better known as a photogrammetry app, and that's exactly why its material generator is good. The model is trained on real scanned surfaces, so the roughness and height maps look like they belong to the base color rather than being guessed from it, and the tiling holds up at a distance where a lot of AI output shows a repeating blotch.</p>
<p>It does two things: text to material and photo to material. The photo path is the one to pay attention to. Take a picture of a wall or a floor on your phone and get back a tiling PBR set. The free plan only previews AI textures, and downloading them needs the Basic plan at $30 a month, which also unlocks the rest of Polycam. It doesn't retexture meshes, and its training skews toward architectural and natural surfaces, so don't expect it to produce a stylised cartoon material.</p>
<h2>Material Maker</h2>
<p>Material Maker isn't an AI tool at all, and it belongs here anyway because it's the free answer and it's what you finish AI output with. It's a free, open-source, node-based procedural material editor with over 200 nodes, a community library of hundreds of ready-made materials, and exporters for Godot, Unity and Unreal. It runs on desktop and in the browser.</p>
<p>Two uses. First, drop an AI-generated base color in, derive normal, roughness and height from it, fix the tiling and export a proper material. Second, skip the AI and build the material procedurally, which gives you a texture you can change the colour, wear or scale of at any point later. For a stylised game, the second path is often faster than prompting.</p>
<p>A note on ArmorLab, which older roundups list as the free open-source AI texture tool. Its GitHub repository was archived in February 2023 and folded into the ArmorPaint family, where the built binaries are paid, and the <a href="http://armorlab.org">armorlab.org</a> domain no longer belongs to the project. Don't follow old links to it.</p>
<h2>Scenario and Layer</h2>
<p>These are studio tools, and the reason to pay for either is consistency. Both let you train a custom model on your own reference images so every texture it produces matches your art direction, which is the thing a single prompt can never guarantee across a hundred assets.</p>
<p>Scenario's Starter plan is $15 a month for 1,500 credits, Pro is $45 for 5,000 and adds custom model training. The free tier gives you 50 credits a day but is for personal and evaluation use only, so nothing from it can ship. Texture generation is one feature among many, and the normal and roughness maps are secondary to the base color.</p>
<p>Layer has no fixed tiers. You pay for consumption, from $10 a month for 300 creative units, with a commercial licence on every plan and no seat fees, which makes it the cheaper option for a team. Image generations cost between 0.1 and 8 units each depending on the model.</p>
<p>If you're a solo developer, neither of these is where to start. If you have an art bible and forty textures to produce in the same style, they're the only two on the list that solve that problem.</p>
<h2>3D AI Studio</h2>
<p>3D AI Studio bundles text-to-3D, image-to-3D, a retexturing tool, remeshing and LOD generation into one subscription, and its texture tools are free on every plan including the $0 Basic tier, which comes with 1,000 credits a month. Studio is $20 a month for 3,500 credits. Commercial use is permitted on all plans and you own the output.</p>
<p>It won't beat Meshy on mesh texturing quality or Polycam on tiling materials, but if you're already generating models there and want everything in one place, the free texture tools are a real bonus rather than a trial.</p>
<h2>Adobe Substance 3D</h2>
<p>Substance is the professional pipeline and the reason &quot;PBR material&quot; means what it means. Sampler turns a photo into an editable material, Designer builds materials procedurally, Painter textures meshes by hand and with smart materials. The AI features (text-to-texture and photo-to-material starting points) sit inside those apps and feed into a manual refinement workflow that nothing else on this list matches.</p>
<p>The Individual plan is $59.99 a month for all the apps, with a 30-day free trial. The Student and Teacher plan is for personal, non-commercial use only. For a shipped indie game the price is hard to justify unless texturing is your job. If it is, there's no substitute.</p>
<h2>Where Cinevva fits</h2>
<p>Cinevva's <a href="/tools/flux">Image Generator</a> is an image model, not a material generator. It's good at stylised albedo textures (hand-painted wood, cartoon stone, painterly fabric) and at concept textures you'll paint over. Prompt for &quot;seamless tileable&quot; and you'll get a texture that tiles well most of the time but not every time, so check the edges. Take the result into Material Maker for the normal and roughness maps. Both run on a free account.</p>
<p>If what you want is a game rather than a texture library, the <a href="/create">game creator</a> generates and applies materials as part of building the scene. Describe the mood (&quot;a rain-slicked cobblestone alley at night with wet brick walls&quot;) and it handles the textures along with the geometry, lighting and gameplay. That's the route for anyone who found this page while trying to make a level look right rather than trying to build a material pipeline.</p>
<h2>How to judge an AI texture in 30 seconds</h2>
<ul>
<li><strong>Tile it 3×3.</strong> Any repeating blotch or a visible seam shows up immediately. Every tool above that claims seamless passes this; several image generators don't.</li>
<li><strong>Look at the normal map on its own.</strong> A real normal map is mostly flat lavender with detail where the surface has depth. A normal map derived by a bad filter is noisy everywhere.</li>
<li><strong>Check roughness against the base color.</strong> Wet or polished areas should be dark in roughness, dry or matte areas light. If roughness is a greyscale copy of the base color, it was guessed.</li>
<li><strong>Check the resolution you'll actually ship.</strong> Most tools output 1K or 2K. That's fine for a browser game and often too big, since a 4K PBR set is around 60 MB uncompressed. Compress with the <a href="/tools/ktx2-compressor">KTX2 Texture Compressor</a> before it goes anywhere near a web build.</li>
</ul>
<h2>Licences in 30 seconds</h2>
<ul>
<li><strong>Meshy free tier:</strong> CC BY 4.0. Commercial use allowed, attribution required. Paid tiers: you own it.</li>
<li><strong>Scenario free tier:</strong> personal and evaluation only. Nothing from it can ship. Paid: commercial licence.</li>
<li><strong>Layer, 3D AI Studio:</strong> commercial licence on every tier.</li>
<li><strong>Material Maker:</strong> open source, local output is yours.</li>
<li><strong>Substance 3D Student/Teacher:</strong> non-commercial only.</li>
<li><strong>Polycam, Blockade and the rest:</strong> read the current terms, since free tiers on AI tools change their licence more often than their prices.</li>
</ul>
<p>Our <a href="/guides/game-asset-licenses">Game Asset Licenses Explained</a> guide covers CC0, CC BY and royalty-free in more depth, and applies to AI output too.</p>
<h2>Common Questions</h2>
<h3>Can I use AI-generated textures in a commercial game?</h3>
<p>Yes, on every paid tier here and on some free tiers. The two traps are Meshy's free plan, which needs attribution, and Scenario's free plan, which forbids commercial use entirely. Layer and 3D AI Studio grant a commercial licence on every tier including free. Locally generated output from Material Maker is yours outright.</p>
<h3>Are AI textures seamless?</h3>
<p>Only from tools built for materials. Polycam, Material Maker and Substance produce tiling output. Meshy is a mesh texturer, so seamless isn't its job. General image generators, including ours, tile most of the time when prompted for it and need checking.</p>
<h3>Which AI texture generator is free?</h3>
<p>Material Maker is free and open source with no limits. 3D AI Studio's texture tools are free on its $0 plan. Meshy gives 100 credits a month with attribution. Cinevva's Image Generator and KTX2 compressor run on a free account.</p>
<h3>Do AI texture generators produce normal and roughness maps?</h3>
<p>The material generators (Polycam, Material Maker, Substance) and the mesh texturers (Meshy, 3D AI Studio) do. Scenario and Layer produce base color first and the other maps are secondary. If a tool gives you only a colour image, derive the rest in Material Maker.</p>
<h3>What about free textures that aren't AI?</h3>
<p>Poly Haven and ambientCG both offer thousands of scanned, seamless, CC0 PBR materials, and for realistic surfaces they're still better than anything generated. Our <a href="/guides/free-textures-hdris-materials">Free PBR Textures, Materials and HDRIs</a> guide covers them, and the <a href="/game-assets/free-wood-textures">free textures</a> category pages let you browse by surface.</p>
<h2>Related</h2>
<ul>
<li><a href="/guides/free-textures-hdris-materials">Free PBR Textures, Materials and HDRIs for Games</a> - the scanned, CC0 alternative to generating</li>
<li><a href="/guides/ai-3d-model-generators">Best AI 3D Model Generators</a> - the models you'll be texturing</li>
<li><a href="/guides/ai-asset-generators-games">Best AI Asset Generators for Games</a> - the whole AI asset stack</li>
<li><a href="/guides/game-asset-licenses">Game Asset Licenses Explained</a> - CC0, CC BY, and what AI free tiers actually grant</li>
<li><a href="/tools/flux">Cinevva Image Generator</a> - stylised albedo and concept textures on a free account</li>
<li><a href="/tools/ktx2-compressor">KTX2 Texture Compressor</a> - shrink the maps before they hit a web build</li>
<li><a href="/game-assets/free-wood-textures">Free wood</a>, <a href="/game-assets/free-metal-textures">metal</a>, <a href="/game-assets/free-stone-textures">stone</a> and <a href="/game-assets/free-grass-textures">grass textures</a> - browse the free library by surface</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Best Free Game UI Kits, HUD Packs and Fonts for Games (2026)]]></title>
            <link>https://app.cinevva.com/guides/free-game-ui-kits-fonts</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/free-game-ui-kits-fonts</guid>
            <pubDate>Fri, 04 Sep 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[The best free game UI kits and fonts in 2026: Kenney's CC0 UI packs, the Complete UI Essential Pack, Craftpix, Game-icons.net, monogram, m5x7 and the pixel and display fonts on Google Fonts, with every licence checked.]]></description>
            <content:encoded><![CDATA[<h1>Best Free Game UI Kits, HUD Packs and Fonts for Games (2026)</h1>
<p><em>Last updated: September 2026.</em></p>
<p>The best free game UI kit is still Kenney's UI Pack: 430 CC0 buttons, panels, sliders and icons in a clean flat style, with themed sci-fi and pixel adventure versions and a matching Input Prompts pack for every controller button you'll ever need to show. For fonts, monogram and m5x7 are the two CC0 pixel fonts most indie games ship with, and Google Fonts carries a dozen display and pixel faces under the Open Font License that you can embed in a browser game without asking anyone. Everything in this guide is free for commercial use. Where a licence asks for attribution, I've said so.</p>
<p>UI is the asset category people leave until last and then discover has forty pieces (nine-slice panels, hover states, disabled states, slot frames, bars, cursors, a font that reads at 12 pixels). A kit that ships all of them in one style saves a week. Here's every source worth bookmarking, with the exact licence terms verified in September 2026.</p>
<h2>Quick picks</h2>
<ul>
<li><strong>One kit, any genre, zero licence risk:</strong> Kenney UI Pack (CC0). Add UI Pack Sci-Fi or UI Pack Pixel Adventure for a themed variant.</li>
<li><strong>Controller, keyboard and mouse glyphs:</strong> Kenney Input Prompts (CC0). Xbox, PlayStation, Switch, Steam Deck, keyboard and mouse, in flat and outline styles.</li>
<li><strong>RPG frames, slots and banners in thirteen themes:</strong> Crusenho's Complete UI Essential Pack (CC BY 4.0). Flat theme free, everything else from $3.50.</li>
<li><strong>Polished themed kits with no attribution:</strong> Craftpix free section (custom licence, commercial OK).</li>
<li><strong>Four thousand inventory and ability icons:</strong> <a href="http://Game-icons.net">Game-icons.net</a> (CC BY 3.0, credit the artist).</li>
<li><strong>Pixel fonts that read at 12 pixels:</strong> monogram and m5x7 (both CC0).</li>
<li><strong>Display and title fonts you can embed on the web:</strong> Press Start 2P, VT323, Silkscreen, Pixelify Sans, Orbitron and Bangers on Google Fonts (OFL).</li>
<li><strong>Icons in your own style:</strong> Cinevva's <a href="/tools/flux">Image Generator</a> on a free account, then cut to size.</li>
<li><strong>Don't want to build a HUD at all:</strong> describe the game in the <a href="/create">game creator</a> and it makes the interface with the game.</li>
</ul>
<h2>Quick reference</h2>
<table>
<thead>
<tr>
<th>Need</th>
<th>Best source</th>
<th>Licence</th>
<th>Attribution</th>
</tr>
</thead>
<tbody>
<tr>
<td>Buttons, panels, sliders</td>
<td>Kenney UI Pack</td>
<td>CC0</td>
<td>None</td>
</tr>
<tr>
<td>Sci-fi HUD</td>
<td>Kenney UI Pack Sci-Fi</td>
<td>CC0</td>
<td>None</td>
</tr>
<tr>
<td>Pixel-art HUD</td>
<td>Kenney UI Pack Pixel Adventure</td>
<td>CC0</td>
<td>None</td>
</tr>
<tr>
<td>Controller and key glyphs</td>
<td>Kenney Input Prompts</td>
<td>CC0</td>
<td>None</td>
</tr>
<tr>
<td>Touch controls</td>
<td>Kenney Mobile Controls</td>
<td>CC0</td>
<td>None</td>
</tr>
<tr>
<td>RPG frames, slots, banners</td>
<td>Complete UI Essential Pack</td>
<td>CC BY 4.0</td>
<td>Credit required</td>
</tr>
<tr>
<td>Themed kits (fantasy, casual)</td>
<td>Craftpix free</td>
<td>Craftpix licence</td>
<td>None, no resale</td>
</tr>
<tr>
<td>Inventory and ability icons</td>
<td><a href="http://Game-icons.net">Game-icons.net</a></td>
<td>CC BY 3.0</td>
<td>Credit the artist</td>
</tr>
<tr>
<td>Pixel body font</td>
<td>monogram, m5x7</td>
<td>CC0</td>
<td>None</td>
</tr>
<tr>
<td>Retro display font</td>
<td>Press Start 2P, VT323, Silkscreen</td>
<td>OFL</td>
<td>None</td>
</tr>
<tr>
<td>Modern display font</td>
<td>Orbitron, Bangers, Russo One</td>
<td>OFL</td>
<td>None</td>
</tr>
<tr>
<td>Kenney's own fonts</td>
<td>Kenney Fonts</td>
<td>CC0</td>
<td>None</td>
</tr>
</tbody>
</table>
<h2>Kenney's UI packs</h2>
<p>Kenney has released every asset under CC0 for over a decade, which is why the packs appear in so many shipped games. The UI packs are the ones to start with.</p>
<p><strong>UI Pack</strong> is the base: 430 elements covering buttons in several colours and states, panels, sliders, checkboxes, radio buttons, arrows, icons, and the nine-slice frames you need to stretch a panel to any size. It's clean and flat, which means it fits most games and disappears into them.</p>
<p><strong>UI Pack Sci-Fi</strong> and <strong>UI Pack Pixel Adventure</strong> are the same idea in two styles: angular HUD frames for a space or cyberpunk game, and chunky pixel frames for a retro one. <strong>Mobile Controls</strong> is a set of touch buttons and virtual joystick pieces for browser games that run on phones, which is most of them.</p>
<p><strong>Input Prompts</strong> deserves its own mention. It's a complete set of controller button glyphs for Xbox, PlayStation, Nintendo Switch, Steam Deck, generic gamepads, keyboard keys and mouse buttons, in flat, outline and pixel styles. Every game that shows &quot;Press A to jump&quot; needs this pack, and every game that shows it with the wrong glyph for the connected controller needed it more. Pair it with our <a href="/tutorials/gamepad-api">Gamepad API tutorial</a> to detect which controller is actually plugged in.</p>
<p>All of it is CC0: no attribution, no restrictions, use it in anything. Kenney asks for donations and doesn't require them.</p>
<h2>Complete UI Essential Pack</h2>
<p>Crusenho's Complete UI Essential Pack on <a href="http://itch.io">itch.io</a> is the RPG answer. It's over 800 pieces across thirteen themes (Flat, Paper, Wood, Stone, Metal, Hologram, Glass, Pumpkin, Mystic Wood, Papernote, Metalworks, Runewood and more), each with frames, slots, banners, bars, fills, dropdowns, scrollbars, knobs, sliders, text fields and buttons. Every piece is built for nine-slicing at 32 by 32, so panels stretch cleanly. It also includes the Toriko font.</p>
<p>The free download is the Flat theme. The full pack is pay what you want from $3.50, which is the best value on this page. The licence is CC BY 4.0, so you can use it commercially as long as you credit the author, link the licence and note any changes. A line in the credits screen is enough.</p>
<h2>Craftpix free section</h2>
<p>Craftpix sells game asset packs and gives away a rotating selection of complete UI kits: fantasy RPG interfaces, casual match-3 UI, sci-fi HUDs, mobile menu sets. The quality is a step up from most free sources because they're cut-downs of paid products.</p>
<p>The licence is Craftpix's own rather than a Creative Commons one, and the terms are friendly: unlimited personal and commercial projects, no attribution required. You can't resell the source files or a lightly modified version of them, you can't share them in a way that lets others reuse them separately, and you can't use them to train AI models. Read the licence page once before you rely on it, because it differs between the free and paid tiers on a few points that only matter to studios.</p>
<h2><a href="http://Game-icons.net">Game-icons.net</a></h2>
<p><a href="http://Game-icons.net">Game-icons.net</a> is around 4,100 black-and-white vector icons for exactly the things games need: swords, potions, spell effects, status conditions, resources, crafting materials, abilities. Every icon is SVG, so it scales to any size and recolours with a single fill.</p>
<p>The licence is CC BY 3.0. You have to credit the artist who drew each icon, and the site's own suggested wording (&quot;Icons made by {author}. Available on <a href="https://game-icons.net">https://game-icons.net</a>&quot;) is fine. The icons list their author on the download page, so keep a text file as you go rather than trying to reconstruct it later.</p>
<h2>Pixel fonts: monogram and m5x7</h2>
<p>Two fonts show up in more pixel-art indie games than any others, and both are CC0.</p>
<p><strong>monogram</strong> by datagoblin is a monospace bitmap font designed to stay legible small and large. It ships as TrueType (a minimal version and an extended version with italics), as a bitmap PNG with JSON metrics, and as a PICO-8 custom font, and it covers English, Spanish, Portuguese, Russian and Greek character sets. It's the safe default for dialogue and menus.</p>
<p><strong>m5x7</strong> by Daniel Linssen is a narrower pixel font, five pixels wide by seven tall, with lowercase, accented characters, numbers and symbols. It packs more text into a small HUD than monogram does. Linssen's m3x6 is the even smaller sibling. Both are name-your-own-price with CC0 licences, attribution appreciated but not required.</p>
<p>The rule with pixel fonts: render them at exact integer multiples of their native size (7, 14, 21 pixels for m5x7) and disable anti-aliasing, or they turn to mush.</p>
<h2>Google Fonts for games</h2>
<p>Google Fonts hosts every face under the SIL Open Font License, which permits embedding in commercial games, browser games included, with no attribution beyond keeping the licence file with the font. For a web game that means a single <code>@font-face</code> or a <code>&lt;link&gt;</code> and you're done.</p>
<p>The ones that keep coming up in games:</p>
<ul>
<li><strong>Press Start 2P</strong>: the bitmap arcade font. Titles, scores, &quot;GAME OVER.&quot;</li>
<li><strong>VT323</strong>: terminal text, hacking scenes, retro UI body copy.</li>
<li><strong>Silkscreen</strong>: a small, tidy pixel font that reads well at body sizes.</li>
<li><strong>Pixelify Sans</strong>: a variable pixel font with several weights, which is rare.</li>
<li><strong>Orbitron</strong>: geometric sci-fi display face for HUDs and menus.</li>
<li><strong>Bangers</strong>: comic-book impact for casual and cartoon games.</li>
<li><strong>Russo One</strong> and <strong>Audiowide</strong>: bold display faces for racing and sports UI.</li>
</ul>
<p>Kenney also ships <strong>Kenney Fonts</strong>, eleven files of blocky and rounded display fonts under CC0, which match the UI packs above if you want everything from one hand.</p>
<h2>Where Cinevva fits</h2>
<p>For icons and small art in a style you can't find, the <a href="/tools/flux">Image Generator</a> on a free account is a fast source: prompt for &quot;flat game icon, single object, plain background&quot; and cut the result to size. It won't produce a pixel-perfect 32 pixel icon on its own; downscale it in Aseprite or Piskel.</p>
<p>If you'd rather not assemble a HUD at all, the <a href="/create">game creator</a> builds the interface along with the game. Describe what the player needs to see (&quot;a health bar, an ammo counter and a minimap in the corner&quot;) and it generates and wires it. That's the shorter route for anyone who found this page while trying to get a game finished rather than trying to design a UI.</p>
<h2>Five rules for game UI that ships</h2>
<ul>
<li><strong>Nine-slice everything.</strong> A panel drawn as one image stretches badly. A panel cut into nine regions (four corners, four edges, one centre) stretches to any size. Kenney and Crusenho ship their frames for this; check any other kit before you commit.</li>
<li><strong>Design at the smallest screen.</strong> A browser game will be played on a phone. If the HUD works at 375 pixels wide, it works everywhere.</li>
<li><strong>Body text at 14 pixels or larger on the web, and integer scales for pixel fonts.</strong> Anything smaller fails on a phone, and non-integer pixel-font scaling looks broken on every screen.</li>
<li><strong>Show the right glyph for the connected controller.</strong> Input Prompts has them all. Detecting the pad is a few lines with the Gamepad API.</li>
<li><strong>Pick one kit.</strong> Mixing two UI styles is the fastest way to make a game look unfinished. The whole point of a kit is that it was drawn by one hand.</li>
</ul>
<h2>Licences in 30 seconds</h2>
<ul>
<li><strong>CC0 (Kenney, monogram, m5x7):</strong> anything, no credit.</li>
<li><strong>CC BY (Complete UI Essential Pack, <a href="http://Game-icons.net">Game-icons.net</a>):</strong> anything, credit required. A credits screen line satisfies it.</li>
<li><strong>OFL (Google Fonts):</strong> embed freely in commercial games, keep the licence file with the font, don't sell the font itself.</li>
<li><strong>Craftpix free licence:</strong> commercial use, no credit, no resale of the files, no AI training.</li>
</ul>
<p>Our <a href="/guides/game-asset-licenses">Game Asset Licenses Explained</a> guide goes deeper on all four.</p>
<h2>Common Questions</h2>
<h3>What is the best free game UI kit?</h3>
<p>Kenney's UI Pack, because it's CC0, complete (430 elements including nine-slice frames) and neutral enough to fit most games. For RPG styling, the Complete UI Essential Pack under CC BY 4.0. For polished themed kits with no attribution, Craftpix's free section.</p>
<h3>Are Google Fonts free for commercial games?</h3>
<p>Yes. Every font on Google Fonts is under the SIL Open Font License, which allows embedding in commercial products including games and websites. Keep the licence file alongside the font and don't sell the font on its own.</p>
<h3>Which pixel font is best for games?</h3>
<p>monogram for readability at any size and broad language support, m5x7 when you need to fit more text into a small HUD. Both are CC0. Press Start 2P on Google Fonts is the classic arcade title font.</p>
<h3>Do I need to credit Kenney?</h3>
<p>No. Kenney's assets are CC0, which means no attribution is required for any use. A credit is a nice gesture and Kenney accepts donations, but neither is a condition.</p>
<h3>Where can I get controller button icons for free?</h3>
<p>Kenney's Input Prompts pack is CC0 and covers Xbox, PlayStation, Nintendo Switch, Steam Deck, generic gamepads, keyboards and mice in several styles. It's the standard answer.</p>
<h2>Related</h2>
<ul>
<li><a href="/guides/free-2d-sprites-tilesets">Best Free 2D Sprites, Pixel Art and Tilesets</a> - the art that goes behind the UI</li>
<li><a href="/guides/game-assets-guide">Where to Find Free Game Assets</a> - the full 20+ source guide</li>
<li><a href="/guides/game-asset-licenses">Game Asset Licenses Explained</a> - CC0, CC BY, OFL and the rest</li>
<li><a href="/tutorials/gamepad-api">Gamepad API tutorial</a> - detect the controller so you show the right glyph</li>
<li><a href="/tools/flux">Cinevva Image Generator</a> - icons in your own style on a free account</li>
<li><a href="/game-assets/free-ui-sprites">Free UI sprites</a> and <a href="/game-assets/free-game-icons">free game icons</a> - browse the free library</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Connect Claude or Cursor to Cinevva (MCP Server)]]></title>
            <link>https://app.cinevva.com/guides/mcp-server</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/mcp-server</guid>
            <pubDate>Sat, 01 Aug 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Set up the Cinevva Game Creator MCP server in Claude, Claude Code, or Cursor and edit your live game from your favorite AI assistant.]]></description>
            <content:encoded><![CDATA[<script setup>
import CopyText from '../.vitepress/components/CopyText.vue'
</script>
<h1>Connect Claude or Cursor to Cinevva (MCP Server)</h1>
<p>Cinevva ships a hosted MCP server that lets Claude, Claude Code, Cursor, or any MCP client build your games. The AI you already use becomes the brain: it reads and edits your games' files directly on our servers, no browser tab needed. Open your game in the Cinevva creator too and the session goes live: the AI can then import assets from our CC0 library, rig and animate 3D models, take screenshots, simulate input to test the running game, and refresh the preview while every change streams onto your screen.</p>
<h2>What you need</h2>
<p>A Cinevva account (free works, 3D rigging spends credits from your balance) and an MCP client that supports remote servers with OAuth. The server URL is:</p>
<pre><code>https://api.cinevva.com/create/mcp
</code></pre>
<p>It speaks Streamable HTTP and authenticates with OAuth 2.0. When you connect, your client opens a Cinevva login page in the browser. Approve it once and the client stays connected.</p>
<h2>Editing works anywhere. Go live to watch and test.</h2>
<p>File editing needs nothing but the connection. The file tools read and write the authoritative copy of your games on our servers, so your assistant can fix a bug or add a feature while no Cinevva tab exists anywhere. Name the game you want (or let the AI pick from your games) and prompt away.</p>
<p>Going live is the upgrade, not the requirement. Open the game at <a href="https://cinevva.com/create">cinevva.com/create</a>, wait for the preview to load, then click <strong>External agent</strong> in the creator toolbar (the plug icon, also in the &quot;more&quot; menu on small screens). The panel switches to &quot;Agent live&quot; once connected. A live session gives the AI eyes and hands on the running game: screenshots, console logs, simulated input, asset import, and 3D rigging. It also streams every edit onto your screen the moment it lands, whether the edit came through this tab or headless. The live link stays on for future visits until you click &quot;Stop live session&quot;.</p>
<p>The <code>list_live_sessions</code> tool shows what's connected, and when exactly one game is open it's targeted automatically.</p>
<h2>Setup in Claude (<a href="http://claude.ai">claude.ai</a> and desktop)</h2>
<ol>
<li>Open Settings, then Connectors, and choose &quot;Add custom connector&quot;.</li>
<li>Name it Cinevva and paste <CopyText text="https://api.cinevva.com/create/mcp" /> as the URL. Watch for stray characters, the URL must end in <code>/create/mcp</code>.</li>
<li>Click Add, then Connect. Log in with your Cinevva account when the authorization page opens (the same account your game tab is logged into).</li>
<li>Ask Claude something like &quot;list my Cinevva game files&quot; to confirm the link. For live testing, open your game at <a href="http://cinevva.com/create">cinevva.com/create</a> in another tab and click External agent in the toolbar.</li>
</ol>
<h2>Setup in Claude Code</h2>
<pre><code class="language-bash">claude mcp add --transport http cinevva https://api.cinevva.com/create/mcp
</code></pre>
<p>Claude Code prompts you through the OAuth login on first use. After that, ask it to read your game files or make a change. It works straight from the terminal with no browser tab open.</p>
<h2>Setup in Cursor</h2>
<p>Add this to <code>.cursor/mcp.json</code> (per project) or <code>~/.cursor/mcp.json</code> (global):</p>
<pre><code class="language-json">{
  &quot;mcpServers&quot;: {
    &quot;cinevva&quot;: {
      &quot;url&quot;: &quot;https://api.cinevva.com/create/mcp&quot;
    }
  }
}
</code></pre>
<p>Cursor detects the server, runs the OAuth flow in your browser, and lists the tools in its MCP settings.</p>
<h2>What the tools do</h2>
<table>
<thead>
<tr>
<th>Group</th>
<th>Tools</th>
<th>Needs a live session?</th>
</tr>
</thead>
<tbody>
<tr>
<td>Read the game</td>
<td><code>list_game_files</code>, <code>read_files</code>, <code>search_game_file</code></td>
<td>No, reads the server copy of any of your games</td>
</tr>
<tr>
<td>Edit the game</td>
<td><code>edit_files</code>, <code>write_files</code>, <code>delete_files</code>, <code>rename_files</code></td>
<td>No, edits land server-side and stream to an open tab</td>
</tr>
<tr>
<td>Preview</td>
<td><code>game_ready</code></td>
<td>Refreshes a live tab's preview, saves headless otherwise</td>
</tr>
<tr>
<td>Watch the game</td>
<td><code>read_console_logs</code>, <code>take_screenshot</code></td>
<td>Yes</td>
</tr>
<tr>
<td>Testing</td>
<td><code>execute_js</code>, <code>simulate_input</code>, <code>get_task_status</code></td>
<td>Yes</td>
</tr>
<tr>
<td>Assets</td>
<td><code>search_assets</code>, <code>list_asset_packs</code>, <code>import_asset</code>, <code>search_fonts</code></td>
<td>Yes. ~7,000 CC0 props, audio, HDRIs</td>
</tr>
<tr>
<td>3D rigging</td>
<td><code>rig_model</code>, <code>apply_animation</code></td>
<td>Yes, spends credits</td>
</tr>
<tr>
<td>Docs</td>
<td><code>list_library_docs</code>, <code>search_library_docs</code>, <code>read_library_docs</code>, <code>list_animations</code></td>
<td>Yes</td>
</tr>
</tbody>
</table>
<p>Rigging costs the same credits as the in-app Game Creator. Everything else is free. The in-app creator also generates images, music, sound effects, and skyboxes with AI; those tools live in the Cinevva app itself and aren't part of the MCP connector.</p>
<h2>Troubleshooting</h2>
<p>&quot;No MCP server was found at the provided URL&quot; during setup usually means the URL has a typo or an extra character on the end. It must be exactly <CopyText text="https://api.cinevva.com/create/mcp" />.</p>
<p>&quot;No live session&quot; only comes from the runtime tools (screenshots, console, input, assets, rigging). It means no browser tab has that game open with the live link on. Open your game, click External agent in the toolbar, and try again. File tools never need this: with no session they work on any of your games by gameId, and list your games if you don't pass one.</p>
<p>If tools stall on a fresh connection, refresh the game tab so it reconnects, then call <code>list_live_sessions</code>.</p>
<p>Questions or problems: <a href="mailto:support@cinevva.com">support@cinevva.com</a>.</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Trade Show Booth Games That Actually Capture Leads (2026)]]></title>
            <link>https://app.cinevva.com/guides/trade-show-booth-games</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/trade-show-booth-games</guid>
            <pubDate>Thu, 30 Jul 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[What works as a trade show booth game, why prize wheels and putting greens pull crowds but not leads, and how a phone game with a live leaderboard turns aisle traffic into a lead list you can export.]]></description>
            <content:encoded><![CDATA[<h1>Trade Show Booth Games That Actually Capture Leads</h1>
<p>You have a 10x10 or a 20x20, a badge scanner, and three days to justify what the booth cost. Somewhere in the planning a game comes up, because everyone knows a game pulls people in. The question nobody answers well is which games pull people who are worth talking to, and which ones just create a queue of badge-less strangers holding free stuff.</p>
<p>I build custom booth games for a living, so I have watched both outcomes. Here is what separates them.</p>
<h2>The two kinds of booth game</h2>
<p>Almost every booth game falls into one of two buckets, and they behave completely differently.</p>
<p><strong>Attention games</strong> stop people in the aisle. A prize wheel, a putting green, a claw machine, a giant Jenga tower. They work: motion and noise are what break someone's walking rhythm. What they do not do is tell you anything about who stopped. A person spins the wheel, takes the branded socks, and leaves. You got a body, not a lead, and you paid for a wheel.</p>
<p><strong>Qualifying games</strong> make the person do something that reveals intent, then ask for the contact detail at the moment they want something from you. Those are rarer, harder to run well, and they are the only kind that shows up in your CRM.</p>
<p>The mistake is not choosing an attention game. It is choosing one and expecting lead numbers from it.</p>
<h2>Why the classics underperform on leads</h2>
<p><strong>Prize wheels</strong> convert on the prize, not on you. The person who spins is optimising for the prize distribution, which means your best spinners are the people least interested in your product. Worse, the interaction lasts four seconds, which is not long enough for your booth staff to start a conversation.</p>
<p><strong>Putting greens and basketball hoops</strong> are dwell-time machines, and dwell time is genuinely valuable. But they occupy a lot of square footage per simultaneous player, they need staff to reset, and one confident golfer can hold the spot for ten minutes while a queue of people who wanted to ask about your product wanders off.</p>
<p><strong>Photo booths and 360 cameras</strong> produce something the attendee wants to keep, which is the right instinct. The catch is that they capture an email in exchange for a photo, so the intent you are measuring is &quot;wanted a photo.&quot; Fine for brand awareness at a consumer show. Thin at a B2B one.</p>
<p><strong>Tablet quizzes and spin-to-win apps</strong> are usually the right shape wearing the wrong clothes. Generic templates ask trivia unrelated to your product, so the person learns nothing about you and you learn nothing about them, and the whole thing reads as a lead-capture toll booth rather than a reason to stop.</p>
<h2>What a booth game needs to do</h2>
<p>Strip it back and a booth game has four jobs, in this order.</p>
<p><strong>Stop someone in the aisle.</strong> Something on a screen at eye level, moving, visible from six metres away. A leaderboard works unusually well here because a scoreboard with names on it implies other people already played, and that is social proof doing the recruiting for you.</p>
<p><strong>Be over in about sixty seconds.</strong> This is the number that matters most and the one templates get wrong. Under thirty seconds and there is no achievement to feel. Over ninety and your booth staff cannot start a conversation without interrupting, plus queues form and people leave.</p>
<p><strong>Ask for the email after the run, never before.</strong> A gate before play costs you most of your players, because you are asking a stranger to pay before they know if the thing is fun. Ask afterwards, when they have already invested sixty seconds and want their name on the board, and the email costs them nothing to give. This one reordering is the single biggest difference between a game that fills a lead list and one that does not.</p>
<p><strong>Teach something about what you sell.</strong> If the game is a reskinned template, the attendee remembers the game. If the mechanic is your product's value proposition made playable, they remember what you do. A cloud infrastructure company can make routing traffic under load into a game. A document company can make sorting the unsortable into a game. That is the version people describe to a colleague afterwards.</p>
<h2>The prize structure that actually drives repeat plays</h2>
<p>Most booths pick one prize mechanic and quietly break it. Either &quot;top score wins,&quot; which means everyone below the top ten has no reason to leave an email, or &quot;everyone gets entered in a draw,&quot; which means nobody has a reason to try hard or come back.</p>
<p>Run both, and say so clearly on the screen:</p>
<p><strong>Guaranteed prizes for the top three at a fixed daily time.</strong> A deadline creates urgency and a podium creates rivalry. Reset the board every show day so day two and day three are fresh races rather than a foregone conclusion, which also gives your staff a natural reason to invite yesterday's players back.</p>
<p><strong>A draw ticket for every completed run, whatever the score.</strong> This is what monetises the person who lands 200th. Their run was hopeless and they know it, but a ticket is still worth an email address. And because every additional run is another ticket, this is the mechanic that produces repeat plays and dwell time.</p>
<p>Skill rewards the few. The draw rewards everybody. Both run off the same scan.</p>
<h2>Phones beat kiosks, and it is not close</h2>
<p>The reflex is to buy or rent tablets. Consider what the phone in their pocket already gives you.</p>
<p>Everyone brings their own device, so there is no queue for hardware and no cap on simultaneous players. You are not sanitising or charging anything, you have nothing to ship or insure, and nothing gets stolen on day two. The QR code costs nothing to reproduce, so it goes on the counter, on the banner, on the badge lanyard insert, and in the pre-show email. A person can start playing before they reach your booth.</p>
<p>The trade-off is real and worth stating: you do not control the device, so the game has to work on a five-year-old Android in a hall with saturated wifi. That means a browser game with a small download, no app install, and no signup. If a booth game vendor tells you attendees need to install something, the drop-off between &quot;interested&quot; and &quot;playing&quot; will be most of your traffic.</p>
<h2>Making the leaderboard screen pull its weight</h2>
<p>The screen facing the aisle is doing more work than the game. Most of the people who see it will never play, so it has to sell the booth on its own.</p>
<p>Put the live leaderboard on it, large enough to read from the aisle, with the top three visibly flagged as prize positions and the rest of the top ten dimmed behind them. Add the scan-to-play QR at a size someone can capture from two metres. State the prize structure in one line each. And leave room for your own product video or product story on a loop, because the screen has an audience whether or not anyone is mid-run.</p>
<p>One detail that costs nothing and changes the feel: have the game play itself when nobody is playing, arcade-cabinet style. A static poster reads as signage. A game visibly running reads as something happening, and something happening is what makes a person in the aisle turn their head.</p>
<h2>What to ask a booth game vendor</h2>
<p>If you are buying rather than building, the questions that actually separate vendors:</p>
<p>Does the game teach what we sell, or is it a template with our logo on it? Can I play the exact thing you would build before I pay? Where does the lead data go, and can I export it as a CSV that our CRM will accept without a middleman? Who owns the game afterwards? Does it need an app install or a signup before play? What happens on bad conference wifi? Can you brand it to our kit with our marketing team reviewing, rather than approximating our colours?</p>
<p>The playable-before-you-pay question is the sharpest one. Agencies answer it with a slide deck. It is a reasonable proxy for whether they can build the thing at all.</p>
<h2>Budget reality</h2>
<p>For context on what this should cost, custom HTML5 booth games from a traditional agency typically start around five figures and climb from there, largely because the work is quoted like a bespoke software project. Rental packages for prize wheels, photo booths, and tablet games commonly run two to five thousand dollars per show, and you return the hardware afterwards owning nothing.</p>
<p>A custom browser game built with AI-assisted tooling lands well below the agency number, and you keep it, which matters if you do three shows a year. The economics only work if the vendor is not billing bespoke-software hours for something that reuses a proven shell, so ask what part of the build is genuinely new for you versus reused.</p>
<h2>The short version</h2>
<p>A booth game earns its place when it is sixty seconds long, played on the attendee's own phone, asks for the email after the run rather than before, puts a live leaderboard where the aisle can see it, guarantees prizes to a visible top three while giving everyone else a draw ticket, and is built around the thing you actually sell rather than a template you rented.</p>
<p>Get those right and the game stops being booth decoration and starts being the reason your lead export is worth reading on Monday.</p>
<h2>Play three of these before you commit</h2>
<p>We build custom booth games, and you can play the concepts right now on your phone, the way your attendees would: a trade-show booth sprint with a live leaderboard, a keynote game the whole room steers together, and a product turned into its own game. Most projects land between $500 and $2,000, you get a fixed quote in a day, and nothing is charged until you accept it.</p>
<p><strong><a href="/studio">Play the concepts and get a quote →</a></strong></p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[From Cinevva to Cocos: the Mini-Game Handoff (2026)]]></title>
            <link>https://app.cinevva.com/guides/cinevva-to-cocos-workflow</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/cinevva-to-cocos-workflow</guid>
            <pubDate>Sun, 19 Jul 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[How to prototype a mini game in Cinevva, validate it with real players, and hand the winner off to Cocos for production. What carries over, what's a rebuild, and the honest step-by-step workflow.]]></description>
            <content:encoded><![CDATA[<h1>From Cinevva to Cocos: the Mini-Game Handoff (2026)</h1>
<figure style="margin:1.5rem 0">
<img src="https://cdn.cinevva.com/guides/cinevva-to-cocos-workflow-hero.jpg?v=1" alt="From Cinevva to Cocos: the mini-game handoff workflow in 2026" style="width:100%;border-radius:10px">
</figure>
<p>Cinevva and Cocos aren't rivals. They're two stages of the same pipeline. Cinevva is where you find out which idea is worth building. Cocos is where you build the finished, optimized version of the one that earned it. This guide is about the handoff between them: what actually carries across, what's a rebuild, and how to run the workflow without lying to yourself about either.</p>
<p>Let's be upfront about the one thing people hope for and won't get: there is no one-click &quot;export to Cocos project&quot; button. Cinevva doesn't emit a Cocos scene. The handoff is a deliberate rebuild of a design you've already proven, reusing the assets you generated. That sounds like a downside until you see what it saves you. For the head-to-head on when to use each tool, see <a href="/guides/cinevva-vs-cocos">Cinevva vs Cocos</a>.</p>
<h2>Why hand off at all</h2>
<p>The expensive parts of a Chinese mini game (the software copyright, the ICP filing, the platform review, and for anything monetized, a publisher relationship) are worth spending on a game you know is fun. The problem is you don't know that at the start. Most game ideas aren't fun, and you find out by playing them, not by planning them.</p>
<p>So the pipeline exists to move the &quot;is this fun?&quot; question as early and as cheap as possible. Prototype in Cinevva in minutes, put it in front of real players, and read the retention. Kill the ones that don't land. Only the survivor gets the Cocos treatment and the regulatory spend. You're not doing double work; you're avoiding building the wrong game in an expensive tool.</p>
<h2>What carries over (and what doesn't)</h2>
<p>Be precise about this, because it's where teams over- or under-estimate the handoff.</p>
<p><strong>The validated design carries over, and it's the most valuable thing.</strong> You're not walking into Cocos with a hunch. You have a game people actually played, retention numbers, and a concrete spec: the core loop, the difficulty curve, the session length, what made testers re-open it. That's the hard part of game design, already de-risked.</p>
<p><strong>The generated assets carry over.</strong> The 3D models, audio, and art you generated in Cinevva are standard web formats, not locked in a proprietary blob. Models export as glTF/GLB (the <a href="/tools/animate">rigger and animation tools</a> download a GLB with the animation baked in), and audio is standard files. Those import into Cocos like any other asset. You regenerate or retouch as needed, but you're not commissioning art from scratch.</p>
<p><strong>The code does not carry over.</strong> Cinevva builds a web-native runtime; Cocos is its own engine with its own component model and TypeScript API. The game logic is a rebuild. This is the real cost of the handoff, and it's smaller than it sounds because you're re-implementing a design you fully understand, against a spec that already works, instead of discovering the design as you code.</p>
<h2>The workflow, step by step</h2>
<ol>
<li>
<p><strong>Prototype in Cinevva with the mini game mode on.</strong> Describe the game in a sentence and iterate until it's playable. The <a href="/news/2026-07-19-wechat-mini-game-mode">WeChat mini game mode</a> keeps you inside the portable subset (canvas UI, touch-first, small assets), so the design you validate is already shaped like a mini game, not a desktop game you'll have to bend later.</p>
</li>
<li>
<p><strong>Test with real players and read the retention.</strong> Share the browser link, ideally in the audience you're targeting. The metric that matters is whether people come back, not whether they say they like it. Make several prototypes and let the data pick the survivor.</p>
</li>
<li>
<p><strong>Write the spec from the prototype.</strong> Before you touch Cocos, capture what worked: the loop, the numbers, the feel. The prototype is your design document; don't lose that knowledge in translation.</p>
</li>
<li>
<p><strong>Collect the assets.</strong> Export the 3D models and pull the audio and art you're keeping. Get them into your asset pipeline in the formats Cocos expects.</p>
</li>
<li>
<p><strong>Rebuild in Cocos for the 4 MB bar.</strong> Now the engine's strengths do the work: the engine runtime is baked into the WeChat client so it doesn't count against your package, and AssetBundle subpackaging is how you fit the rest. See the <a href="/guides/wechat-mini-game-engines">WeChat mini game engines guide</a> for the packaging detail.</p>
</li>
<li>
<p><strong>Handle the paperwork in parallel.</strong> Software copyright and ICP filing take weeks; start them while you build so they're not the thing holding up your launch.</p>
</li>
</ol>
<h2>When you should not hand off</h2>
<p>Sometimes the right move is to skip Cocos entirely. If your prototype is small, light, and already runs well, and you're shipping free-with-ads rather than chasing a heavily optimized IAP title, the rebuild may not be worth it. A simple game that already fits the constraints can go out through Cinevva's own export path once it lands, without a second engine in the loop. The handoff is for the winner that needs the last mile of optimization or the deep production polish Cocos is built for, not for every prototype.</p>
<h2>The regulatory reality (same either way)</h2>
<p>The handoff doesn't change the rules. A free, ad-supported mini game needs a per-title software copyright (软著) or electronic copyright certification plus an ICP filing, all doable by an individual with a mainland ID. Any in-app purchase needs a banhao, which only a Chinese company can hold, so a foreign studio needs a licensed local publisher. Whether the game was born in Cinevva, Cocos, or both, the paperwork is identical. Details are in the <a href="/guides/publish-wechat-douyin-mini-games">WeChat and Douyin publishing guide</a>.</p>
<h2>Common Questions</h2>
<h3>Can Cinevva export a Cocos project?</h3>
<p>No. There's no one-click export to a Cocos scene. Cinevva validates the design and produces reusable assets in standard formats; the game itself is rebuilt in Cocos. The value is that you rebuild a game you've already proven is fun, not that you skip the build.</p>
<h3>What actually transfers from Cinevva to Cocos?</h3>
<p>Three things: the validated design (loop, difficulty, session length, retention data), the generated assets (3D models as glTF/GLB, audio, art in standard formats), and your understanding of why the game works. The code doesn't transfer; it's re-implemented against Cocos's API.</p>
<h3>Isn't rebuilding the game wasteful?</h3>
<p>It's cheaper than the alternative, which is building the wrong game in an expensive tool. Most prototypes fail. Rebuilding only the proven winner, against a spec that already works, is far less waste than fully producing every idea to find out which one was worth it.</p>
<h3>Do I have to use Cocos after Cinevva?</h3>
<p>No. If a prototype is simple and already fits the platform constraints, you can ship it through Cinevva's own path without Cocos. The handoff is for games that need heavy optimization or deep production polish.</p>
<h3>Can I reuse the 3D models and audio I generated?</h3>
<p>Yes. Generated models export as glTF/GLB and audio as standard files, both of which import into Cocos. You may retouch or regenerate for the 4 MB budget, but you're not starting the art from zero.</p>
<p><BuildCta
  title="Start with the prototype, not the engine"
  desc="Validate the idea in Cinevva first. Hand the winner to Cocos only once it's earned it."
  prompt="Make a one-tap arcade game that's hard to put down" /></p>
<h2>Related</h2>
<ul>
<li><a href="/guides/cinevva-vs-cocos">Cinevva vs Cocos for Mini Games</a> — the prototyping-vs-production split in detail</li>
<li><a href="/guides/cocos-alternatives">Cocos Alternatives for Mini Games</a> — the full engine field</li>
<li><a href="/guides/wechat-mini-game-engines">Game Engines for WeChat Mini Games</a> — the 4 MB limit and packaging</li>
<li><a href="/guides/publish-wechat-douyin-mini-games">How to Publish on WeChat &amp; Douyin Mini Games</a> — licenses, review, revenue share</li>
<li><a href="/news/2026-07-19-wechat-mini-game-mode">WeChat mini game mode</a> — building inside the portable subset</li>
<li><a href="/engine">Cinevva Engine</a> — our open-source, web-first engine</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Cinevva vs Cocos for Mini Games (2026)]]></title>
            <link>https://app.cinevva.com/guides/cinevva-vs-cocos</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/cinevva-vs-cocos</guid>
            <pubDate>Sun, 19 Jul 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Cinevva vs Cocos Creator for building mini games in 2026. Where Cocos wins on production and the 4 MB WeChat plugin, where an AI prompt-to-game tool wins on prototyping speed, and why the honest answer is you use both.]]></description>
            <content:encoded><![CDATA[<h1>Cinevva vs Cocos for Mini Games (2026)</h1>
<figure style="margin:1.5rem 0">
<img src="https://cdn.cinevva.com/guides/cinevva-vs-cocos-hero.jpg?v=1" alt="Cinevva vs Cocos for mini games in 2026" style="width:100%;border-radius:10px">
</figure>
<p>If you're building for WeChat and Douyin mini games, Cocos Creator is the default, and for good reason. So the question isn't really &quot;which one wins.&quot; It's &quot;which one do I reach for, and when.&quot; We build an AI prompt-to-game tool, so we have an obvious bias, and we're going to be upfront about where Cocos is the better tool and where we aren't trying to compete at all.</p>
<p>The short version: Cocos owns production. We own the part before production, turning an idea into a playable game fast enough that you can afford to throw most of them away. Those are different jobs, and the smart move is usually to use both.</p>
<p>If you're still choosing a mini-game engine in general, start with our <a href="/guides/wechat-mini-game-engines">WeChat mini game engines guide</a>, which covers Cocos, LayaAir, Egret, Unity's transform SDK, and Tuanjie in depth.</p>
<h2>Quick Verdict</h2>
<table>
<thead>
<tr>
<th></th>
<th>Cinevva</th>
<th>Cocos Creator</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>What it's for</strong></td>
<td>Prototyping: idea → playable 3D game in minutes</td>
<td>Production: shipping a finished, optimized mini game</td>
</tr>
<tr>
<td><strong>How you build</strong></td>
<td>Describe it in plain language (English or Chinese)</td>
<td>A full editor, TypeScript, art and scene pipelines</td>
</tr>
<tr>
<td><strong>WeChat 4 MB story</strong></td>
<td>Portable subset mode; exporter in progress</td>
<td>Best in class: engine baked into the WeChat client, AssetBundle subpackaging</td>
</tr>
<tr>
<td><strong>Maturity</strong></td>
<td>New, AI-first, evolving fast</td>
<td>Battle-tested, most WeChat mini games run on it</td>
</tr>
<tr>
<td><strong>Team fit</strong></td>
<td>Solo devs, designers, fast idea validation</td>
<td>Studios and engineers building to ship</td>
</tr>
<tr>
<td><strong>Cost</strong></td>
<td>Free to build in the browser</td>
<td>Free, open-source</td>
</tr>
<tr>
<td><strong>Best for</strong></td>
<td>Finding the game worth building</td>
<td>Building the game you already believe in</td>
</tr>
</tbody>
</table>
<p>The one line that matters: <strong>Cocos is where you build the game you've decided to make. Cinevva is where you find out which game that should be.</strong></p>
<h2>Where Cocos Wins (and We Don't Argue)</h2>
<p>Cocos Creator is the safe, correct default for shipping a WeChat mini game, and nothing here is meant to talk you out of it.</p>
<p>Its biggest structural advantage is the 4 MB package limit, the single hardest engineering problem on WeChat. Since WeChat client 7.0.7, the Cocos engine runtime is a plugin baked into the WeChat app itself, so it doesn't count against your 4 MB. Your package is just your game, not your game plus an engine. No other engine has that, and it's the reason most mini games are built in Cocos. On top of that, its AssetBundle system is the cleanest way to split assets into on-demand subpackages.</p>
<p>Beyond packaging, Cocos owns everything about finishing a game: a mature editor, a real UI framework, hot-update systems, an art and animation pipeline, and years of documentation and community answers in Chinese. If you have a team, a design you believe in, and a plan to ship, this is the tool. We'd point you to it ourselves.</p>
<h2>Where an AI Prompt Tool Wins</h2>
<p>The thing Cocos is not built for is the very start, when you don't yet know if the idea is any good.</p>
<p>In Cinevva you describe a game in a sentence, in English or Chinese, and get a playable 3D game in the browser in minutes. Nine specialist models handle 3D, animation, scenes, music, sound, effects, UI, logic, and multiplayer, so you're not opening an empty editor and building systems before you can test a single mechanic. You're playing the idea almost immediately.</p>
<p>That speed changes the economics of finding a hit. Mini-game success increasingly looks like content: you don't reason your way to the winner, you make a lot of candidates cheaply and keep the one whose retention doesn't lie. When a prototype is minutes instead of days, &quot;make five this week and keep the one that's actually fun&quot; becomes a real workflow instead of a fantasy. That's the wedge, and it's a genuine one, not a toy.</p>
<p>There's a China-specific angle too. Cinevva's <a href="/news/2026-07-19-wechat-mini-game-mode">WeChat mini game mode</a> builds inside the portable subset from the first prompt: canvas-drawn UI instead of HTML, touch-first controls, mp3 audio, no dynamically loaded code, and a WebGL2 boot gate for older phones. A strict-mode preview sandbox flags anything that would break the port and feeds it back to the AI to fix. The game runs in your browser today, and it stays inside the subset that survives a WeChat port instead of picking up habits you'd have to rewrite.</p>
<h2>The Honest Limits</h2>
<p>We're new. Cocos has shipped thousands of mini games; we're early, AI-first, and moving fast, but we don't have Cocos's decade of edge cases solved. Our exporter that emits a ready-to-open WeChat DevTools project is in progress, not finished, so today Cinevva is the prototyping and generation front, not the final packaging step. And for a heavily optimized, asset-dense production title where every kilobyte of the 4 MB counts, Cocos's built-in plugin and AssetBundle system are advantages we don't match. We'd rather you know that going in.</p>
<h2>Use Both: the Realistic Workflow</h2>
<p>The framing that actually helps you isn't &quot;pick one.&quot; It's a pipeline.</p>
<p>Use Cinevva for 立项, the greenlighting stage: turn ideas into playable prototypes, put them in front of real players, and find the one with a loop worth investing in. Then decide what that winner deserves. Sometimes it's good enough to ship as-is. Sometimes it earns a rebuild in Cocos for the last mile of optimization and polish, or a publisher conversation. The expensive parts of China, the paperwork and the platform review, only get spent on a game that already proved it's fun somewhere cheaper.</p>
<p>That's why this isn't really Cinevva versus Cocos. It's Cinevva then Cocos, and only for the games that earn the second step.</p>
<h2>The Regulatory Reality (Same for Both)</h2>
<p>Whichever engine you use, publishing in China is the same gate. A free, ad-supported mini game needs a per-title software copyright (软著) or electronic copyright certification plus an ICP filing, all of which an individual with a mainland ID can do. Any in-app purchase needs a banhao, which only a Chinese company can hold, so a foreign studio needs a licensed local publisher. None of that depends on your engine. We cover it in the <a href="/guides/publish-wechat-douyin-mini-games">WeChat and Douyin publishing guide</a>. The engine choice decides how fast you can build; it doesn't change the paperwork.</p>
<h2>Common Questions</h2>
<h3>Is Cinevva a replacement for Cocos?</h3>
<p>No, and we don't pitch it as one. Cocos is a production engine for shipping finished mini games. Cinevva is an AI prototyping tool for finding the game worth shipping. They cover different stages, and using both, prototype fast then build the winner properly, is usually smarter than choosing one.</p>
<h3>Can Cinevva export to WeChat mini games today?</h3>
<p>Cinevva's WeChat mini game mode builds your game inside the portable subset that ports cleanly, and the game runs in the browser now. The exporter that emits a ready-to-submit WeChat DevTools project is in progress. Cocos, by contrast, exports to WeChat as a first-class, finished path today.</p>
<h3>Why is Cocos better for the 4 MB limit?</h3>
<p>Because the Cocos engine runtime is baked into the WeChat client itself, so it doesn't count against your 4 MB initial package, and its AssetBundle system cleanly splits the rest into on-demand subpackages. That's a structural advantage no other engine has, and it's why most WeChat mini games are built in Cocos.</p>
<h3>Which should a solo developer use?</h3>
<p>Start in Cinevva to find an idea that's actually fun without spending days in an editor first. If a prototype proves itself and needs heavy optimization to hit the 4 MB bar, move that one into Cocos. For most early experiments, the prompt-to-game speed is the bigger lever.</p>
<h3>Does the engine change what paperwork I need in China?</h3>
<p>No. Software copyright, ICP filing, and the banhao for paid games are platform and regulatory requirements, identical whether you build in Cocos, Cinevva, or anything else.</p>
<p><BuildCta
  title="Prototype the idea before you build it in Cocos"
  desc="Describe a mini game and play it in your browser in minutes. Keep the one that's actually fun."
  prompt="Make a one-tap arcade game that's hard to put down" /></p>
<h2>Related</h2>
<ul>
<li><a href="/guides/wechat-mini-game-engines">Game Engines for WeChat Mini Games</a> — Cocos, LayaAir, Egret, Unity, and Tuanjie compared on the 4 MB limit</li>
<li><a href="/guides/cocos-alternatives">Cocos Alternatives for Mini Games</a> — every option, picked by why you're looking past Cocos</li>
<li><a href="/guides/cinevva-to-cocos-workflow">From Cinevva to Cocos: the Mini-Game Handoff</a> — how to prototype here and build the winner in Cocos</li>
<li><a href="/guides/china-mini-game-platforms">China Mini-Game &amp; HTML5 Platforms Compared</a> — WeChat, Douyin, QQ, 4399, and the rest</li>
<li><a href="/guides/publish-wechat-douyin-mini-games">How to Publish on WeChat &amp; Douyin Mini Games</a> — licenses, review, and revenue share</li>
<li><a href="/news/2026-07-19-wechat-mini-game-mode">WeChat mini game mode</a> — how Cinevva builds inside the portable subset</li>
<li><a href="/engine">Cinevva Engine</a> — our open-source, web-first engine</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Cocos Alternatives for Mini Games (2026)]]></title>
            <link>https://app.cinevva.com/guides/cocos-alternatives</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/cocos-alternatives</guid>
            <pubDate>Sun, 19 Jul 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[The real alternatives to Cocos Creator for mini games and web games in 2026, picked by why you're looking. LayaAir, Egret, Unity's transform SDK, Tuanjie, Three.js, and the AI prompt-to-game route, with an honest read on each.]]></description>
            <content:encoded><![CDATA[<h1>Cocos Alternatives for Mini Games (2026)</h1>
<figure style="margin:1.5rem 0">
<img src="https://cdn.cinevva.com/guides/cocos-alternatives-hero.jpg?v=1" alt="Cocos alternatives for mini games in 2026" style="width:100%;border-radius:10px">
</figure>
<p>Cocos Creator is the default engine for WeChat and Douyin mini games, and for shipping a finished title it's usually the right call. But &quot;default&quot; doesn't mean &quot;only,&quot; and there are real reasons to look at something else: you want a different workflow, you're porting an existing game, you want AI to do the first draft, or you're just testing whether an idea is fun before you commit to a full engine.</p>
<p>This guide sorts the alternatives by why you're looking, not by a leaderboard. For the deeper engine-by-engine breakdown on the 4 MB limit, see the <a href="/guides/wechat-mini-game-engines">WeChat mini game engines guide</a>.</p>
<h2>First, why people leave Cocos</h2>
<p>Cocos is excellent at production and has a structural edge on WeChat: its engine runtime is baked into the WeChat client, so it doesn't count against your 4 MB package. That's hard to beat. The common reasons to still want an alternative are workflow preference (some developers just prefer another editor), an existing codebase in another engine you'd rather not rewrite, wanting to skip the empty-editor phase entirely and have AI generate a playable draft, or wanting a language and stack you already know. Match the alternative to your reason.</p>
<h2>Quick Reference</h2>
<table>
<thead>
<tr>
<th>Alternative</th>
<th>Best reason to pick it</th>
<th>2D/3D</th>
<th>WeChat story</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>LayaAir</strong></td>
<td>You prefer its workflow, first-class WeChat target</td>
<td>2D + 3D</td>
<td>Strong, but engine eats package budget</td>
</tr>
<tr>
<td><strong>Egret</strong></td>
<td>Maintaining an existing Egret game</td>
<td>2D</td>
<td>Legacy, shrinking ecosystem</td>
</tr>
<tr>
<td><strong>Unity (transform SDK)</strong></td>
<td>Porting an existing Unity game</td>
<td>2D + 3D</td>
<td>WebGL conversion, large builds</td>
</tr>
<tr>
<td><strong>Tuanjie (Unity China)</strong></td>
<td>Unity skills, committed to China</td>
<td>2D + 3D</td>
<td>Native WeChat export target</td>
</tr>
<tr>
<td><strong>Three.js + weapp-adapter</strong></td>
<td>Small custom game, you live in Three.js</td>
<td>2D + 3D</td>
<td>You own the plumbing</td>
</tr>
<tr>
<td><strong>Cinevva (AI prompt-to-game)</strong></td>
<td>Prototype before you commit to any engine</td>
<td>3D</td>
<td>Portable subset mode; exporter in progress</td>
</tr>
</tbody>
</table>
<h2>If you want a first-class WeChat engine: LayaAir</h2>
<p>LayaAir is the closest like-for-like alternative. It adapted to WeChat early, treats it as a first-class build target, does 2D and 3D, uses TypeScript, and has a loyal base of developers who simply prefer its workflow to Cocos. Developers who've used both tend to call the choice a matter of taste rather than capability. The one tradeoff: LayaAir's runtime isn't baked into the WeChat client the way Cocos's is, so you spend more of your 4 MB budget on the engine itself. Fine for small 2D, tighter for asset-heavy 3D.</p>
<h2>If you're porting an existing game: Unity or Tuanjie</h2>
<p>If your game already exists in Unity, don't rewrite it. Tencent and Unity maintain an official transform SDK that converts a Unity WebGL build into a mini-game package, with one-click export as of mid-2025. Be realistic about the tradeoff: Unity WebGL builds are large, and the 4 MB initial package is brutal for an engine not designed around it, so expect real effort on stripping and subpackaging. If you're committing to China long-term and have Unity muscle memory, Tuanjie (Unity China's localized engine) treats WeChat as a native export target rather than a WebGL conversion, which avoids much of that bloat.</p>
<h2>If you want maximum control: Three.js and raw WebGL</h2>
<p>You can run Three.js or hand-written WebGL inside a mini game through WeChat's <code>weapp-adapter</code>, which stubs out the DOM and canvas objects the library expects. This is the most flexible and the most work: you own the render loop, asset pipeline, subpackaging, and every adapter edge case. It makes sense for a small, size-sensitive custom game, or when your team already lives in Three.js. It's also the path closest to a browser game you've already built.</p>
<h2>If you're maintaining legacy: Egret, with eyes open</h2>
<p>Egret (白鹭) is an older 2D HTML5 engine that powered a lot of the first mini-game wave. It still works, but momentum moved to Cocos and Laya, and starting a new project on it in 2026 means betting on a shrinking ecosystem. Keep it for maintaining an existing Egret game; don't start fresh on it.</p>
<h2>If you want to skip the editor entirely: an AI prompt-to-game tool</h2>
<p>The newest category isn't another editor, it's not opening an editor at all. With Cinevva you describe a game in plain language, in English or Chinese, and get a playable 3D game in the browser in minutes, with nine specialist models handling 3D, animation, scenes, music, sound, effects, UI, logic, and multiplayer.</p>
<p>This isn't a Cocos replacement, and we don't pretend it is. Cocos finishes and optimizes games; Cinevva is for the stage before that, finding out which idea is worth finishing. Its <a href="/news/2026-07-19-wechat-mini-game-mode">WeChat mini game mode</a> builds inside the portable subset from the first prompt (canvas UI, touch-first controls, mp3 audio, no dynamic code, a WebGL2 boot gate), and a strict-mode sandbox flags anything that would break a WeChat port. The realistic workflow is to prototype fast here, keep the game whose retention proves out, and then decide whether it ships as-is or earns a proper build in Cocos. Think of it as the front of the funnel that feeds the engine you eventually ship in.</p>
<h2>How to Choose</h2>
<p>Match the tool to the reason you're looking past Cocos. Prefer a different workflow: LayaAir. Porting an existing Unity game: the transform SDK, or Tuanjie for the long haul. Small, custom, or already in Three.js: <code>weapp-adapter</code> and raw WebGL. Maintaining an old title: Egret. Want to validate an idea before committing to any engine: an AI prompt-to-game tool, then bring the winner into Cocos or Laya if it earns the polish.</p>
<h2>The Regulatory Gate (independent of engine)</h2>
<p>No alternative changes the publishing rules. A free ad-supported mini game needs a per-title software copyright (软著) or electronic copyright certification plus an ICP filing, doable by an individual with a mainland ID. Any in-app purchase needs a banhao, which only a Chinese company can hold, so foreign studios need a licensed local publisher. See the <a href="/guides/publish-wechat-douyin-mini-games">publishing guide</a>. Pick your engine for the build; the paperwork is the same everywhere.</p>
<h2>Common Questions</h2>
<h3>What is the best alternative to Cocos for WeChat mini games?</h3>
<p>LayaAir is the closest direct alternative, with first-class WeChat support and a similar 2D/3D, TypeScript workflow. Its tradeoff is that its runtime isn't baked into the WeChat client, so it uses more of your 4 MB budget. For porting an existing Unity game, the Unity transform SDK or Tuanjie fit better.</p>
<h3>Is there a free alternative to Cocos?</h3>
<p>Yes. Cocos itself is free and open-source, and so are LayaAir, Three.js, and the AI prototyping route in the browser. Unity is free under its revenue cap. Cost is rarely the deciding factor among these; workflow and your starting point matter more.</p>
<h3>Can I use AI instead of Cocos to make a mini game?</h3>
<p>You can use AI to prototype one fast. Cinevva turns a prompt into a playable game and builds inside WeChat's portable subset, which is ideal for finding an idea worth pursuing. For the finished, heavily optimized production title, a mature engine like Cocos is still the stronger tool, so the common pattern is to prototype with AI and build the winner in Cocos.</p>
<h3>Which alternative is best for porting an existing game?</h3>
<p>If it's a Unity game, the WeChat transform SDK gets you there without a rewrite, and Tuanjie is the more future-proof choice if you're committed to China. If it's a Three.js or WebGL game, the <code>weapp-adapter</code> is the path. If it's already a browser game, that structure is close to what WeChat wants already.</p>
<p><BuildCta
  title="Test the idea before you pick an engine"
  desc="Describe a mini game and play it in your browser in minutes, then take the winner into a full engine."
  prompt="Make a colorful physics stacking game that's hard to put down" /></p>
<h2>Related</h2>
<ul>
<li><a href="/guides/cinevva-vs-cocos">Cinevva vs Cocos for Mini Games</a> — the prototyping-vs-production split, in detail</li>
<li><a href="/guides/cinevva-to-cocos-workflow">From Cinevva to Cocos: the Mini-Game Handoff</a> — prototype here, build the winner in Cocos</li>
<li><a href="/guides/wechat-mini-game-engines">Game Engines for WeChat Mini Games</a> — the full engine field and the 4 MB limit</li>
<li><a href="/guides/china-mini-game-platforms">China Mini-Game &amp; HTML5 Platforms Compared</a> — WeChat, Douyin, QQ, 4399, and the rest</li>
<li><a href="/guides/publish-wechat-douyin-mini-games">How to Publish on WeChat &amp; Douyin Mini Games</a> — licenses, review, revenue share</li>
<li><a href="/guides/localize-web-game-china">Localizing a Web Game for China</a> — fonts, hosting, payments</li>
<li><a href="/engine">Cinevva Engine</a> — our open-source, web-first engine</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Best AI 3D Model Generators in 2026: Text-to-3D and Image-to-3D Compared]]></title>
            <link>https://app.cinevva.com/guides/ai-3d-model-generators</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/ai-3d-model-generators</guid>
            <pubDate>Fri, 17 Jul 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[The best AI 3D model generators in 2026, text-to-3D and image-to-3D. Meshy, Tripo, Rodin, TRELLIS.2, Hunyuan3D, and SAM 3D compared, with free-download limits and licensing explained.]]></description>
            <content:encoded><![CDATA[<h1>Best AI 3D Model Generators in 2026 (Text-to-3D and Image-to-3D)</h1>
<p><em>Meshy download terms, Tripo plans, Rodin plans and TRELLIS.2 licensing checked September 14, 2026. Other competitor sections retain their July 2026 review dates; check the linked sources for newer terms.</em></p>
<p>For a game asset, choose by the file you can actually download: Meshy and Tripo offer hosted generation and editing, Rodin offers detailed geometry controls, and Microsoft’s TRELLIS.2 is an option for self-hosted image-to-3D. Free generation does not always include a usable export. Cinevva’s <a href="/tools/hunyuan3d">3D Model Generator</a> accepts images or text, uses credits for generation and offers a free first GLB export.</p>
<p>This guide goes deep on 3D generation only. For textures, audio, and the rest of the AI asset pipeline, see our <a href="/guides/ai-asset-generators-games">AI asset generators guide</a>.</p>
<h2>How to use this comparison</h2>
<p>Compare input type, exported files and usage rights before choosing a generator. A mesh you can edit in an engine is a different deliverable from a Gaussian splat you can view. The recommendations here are editorial judgments, not a controlled benchmark with the same input and hardware for every tool. Cinevva publishes this guide and offers one of the listed products. For our own tool, check the linked workbench and plans for the current credit and export limits.</p>
<h2>Quick picks</h2>
<ul>
<li><strong>Hosted generation and editing:</strong> Meshy (clean topology options, Low Poly Mode, big ecosystem).</li>
<li><strong>Hosted character workflow:</strong> Tripo (auto-rigging, retopology and engine bridges; check export access).</li>
<li><strong>Detailed geometry controls:</strong> Rodin Gen-2.5 by Hyper3D (sculpt-level detail, 10M+ polygon output).</li>
<li><strong>Self-hosted image-to-3D:</strong> Microsoft TRELLIS.2 (MIT model/code, PBR; dependencies have separate terms).</li>
<li><strong>Browser options:</strong> Cinevva's <a href="/tools/hunyuan3d">3D Model Generator</a> and <a href="/tools/sam3d">Image to 3D capture</a>.</li>
</ul>
<h2>Comparison at a glance</h2>
<table>
<thead>
<tr>
<th>Tool</th>
<th>Type</th>
<th>Input</th>
<th>Output</th>
<th>Commercial use</th>
<th>Free tier</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Meshy</strong></td>
<td>Hosted</td>
<td>Text, image</td>
<td>GLB, FBX, OBJ and other mesh formats</td>
<td>Free: CC BY 4.0 with attribution; paid: private assets</td>
<td>100 credits/month; 10 Meshy 6 Lite downloads/month; Meshy 6/7 downloads paid</td>
</tr>
<tr>
<td><strong>Tripo</strong></td>
<td>Hosted</td>
<td>Text, image</td>
<td>GLB, FBX, OBJ, STL, PBR, auto-rig</td>
<td>Paid plans</td>
<td>200 credits/month, non-commercial; limited exports</td>
</tr>
<tr>
<td><strong>Rodin Gen-2.5</strong></td>
<td>Hosted</td>
<td>Text, image, multi-image</td>
<td>Mesh with PBR, quad option</td>
<td>Paid plans</td>
<td>Free to generate</td>
</tr>
<tr>
<td><strong>Hi3D (Hitem3D)</strong></td>
<td>Hosted</td>
<td>Image, multi-image</td>
<td>High-res mesh</td>
<td>Paid plans</td>
<td>Trial credits</td>
</tr>
<tr>
<td><strong>Tencent Hunyuan 3D</strong></td>
<td>Hosted</td>
<td>Text, image, sketch</td>
<td>OBJ, GLB, PBR</td>
<td>Check plan terms</td>
<td>20 generations/day</td>
</tr>
<tr>
<td><strong>Cinevva 3D Generator</strong></td>
<td>Hosted</td>
<td>Text, image</td>
<td>GLB, OBJ, PBR</td>
<td>See <a href="/plans">plan terms</a></td>
<td>Generation uses credits; first GLB export free</td>
</tr>
<tr>
<td><strong>TRELLIS.2</strong></td>
<td>Open source (MIT)</td>
<td>Image</td>
<td>GLB, OBJ, PLY, PBR to 4K</td>
<td>Yes</td>
<td>Self-host</td>
</tr>
<tr>
<td><strong>Hunyuan3D 2.1</strong></td>
<td>Open source</td>
<td>Image</td>
<td>Mesh + PBR</td>
<td>Yes, region limits</td>
<td>Self-host</td>
</tr>
<tr>
<td><strong>SAM 3D</strong></td>
<td>Open source</td>
<td>Single photo</td>
<td>Gaussian splat, geometry</td>
<td>Yes (SAM License)</td>
<td>Self-host</td>
</tr>
<tr>
<td><strong>SPAR3D</strong></td>
<td>Open source</td>
<td>Single photo</td>
<td>Textured GLB mesh</td>
<td>Yes under $1M revenue</td>
<td>Self-host</td>
</tr>
</tbody>
</table>
<p>The dated checks above cover plan access and licensing, not a new same-input quality benchmark. Check current terms before shipping; credits are not comparable model counts across vendors.</p>
<h2>The hosted tools</h2>
<h3>Meshy</h3>
<p>Meshy combines text/image generation with mesh editing and export. Its free-download distinction matters more than a blanket “free tier” label.</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Free allowance</strong></td>
<td>100 credits per month</td>
</tr>
<tr>
<td><strong>Free downloads</strong></td>
<td>10 per month from Meshy 6 Lite; Meshy 6 and Meshy 7 downloads require a paid subscription</td>
</tr>
<tr>
<td><strong>Usage rights</strong></td>
<td>Free output uses CC BY 4.0 with attribution; paid plans offer private ownership</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>GLB, FBX, OBJ, STL, USDZ and BLEND</td>
</tr>
</tbody>
</table>
<p>Check the generation model before spending credits if you need a free download. <a href="https://help.meshy.ai/en/articles/15696428-what-is-included-on-the-free-plan">Meshy free-plan documentation</a>, <a href="https://www.meshy.ai/pricing">formats and pricing</a>. Checked September 14, 2026; no new quality benchmark was run for this update.</p>
<h3>Tripo</h3>
<p>Tripo combines generation with rigging, retopology and bridges to game engines and DCC tools. Choose the plan around export and usage rights as well as credit allowance.</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Free</strong></td>
<td>200 monthly credits; public, non-commercial models; limited exports</td>
</tr>
<tr>
<td><strong>Pro allowance</strong></td>
<td>3,000 monthly credits; private models and commercial use</td>
</tr>
<tr>
<td><strong>Annual price shown</strong></td>
<td>$20/month equivalent, billed $240/year</td>
</tr>
<tr>
<td><strong>Workflow</strong></td>
<td>Rigging, animation, retopology and DCC bridges; access varies by plan</td>
</tr>
</tbody>
</table>
<p>The pricing page estimates model counts, but retries and optional operations affect how many finished assets you get. Compare the actual checkout billing interval instead of treating an annual equivalent as a monthly commitment. <a href="https://www.tripo3d.ai/pricing">Tripo pricing</a>. Checked September 14, 2026.</p>
<h3>Rodin (Hyper3D)</h3>
<p>Rodin is worth evaluating for detailed assets and multi-image input. Its <a href="https://docs.hyper3d.ai/en/api-specification/rodin-gen2-5">Gen-2.5 API reference</a> documents generation controls; that is vendor documentation, not a Cinevva quality ranking.</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Free access</strong></td>
<td>Preview generation before confirming spend; limited legacy-model exports</td>
</tr>
<tr>
<td><strong>Creator</strong></td>
<td>$30/month, or $24/month equivalent billed $288/year</td>
</tr>
<tr>
<td><strong>Business</strong></td>
<td>$120/month, or $96/month equivalent billed $1,152/year</td>
</tr>
<tr>
<td><strong>Plan distinction</strong></td>
<td>Creator includes production features and unlimited export; Business adds API access and high-poly quad options</td>
</tr>
</tbody>
</table>
<p>Use a small representative asset to check the export you need before choosing a plan. <a href="https://hyper3d.ai/pricing">Hyper3D pricing</a>. Checked September 14, 2026.</p>
<h3>Hi3D (formerly Hitem3D)</h3>
<p>The notable 2026 entrant. Built by Math Magic on two published research models, Sparc3D (NeurIPS 2025, watertight high-res geometry) and Ultra3D (part-attention acceleration), it generates at up to 1536³ voxel resolution, the highest raw geometric fidelity of any hosted tool. It rebranded from Hitem3D to Hi3D in 2026.</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Type</strong></td>
<td>Hosted</td>
</tr>
<tr>
<td><strong>Input</strong></td>
<td>Image and multi-image</td>
</tr>
<tr>
<td><strong>Output</strong></td>
<td>High-resolution watertight mesh</td>
</tr>
<tr>
<td><strong>Commercial</strong></td>
<td>Paid plans, check current terms</td>
</tr>
<tr>
<td><strong>Free tier</strong></td>
<td>Trial credits</td>
</tr>
<tr>
<td><strong>Best for</strong></td>
<td>Detail-first work: miniatures, collectibles, 3D printing</td>
</tr>
</tbody>
</table>
<p>Honest take: it has become the go-to for print-first workflows where watertight geometry and fine detail beat everything else. For games you'll be decimating its output hard, so it makes most sense when you need one gorgeous hero prop. <a href="https://www.hi3d.ai">hi3d.ai</a></p>
<h3>Tencent Hunyuan 3D (hosted platform)</h3>
<p>Tencent took the Hunyuan3D model family global in November 2025 with an English-language platform at <a href="http://3d.hunyuanglobal.com">3d.hunyuanglobal.com</a>, running its newest engines (3.0, and 3.1 since January 2026) that are not open-sourced. In 2026 it grew into HY 3D Studio, a full pipeline: image to 3D to retopology to UVs to texturing to rigging to animation.</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Type</strong></td>
<td>Hosted (newest models), open weights for older versions</td>
</tr>
<tr>
<td><strong>Input</strong></td>
<td>Text, image, sketch</td>
</tr>
<tr>
<td><strong>Output</strong></td>
<td>OBJ, GLB with PBR textures</td>
</tr>
<tr>
<td><strong>Commercial</strong></td>
<td>Check plan terms, enterprise API via Tencent Cloud</td>
</tr>
<tr>
<td><strong>Free tier</strong></td>
<td>20 free generations per day</td>
</tr>
<tr>
<td><strong>Best for</strong></td>
<td>Generous free experimentation with a frontier engine</td>
</tr>
</tbody>
</table>
<p>Honest take: 20 free generations a day is the most generous free allowance of any hosted frontier model, and the 3.x engines produce noticeably better geometry than the open 2.1 weights. The platform is newer to Western users, so read the terms on output rights before you build a pipeline around it. <a href="https://3d.hunyuanglobal.com">3d.hunyuanglobal.com</a></p>
<h3>Gone in 2026: Luma Genie and CSM</h3>
<p>Two names you'll still see in older roundups are effectively dead. Luma's Genie text-to-3D tool no longer appears anywhere on Luma's site, which has pivoted fully to video generation and creative agents. CSM (Common Sense Machines) shut down its Cube platform on January 5, 2026, and the company was acquired by Google that same month. Don't start new projects on either.</p>
<h2>The open-source models</h2>
<p>Open models flip the deal: you supply the GPU, and in exchange there's no credit meter and no plan gating your commercial rights. Only the model license itself applies.</p>
<h3>Microsoft TRELLIS.2</h3>
<p>The current open-source leader. Released December 2025 under the MIT license, TRELLIS.2 is a 4B-parameter image-to-3D model built on a sparse voxel representation (O-Voxel) that handles complex topology, sharp edges, and full PBR materials. It exports GLB with textures up to 4096², plus OBJ, PLY, radiance fields, and Gaussian splats.</p>
<figure class="sample-sheet">
<img src="/img/ai-samples/trellis-sample.png" alt="TRELLIS.2 output samples: image-to-3D and text-to-3D results shown as textured meshes alongside their raw geometry, including a trellis planter, a printing press, a pirate ship, a vintage camera, a brick house, and material variations of a wooden truck" loading="lazy">
<figcaption>TRELLIS.2 output, textured result next to the raw geometry underneath. Note the density of the untextured meshes: this is what "you will need a decimation pass" looks like in practice.</figcaption>
</figure>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Type</strong></td>
<td>Open source, MIT</td>
</tr>
<tr>
<td><strong>Input</strong></td>
<td>Image</td>
</tr>
<tr>
<td><strong>Output</strong></td>
<td>GLB (PBR to 4K), OBJ, PLY, radiance field, Gaussian splat</td>
</tr>
<tr>
<td><strong>Commercial</strong></td>
<td>Yes, no restrictions</td>
</tr>
<tr>
<td><strong>Free tier</strong></td>
<td>Free forever if you have the GPU</td>
</tr>
<tr>
<td><strong>Best for</strong></td>
<td>The best quality-to-freedom ratio in 3D generation today</td>
</tr>
</tbody>
</table>
<p>Honest take: MIT license means zero commercial ambiguity, and output quality genuinely competes with the paid hosted tools. You need a capable NVIDIA GPU to run it locally, or you can rent inference by the second on GPU clouds. If you self-host one model, make it this one. <a href="https://github.com/microsoft/TRELLIS.2">github.com/microsoft/TRELLIS.2</a></p>
<h3>Hunyuan3D 2.1 (open weights)</h3>
<p>Tencent's fully open release from June 2025: complete model weights and training code for a 3.3B shape model plus a 2B PBR texture model. It's the model behind Cinevva's free <a href="/tools/hunyuan3d">3D Model Generator</a>, and the one most products in this space quietly run under the hood.</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Type</strong></td>
<td>Open weights and training code</td>
</tr>
<tr>
<td><strong>Input</strong></td>
<td>Image (text works via an image-generation step first)</td>
</tr>
<tr>
<td><strong>Output</strong></td>
<td>Textured mesh with production PBR materials</td>
</tr>
<tr>
<td><strong>Commercial</strong></td>
<td>Yes, but the license excludes the EU, UK, and South Korea</td>
</tr>
<tr>
<td><strong>Free tier</strong></td>
<td>Free to self-host</td>
</tr>
<tr>
<td><strong>Best for</strong></td>
<td>Production PBR texturing on open weights, fine-tuning</td>
</tr>
</tbody>
</table>
<p>Honest take: the PBR paint model is still the strongest open texturing stack, and full training code means you can fine-tune it on your own art style. The community license's territory exclusion (EU, UK, South Korea) is a real constraint if you're shipping a product there, where TRELLIS.2's MIT license is the cleaner pick. <a href="https://github.com/Tencent-Hunyuan/Hunyuan3D-2.1">github.com/Tencent-Hunyuan/Hunyuan3D-2.1</a></p>
<h3>SAM 3D (Meta)</h3>
<p>Not a mesh generator, and that's the point. SAM 3D is Meta's pair of open models (SAM 3D Objects and SAM 3D Body) that reconstruct 3D geometry, texture, and scene layout from a single ordinary photo, even with occlusion and clutter. The primary output is a Gaussian splat as a .ply file. Code and checkpoints are on GitHub under Meta's permissive SAM License, which allows commercial use.</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Type</strong></td>
<td>Open source, SAM License</td>
</tr>
<tr>
<td><strong>Input</strong></td>
<td>Single photo (plus an object mask)</td>
</tr>
<tr>
<td><strong>Output</strong></td>
<td>Gaussian splat (.ply), geometry, texture, pose</td>
</tr>
<tr>
<td><strong>Commercial</strong></td>
<td>Yes</td>
</tr>
<tr>
<td><strong>Free tier</strong></td>
<td>Free to self-host; Cinevva usage follows the workbench credit allowance</td>
</tr>
<tr>
<td><strong>Best for</strong></td>
<td>Capturing real objects from one photo</td>
</tr>
</tbody>
</table>
<p>Honest take: it's reconstruction, not generation. Point it at a real object and you get a faithful 3D capture without a photogrammetry rig. The splat output is for viewing and reference rather than direct game import (more on that below). Cinevva offers it in the browser as <a href="/tools/sam3d">Image to 3D object capture</a>. <a href="https://github.com/facebookresearch/sam-3d-objects">github.com/facebookresearch/sam-3d-objects</a></p>
<h3>TripoSR and SPAR3D (the fast reconstructors)</h3>
<p>Two older but still useful single-image models. TripoSR (Tripo and Stability AI, MIT license) reconstructs a mesh in under half a second on a datacenter GPU, at correspondingly modest quality. SPAR3D (Stability AI, January 2025) produces a textured, UV-unwrapped GLB in under a second and supports point-level editing. SPAR3D ships under the Stability Community License: free for commercial use until your organization passes $1M in annual revenue, then you need an enterprise license.</p>
<p>Honest take: both are outclassed on quality by TRELLIS.2 and Hunyuan3D 2.1 in 2026. Their edge is speed, which matters if you're generating meshes live inside an app.</p>
<h3>Also worth knowing</h3>
<p>Sparc3D, the NeurIPS 2025 model behind Hi3D, has a public Hugging Face demo and produces watertight meshes at 1024³ resolution. Roblox's Cube 3D is open text-to-mesh code but ships under a research-only RAIL license, so you can't use its output in a commercial game.</p>
<h2>Cinevva's in-browser 3D tools</h2>
<p>Cinevva provides browser tools for generating an editable mesh or capturing an object as a Gaussian splat. Sign in and check the credits shown in each workbench before generating.</p>
<p>The <a href="/tools/hunyuan3d">3D Model Generator</a> turns a photo, an image URL, or a text prompt into a textured polygon mesh with PBR materials, downloadable as GLB or OBJ. There's a Rapid mode (about 2 minutes) and a Pro mode (about 5 minutes), and the output drops straight into Blender, Unity, Godot, or a web game. You can also send the result to the <a href="/tools/rigger">Auto Rigger</a> to get a skeleton and preset animations, then use <a href="/tools/animate">Prompt Animations</a> to generate a custom motion from a text description and retarget it onto that skeleton.</p>
<p>The <a href="/tools/sam3d">Image to 3D capture</a> runs Meta's SAM 3D on a single photo and returns a Gaussian splat you can orbit in the browser and export as .ply. Use it to capture a real object, then use the 3D Model Generator when you need an editable mesh of the same subject.</p>
<p>Generating and previewing a mesh uses the credits shown in the workbench. Your first GLB export is free; further exports are included with Standard and Pro. Previewing, rigging, and animating remain available before export. See <a href="/plans">plans and pricing</a> for access and usage terms.</p>
<h2>Test the exported character, not just its preview</h2>
<p>A visible animation in a web preview does not establish that your downloaded file contains a skeleton, animation channels and all its textures. Start with our <a href="/guides/free-character-animations-rigging#tested-character-download-to-blender">downloadable Blender character example</a>: it records file size, triangles, embedded clips, texture dependencies and an exported walk you can inspect. The example uses an existing CC0 model; it is an import/export reference, not a generator benchmark.</p>
<p>For a fair generator comparison, use the same input and record the model/version, settings, credit cost, queue and processing time, triangles, missing textures, deformation under the same motion, and import in the same engine version. Keep failed results in the comparison. Our <a href="/tools/rigger">Auto Rigger</a> covers the rigging step; the <a href="/blender-addon/">Blender add-on</a> offers local humanoid rigging when you prefer to work inside Blender.</p>
<h2>What AI meshes are actually like (the honest part)</h2>
<p>Every generator on this page produces a dense triangle mesh, typically tens of thousands to a few hundred thousand triangles, with automatically unwrapped UVs. Here's what that means in practice.</p>
<p><strong>Topology.</strong> Raw AI output has no edge loops, no sensible pole placement, and no deformation-friendly structure. Quad remesh options (Meshy, Tripo, Rodin) give you quads, but they're evenly distributed quads, not the concentrated loops around joints and faces that character animation needs. For a static prop this doesn't matter at all. For an animated character, plan on manual retopology or accept visible crunching at the shoulders.</p>
<p><strong>Textures.</strong> PBR support is now table stakes, and TRELLIS.2, Hunyuan3D 2.1, Meshy, and Rodin all produce real metallic-roughness maps. Two recurring flaws: baked-in lighting in the albedo (shadows painted into the texture) and uneven texel density where the auto-unwrapper crammed UV islands. Both are fixable in Blender, neither fixes itself.</p>
<p><strong>Poly counts.</strong> Expect 20k to 300k triangles per asset by default, and into the millions on Rodin's high-effort modes. That's fine for a hero prop, ruinous for a hundred scattered rocks. Check what you actually got in a <a href="/tools/glb-viewer">GLB viewer</a>, then budget a decimation pass and test on your actual target hardware, especially for web and mobile games.</p>
<p><strong>What's shippable today.</strong> Static props, environment dressing, stylized items, and blockout geometry are genuinely production-usable straight out of these tools, and this is where AI generation already beats searching <a href="/guides/free-3d-model-sites">free model sites</a> on speed. Rigged background characters are usable with auto-rigging if they stay in the background. Hero characters with close-up facial animation still need a human pass on topology, and hard-surface models needing exact symmetry or CAD precision still come out slightly melted.</p>
<h2>Gaussian splats vs meshes</h2>
<p>A mesh is polygons: vertices, triangles, UVs, textures. A Gaussian splat is a cloud of thousands of tiny colored, semi-transparent blobs that together look photoreal from any angle. Splats capture real-world objects and scenes with a fidelity meshes struggle to match, which is why capture tools like SAM 3D and Luma's ecosystem output them.</p>
<p>For games, the tradeoffs are sharp. Splats have no surfaces, so collision, physics, and dynamic lighting don't work on them directly. They're also heavy: roughly 180 MB for a million splats versus 5 to 20 MB for a comparable textured mesh, which rules them out on most mobile budgets. Engine support is real but plugin-based in 2026: UnityGaussianSplatting for Unity 6, third-party plugins for Unreal 5.7, and compressed formats (SPZ, SOG, KSPLAT) for the web.</p>
<p>The pattern that works: splats for photoreal backdrops and set dressing the player never touches, meshes for everything interactive. If you captured something as a splat and need it in gameplay, regenerate it as a mesh with an image-to-3D tool.</p>
<h2>Who owns an AI-generated 3D model?</h2>
<p>Three layers to check, and they're different for hosted and open tools.</p>
<p><strong>Copyright.</strong> Under current US Copyright Office guidance, purely AI-generated output isn't copyrightable on its own. Your retopology, texturing, rigging, and integration work adds human authorship, and the game as a whole is protected either way. Practical effect: you likely can't stop someone from reusing a raw generated mesh, which matters more for asset sellers than for game developers.</p>
<p><strong>Hosted tool terms.</strong> This is where people get burned. Meshy free-tier models are public under CC BY 4.0 (commercial use allowed, attribution required, and anyone else can use your model too), with private ownership starting on Pro. Tripo's free tier is flatly non-commercial. Rodin gates downloads and commercial terms behind paid plans. The pattern across the industry: generate free, pay to own. Read the current terms before shipping, because these change without fanfare.</p>
<p><strong>Open model licenses.</strong> Self-hosting sidesteps platform terms entirely, but the model license still applies. TRELLIS.2 model and code are MIT; its rendering dependencies have separate terms, as the <a href="https://github.com/microsoft/TRELLIS.2#%EF%B8%8F-license">repository license notes</a> explain. SAM 3D's license permits commercial use. Hunyuan3D 2.1 excludes the EU, UK, and South Korea. SPAR3D is free until $1M annual revenue. Roblox Cube is research-only. &quot;Open&quot; is not one thing, so check the specific license.</p>
<p>For the broader rules on asset licensing, see our <a href="/guides/game-asset-licenses">game asset licenses guide</a>.</p>
<h2>Common Questions</h2>
<h3>What is the best AI 3D model generator in 2026?</h3>
<p>Start with Meshy or Tripo for a hosted workflow, evaluate Rodin for detailed geometry controls, or TRELLIS.2 for self-hosting. These are use-case suggestions, not a controlled quality ranking; compare free-download access, cleanup and the exported result on your own input. For a browser workflow, Cinevva's 3D Model Generator accepts images or text and offers a free first GLB export; generation uses credits.</p>
<h3>Can I use AI-generated 3D models in a commercial game?</h3>
<p>Usually yes, but the rights depend on where the model came from. Hosted tools gate commercial use behind paid plans (Meshy Pro, Tripo Pro, Rodin's paid tiers), and free-tier output is either non-commercial or public under CC BY 4.0. Models you generate with open-source weights like TRELLIS.2 carry no platform terms at all, though the model's own license still applies. Confirm the current terms of whichever tool you used before shipping.</p>
<h3>Are AI-generated meshes good enough for games?</h3>
<p>For static props, environment pieces, and stylized items, yes, they're production-usable today after a decimation pass, which you can run in the browser with our <a href="/tools/glb-optimizer">mesh simplifier and compressor</a>. For animated characters they're partly there: auto-rigging handles background characters, but hero characters still need manual retopology because AI topology lacks the edge loops animation requires. Treat generators as a props-and-blockout engine first and a character pipeline second.</p>
<h3>What is the best free AI 3D model generator?</h3>
<p>Cinevva's 3D Model Generator offers a free first GLB export. Generating uses credits, and further exports require Standard or Pro; it is not an unlimited free service. Tencent's Hunyuan 3D platform gives 20 free generations a day on its newest engine. Meshy's free tier includes 100 credits a month but publishes your models under CC BY 4.0. Self-hosting TRELLIS.2 is free without limits if you have the GPU.</p>
<h3>Text-to-3D or image-to-3D, which gives better results?</h3>
<p>Image-to-3D, consistently. A reference image pins down proportions, materials, and style, while a text prompt leaves the model guessing. The strongest workflow in 2026 is two steps: generate a clean reference image with an image model, then feed it to an image-to-3D generator. Most tools, including Cinevva's, do exactly this behind the scenes when you type a text prompt.</p>
<h3>What happened to Luma Genie and CSM?</h3>
<p>Both exited the space in practice. Luma removed Genie from its site as the company pivoted to video generation and creative agents. CSM shut down its Cube platform on January 5, 2026, and was acquired by Google the same month. If a roundup recommends either, it's out of date.</p>
<h3>Do I need a powerful GPU to generate 3D models with AI?</h3>
<p>Not if you use a hosted tool or a browser tool, where generation runs on the provider's servers. You only need your own GPU (a capable NVIDIA card) to self-host open models like TRELLIS.2 or Hunyuan3D 2.1 locally, and even then you can rent GPU inference by the second instead.</p>
<p><BuildCta
  title="Generate a model, then generate the game around it"
  desc="Cinevva has AI 3D generation built into the editor, so a prompt becomes a model already placed in a playable game."
  prompt="Build a mysterious museum where I can walk between pedestals and inspect strange generated artifacts up close" /></p>
<h2>Related</h2>
<ul>
<li><a href="/guides/ai-asset-generators-games">Best AI Asset Generators for Games</a>: the full pipeline with textures, audio, and rigging</li>
<li><a href="/guides/free-3d-model-sites">Best Free 3D Model Sites for Games</a>: search instead of generate</li>
<li><a href="/guides/long-reference-video-models">Long-Reference Video Models</a>: the video side of generative AI</li>
<li><a href="/tools/hunyuan3d">3D Model Generator</a>: text or photo to textured PBR mesh; first GLB export free</li>
<li><a href="/tools/sam3d">Image to 3D Capture</a>: free single photo to Gaussian splat</li>
<li><a href="/guides/game-asset-licenses">Game Asset Licenses Explained</a>: what you can actually ship</li>
<li><a href="/guides/free-character-animations-rigging">Free Character Animations and Auto-Rigging</a>: rig the model once you have it</li>
</ul>
<style scoped>
.sample-sheet { margin: 1.25rem 0; }
.sample-sheet img { width: 100%; border-radius: 10px; border: 1px solid var(--vp-c-divider); display: block; }
.sample-sheet figcaption { font-size: 0.9rem; color: var(--vp-c-text-2); margin: 0.5rem 0 0; }
</style>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AI NPCs and Dialogue in Games: Tools and Reality Check (2026)]]></title>
            <link>https://app.cinevva.com/guides/ai-npcs-dialogue</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/ai-npcs-dialogue</guid>
            <pubDate>Fri, 17 Jul 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[AI NPCs and dialogue in 2026, honestly compared - Inworld, Convai, NVIDIA ACE and open-source options, which games ship them, real costs, and how to start.]]></description>
            <content:encoded><![CDATA[<h1>AI NPCs and Dialogue in Games: Tools and Reality Check (2026)</h1>
<p><em>Last updated: July 2026.</em></p>
<p>An AI NPC is a non-player character whose dialogue is generated by a language model at runtime instead of being written line by line ahead of time. You talk or type at it, the model reads a system prompt that defines who the character is plus the current game state, and it writes a reply on the spot. Some setups add voice on top: speech-to-text so the character hears you, and text-to-speech so it talks back. The pitch is a villager who answers questions no writer anticipated. The reality in 2026 is more mixed, and worth understanding before you build anything around it.</p>
<p>Your real options fall into three buckets. You can use a hosted character platform like <a href="https://convai.com/">Convai</a> that gives you memory, voice, and engine plugins out of the box. You can wire up voice and animation middleware like <a href="https://developer.nvidia.com/ace-for-games">NVIDIA ACE</a> if you want lip-sync and facial animation to match the generated speech. Or you can roll your own by calling a language-model API (or running a small model locally) with a tightly written prompt, which is cheaper and more flexible but leaves the guardrails to you. Notably, <a href="https://inworld.ai/">Inworld</a>, the name most people still reach for first, has largely stepped back from being a plug-and-play NPC studio and repositioned as B2B AI infrastructure, so &quot;Inworld alternative&quot; is one of the most common searches in this space right now. Here's how the field actually shakes out.</p>
<h2>Quick Reference</h2>
<table>
<thead>
<tr>
<th>Tool</th>
<th>What it is</th>
<th>Pricing model</th>
<th>Engines (incl. web)</th>
<th>Status in 2026</th>
</tr>
</thead>
<tbody>
<tr>
<td>Convai</td>
<td>Hosted NPC platform: dialogue, voice, memory, perception</td>
<td>Usage-based, free tier + $29/mo Indie</td>
<td>Unity, Unreal, three.js, web</td>
<td>Active, developer-facing</td>
</tr>
<tr>
<td>NVIDIA ACE</td>
<td>Voice + face-animation middleware (Audio2Face, Riva ASR)</td>
<td>Per-use microservices / on-device</td>
<td>Unity, Unreal, engine-agnostic</td>
<td>Shipping in select titles</td>
</tr>
<tr>
<td>Inworld</td>
<td>AI runtime + voice/TTS infrastructure</td>
<td>Usage-based credits, TTS from ~$5-25/1M chars</td>
<td>SDKs exist, but B2B-focused</td>
<td>Pivoted away from consumer NPC studio</td>
</tr>
<tr>
<td>Ubisoft Neo NPCs</td>
<td>In-house generative-character R&amp;D (&quot;Teammates&quot;)</td>
<td>Not a product you can buy</td>
<td>Ubisoft internal</td>
<td>Playtest / R&amp;D, not shipped</td>
</tr>
<tr>
<td>Roll your own</td>
<td>LLM API or local model + your own prompt and guardrails</td>
<td>API tokens, or free if local</td>
<td>Anything, including plain web</td>
<td>The most flexible path</td>
</tr>
</tbody>
</table>
<h2>The tools, compared</h2>
<p><strong>Convai</strong> is the most straightforward on-ramp if you want a character platform rather than a science project. It handles dialogue, real-time voice, long-term memory, and &quot;multimodal perception&quot; so a character can react to what it sees and hears, and it ships plugins for Unity, Unreal, and three.js plus open APIs for the web, per its <a href="https://convai.com/">platform overview</a>. Pricing is usage-based: a free Developer tier with a daily quota, then an Indie Dev plan at <a href="https://www.saasworthy.com/product/convai/pricing">$29 a month (or $19 billed yearly) for 3,000 interactions</a>, with overage billed per interaction. That &quot;interaction&quot; unit is the thing to watch, because it's how the bill grows with your player count.</p>
<p><strong>NVIDIA ACE</strong> is not a full NPC brain. It's a suite of microservices for the parts around the brain: <a href="https://nvidianews.nvidia.com/news/ace-avatar-cloud-engine-microservices">Audio2Face for facial animation from audio, and Riva for speech recognition</a>, which you pair with a language model of your choice. It's the piece that makes a generated voice look like it's actually being spoken by a face. NVIDIA lists partners including Tencent, NetEase, miHoYo, and Ubisoft, and increasingly the language model runs on-device as a small model rather than in the cloud, which matters for latency and cost (more on that below). If your game is browser-first, ACE is probably overkill, since it's aimed at GPU-heavy PC titles.</p>
<p><strong>Inworld</strong> deserves a clear-eyed note because it's the name that dominates old tutorials. It began as the go-to platform for building game characters, and it still has SDKs, but it has <a href="https://inworld.ai/blog/new-ai-infrastructure-scaling-games-media-characters">repositioned as AI infrastructure for scaling games and media</a>, leaning on voice, text-to-speech, and an agent runtime aimed at enterprises like Google, NVIDIA, and Xbox. Its <a href="https://inworld.ai/pricing">pricing</a> is a usage-based credit system, with text-to-speech running from about $25 per million characters on the free On-Demand tier down to roughly $5 at enterprise volume, speech-to-text around $0.15 an hour, and language models billed separately at provider cost. It's still usable, but a solo web developer looking for a drop-in NPC will find it heavier than it used to be, which is exactly why Convai and roll-your-own have taken over that slot.</p>
<p><strong>Ubisoft's Neo NPCs</strong> are worth mentioning precisely because they are not a product you can use. They're the most visible big-studio R&amp;D effort, now surfaced as a prototype called Teammates that puts voice-driven AI squadmates in a first-person shooter. It was <a href="https://variety.com/2025/gaming/news/ubisoft-generative-ai-game-teammates-neo-npc-developers-1236588038/">built by a team of about 80 people using Google Gemini plus in-house middleware and is in a closed playtest</a>, not in a shipping game. Ubisoft has called generative AI as big a shift for the industry as the move to 3D, but the honest status as of mid-2026 is experiment, not release.</p>
<h2>Who's actually shipping this</h2>
<p>Strip away the demos and the number of shipped games with real AI NPCs is small, though it's finally more than zero. The clearest example is <a href="https://en.wikipedia.org/wiki/InZOI">inZOI</a>, Krafton's life sim that launched in early access on March 28, 2025 and sold over a million copies in its first week. Its &quot;Smart Zoi&quot; characters run on <a href="https://www.dsogaming.com/news/inzoi-is-the-first-game-with-ai-powered-npcs-using-nvidia-ace/">an on-device small language model built with NVIDIA ACE</a>, so the AI drives moment-to-moment behavior locally rather than phoning a cloud for every line. Krafton is extending the same approach to PUBG with a <a href="https://venturebeat.com/gaming-business/krafton-and-nvidia-team-up-to-create-smarter-ai-characters-for-pubg-and-inzoi/">co-playable character called PUBG Ally in testing through early 2026</a>.</p>
<p>On the conversation-first end, <a href="https://allthings.how/where-winds-meet-and-ai-how-the-mmos-chatbot-npcs-work/">Where Winds Meet</a>, a large MMO, added LLM freeform text chat to a subset of side NPCs, with affinity tracking so a character can warm to you, shut down, or turn hostile. The telling design choice, from a November 2025 breakdown, is how narrow the scope is: the AI only touches ambient side characters, and its output is limited to text replies plus a fixed set of in-game flags. It cannot spawn items, create locations, or rewrite quest lines. The main story stays hand-authored. Indie games have been bolder about making the AI the whole point. <a href="https://wanderfolk.ai/best-ai-npc-games-2026/">Suck Up!</a> is a released game whose entire loop is talking GPT-powered residents into inviting a vampire inside, which works because the conversation is the mechanic, not a garnish on top of a scripted quest.</p>
<p>The pattern across every shipped example is the same. The generative part is contained. It runs a life sim's chatter, a side character's small talk, or a game built specifically around persuasion. Nobody credible has shipped a big-budget game where AI writes the main-quest dialogue, and the reasons are cost, latency, and trust, in that order.</p>
<h2>What it costs, and the latency problem</h2>
<p>Two things break the fantasy of &quot;every NPC is a chatbot,&quot; and neither is about how smart the model is.</p>
<p>The first is latency. Conversation has a rhythm, and players feel it break. Research on AI NPCs finds that responses under roughly 800 milliseconds feel conversational and anything much slower feels off, while a general cloud API round trip adds one to two seconds of lag that reads as a stall. A <a href="https://arxiv.org/pdf/2507.10469">2025 study on perceived realism in VR</a> had players rate the effect of latency on how human a character felt, and the consistent ask was simply for the system to respond faster. This is the single biggest reason inZOI and PUBG went with on-device small models instead of a cloud giant. A smaller, faster, local model that answers in half a second beats a smarter one that answers in three.</p>
<p>The second is cost, and it scales the wrong way. A hand-written line of dialogue is paid for once and shown to millions of players for free. A generated line costs money every single time it's produced, per NPC, per player, per conversation. Usage-based platforms make that concrete: Convai bills per interaction, Inworld bills per character of speech and per token of text, and a raw LLM API bills per token in and out. For a quiet single-player game with a handful of conversations, that's pennies. For a live game with a million daily players each chatting freely, it's a cloud invoice no one budgeted for. This is why the credit-and-quota pricing exists, and why &quot;freeform chat with unlimited NPCs&quot; is a fast way to set money on fire. Design the number of AI turns like you'd design any other cost, because it is one.</p>
<h2>Design patterns that work, and the ones that don't</h2>
<p>The pattern that ships is constrained generation, not open-ended chat. Instead of letting a model say anything, you give it a tight system prompt (who this character is, what they know, what they must never reveal), keep the response short, and constrain the output to text plus a small set of allowed in-game actions or flags. <a href="https://allthings.how/where-winds-meet-and-ai-how-the-mmos-chatbot-npcs-work/">Where Winds Meet's flag-based design</a> is a textbook version: the NPC talks, and the only structured things it can do are things like shifting an affinity value or turning hostile. Everything else stays out of the model's hands.</p>
<p>The pattern that fails is the freeform &quot;ask me anything&quot; NPC dropped into a story-driven game. Left unconstrained, a model will confidently invent facts, drift off the game's lore, or spoil a quest because a player asked the right leading question. One industry writeup argues, correctly, that <a href="https://www.gameindustry.com/news-industry-happenings/the-hard-problem-of-ai-npcs-why-character-consistency-matters-more-than-intelligence/">character consistency matters more than raw intelligence</a>: players forgive an NPC that's a little dim, but a character who contradicts itself or breaks the fiction shatters immersion instantly. This is also where player skepticism comes from. A lot of AI-NPC demos feel like talking to a customer-service bot in a costume, and players notice. The teams that get it right treat the model as a dialogue writer working inside a cage of rules, not as an oracle.</p>
<p>A few concrete guardrails do most of the work. Feed the character only what it should know, so it can't leak the ending. Cap response length so it stays in character instead of monologuing. Keep the hand-authored version for anything load-bearing to the plot, and reserve generation for texture: barks, small talk, reactions, side characters. And decide up front whether a given NPC even needs to be freeform, because a lot of &quot;AI NPC&quot; moments are better served by a smarter branching tree than by a live model call.</p>
<h2>How to try it in a web game</h2>
<p>You don't need a GPU-heavy engine to experiment. The simplest path is to call a language-model API straight from your game's backend with a system prompt that defines the character and injects the current game state, then render the reply in a dialogue box. That's a weekend project, and it's exactly how most browser prototypes start. If you want a platform to handle memory and voice, <a href="https://convai.com/">Convai has a web SDK and a three.js integration</a> so you can attach a talking character to a browser scene without building the plumbing yourself.</p>
<p>If cost or privacy pushes you off the cloud, the open-source route runs the model on the player's own machine. <a href="https://blog.player2.game/p/building-ai-npcs-with-player2-api">WebLLM</a> runs a small language model directly in the browser using WebGPU, so there's no server bill and no network lag once it's loaded, at the price of a heftier initial download and needing a capable device. Running a local model through something like Ollama during development is another cheap way to iterate before you commit to a hosted provider. Whichever you pick, build the constraints first: a clear character prompt, a hard length limit, and a fixed list of actions the NPC is allowed to trigger.</p>
<p>If you'd rather skip the wiring entirely and just see characters with distinct personalities running in a browser, that's the kind of thing Cinevva's game chat is built for. You describe the village and the people in it, and the agent generates the characters and their behavior into a playable 3D scene you can open and talk to, so you can feel out whether an AI-character idea is fun before you invest in a full pipeline.</p>
<p><BuildCta
  title="Try an AI-character game in your browser"
  desc="Describe the cast and Cinevva builds a playable world you can talk your way through."
  prompt="Make a village where I can talk to characters who each have their own personality" /></p>
<h2>Common Questions</h2>
<h3>What is an AI NPC?</h3>
<p>An AI NPC is a non-player character whose dialogue and sometimes behavior are generated by a language model at runtime, rather than written out in advance by a writer. You type or speak to it, the model reads a prompt describing the character and the current game state, and it produces a reply on the fly. Optional voice layers add speech recognition so it can hear you and text-to-speech so it can talk back.</p>
<h3>What's the best Inworld alternative in 2026?</h3>
<p>For most developers it's Convai, which stayed focused on being a plug-in NPC platform with dialogue, voice, memory, and engine plugins (Unity, Unreal, three.js, and web) after Inworld shifted toward B2B AI infrastructure. If you want maximum control and lower cost, the other strong alternative is rolling your own by calling a language-model API or running a local model with your own system prompt and guardrails. Which one fits depends on whether you value convenience or control.</p>
<h3>Which shipped games actually use AI NPCs?</h3>
<p>A short but real list. Krafton's life sim inZOI uses on-device AI characters built with NVIDIA ACE, and it's extending the tech to PUBG. The MMO Where Winds Meet added LLM chat to a set of side characters with strict limits on what they can do. Indie titles like Suck Up! are built entirely around talking to AI-powered characters. Big-budget story games have not handed main-quest dialogue to AI yet, and Ubisoft's Neo NPCs remain an internal playtest rather than a shipped feature.</p>
<h3>How much do AI NPCs cost to run?</h3>
<p>Every generated line costs money each time it's produced, unlike a written line you pay for once. Hosted platforms bill by usage: Convai charges per interaction with a free tier and a $29-a-month indie plan, and Inworld bills per character of speech and per token of text. A raw API bills per token. That's trivial for a small single-player game and expensive for a live game with millions of daily players holding open-ended conversations, which is why studios cap how many AI turns actually happen.</p>
<h3>Do AI NPCs feel gimmicky to players?</h3>
<p>Often, yes, and that skepticism is earned. Unconstrained AI characters tend to invent facts, drift off the game's story, or read like a chatbot in costume, which breaks immersion fast. The versions players respond well to are tightly constrained: a clear personality, short in-character replies, and no ability to spoil the plot or contradict the world. The takeaway from shipped examples is that consistency matters more than raw intelligence.</p>
<h3>What's the easiest way to add an AI NPC to a web game?</h3>
<p>Call a language-model API from your game's backend with a system prompt that defines the character and injects the current game state, then show the reply in a dialogue box. That's a weekend prototype. To avoid a server bill you can run a small model in the browser with WebLLM over WebGPU, and if you want memory and voice handled for you, Convai has a web and three.js SDK. In every case, write the constraints (character prompt, length cap, allowed actions) before you worry about the model.</p>
<h2>Related</h2>
<ul>
<li><a href="/guides/ai-game-generators-2026">Best AI Game Generators in 2026</a> — the tools that build a playable game from a prompt</li>
<li><a href="/guides/make-a-game-with-ai">How to Make a Game with AI (No Coding)</a> — the full build, start to finish</li>
<li><a href="/guides/ai-voice-acting-games">AI Voice Acting for Games</a> — the text-to-speech layer that gives AI NPCs a voice</li>
<li><a href="/guides/frontier-gen-ai-models">Frontier Generative AI Models</a> — the language models doing the talking under the hood</li>
<li><a href="/guides/vibe-coding-games">Vibe Coding Games: What It Is and How to Start</a> — the fast prototyping mindset for testing ideas like this</li>
<li><a href="/guides/co-op-game-design">Co-op Game Design</a> — designing characters players share a world with</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AI Voice Acting for Games: Tools, Costs, and the Rules (2026)]]></title>
            <link>https://app.cinevva.com/guides/ai-voice-acting-games</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/ai-voice-acting-games</guid>
            <pubDate>Fri, 17 Jul 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[AI voice acting for games in 2026: what ElevenLabs and the alternatives cost, what commercial licenses let you ship, and the union and Steam rules.]]></description>
            <content:encoded><![CDATA[<h1>AI Voice Acting for Games: Tools, Costs, and the Rules (2026)</h1>
<p><em>Last updated: July 2026.</em></p>
<p>Yes, you can use AI-generated voices in a commercial game, and for most solo and small-studio developers it's cheap. A paid plan on a tool like <a href="https://elevenlabs.io/pricing">ElevenLabs</a> starts at $6 a month and comes with a commercial license, so the dialogue you generate is yours to ship in a game you sell. <a href="https://texttolab.com/blog/openai-tts-pricing">OpenAI's text-to-speech API</a> runs about $0.015 per minute of audio and is also cleared for commercial use. Permissively licensed open-source models like Piper and Kokoro cost nothing to run and are cleared to ship commercially, though others like XTTS v2 are non-commercial, so the model's license decides what you can sell. For a typical indie game with a few hundred lines, you're looking at somewhere between free and maybe $20 to $30 of generation.</p>
<p>The catch isn't the money, it's the rules and the reception. Free tiers almost never allow commercial use and usually stamp attribution on the output, so the &quot;free&quot; tool that lets you ship is the one whose license says so. Cloning a real person's voice without permission is where you get sued or delisted, not where you save time. Steam makes you <a href="https://www.pcgamer.com/software/ai/steam-updates-ai-disclosure-form-to-specify-that-its-focused-on-ai-generated-content-that-is-consumed-by-players-not-efficiency-tools-used-behind-the-scenes/">disclose player-facing AI content</a>, including AI voice lines, on your store page. And players notice. Several 2025 and 2026 games caught real backlash for AI voices, so treating this as a quiet cost-saver rather than a creative choice is a mistake. This guide walks the tools, the true costs, the union and store rules, and when you should just hire a person.</p>
<h2>Quick reference: the tools compared</h2>
<table>
<thead>
<tr>
<th>Tool</th>
<th>Price (2026)</th>
<th>Commercial license</th>
<th>Voice cloning policy</th>
<th>Quality notes</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="https://elevenlabs.io/pricing">ElevenLabs</a></td>
<td>Free tier, then $6/mo (Starter) up to $99/mo (Pro)</td>
<td>Paid plans only, perpetual even after you cancel</td>
<td>Instant clone on Starter, professional clone on Creator+, consent required for real voices</td>
<td>Best-in-class emotion and delivery, the default for game dialogue</td>
</tr>
<tr>
<td><a href="https://texttolab.com/blog/openai-tts-pricing">OpenAI TTS</a> (gpt-4o-mini-tts)</td>
<td>~$0.015/min of audio, pay as you go</td>
<td>Yes, under OpenAI usage policies</td>
<td>Preset voices only, no cloning</td>
<td>Cheap, natural, good for volume, less directable</td>
</tr>
<tr>
<td><a href="https://murf.ai/">Murf</a></td>
<td>Paid plans include commercial rights</td>
<td>All paid plans</td>
<td>Cloning on higher tiers</td>
<td>Fast (low-latency Falcon model), studio-style narration</td>
</tr>
<tr>
<td><a href="https://www.resemble.ai/">Resemble AI</a></td>
<td>Paid plans, plus open-source Chatterbox</td>
<td>Yes on paid, plus MIT-licensed Chatterbox</td>
<td>Cloning is a core feature, consent required</td>
<td>Chatterbox has an &quot;exaggeration&quot; control good for game characters</td>
</tr>
<tr>
<td><a href="https://huggingface.co/coqui/XTTS-v2">XTTS v2</a> (Coqui)</td>
<td>Free, self-hosted</td>
<td>CPML, non-commercial weights, prototype use only</td>
<td>Clones from ~6 seconds, 17 languages</td>
<td>Best open local multilingual clone, needs a GPU</td>
</tr>
<tr>
<td><a href="https://github.com/rhasspy/piper">Piper</a></td>
<td>Free, self-hosted</td>
<td>Permissive, ship it</td>
<td>Preset voices, no cloning</td>
<td>Runs real-time on CPU, great for embedded or low-spec</td>
</tr>
</tbody>
</table>
<p>Prices and terms shift, so confirm the current license on the provider's own page before you build a pipeline around it. The rest of this guide explains what these rows actually mean for a game you plan to sell.</p>
<h2>The tools, and what each is good for</h2>
<p><strong>ElevenLabs</strong> is the one most game developers reach for, and for good reason. It handles emotional range and natural pacing better than the alternatives, which matters when a line has to sound scared, sarcastic, or exhausted rather than just read aloud. The <a href="https://help.elevenlabs.io/hc/en-us/articles/13313564601361-Can-I-publish-the-content-I-generate-on-the-platform">free tier gives you 10,000 credits a month but no commercial rights and forces attribution</a>, so it's for testing only. The <a href="https://elevenlabs.io/pricing">Starter plan at $6 a month adds a commercial license and 30,000 credits</a>, which is roughly 30 minutes of speech, since one character of text costs one credit on the standard model. Creator at $22 gives you about 121,000 credits and professional voice cloning, and Pro at $99 gives you 600,000. For most small games the $6 or $22 tier is plenty.</p>
<p><strong>OpenAI's text-to-speech</strong> is the value play. The <a href="https://tokenmix.ai/blog/gpt-4o-mini-tts-cheapest-tts-api-2026">gpt-4o-mini-tts model runs around $0.015 per minute of generated audio</a>, billed through the API, and commercial use is allowed under OpenAI's usage policies. You get a set of preset voices and no cloning, and it's less directable than ElevenLabs, but if you have hundreds of barks and callouts to generate, the price is hard to beat. It's a good fit for high-volume, lower-stakes lines.</p>
<p><strong>Murf</strong> leans toward the studio-narration crowd. All its paid plans <a href="https://undetectr.com/blog/ai-voice-generator-free">include commercial rights</a>, and its newer Falcon model is built for low latency, <a href="https://murf.ai/">reportedly around 55ms in independent tests</a>, which matters more for live agents than for pre-generated game dialogue. <strong>Resemble AI</strong> is worth knowing for two reasons: its paid product is cloning-first, and it also publishes <a href="https://findskill.ai/blog/best-open-source-tts-2026/">Chatterbox</a>, an open-source model under a permissive license with an &quot;exaggeration&quot; parameter that pushes voices into caricature territory, which is genuinely useful for game characters and creatures.</p>
<p>On the open-source side, <strong>XTTS v2</strong> from the now-defunct Coqui is still <a href="https://localaimaster.com/models/coqui-tts">regarded as the best local multilingual voice-cloning engine in 2026</a>, clones from about six seconds of audio across 17 languages, and lives on through a community fork even though <a href="https://apatero.com/blog/open-source-text-to-speech-models-beyond-elevenlabs-2026">the company shut down in January 2024</a>. Treat it as prototype-only, though: its model weights ship under Coqui's CPML license, which is non-commercial, so you can't legally use it in a game you sell. <strong>Piper</strong> is the opposite end: <a href="https://www.bentoml.com/blog/exploring-the-world-of-open-source-text-to-speech-models">it runs in real time on a CPU with no GPU</a>, which makes it the pick for embedded systems, low-spec hardware, or generating voices at runtime inside the game itself. <strong>Bark</strong> is MIT-licensed and can produce nonverbal sounds like laughs and sighs, and <strong>Kokoro</strong> is the lightweight English-first option you can ship commercially. For Skyrim-style modding, tools like <strong>xVASynth</strong> have long been the community standard for building custom NPC lines, though if you're a modder, check the base game's and the tool's terms before distributing.</p>
<p>One note on the field: <a href="https://undetectr.com/blog/ai-voice-generator-free">Play.ht was acquired by Meta in mid-2025 and reportedly shut down at the end of the year</a>, so if you see it recommended in an older article, skip it.</p>
<h2>What it costs in practice</h2>
<p>The per-minute and per-character numbers only tell you so much, so here's the real math. A short narrative game with, say, 300 lines averaging 12 words each is roughly 21,600 characters. On ElevenLabs that's under the Starter plan's monthly allowance, so your voice budget for the whole game is $6, or $22 if you want cloned or higher-quality voices. On OpenAI's API that same script is a few minutes of audio, well under a dollar. Open-source models cost nothing but your own compute and time.</p>
<p>Where costs actually climb is iteration and scale. You rarely nail a line on the first generation, and re-rolling deliveries, tweaking emphasis, and regenerating after a script change all burn credits. A dialogue-heavy RPG with thousands of lines, multiple takes each, and several languages can push you onto a $99 plan or into real API spend, though even then you're comparing tens or low hundreds of dollars against the thousands a full human cast would cost. The honest framing is that AI voice is cheap for the raw generation and gets expensive only relative to itself, never relative to hiring a union cast. If your budget is zero, the free tiers get you a prototype and the open-source models get you a shippable game, as long as you respect their licenses.</p>
<h2>Licensing and the union rules</h2>
<p>This is the part that trips people up, so read it carefully. There are two separate licensing questions, and they're easy to confuse.</p>
<p>The first is the tool's license, which governs whether you can sell what you generate. On the paid tiers of ElevenLabs, Murf, Resemble, and OpenAI, the answer is yes, and with ElevenLabs specifically you <a href="https://terms.law/ai-output-rights/elevenlabs/">keep commercial rights to audio generated during a paid subscription even after you cancel</a>. Two things to know in the fine print: you still need to hold the rights to the underlying script and content, and providers like ElevenLabs <a href="https://terms.law/ai-output-rights/elevenlabs/">retain a license to use your generated content to train and improve their models</a>. Free tiers are the trap, because they typically forbid commercial use and require attribution, so a game shipped on free-tier output is out of compliance. For open-source models, the license lives with the specific model, not the tool category, so check whether it's MIT, Apache, or something with a non-commercial clause before you build on it.</p>
<p>The second question is the voice itself. Generating a preset or synthetic voice is clean. Cloning a real person's voice without their consent is not, and it's both a legal risk and an ethical one. This is where the union rules come in. After a nearly year-long strike, <a href="https://deadline.com/2025/07/sag-aftra-video-game-agreement-approved-strike-1236453741/">SAG-AFTRA members ratified a new Interactive Media Agreement on July 9, 2025 by a 95% vote</a>, formally ending <a href="https://en.wikipedia.org/wiki/2024%E2%80%932025_SAG-AFTRA_video_game_strike">the video game strike that began in July 2024</a>. The agreement's AI provisions require <a href="https://variety.com/2025/gaming/news/video-game-actors-strike-contract-ratified-sag-aftra-1236451291/">consent, disclosure, and compensation before a performer's digital voice replica is used</a>, and it lets performers suspend consent for generating new AI material during a strike.</p>
<p>If you're an indie developer using synthetic preset voices, that contract doesn't directly bind you, because it governs signatory studios working with union performers. But it sets the standard everyone is now measured against: get explicit, paid consent before cloning any real human's voice. Don't scrape a voice actor's demo reel or a streamer's clips to train a model. The union fight was specifically about performers being replaced by AI trained on their own work without permission, and doing that as a small studio is both the legal exposure and the reputational landmine.</p>
<h2>Disclosure requirements</h2>
<p>If you're shipping on Steam, you have to disclose AI voice content. Valve's <a href="https://finance.biggo.com/news/202601171220_Steam_AI_Disclosure_Update_Focuses_on_Player_Content">AI disclosure policy has been in place since early 2024 and was updated on January 17, 2026</a> to focus specifically on AI-generated content that ships with the game and is <a href="https://www.pcgamer.com/software/ai/steam-updates-ai-disclosure-form-to-specify-that-its-focused-on-ai-generated-content-that-is-consumed-by-players-not-efficiency-tools-used-behind-the-scenes/">consumed by players, not on behind-the-scenes efficiency tools</a>. AI voice lines are explicitly in scope. The policy splits into pre-generated content, which is baked into the download like AI voice lines and art, and live-generated content, where the game creates dialogue on the fly and you're required to build guardrails against illegal or offensive output. Your disclosure appears on the store page under &quot;About This Game,&quot; visible to players before they buy.</p>
<p>The practical read: if you used AI to generate voice lines that ship in the game, tick the pre-generated box and describe it honestly. If your NPCs generate dialogue at runtime, that's live-generated and carries the extra guardrail obligation. Other platforms are less formal about game-specific voice disclosure right now, but the direction across the industry is toward more labeling, not less, and being upfront tends to land better with players than getting caught. Beyond store rules, some communities and awards have their own lines: the <a href="https://www.notebookcheck.net/Indie-Game-Awards-disqualify-Clair-Obscur-Expedition-33-after-generative-AI-controversy.1189979.0.html">Indie Game Awards disqualified a nominee in 2025 after generative AI use came to light</a>, so if you're targeting a specific festival or storefront, read its policy too.</p>
<h2>Workflow tips</h2>
<p>The difference between AI voice that sounds like a game and AI voice that sounds like a phone tree is mostly direction. Write your lines the way you want them delivered, with punctuation doing real work, because commas, ellipses, and line breaks change pacing more than any setting. Generate several takes of every important line and pick the best, the same way a director does with a human actor. Keep a consistent voice per character across your whole script, and note the exact voice ID and settings you used so a line you regenerate three months later still matches.</p>
<p>Batch your generation once the script is stable rather than regenerating constantly during writing, since that's where credits and time drain away. For emotional beats, some tools let you steer tone with a short instruction or an emotion control, and it's worth spending your effort there and letting the throwaway barks generate on autopilot. Keep your voice work in the same loudness and format as the rest of your audio so dialogue, <a href="/guides/free-sound-effects-music">music, and sound effects</a> sit together in the mix. And test the voices on real players early, because the flat delivery you stop hearing after the fiftieth listen is the first thing a fresh player notices.</p>
<h2>When to hire humans instead</h2>
<p>AI voice is a tool, not a replacement for a performance, and the developers who use it well are honest about that. Even <a href="https://gamerant.com/arc-raiders-controversial-ai-voice-change/">Embark Studios, whose ARC Raiders shipped with AI-generated dialogue in October 2025, replaced many of those lines with human performances after launch</a>, with the studio's CEO saying plainly that there's a quality difference between AI and a real professional actor. That's the signal. If a character's voice is central to your game's identity, if you're leaning on subtle emotional acting, or if your audience is the kind that will scrutinize and punish AI voices, hire a person. Real actors bring interpretation, improvisation, and a specificity that current models still approximate rather than match.</p>
<p>Use AI voice where it genuinely fits: prototyping and temp tracks so you can hear dialogue timing before you commit, high-volume utility lines like radio chatter and generic barks, placeholder voices you'll replace later, solo projects with no budget where the alternative is silence, and accessibility features like reading UI text aloud. A common middle path is to generate everything with AI to nail the script and timing, then bring in human actors for the lines that carry the game. That way you spend your voice budget where it moves the needle and let AI cover the rest.</p>
<p><BuildCta
  title="Build the game, then figure out the voices"
  desc="Cinevva turns a prompt into a playable game in your browser, with sound effects and music generated for you. Voice acting you'll add with the tools above."
  prompt="Make a short narrative adventure game with branching dialogue" /></p>
<h2>Common Questions</h2>
<h3>Is it legal to use AI voices in a commercial game?</h3>
<p>Yes, as long as you use a tool whose license permits commercial use and you don't clone a real person's voice without their consent. Paid plans on ElevenLabs, OpenAI, Murf, and Resemble all include commercial rights, and permissively licensed open-source models like Piper and Bark are free to ship. The two ways to get into trouble are shipping free-tier output that forbids commercial use and requires attribution, or training a voice on a real actor's recordings without permission. Both are avoidable.</p>
<h3>How much does AI voice acting cost for a game?</h3>
<p>Less than most people expect. A short game with a few hundred lines fits inside ElevenLabs' $6-a-month Starter plan or costs under a dollar on OpenAI's API, and open-source models are free to run on your own hardware. A dialogue-heavy RPG with thousands of lines and multiple languages might push you to a $99 plan or into low hundreds of dollars of API spend. Even at the high end, that's a fraction of what a full human voice cast costs.</p>
<h3>Do I have to disclose AI voice acting on Steam?</h3>
<p>Yes. Steam's AI disclosure policy requires you to declare AI-generated content that ships in your game and is consumed by players, and AI voice lines are explicitly covered. The disclosure appears on your store page under &quot;About This Game.&quot; As of the January 2026 update, behind-the-scenes tools that don't produce player-facing content aren't the focus, but voice lines players actually hear are. If your game generates dialogue live at runtime, that's a separate category that also requires safety guardrails.</p>
<h3>Can I clone a real actor's or celebrity's voice for my game?</h3>
<p>Not without their explicit, paid consent. Cloning a real person's voice without permission exposes you to legal claims over likeness and publicity rights, and it's exactly the practice the SAG-AFTRA video game agreement was built to stop. The 2025 contract requires consent, disclosure, and compensation for digital voice replicas of performers. Even if you're an indie outside that contract, the legal and reputational risk of an unauthorized clone is real. Use synthetic preset voices, or license a voice properly.</p>
<h3>Will players know I used AI voices, and will they mind?</h3>
<p>Often yes on both counts. Players have gotten good at spotting the flat, slightly-off delivery of current text-to-speech, and several 2025 and 2026 games drew public backlash over AI voices, with some developers walking the decision back after launch. It's not universal, and utility lines or clearly stylized voices tend to draw less heat than a lead character reading emotional dialogue. Be honest in your disclosure, use AI where it fits rather than where it obviously doesn't, and consider human actors for the voices that define your game.</p>
<h3>What's the best free AI voice tool for games?</h3>
<p>For a shippable commercial game with no budget, use a permissively licensed open-source model, since the free tiers of the paid tools forbid commercial use. Piper runs on a plain CPU and is great for low-spec or runtime generation, and Bark and Kokoro are both easy to ship. XTTS v2 gives the strongest multilingual voice cloning if you have a GPU, but it's prototype-only, not shippable: its model weights are under Coqui's CPML license, which is non-commercial. Just confirm the specific model's license before you build on it, because &quot;open source&quot; doesn't always mean &quot;commercial use allowed.&quot;</p>
<h2>Related</h2>
<ul>
<li><a href="/guides/ai-music-generators-games">Best AI Music Generators for Games</a> — the same tooling question for your soundtrack</li>
<li><a href="/guides/free-sound-effects-music">Free Sound Effects and Music for Games</a> — where to source the rest of your audio legally</li>
<li><a href="/guides/ai-npcs-dialogue">AI NPCs and Dialogue</a> — generating conversations, not just reading them aloud</li>
<li><a href="/guides/ai-asset-generators-games">AI Asset Generators for Games</a> — art, models, and audio from a prompt</li>
<li><a href="/guides/game-asset-licenses">Game Asset Licenses Explained</a> — what commercial, CC0, and royalty-free actually mean</li>
<li><a href="/guides/make-a-game-with-ai">How to Make a Game with AI (No Coding)</a> — build the game the voices go into</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Best Free 2D Sprites, Pixel Art and Tilesets for Games (2026)]]></title>
            <link>https://app.cinevva.com/guides/free-2d-sprites-tilesets</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/free-2d-sprites-tilesets</guid>
            <pubDate>Fri, 17 Jul 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[The best free 2D sprites, pixel art and tilesets in 2026: CC0 sources like Kenney, OpenGameArt, itch.io creators and AI generators, with licenses explained.]]></description>
            <content:encoded><![CDATA[<h1>Best Free 2D Sprites, Pixel Art and Tilesets for Games (2026)</h1>
<p><em>Last updated: September 2026.</em></p>
<p>The best places to get free 2D sprites, pixel art and tilesets for games are Kenney (over 60,000 CC0 assets), OpenGameArt (filter by license), and a handful of <a href="http://itch.io">itch.io</a> creators like Pixel Frog, Ansimuz and 0x72 who release full packs under CC0. All of those are safe for commercial games with no attribution required. Here's every source worth bookmarking in 2026, with the exact license terms verified so you don't have to guess.</p>
<p>To browse rather than read, we keep pages of free <a href="/game-assets/free-platformer-sprites">platformer sprites</a>, <a href="/game-assets/free-tilesets">tilesets</a>, <a href="/game-assets/free-ui-sprites">UI sprites</a> and <a href="/game-assets/free-game-icons">game icons</a>.</p>
<figure class="sample-sheet">
<a href="/assets?providers=kenney"><img src="https://cdn.cinevva.com/guides/samples/samples-pixel-tiles.jpg" alt="Pixel-art sprites from Kenney CC0 packs: astronaut, dungeon door, shmup planes, platformer tiles" loading="lazy"></a>
<figcaption>Pixel-art characters, ships, tiles and props from Kenney's CC0 pixel packs. <a href="/assets?providers=kenney">Browse them in the asset library</a>.</figcaption>
</figure>
<h2>Quick picks</h2>
<p>Every source below gives away pixel art assets you can ship in a commercial game. The differences are style, completeness and what the license asks of you.</p>
<ul>
<li><strong>One-stop shop, consistent style, zero license risk:</strong> Kenney (CC0).</li>
<li><strong>Complete platformer packs with animated characters:</strong> Pixel Frog, Ansimuz on <a href="http://itch.io">itch.io</a> (CC0).</li>
<li><strong>Dungeon crawler tiles and characters:</strong> 0x72's DungeonTileset II (CC0).</li>
<li><strong>Top-down RPG tiles:</strong> Cainos on <a href="http://itch.io">itch.io</a>, or the LPC collection on OpenGameArt.</li>
<li><strong>Thousands of UI and inventory icons:</strong> <a href="http://Game-icons.net">Game-icons.net</a> (CC BY 3.0, credit required).</li>
<li><strong>Draw your own:</strong> Aseprite (paid), Libresprite or Piskel (free).</li>
<li><strong>Generate art you can't find:</strong> Cinevva's <a href="/tools/flux">Image Generator</a> for concept art, backgrounds, and item icons, in the browser on a free account.</li>
</ul>
<h2>Quick Reference</h2>
<table>
<thead>
<tr>
<th>Need</th>
<th>Best Source</th>
<th>License</th>
<th>Attribution</th>
</tr>
</thead>
<tbody>
<tr>
<td>Platformer sprites and tiles</td>
<td>Kenney, Pixel Frog</td>
<td>CC0</td>
<td>None</td>
</tr>
<tr>
<td>Pixel art dungeon tileset</td>
<td>0x72</td>
<td>CC0</td>
<td>None</td>
</tr>
<tr>
<td>Top-down RPG tiles</td>
<td>Cainos, LPC (OpenGameArt)</td>
<td>Free / CC-BY-SA + GPL</td>
<td>None / credit + share-alike</td>
</tr>
<tr>
<td>Huge searchable archive</td>
<td>OpenGameArt</td>
<td>CC0 through CC-BY-SA</td>
<td>Depends on filter</td>
</tr>
<tr>
<td>Polished themed packs</td>
<td>CraftPix freebies</td>
<td>CraftPix license</td>
<td>None</td>
</tr>
<tr>
<td>Game UI and item icons</td>
<td><a href="http://Game-icons.net">Game-icons.net</a></td>
<td>CC BY 3.0</td>
<td>Required</td>
</tr>
<tr>
<td>Palettes and technique</td>
<td>Lospec</td>
<td>Varies</td>
<td>n/a</td>
</tr>
</tbody>
</table>
<h2>The CC0 anchor: Kenney</h2>
<figure class="sample-sheet">
<a href="/assets?providers=kenney"><img src="https://cdn.cinevva.com/guides/samples/samples-kenney-sprites.jpg" alt="Sample CC0 2D sprites from Kenney: astronaut character, spaceships, pixel tiles, heart emote and alien" loading="lazy"></a>
<figcaption>A taste of Kenney's 2D range: characters, ships, tiles and emotes, all CC0. <a href="/assets?providers=kenney">Browse Kenney sprites in the asset library</a>.</figcaption>
</figure>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://kenney.nl">kenney.nl</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>CC0 (public domain), no attribution required</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>More than 60,000 across 200+ packs (per Kenney's <a href="https://kenney.itch.io/kenney-game-assets">All-in-1 listing</a>), over 100 packs in the 2D section alone</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>PNG sprites and spritesheets, vector sources in many packs</td>
</tr>
<tr>
<td><strong>Direct Download</strong></td>
<td>Yes, free ZIP per pack</td>
</tr>
</tbody>
</table>
<p>Kenney is the single best starting point for 2D game art and it isn't close. Everything is CC0, everything is cut into game-ready spritesheets, and packs within a style family match each other, so you can combine the New Platformer Pack with a UI Pack and Input Prompts without the art clashing. The Tiny series (Tiny Town, Tiny Farm, Tiny Dungeon) is a favorite for 16x16 top-down games, and Roguelike Characters covers hundreds of tiny characters in one sheet. Kenney sprites are also <a href="/assets?providers=kenney">searchable inside Cinevva's asset library</a>.</p>
<figure class="sample-sheet">
<a href="/assets?providers=kenney"><img src="https://cdn.cinevva.com/guides/samples/samples-kenney-ui.jpg" alt="Kenney CC0 UI elements: button, gamepad icon, key prompt, checkmark, item cards, medal and crosshair" loading="lazy"></a>
<figcaption>Buttons, icons, input prompts, crosshairs and item cards from Kenney's CC0 UI packs. <a href="/assets?providers=kenney">Browse UI packs in the asset library</a>.</figcaption>
</figure>
<h2>OpenGameArt</h2>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://opengameart.org">opengameart.org</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>Per asset: CC0, OGA-BY, CC-BY, CC-BY-SA, GPL, public domain</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>Thousands of 2D submissions, community-driven since 2009</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>PNG, spritesheets, source files vary per submission</td>
</tr>
<tr>
<td><strong>Direct Download</strong></td>
<td>Yes, files attached to each submission page</td>
</tr>
</tbody>
</table>
<p>OpenGameArt is the oldest free game art archive still running, and it's still active in 2026 with regular art jams and new submissions. Quality varies wildly, so the site's license filter is the whole trick: the <a href="https://opengameart.org/art-search-advanced">advanced search</a> has one checkbox per allowed license (CC0, CC-BY 3.0 and 4.0, CC-BY-SA 3.0 and 4.0, OGA-BY 3.0 and 4.0, GPL 2.0 and 3.0), so search with only CC0 ticked and you get commercially safe, credit-free results only. The <a href="https://opengameart.org/content/faq">FAQ</a> confirms every license on the site allows commercial use. The standout collection is the Liberated Pixel Cup (LPC) style, a coordinated 32x32 top-down RPG art standard with a huge library of matching tiles and characters plus the Universal LPC Spritesheet Character Generator. One catch: LPC art is dual-licensed CC-BY-SA 3.0 and GPLv3, which means credit is required and derivative art must carry the same license, so read our <a href="/guides/game-asset-licenses">licenses guide</a> before building a commercial game on it.</p>
<h2><a href="http://itch.io">itch.io</a> free asset packs</h2>
<p><a href="http://itch.io">itch.io</a> hosts over 6,800 free packs under the Sprites tag alone (6,853 as of September 2026), and it's where most working pixel artists publish. The license is set per pack by each creator, so always check the pack page. These creators are reliably worth your time.</p>
<h3>Pixel Frog</h3>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://pixelfrog-assets.itch.io">pixelfrog-assets.itch.io</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>Pixel Adventure is explicitly CC0, check each pack page</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>Complete themed packs: Pixel Adventure 1 and 2, Kings and Pigs, Treasure Hunters, Pirate Bomb, Tiny Swords</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>PNG spritesheets, animations at 20 FPS</td>
</tr>
<tr>
<td><strong>Direct Download</strong></td>
<td>Yes, free (name your own price)</td>
</tr>
</tbody>
</table>
<p>If you want to build a complete platformer this weekend, start here. Pixel Adventure gives you animated characters, enemies, tilesets, traps and items in one coherent style, released CC0 so you can ship it commercially without credit. Tiny Swords, the newer top-down battle pack, gets frequent updates and topped <a href="http://itch.io">itch.io</a>'s free sprites chart in 2026.</p>
<h3>Ansimuz</h3>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://ansimuz.itch.io">ansimuz.itch.io</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>SunnyLand is explicitly CC0, other free packs vary, check each page</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>Large catalog: SunnyLand, Warped series, Gothicvania, TinyRPG, free legacy 16-bit collection</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>PNG spritesheets, parallax backgrounds, SunnyLand includes Phaser and Godot project files</td>
</tr>
<tr>
<td><strong>Direct Download</strong></td>
<td>Yes, free packs alongside paid mega-collections</td>
</tr>
</tbody>
</table>
<p>Ansimuz has been giving away serious pixel art for a decade. SunnyLand is the flagship freebie, a full CC0 platformer kit with animated player, enemies, props, effects and even music, plus ready-made Phaser and Godot projects. The free Warped metroidvania packs and the 16-bit legacy collection cover darker sci-fi moods. The big Gothicvania collections are paid, but the free tier alone can carry a finished game.</p>
<h3>0x72</h3>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://0x72.itch.io">0x72.itch.io</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>DungeonTileset II is explicitly CC0, credit not necessary</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>16x16 DungeonTileset II plus free industrial, pirates and robot tilesets</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>PNG atlases, autotiles included since v1.7</td>
</tr>
<tr>
<td><strong>Direct Download</strong></td>
<td>Yes, free (name your own price)</td>
</tr>
</tbody>
</table>
<p>DungeonTileset II is the default answer to &quot;free roguelike tileset&quot; and has been for years. One download gets you dungeon walls and floors, animated torches, traps, weapons, and dozens of animated characters from knights to demons, all 16x16, all CC0, still actively maintained. If you've played a small indie dungeon crawler, you've probably seen these sprites.</p>
<h3>Cainos</h3>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://cainos.itch.io">cainos.itch.io</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>Free for commercial projects, credit not needed, no redistribution or resale</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>Pixel Art Top Down - Basic: 32x32 tilesets, 48 props, trees, character controller</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>PNG tilesets and sprites, Unity project included, textures work in Godot too</td>
</tr>
<tr>
<td><strong>Direct Download</strong></td>
<td>Yes, free (name your own price)</td>
</tr>
</tbody>
</table>
<p>Pixel Art Top Down - Basic is one of the cleanest free starting points for a top-down RPG or farming game. You get grass, stone and wall tilesets with matching props and shadow sprites at 32x32, plus a simple Unity demo scene. The license is Cainos's own rather than CC0, but the terms are plain: use it in free or commercial games, modify it freely, just don't resell the raw files.</p>
<h3>penusbmic</h3>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://penusbmic.itch.io">penusbmic.itch.io</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>Per pack, check each page before shipping</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>Monthly packs: the DARK Series, STRANDED, sci-fi characters, free samples in most series</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>PNG spritesheets with smooth multi-frame animations</td>
</tr>
<tr>
<td><strong>Direct Download</strong></td>
<td>Yes, free samples alongside paid packs ($1.99 to $9.99)</td>
</tr>
</tbody>
</table>
<p>Penusbmic worked on Dome Keeper and Shogun Showdown, and the animation quality shows. Most series include a free taste, like the free Skeleton Warrior, the free Dungeon Ruins tileset and a free hero from the DARK Series, with the full packs cheap enough to buy when you commit. License terms live on each pack page, so read them before a commercial release.</p>
<h3>CraftPix freebies</h3>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://craftpix.net/freebies/">craftpix.net/freebies</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>CraftPix's own license: commercial use allowed, unlimited projects, see their file-licenses page</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>Hundreds of free packs across roughly 291 pages: sprites, tilesets, GUI kits, icons, backgrounds</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>PNG, layered sources in many packs</td>
</tr>
<tr>
<td><strong>Direct Download</strong></td>
<td>Yes, free account may be required</td>
</tr>
</tbody>
</table>
<p>CraftPix is a commercial asset shop with an unusually deep free section. The freebies are polished, production-grade packs, and the stated terms allow commercial use in unlimited projects. It's not CC0, it's their own license with resale restrictions, so skim their file-licenses page once and you're set. Strong for complete GUI kits and themed character packs that would take weeks to draw.</p>
<h2><a href="http://Game-icons.net">Game-icons.net</a></h2>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://game-icons.net">game-icons.net</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>CC BY 3.0, attribution required</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>4,180 icons by Lorc, Delapouite and contributors (site count, September 2026)</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>SVG and PNG, white-on-black and transparent variants</td>
</tr>
<tr>
<td><strong>Direct Download</strong></td>
<td>Yes, per icon or full pack</td>
</tr>
</tbody>
</table>
<p>Every inventory screen, skill tree and item tooltip needs icons, and <a href="http://game-icons.net">game-icons.net</a> has 4,180 of them in one consistent stencil style, all recolorable SVG. The catch is the license: CC BY 3.0 means you must credit the authors in your game. A single line in your credits screen covers it, which is a fair trade for this much coverage.</p>
<h2>Lospec</h2>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://lospec.com">lospec.com</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>Palettes are freely usable, artwork in the gallery belongs to its artists</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>Over 4,300 color palettes in 6 download formats, over 500 tutorials</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>Palette files (PNG, ASE, GPL and more)</td>
</tr>
<tr>
<td><strong>Direct Download</strong></td>
<td>Yes</td>
</tr>
</tbody>
</table>
<p>Lospec isn't a sprite library, it's the pixel art community's reference desk, and it earns a spot here because palettes are half of what makes pixel art look good. Grab a proven palette like a 16 or 32 color set, load it into your editor, and your sprites instantly look intentional instead of muddy. The tutorials section is the best free pixel art education on the web, and the tools (scaler, dither generator) solve real workflow problems.</p>
<h2>Draw your own</h2>
<p>When you can't find the sprite, drawing a 16x16 character is more approachable than you'd think. Aseprite is the industry standard editor, a one-time purchase with a trial version, built entirely around spritesheets, animation onion-skinning and palette control, and its source code is on GitHub if you'd rather compile it yourself. Libresprite is a free, open-source fork of an older Aseprite version that covers the fundamentals. Piskel is a free, open-source editor that runs in your browser with no install, exports PNG spritesheets and animated GIFs, and has desktop apps for Windows, macOS and Linux. Start with Piskel to learn, move to Aseprite when you're hooked.</p>
<h2>Generate sprites with AI</h2>
<p>By 2026 AI tools can produce usable pixel art and even animated sprite sheets. PixelLab runs in the browser or as an Aseprite plugin and generates characters with 4 or 8 directional variants plus animation frames, which used to be the most tedious part of sprite work. Retro Diffusion trains models specifically on pixel art and multi-frame sprite sheets, so outputs land closer to game-ready than a general image model. Two caveats. Commercial rights on hosted tools are usually tied to paid plans, so check the terms before shipping. And AI output almost always needs cleanup in a pixel editor for palette discipline and consistent proportions across a character set, so treat it as a fast first draft rather than a finished asset. Cinevva's <a href="/tools/flux">Image Generator</a> runs in the browser with no install and no subscription, just a free account: describe what you want and get an image back at up to 1440px in about ten seconds, with aspect ratio presets and seeds so a set of items comes back in one consistent style. It's a general image model rather than a pixel-art specialist, so reach for it for concept art, backgrounds, item and UI icons, and reference sheets you'll trace over, and stay with PixelLab or Retro Diffusion when you need true low-res pixel output with a locked palette. Cinevva's <a href="/assets">asset search</a> also includes hundreds of CC0 sprites you can drop into a game without generating anything.</p>
<h2>Licenses in 30 seconds</h2>
<ul>
<li><strong>CC0:</strong> public domain. Use commercially, modify, no attribution. The safest option.</li>
<li><strong>CC-BY:</strong> free commercial use, but you must credit the creator.</li>
<li><strong>CC-BY-SA:</strong> credit required, and derivative art must use the same license. This is the LPC situation.</li>
<li><strong>Creator's own license (Cainos, CraftPix):</strong> usually &quot;use in any project, don't resell the files.&quot; Read the pack page.</li>
</ul>
<p>When in doubt, prefer CC0. For the full breakdown, see our <a href="/guides/game-asset-licenses">game asset licenses guide</a>.</p>
<h2>Common Questions</h2>
<h3>Where can I download free 2D sprites for games?</h3>
<p>Kenney is the best starting point with over 60,000 CC0 assets including sprites, tilesets and UI packs. On <a href="http://itch.io">itch.io</a>, Pixel Frog and Ansimuz release complete animated packs under CC0, and OpenGameArt lets you filter thousands of community submissions by license. All of these are free for commercial games.</p>
<h3>Where can I find CC0 tilesets?</h3>
<p>Kenney's Tiny series (Tiny Town, Tiny Farm, Tiny Dungeon) and its Roguelike and Platformer packs are all CC0 16x16 and larger tilesets. On <a href="http://itch.io">itch.io</a>, 0x72's DungeonTileset II and Pixel Frog's Pixel Adventure tiles are explicitly CC0, and OpenGameArt's advanced search has a CC0 checkbox that filters its tileset submissions to public-domain results only. Our <a href="/game-assets/free-tilesets">free tilesets</a> page collects these by theme, and if you'd rather have a level assembled for you, <a href="/create#prompt=Build%20a%20top-down%20pixel%20art%20dungeon%20crawler%20using%20free%20CC0%20tilesets">describe one to Cinevva</a> and it lays the tiles out itself.</p>
<h3>Where can I get free pixel art assets and sprites?</h3>
<p>The reliable CC0 sources are Kenney's pixel packs, Pixel Frog's Pixel Adventure and Tiny Swords, Ansimuz's SunnyLand, and 0x72's DungeonTileset II characters, all free on <a href="http://kenney.nl">kenney.nl</a> or <a href="http://itch.io">itch.io</a> with no account. <a href="http://itch.io">itch.io</a>'s free Sprites tag has over 6,800 packs under per-creator licenses, and OpenGameArt lets you filter its pixel art by CC0 or CC-BY. Browse our <a href="/game-assets/free-platformer-sprites">platformer sprites</a> page for a curated set that's already commercial-safe.</p>
<h3>What does &quot;free to use&quot; actually mean for sprites?</h3>
<p>Legally, nothing on its own. &quot;Free to use&quot; or &quot;free for commercial use&quot; on a pack page is the creator's plain-language promise, and what matters is the license underneath it. CC0 waives copyright entirely, so you can use, modify, and sell without credit. CC-BY grants the same freedoms but requires a credit line naming the creator and license. OGA-BY (OpenGameArt's variant) is CC-BY minus the DRM clause, useful for console and store builds. A creator's own terms (Cainos, CraftPix) usually allow shipping in games but forbid reselling the raw files. If a page says only &quot;free to use&quot; with no license named, ask the creator or pick a pack that names one. Our <a href="/guides/game-asset-licenses">licenses guide</a> covers each in detail.</p>
<h3>Are free sprites safe to use in a commercial game?</h3>
<p>CC0 sprites are always safe, with no attribution and no restrictions. CC-BY sprites need a credit line, and CC-BY-SA (like the LPC collection) also requires derivative art to carry the same license. For packs under a creator's own license, like Cainos or CraftPix, the terms usually allow commercial use but forbid reselling the raw files.</p>
<h3>What is the best free pixel art tileset for a dungeon crawler?</h3>
<p>0x72's 16x16 DungeonTileset II on <a href="http://itch.io">itch.io</a>. It's CC0, actively maintained, and includes dungeon tiles, animated torches, traps, weapons and dozens of animated characters in one download. Pair it with Kenney's Tiny Dungeon if you want more variety in the same general scale.</p>
<h3>Do I have to credit the artist when I use free sprites?</h3>
<p>Only if the license says so. CC0 requires nothing, CC BY (like <a href="http://game-icons.net">game-icons.net</a>'s 4,180 icons) requires a credit line, and CC-BY-SA adds share-alike terms on top. Even when credit isn't required, a mention in your credits screen is a nice way to support the artists who keep these libraries free.</p>
<h3>What license should I look for on <a href="http://itch.io">itch.io</a> asset packs?</h3>
<p>CC0 is the gold standard because it removes every obligation. <a href="http://itch.io">itch.io</a> creators set license terms individually on each pack page, so scroll past the screenshots and read the description before you build on a pack. If a page states nothing at all, ask the creator or pick a pack with explicit terms instead.</p>
<h3>Can I use AI to generate sprites for a commercial game?</h3>
<p>Usually yes, but the commercial license typically comes with the tool's paid plan, so check the terms of whichever generator you use. Tools like PixelLab and Retro Diffusion produce pixel art and sprite sheets that are close to game-ready, though most developers still clean up the output in an editor like Aseprite for palette and proportion consistency. Cinevva's <a href="/tools/flux">Image Generator</a> is free in the browser, and its terms work differently from a subscription: images you make before your first credit purchase are yours for personal and non-monetized use, and that first purchase (any amount) converts everything you've already generated to full commercial ownership. The <a href="/legal/generation-rights">generation rights policy</a> spells it out.</p>
<h3>What is the difference between a sprite, a sprite sheet and a tileset?</h3>
<p>A sprite is a single 2D image, like one frame of a character. A sprite sheet packs many frames into one image so the engine can play them as animation. A tileset is a grid of small repeatable images (commonly 16x16 or 32x32) used to assemble level maps, like grass, walls and water tiles.</p>
<p><BuildCta
  title="Skip the asset hunt. Get sprites placed in a game"
  desc="Cinevva ships with hundreds of free CC0 sprites and builds the game around them for you."
  prompt="Build a 2D pixel art platformer where a fox runs and jumps through a forest collecting cherries, with enemies to stomp" /></p>
<h2>Related</h2>
<ul>
<li><a href="/guides/game-assets-guide">Where to Find Free Game Assets</a> - the full 20+ source guide</li>
<li><a href="/guides/game-asset-licenses">Game Asset Licenses Explained</a> - CC0, CC-BY, and the rest</li>
<li><a href="/guides/free-3d-model-sites">Best Free 3D Model Sites for Games</a> - the 3D side</li>
<li><a href="/guides/best-2d-game-engines-2026">Best 2D Game Engines in 2026</a> - what to build with</li>
<li><a href="/assets">Cinevva Asset Search</a> - search Kenney and more from one box</li>
<li><a href="/tools/flux">Cinevva Image Generator</a> - in-browser concept art, backgrounds and icons on a free account</li>
<li><a href="/game-assets/free-tilesets">Free tilesets</a>, <a href="/game-assets/free-platformer-sprites">platformer sprites</a>, <a href="/game-assets/free-ui-sprites">UI sprites</a> and <a href="/game-assets/free-game-icons">game icons</a> - browse the free library one category at a time</li>
</ul>
<style scoped>
.sample-sheet { margin: 1.25rem 0; }
.sample-sheet > a { display: block; }
.sample-sheet img { width: 100%; border-radius: 10px; border: 1px solid var(--vp-c-divider); display: block; }
.sample-sheet figcaption { font-size: 0.9rem; color: var(--vp-c-text-2); margin: 0.5rem 0 0; }
</style>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Free Character Animations and Auto-Rigging: Mixamo and Its Alternatives (2026)]]></title>
            <link>https://app.cinevva.com/guides/free-character-animations-rigging</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/free-character-animations-rigging</guid>
            <pubDate>Fri, 17 Jul 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Choose between ready-made animations, retargeting and auto-rigging. Follow a tested CC0 character-to-Blender workflow, with a walk download and troubleshooting.]]></description>
            <content:encoded><![CDATA[<h1>Free Character Animations and Auto-Rigging: Mixamo and Its Alternatives (2026)</h1>
<p><strong>Already have a moving character? Keep its rig. Have a skeleton but need different motions? Retarget. Have only a static mesh? Rig it first.</strong> These are three different jobs, and choosing the wrong one creates unnecessary work.</p>
<p>This guide helps you choose a route, then walks through a downloadable CC0 character in Blender: import it, play one action, export it, and check the exported file. You can follow the example without a Cinevva account or a paid rigging job.</p>
<h2>Choose your starting point</h2>
<table>
<thead>
<tr>
<th>What you have</th>
<th>What to do next</th>
<th>Where to start</th>
</tr>
</thead>
<tbody>
<tr>
<td>No character yet</td>
<td>Choose one with an existing rig and motions</td>
<td><a href="/game-assets/free-3d-character-models">Free 3D characters</a>, or the casual character example below</td>
</tr>
<tr>
<td>A character that already walks</td>
<td>Use its embedded clips; test the export</td>
<td><a href="#tested-character-download-to-blender">Download-to-Blender walkthrough</a></td>
</tr>
<tr>
<td>A skinned humanoid with the wrong motions</td>
<td>Retarget a motion library onto its skeleton</td>
<td><a href="/tools/animations">Cinevva Animation Library</a> or <a href="https://quaternius.com/packs/universalanimationlibrary.html">Quaternius UAL</a></td>
</tr>
<tr>
<td>A static humanoid mesh</td>
<td>Create bones and skin weights, then test a walk</td>
<td><a href="#rig-your-own-static-character">Auto-rigging workflow</a></td>
</tr>
<tr>
<td>A creature, or a character with a tail or wings</td>
<td>Choose a rig that covers those parts</td>
<td><a href="#what-about-quadrupeds-tails-and-wings">Non-humanoid characters</a></td>
</tr>
</tbody>
</table>
<p>A <strong>rig</strong> connects a skeleton to the mesh through skin weights. An <strong>animation clip</strong> moves the skeleton over time. <strong>Retargeting</strong> adapts a clip from one skeleton to another. A file can contain bones without useful skin weights, or a working rig without any animation.</p>
<h2>Tested character download to Blender</h2>
<p>Start with <strong>Quaternius Casual Female</strong>. It already contains a rig and 17 clips, so you can learn the import/export steps without also debugging a new rig. The model uses material colors and needs no separate texture files.</p>
<p><strong>Choose a download:</strong> <a href="https://cdn.cinevva.com/assets/packs/quaternius/ultimate-animated-characters/Casual_Female.glb?download=1">original casual character with 17 clips</a> for choosing actions yourself, or <a href="/guides/character-workflow/casual-character-walk.glb">our walk-only GLB</a> for a smaller, single-action check. Both are CC0; the character comes from <a href="https://quaternius.com/packs/ultimatedanimatedcharacter.html">Quaternius's Ultimate Animated Characters pack</a>.</p>
<figure class="walk-example">
<video controls loop muted playsinline preload="none" poster="/guides/character-workflow/casual-character-blender.png" aria-label="Walk animation from the downloadable Quaternius casual character GLB">
  <source src="/guides/character-workflow/casual-character-walk.mp4" type="video/mp4">
  <a href="/guides/character-workflow/casual-character-walk.mp4">Download the motion preview</a>.
</video>
<figcaption>The walk-only GLB, reimported and rendered in Blender. Press play to inspect the motion. This is the existing Quaternius animation; no new auto-rigging or retargeting was applied.</figcaption>
</figure>
<h3>1. Import the character</h3>
<p>Open a new Blender scene and delete the default cube, camera and light. Choose <strong>File → Import → glTF 2.0 (.glb/.gltf)</strong> and open the original casual character GLB. These steps were checked in <strong>Blender 5.0.1</strong>; labels can differ in other versions.</p>
<p>In the Outliner, find the <strong>Armature</strong> object and expand the imported hierarchy. Select the character's mesh objects and use <strong>View → Frame Selected</strong> if they are outside the viewport. Switch to <strong>Material Preview</strong> to inspect the colors.</p>
<p><strong>You should see:</strong> the complete casual character, an armature, and its mesh parts. A visible mesh alone does not prove that animation imported correctly.</p>
<h3>2. Play Walk on the armature</h3>
<p>Select the <strong>armature</strong>, not a mesh or bone. Change an editor to <strong>Dope Sheet</strong>, then choose <strong>Action Editor</strong> in its mode selector. Use the action selector to choose <strong>Walk</strong> from the original file. If you used our walk-only download, the exported action is named <strong>Animation</strong> instead.</p>
<p>The importer may also create NLA tracks for the embedded clips. In the <strong>Nonlinear Animation</strong> editor, mute those tracks while testing the active action so they do not blend in a different motion. If Blender shows an action-slot selector, use the slot belonging to the imported armature.</p>
<p>Set the timeline range to the action's keys, then press <strong>Space</strong> to play. Orbit to a side view and a front view. Watch whether both knees bend, the arms move with the body, and the hair and other attached parts follow the character. Scrub through the clip slowly; a good-looking first frame can hide a broken shoulder or a detached part.</p>
<p><strong>You should see:</strong> the mesh deforming with the skeleton throughout the walk. If only bones move, stop and check skinning before exporting.</p>
<h3>3. Export only the action you need</h3>
<p>With Walk still assigned, choose <strong>File → Export → glTF 2.0</strong>. Set <strong>Format → glTF Binary (.glb)</strong>. Under <strong>Animation</strong>, enable animation export and choose <strong>Animation Mode → Active actions merged</strong> in Blender 5.0.1. This combines the currently assigned actions into one exported clip; it does not mean “export every action in the file.”</p>
<p>For this clean example scene, export the entire scene so all character parts are included. If you enable <strong>Selected Objects</strong>, select the armature <strong>and every mesh part</strong> first. Exporting only the armature will not produce a usable character.</p>
<p>Save under a new name, such as <code>casual-character-walk-test.glb</code>. Keep the original 17-clip file as your source. Blender's <a href="https://docs.blender.org/manual/en/5.0/addons/import_export/scene_gltf2.html">glTF documentation</a> describes the other animation export modes for multi-clip workflows.</p>
<h3>4. Reopen the exported file</h3>
<p>Create a new scene and import <code>casual-character-walk-test.glb</code>. Repeat the playback check there. This catches problems hidden by the source scene: omitted meshes, missing textures, the wrong active action, or animation that was never exported.</p>
<table>
<thead>
<tr>
<th>Check</th>
<th>What a usable result looks like</th>
</tr>
</thead>
<tbody>
<tr>
<td>Model and materials</td>
<td>All body parts are present; no pink missing-texture materials</td>
</tr>
<tr>
<td>Skinning</td>
<td>Mesh follows the armature, including elbows and knees</td>
</tr>
<tr>
<td>Animation</td>
<td>The intended walk plays; the file contains one clip for this example</td>
</tr>
<tr>
<td>Loop</td>
<td>The last-to-first transition is acceptable for your game; no obvious jump</td>
</tr>
<tr>
<td>Ground contact</td>
<td>Feet do not visibly pass through the floor; sliding is acceptable for your use case</td>
</tr>
<tr>
<td>Destination</td>
<td>The exported file also works in the engine or viewer where you will use it</td>
</tr>
</tbody>
</table>
<p>Our sample passed Blender import, sampled mesh-deformation, export and reimport checks. The walk-only GLB is <strong>465 KiB</strong>, compared with <strong>1,719 KiB</strong> for the source with 17 clips. Most of that comparison is removing animation data, not compressing the same content. We have not validated this sample in Unity, Unreal or Godot, or scored the animation's contact quality.</p>
<h3>What the file checks found</h3>
<p>We also tested a Kenney character. It imported with a rig and clips, but its GLB referenced an external texture. That is why “GLB” alone is not a guarantee of a complete download.</p>
<!-- character-evidence:start -->
<p>Files inspected 2026-09-14. Both contain skin weights and animation; the texture dependency differs.</p>
<table>
<thead>
<tr>
<th>CC0 download</th>
<th style="text-align:right">File size</th>
<th style="text-align:right">Triangles</th>
<th>Rig and motion</th>
<th>Images</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="https://cdn.cinevva.com/assets/packs/kenney/mini-characters/character-female-a.glb?download=1">Character Female A</a></td>
<td style="text-align:right">267.0 KiB</td>
<td style="text-align:right">876</td>
<td>7 joints; 32 clips</td>
<td>Separate texture required</td>
</tr>
<tr>
<td><a href="https://cdn.cinevva.com/assets/packs/quaternius/ultimate-animated-characters/Casual_Female.glb?download=1">Casual Female</a></td>
<td style="text-align:right">1718.7 KiB</td>
<td style="text-align:right">6,624</td>
<td>23 joints; 17 clips</td>
<td>No external images</td>
</tr>
</tbody>
</table>
<p>The Kenney file references <code>Textures/colormap.png</code>; downloading that GLB alone leaves the texture missing in Blender. The Quaternius casual character uses material colors and needs no image files. See the <a href="/guides/free-character-animations-rigging#tested-character-download-to-blender">Blender import/export example</a> and <a href="/guides/character-workflow/verified-files.json">file hashes and clip names</a>.</p>
<!-- character-evidence:end -->
<p>For the Kenney sample, download the <a href="https://kenney.nl/assets/mini-characters">Mini Characters source pack</a> and preserve its <code>Textures</code> folder beside the model. If you already imported the model, use <strong>File → External Data → Find Missing Files</strong> and choose the unpacked source folder. Check the materials again before exporting.</p>
<h2>Rig your own static character</h2>
<p>Once you can import and play the known sample, repeat the workflow with your own model. Now a failure is easier to locate: did the new rig fail, did retargeting fail, or did the export fail?</p>
<ol>
<li><strong>Prepare a neutral pose.</strong> Use an upright A-pose or T-pose with clear separation between arms and torso and between the legs. Remove unrelated scene objects. Keep an untouched copy of the model and its textures.</li>
<li><strong>Create the rig.</strong> Upload the mesh to <a href="/tools/rigger">Cinevva Auto Rigger</a>, or use Mixamo for a suitable humanoid. For a Blender workflow, follow the <a href="/blender-addon/getting-started">Cinevva add-on setup</a>. Review the resulting skeleton before adding many clips.</li>
<li><strong>Test three simple movements.</strong> Bend an elbow, bend a knee, and raise an arm. Look for collapsed joints, opposite limbs moving together, and clothing or accessories staying behind. Fix those problems before judging the animation library.</li>
<li><strong>Add one idle and one walk.</strong> Start with a small set so you can inspect it. Use embedded motions or retarget from the <a href="/tools/animations">Animation Library</a>. A successful bone mapping still needs a visual check on your character's proportions.</li>
<li><strong>Export and reopen.</strong> Use the same checks as the casual character example, then test in your target engine. Add the rest of your motions only after this passes.</li>
</ol>
<p><strong>Cinevva costs:</strong> rigging consumes credits, including on the Free plan. The first Fast-engine rigged-character download includes up to six animations; subsequent exports require Standard or Pro. Animation Library preview is free, but its export requires Standard or Pro separately. Check <a href="/plans">plans</a> for the current offer. The Blender add-on offers a separate local-rigging purchase; online rigging uses account credits.</p>
<h2>Where Mixamo and the alternatives fit</h2>
<p>Choose by the task and export rights you need, rather than treating every tool as an interchangeable “free Mixamo replacement.”</p>
<table>
<thead>
<tr>
<th>Route</th>
<th>Useful for</th>
<th>Important boundary</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="https://www.mixamo.com">Mixamo</a></td>
<td>Humanoid auto-rigging and stock motion</td>
<td>Adobe account; bipedal humanoids only</td>
</tr>
<tr>
<td><a href="https://quaternius.com/packs/universalanimationlibrary.html">Quaternius UAL</a></td>
<td>Reusable CC0 motion on an existing humanoid rig</td>
<td>Retargeting may be needed; free and paid pack tiers contain different amounts of content</td>
</tr>
<tr>
<td><a href="https://kenney.nl/assets/mini-characters">Kenney</a></td>
<td>A simple animated character to start a prototype</td>
<td>Inspect the specific file's rig, clips and texture dependencies</td>
</tr>
<tr>
<td><a href="https://www.reallusion.com/auto-rig/accurig/">AccuRIG</a></td>
<td>A desktop character-rigging workflow with FBX/USD export</td>
<td>Initial sign-in is required; ActorCore motions are a separate offering</td>
</tr>
<tr>
<td><a href="/tools/rigger">Cinevva Auto Rigger</a></td>
<td>Rigging your static mesh and exporting GLB</td>
<td>Credit use and download allowance are separate</td>
</tr>
<tr>
<td><a href="/tools/animations">Cinevva Animation Library</a></td>
<td>Trying stock motions on your existing rig in the browser</td>
<td>Free preview; paid-plan export</td>
</tr>
<tr>
<td><a href="/guides/how-to-rig-a-character-in-blender">Blender rigging</a></td>
<td>Manual control over bones, weights and corrective work</td>
<td>More setup, but you can repair the rig directly</td>
</tr>
</tbody>
</table>
<p>Adobe's <a href="https://helpx.adobe.com/creative-cloud/faq/mixamo-faq.html">Mixamo FAQ</a> says the service is free with an Adobe ID and allows royalty-free use of characters and animations in personal, commercial and nonprofit projects. It also limits the auto-rigger and animation library to bipedal humanoids. Those are documented facts; this guide does not infer a shutdown date or maintenance status from forum outage reports.</p>
<p>Quaternius lists its Universal Animation Library as CC0 and provides a free portion alongside paid tiers. For a reusable source-asset workflow, keep the original license with your download. A tool being free to use does not by itself grant redistribution rights to every character or motion you import into it.</p>
<p>Reallusion documents its <a href="https://manual.reallusion.com/AccuRig-2/2.0/03-introducing-the-user-interface/installation-guide.htm">initial sign-in</a> and <a href="https://manual.reallusion.com/AccuRig-2/2.0/09-add-motions/export.htm">character export settings</a>. Check the license of any ActorCore motion you add separately from the rigging tool.</p>
<h2>When the animation looks wrong</h2>
<table>
<thead>
<tr>
<th>Symptom</th>
<th>Check first</th>
<th>What to do</th>
</tr>
</thead>
<tbody>
<tr>
<td>Nothing moves</td>
<td>Active object, action and timeline range</td>
<td>Select the armature, assign the intended action, and play within its keyed range</td>
</tr>
<tr>
<td>Bones move, mesh stays still</td>
<td>Armature modifier and skin weights</td>
<td>Check that the mesh targets the correct armature and has matching vertex groups</td>
</tr>
<tr>
<td>Several motions seem mixed</td>
<td>Active action plus NLA tracks</td>
<td>Mute unrelated NLA tracks and test a single action</td>
</tr>
<tr>
<td>Pink materials</td>
<td>Missing image files</td>
<td>Restore the texture folder and use Find Missing Files; changing the animation will not fix it</td>
</tr>
<tr>
<td>Arms twist or shoulders collapse after retargeting</td>
<td>Rest pose, bone mapping and proportions</td>
<td>Compare the source and target rest poses; correct the mapping or pose, then preview again</td>
</tr>
<tr>
<td>Feet slide or the character drifts</td>
<td>Root motion, scale and playback speed</td>
<td>Decide whether movement comes from the clip or your game controller; avoid applying both</td>
</tr>
<tr>
<td>Accessories stay behind</td>
<td>Parenting or skinning of separate objects</td>
<td>Make sure each part follows the intended bone or armature</td>
</tr>
<tr>
<td>The export contains the wrong clips</td>
<td>Animation export mode and assigned actions</td>
<td>Recheck active actions and NLA tracks; reopen the exported file to count and play its clips</td>
</tr>
</tbody>
</table>
<h3>What about quadrupeds, tails and wings?</h3>
<p>A humanoid clip cannot animate joints it does not contain. A character may have a working human-shaped body rig while its tail, ears or wings still need separate animation or secondary motion. A walk that looks acceptable on one set of proportions may need correction on another.</p>
<p>For a four-legged character, use a quadruped-capable rigging route and inspect its own gait. Cinevva's Pro engine supports quadruped rigging; see the <a href="/tools/rigger">Rigger's supported inputs and limits</a>. Do not use the casual character test as evidence of creature-rig quality.</p>
<h2>Common questions</h2>
<h3>Do I need to rig a downloaded character again?</h3>
<p>Only if its existing rig is missing or unsuitable. First check for a skeleton, skin weights and usable clips. The casual character in this guide already has all three. Rigging it again adds work and may discard useful motion.</p>
<h3>Can I use these example files commercially?</h3>
<p>The Quaternius casual character and Kenney Mini Characters source packs are published as CC0. Our walk-only sample comes from the Quaternius casual character. Save the source license with the files; do not assume an unrelated uploaded character shares the motion library's license.</p>
<h3>Is Mixamo still free?</h3>
<p>Adobe's FAQ says it is free with an Adobe ID, without a Creative Cloud subscription. Its characters and animations may be used royalty-free in commercial projects. Check Adobe's terms for your intended distribution, particularly if you want to share source assets instead of a finished project.</p>
<h3>Why does my walk-only download say Animation instead of Walk?</h3>
<p>The Blender export used <strong>Active actions merged</strong>, which produced a single clip named <code>Animation</code>. It contains the walk motion. A clip's name is a label; inspect its playback and channels rather than using the label as proof of its contents.</p>
<h3>Does GLB include everything?</h3>
<p>It can, but check the file. Our casual character sample has no external image or buffer dependencies. The Kenney GLB we tested references <code>Textures/colormap.png</code>, so that standalone download is incomplete without the image.</p>
<h3>Does a Blender import prove a model is game-ready?</h3>
<p>No. You still need to check motion, materials, scale, orientation and performance in the destination engine. A rig that imports successfully can still have poor weights, foot sliding or unsuitable animation transitions.</p>
<h2>Continue with your own character</h2>
<ul>
<li><a href="/game-assets/free-3d-character-models">Browse rigged characters</a> if you want to begin with an existing asset.</li>
<li><a href="/tools/rigger">Rig a static mesh</a> if it has no usable skeleton or skin weights.</li>
<li><a href="/tools/animations">Try motions on an existing rig</a> if the model is already skinned.</li>
<li><a href="/guides/mixamo-to-blender-2026">Bring Mixamo motion into Blender</a> for an FBX-based workflow.</li>
<li><a href="/guides/game-asset-licenses">Check game-asset licenses</a> before distributing source files.</li>
</ul>
<style scoped>
.walk-example { margin: 1.5rem 0; }
.walk-example video { display: block; width: 100%; aspect-ratio: 4 / 3; border-radius: 12px; background: #e9ecf2; border: 1px solid var(--vp-c-divider); }
.walk-example figcaption { margin-top: .6rem; font-size: .9rem; line-height: 1.6; color: var(--vp-c-text-2); }
</style>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Free PBR Textures, Materials and HDRIs for Games (2026)]]></title>
            <link>https://app.cinevva.com/guides/free-textures-hdris-materials</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/free-textures-hdris-materials</guid>
            <pubDate>Fri, 17 Jul 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[The best free PBR texture, material, and HDRI sources for games in 2026, from CC0 libraries like Poly Haven and ambientCG to AI generators, with licenses explained.]]></description>
            <content:encoded><![CDATA[<h1>Free PBR Textures, Materials and HDRIs for Games (2026)</h1>
<p><em>Last updated: September 2026.</em></p>
<p>The best free PBR textures and HDRIs come from CC0 libraries: Poly Haven (over 850 textures and over 990 HDRIs) and ambientCG (over 2,000 materials and over 420 HDRIs) are the two anchors, both public domain with no attribution required, both with free no-key APIs. Smaller CC0 sites like <a href="http://3DTextures.me">3DTextures.me</a>, ShareTextures, and cgbookcase add thousands more, and Kenney covers prototype and stylized textures. The one popular site that is NOT CC0 is FreePBR, where commercial use requires a one-time payment.</p>
<p>::: info Search These Sources in One Place
Cinevva's <a href="/assets">Asset Library Search</a> includes Poly Haven and ambientCG as providers, so you can search their textures and HDRIs from a single box: <a href="/assets?providers=polyhaven">Poly Haven</a> · <a href="/assets?providers=ambientcg">ambientCG</a>
:::</p>
<h2>Quick picks</h2>
<ul>
<li><strong>One site for everything, photoreal:</strong> Poly Haven (CC0 textures, HDRIs, and models).</li>
<li><strong>Biggest pure material library:</strong> ambientCG (CC0, over 2,000 PBR materials).</li>
<li><strong>Extra variety, still CC0:</strong> <a href="http://3DTextures.me">3DTextures.me</a>, ShareTextures, cgbookcase.</li>
<li><strong>Prototype and stylized textures:</strong> Kenney (CC0).</li>
<li><strong>Free HDRIs beyond Poly Haven:</strong> ambientCG, HDRMaps freebies, OpenHDRI.</li>
<li><strong>Watch the license:</strong> FreePBR is free for personal use only, commercial rights cost $16.</li>
</ul>
<h2>Quick Reference</h2>
<table>
<thead>
<tr>
<th>Need</th>
<th>Best Source</th>
<th>License</th>
<th>Attribution</th>
</tr>
</thead>
<tbody>
<tr>
<td>Photoreal PBR materials</td>
<td>Poly Haven, ambientCG</td>
<td>CC0</td>
<td>None</td>
</tr>
<tr>
<td>Large material variety</td>
<td><a href="http://3DTextures.me">3DTextures.me</a>, ShareTextures</td>
<td>CC0</td>
<td>None</td>
</tr>
<tr>
<td>Curated smaller library</td>
<td>cgbookcase</td>
<td>CC0 1.0</td>
<td>None</td>
</tr>
<tr>
<td>Prototype/blockout textures</td>
<td>Kenney</td>
<td>CC0</td>
<td>None</td>
</tr>
<tr>
<td>HDRIs for lighting</td>
<td>Poly Haven, ambientCG</td>
<td>CC0</td>
<td>None</td>
</tr>
<tr>
<td>More free HDRIs</td>
<td>HDRMaps freebies, OpenHDRI</td>
<td>Royalty-free / CC0</td>
<td>None</td>
</tr>
<tr>
<td>Commercial game on a budget</td>
<td>Anything CC0 above</td>
<td>CC0</td>
<td>None</td>
</tr>
<tr>
<td>FreePBR downloads</td>
<td>FreePBR</td>
<td>Custom</td>
<td>None, but commercial use is paid</td>
</tr>
</tbody>
</table>
<h2>PBR texture and material sites</h2>
<h3>Poly Haven</h3>
<p><strong>Best for:</strong> Photoreal materials and HDRIs with zero license worries</p>
<figure class="sample-sheet">
<a href="/assets?providers=polyhaven"><img src="https://cdn.cinevva.com/guides/samples/samples-polyhaven-textures.jpg" alt="Sample CC0 PBR materials from Poly Haven rendered on spheres: brick, wood floor, metal plate, cobblestone, fabric, grass, marble and concrete" loading="lazy"></a>
<figcaption>Poly Haven material previews: brick, wood, metal, cobblestone, fabric, grass, marble and concrete, all CC0. <a href="/assets?providers=polyhaven">Search Poly Haven in the asset library</a>.</figcaption>
</figure>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://polyhaven.com">polyhaven.com</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>CC0 (public domain), no attribution required</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>Over 850 PBR textures, over 990 HDRIs, over 520 models</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>JPG/PNG maps, EXR/HDR for HDRIs, Blend, glTF</td>
</tr>
<tr>
<td><strong>Resolutions</strong></td>
<td>1K to 8K textures, 1K to 16K HDRIs</td>
</tr>
<tr>
<td><strong>API</strong></td>
<td>Yes, free, no key required</td>
</tr>
<tr>
<td><strong>Direct Download</strong></td>
<td>Yes</td>
</tr>
</tbody>
</table>
<p><strong>Strengths:</strong></p>
<ul>
<li>Every asset is scan-based or hand-authored to a consistent photoreal standard</li>
<li>Complete map sets: diffuse, normal, roughness, displacement, AO</li>
<li>Pick your resolution per download instead of getting one giant ZIP</li>
<li>The API means tools (including Cinevva's asset search) can pull assets directly</li>
</ul>
<p><strong>Best for finding:</strong></p>
<ul>
<li>Ground, rock, and terrain materials for outdoor scenes</li>
<li>Wood, brick, plaster, and metal for architecture</li>
<li>Sky and studio HDRIs for lighting anything</li>
</ul>
<p>Poly Haven is the anchor of this whole guide. It's funded by Patreon and corporate sponsors rather than ads, the quality bar is the highest of any free library, and CC0 means you never think about the license again. If you only bookmark one site, make it this one. Search it inside Cinevva at <a href="/assets?providers=polyhaven">/assets?providers=polyhaven</a>.</p>
<h3>ambientCG</h3>
<p><strong>Best for:</strong> The largest CC0 material library on the web</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://ambientcg.com">ambientcg.com</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>CC0, free for commercial use, no attribution</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>Over 2,000 PBR materials, over 420 HDRIs, plus 3D assets</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>JPG/PNG map sets, EXR HDRIs</td>
</tr>
<tr>
<td><strong>Resolutions</strong></td>
<td>Up to 8K on most materials</td>
</tr>
<tr>
<td><strong>API</strong></td>
<td>Yes, documented, no key required</td>
</tr>
<tr>
<td><strong>Direct Download</strong></td>
<td>Yes</td>
</tr>
</tbody>
</table>
<p><strong>Strengths:</strong></p>
<ul>
<li>More raw material variety than anyone else in the CC0 space</li>
<li>Formerly CC0Textures, renamed in 2021, same creator and same license since 2018</li>
<li>Serves over 1,000,000 downloads a month, so it's battle-tested and stable</li>
<li>Good procedural and scan-based coverage: bricks, fabric, ground, metal, roofing</li>
</ul>
<p><strong>Best for finding:</strong></p>
<ul>
<li>Tiling surfaces in bulk when you're dressing a whole level</li>
<li>Variations of the same material family (a dozen different concretes)</li>
<li>HDRIs when Poly Haven doesn't have the mood you need</li>
</ul>
<p>If Poly Haven is the curated gallery, ambientCG is the warehouse. When you need eight different asphalt variants or a very specific weave of fabric, this is where you'll find it. Search it inside Cinevva at <a href="/assets?providers=ambientcg">/assets?providers=ambientcg</a>.</p>
<h3><a href="http://3DTextures.me">3DTextures.me</a></h3>
<p><strong>Best for:</strong> A big free library with stylized and hand-made materials mixed in</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://3dtextures.me">3dtextures.me</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>CC0 (public domain)</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>Over 1,300 texture sets</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>PNG/JPG map sets (base color, normal, roughness, AO, height)</td>
</tr>
<tr>
<td><strong>API</strong></td>
<td>No</td>
</tr>
<tr>
<td><strong>Direct Download</strong></td>
<td>Yes, per texture</td>
</tr>
</tbody>
</table>
<p><strong>Strengths:</strong></p>
<ul>
<li>Strong category depth: over 340 metals, over 200 tiles, over 200 fabrics</li>
<li>Includes stylized and semi-procedural materials you won't find on scan-based sites</li>
<li>Works with Blender, Unreal, Unity, and Godot map conventions</li>
</ul>
<p><strong>Best for finding:</strong></p>
<ul>
<li>Stylized surfaces that photoreal scan libraries don't cover</li>
<li>Sci-fi panels, ornate tiles, and pattern-heavy materials</li>
</ul>
<p>A one-person project that has quietly become one of the biggest CC0 texture libraries anywhere. Individual downloads are free, and a small Ko-fi donation gets you a bulk download folder if you want everything at once.</p>
<h3>ShareTextures</h3>
<p><strong>Best for:</strong> Another CC0 pool worth checking when the big two miss</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://www.sharetextures.com">sharetextures.com</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>CC0, explicitly fine for commercial projects</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>Over 1,700 textures plus some 3D models</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>PBR map sets</td>
</tr>
<tr>
<td><strong>API</strong></td>
<td>No</td>
</tr>
<tr>
<td><strong>Direct Download</strong></td>
<td>Yes</td>
</tr>
</tbody>
</table>
<p><strong>Strengths:</strong></p>
<ul>
<li>Solid coverage of architectural surfaces: floors, walls, fabric, wood</li>
<li>Everything is copyright-free by their own stated policy</li>
<li>Patreon-supported, actively maintained in 2026</li>
</ul>
<p><strong>Best for finding:</strong></p>
<ul>
<li>Interior surfaces for architectural or room-scale scenes</li>
<li>A second opinion when Poly Haven and ambientCG both miss</li>
</ul>
<p>Less famous than the big two but the license is just as clean. Good habit: search Poly Haven and ambientCG first, then check here before you settle for something that only half fits.</p>
<h3>cgbookcase</h3>
<p><strong>Best for:</strong> A smaller, curated CC0 collection with high resolutions</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://www.cgbookcase.com">cgbookcase.com</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>CC0 1.0, use for free without giving credit</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>Over 550 textures</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>PBR map sets</td>
</tr>
<tr>
<td><strong>Resolutions</strong></td>
<td>1K to 8K</td>
</tr>
<tr>
<td><strong>API</strong></td>
<td>No</td>
</tr>
<tr>
<td><strong>Direct Download</strong></td>
<td>Yes</td>
</tr>
</tbody>
</table>
<p><strong>Strengths:</strong></p>
<ul>
<li>Every texture ships with the full map set for photoreal materials</li>
<li>Filter by minimum resolution when browsing</li>
<li>Run by one artist (Dorian Zgraggen) as a passion project, no paywalls</li>
</ul>
<p><strong>Best for finding:</strong></p>
<ul>
<li>Nature and organic surfaces (bark, leaves, ground)</li>
<li>High-res versions of common materials</li>
</ul>
<p>Small but well made. The double-sided leaf textures are a known standout that other free libraries don't really offer.</p>
<h3>FreePBR</h3>
<p><strong>Best for:</strong> Game-focused material sets, if you read the license first</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://freepbr.com">freepbr.com</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>Custom, NOT CC0. Free for personal/non-commercial use. Commercial rights cost a one-time $16</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>Over 600 PBR texture sets</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>2048x2048 PNG (albedo, normal, roughness, metallic, AO, some height)</td>
</tr>
<tr>
<td><strong>API</strong></td>
<td>No</td>
</tr>
<tr>
<td><strong>Direct Download</strong></td>
<td>Yes, per set</td>
</tr>
</tbody>
</table>
<p><strong>Strengths:</strong></p>
<ul>
<li>Game-oriented categories: over 100 metals, floors, sci-fi panels, ground</li>
<li>Consistent 2K PNG sets that drop straight into Unity or Unreal workflows</li>
<li>The $16 commercial tier also bulk-downloads the whole library</li>
</ul>
<p><strong>Best for finding:</strong></p>
<ul>
<li>Stylized game metals and sci-fi surfaces</li>
<li>Quick 2K sets when you don't need scan-level realism</li>
</ul>
<p>This is the license trap of the category. FreePBR looks like the CC0 sites but it isn't one: the site's own FAQ says the sets are free &quot;as long as you don't use these commercially,&quot; and redistribution is not allowed. If your game will make money, either pay the $16 or stick to the CC0 sites above.</p>
<h3>Kenney</h3>
<p><strong>Best for:</strong> Prototype textures and stylized patterns</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://kenney.nl">kenney.nl</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>CC0 (public domain)</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>Texture packs within a 40,000+ asset library, including a 75-texture Prototype pack</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>PNG</td>
</tr>
<tr>
<td><strong>API</strong></td>
<td>No, but offline catalog available</td>
</tr>
<tr>
<td><strong>Direct Download</strong></td>
<td>Yes, ZIP per pack</td>
</tr>
</tbody>
</table>
<p><strong>Strengths:</strong></p>
<ul>
<li>The Prototype Textures pack is the standard grid-and-checker blockout look</li>
<li>Patterns and stylized surfaces that match Kenney's 3D and 2D packs</li>
<li>Same CC0 license across the entire catalog</li>
</ul>
<p><strong>Best for finding:</strong></p>
<ul>
<li>Greybox/blockout grids for level prototyping</li>
<li>Flat stylized textures for low-poly games where photoreal PBR looks wrong</li>
</ul>
<p>Not a PBR library, and that's the point. If your game is stylized low-poly, a full 4K roughness workflow is overkill and Kenney's flat textures will look more coherent.</p>
<h2>Free HDRIs</h2>
<p>An HDRI (high dynamic range image) is a 360-degree panorama used to light a scene and fill the background. One good HDRI replaces hours of manual light placement.</p>
<figure class="sample-sheet">
<a href="/assets?providers=polyhaven"><img src="https://cdn.cinevva.com/guides/samples/samples-polyhaven-hdris.jpg" alt="Sample CC0 HDRIs from Poly Haven: alpine field, ocean sky, art studio interior, autumn field, pure sky and autumn forest panoramas" loading="lazy"></a>
<figcaption>Six Poly Haven HDRIs, from pure skies to interiors, all CC0. <a href="/assets?providers=polyhaven">Search HDRIs in the asset library</a>.</figcaption>
</figure>
<p><strong>Poly Haven</strong> is the default answer here too: over 980 CC0 HDRIs, from clear skies to studio setups to night scenes, downloadable from 1K up to 16K in EXR or HDR. <strong>ambientCG</strong> adds over 400 more under the same CC0 terms. Between the two you'll rarely need anything else.</p>
<p>When you do, <strong>HDRMaps</strong> (<a href="https://hdrmaps.com/freebies/">hdrmaps.com</a>) offers over 200 free HDRIs that its site says you can use in private and commercial projects, and the same team runs <strong>OpenHDRI</strong> (<a href="https://openhdri.org">openhdri.org</a>), a library where every HDRI is released under CC0.</p>
<p>For web games, don't ship a 16K HDRI. A 2K HDRI is plenty if it's only lighting the scene, and 4K is usually enough even when it's visible as the sky.</p>
<h2>What the PBR maps actually are</h2>
<p>A PBR material is a set of images that each describe one physical property of the surface. Most free sites give you five:</p>
<table>
<thead>
<tr>
<th>Map</th>
<th>What it controls</th>
</tr>
</thead>
<tbody>
<tr>
<td>Albedo (base color)</td>
<td>The raw surface color, no lighting baked in</td>
</tr>
<tr>
<td>Normal</td>
<td>Fake small-scale bumps and dents without extra geometry</td>
</tr>
<tr>
<td>Roughness</td>
<td>How sharp or blurry reflections are (polished vs matte)</td>
</tr>
<tr>
<td>Metallic</td>
<td>Whether the surface behaves like metal or not</td>
</tr>
<tr>
<td>AO (ambient occlusion)</td>
<td>Baked soft shadows in crevices</td>
</tr>
</tbody>
</table>
<p>Some sets add a height/displacement map for real geometric detail. For web games you can usually skip it, and if performance is tight you can even drop AO and metallic on props that are clearly non-metal.</p>
<h2>Choosing resolution for web games</h2>
<p>Bigger is not better in a browser. Every texture gets decoded to raw pixels in GPU memory, so a 4K RGBA texture eats 64 MB of VRAM regardless of file size. A working default for web: 1K for most props and tiling surfaces, 2K for hero objects the camera gets close to, and 4K almost never. Download the smallest resolution that holds up, not the biggest one offered.</p>
<h2>Compress everything with KTX2</h2>
<p>Before textures go into a WebGL or WebGPU game, convert them to KTX2 (Basis Universal). Unlike PNG or JPG, a KTX2 texture stays GPU-compressed in video memory, which typically cuts texture VRAM 4x to 8x and speeds up loading. Three.js, Babylon.js, and PlayCanvas all ship KTX2 loaders. Cinevva has a free in-browser <a href="/tools/ktx2-compressor">KTX2 Texture Compressor</a> that converts PNG, JPG, and WebP locally, nothing gets uploaded. If you're deciding between graphics APIs first, see our <a href="/guides/webgpu-vs-webgl-games">WebGPU vs WebGL guide</a>.</p>
<h2>Generate materials and skyboxes with AI</h2>
<p>By 2026 you can also generate what you can't find, and the tools split into two jobs. Material generators (Polycam, the free open-source Material Maker, Adobe Substance 3D Sampler) produce tileable PBR sets with real normal and roughness maps; mesh texturers (Meshy, 3D AI Studio) paint an existing model instead. Our <a href="/guides/ai-texture-generators">Best AI Texture Generators</a> guide compares them with prices and licences, and the short version is that for realistic surfaces the CC0 photo libraries above are still better than anything generated.</p>
<p>For 360-degree environments, Blockade Labs' Skybox AI generates seam-free 8K skyboxes from text, though its free plan only previews and can't export; paid plans from $20 a month carry a commercial licence. Hyper3D's OmniCraft is the one that hands you a true 32-bit HDR for lighting. The <a href="/guides/ai-skybox-generators">Best AI Skybox and HDRI Generators</a> guide covers them next to the free HDRI libraries.</p>
<p>Cinevva has both built in: the <a href="/tools/skybox">Skybox Generator</a> creates 8K 360-degree skyboxes with depth maps on a free account, and the <a href="/tools/flux">Image Generator</a> handles stylised albedo textures, decals and concept art from a text prompt. Check commercial terms on any hosted AI tool before shipping, the same way you'd check a texture license.</p>
<h2>Licenses in 30 seconds</h2>
<ul>
<li><strong>CC0:</strong> public domain. Commercial use, modification, no attribution. Poly Haven, ambientCG, <a href="http://3DTextures.me">3DTextures.me</a>, ShareTextures, cgbookcase, and Kenney are all CC0.</li>
<li><strong>CC-BY:</strong> free commercial use, but credit the creator.</li>
<li><strong>Royalty-free / custom free:</strong> free to use under the site's own terms. Read them. FreePBR's free tier excludes commercial use.</li>
<li><strong>No redistribution:</strong> even permissive sites often forbid re-uploading the raw files elsewhere. That's about the files, not your game, so shipping them inside a build is fine.</li>
</ul>
<p>When in doubt, prefer CC0. For a full breakdown, see our <a href="/guides/game-asset-licenses">game asset licenses guide</a>.</p>
<h2>Common Questions</h2>
<h3>Where can I download free PBR textures for commercial games?</h3>
<p>Poly Haven and ambientCG are the best sources: both are CC0, so every texture is safe for commercial games with no attribution. <a href="http://3DTextures.me">3DTextures.me</a>, ShareTextures, and cgbookcase are also fully CC0. Avoid assuming every &quot;free texture&quot; site works this way, because some (like FreePBR) restrict commercial use on free downloads.</p>
<h3>Is ambientCG really free for commercial use?</h3>
<p>Yes. Every asset on ambientCG is CC0, which the site states is free to use without attribution even in commercial projects. The site was formerly called CC0Textures and has used the same license since 2018.</p>
<h3>Is FreePBR CC0?</h3>
<p>No. FreePBR uses its own license: the downloads are free for personal and non-commercial use, but commercial use requires a one-time $16 payment, and redistributing the files on other sites is not allowed. If you want zero-cost commercial textures, use the CC0 sites instead.</p>
<h3>Where can I get free HDRIs for game lighting?</h3>
<p>Poly Haven has over 980 CC0 HDRIs and is the standard answer. ambientCG adds over 400 more under CC0. HDRMaps offers over 200 freebies usable in commercial projects, and its sister site OpenHDRI is entirely CC0.</p>
<h3>What texture resolution should I use for a web game?</h3>
<p>1K for most surfaces, 2K for objects the camera gets close to. An uncompressed 4K texture takes 64 MB of GPU memory, which is too much for a browser game to spend on one surface. Whatever resolution you pick, convert to KTX2 so it stays compressed in VRAM.</p>
<h3>Can AI generate tileable PBR materials?</h3>
<p>Yes. Dedicated tools like Texturly and 3D AI Studio generate tileable PBR map sets from text prompts, and Adobe Substance 3D Sampler builds a material from a single photo. For skies, Blockade Labs' Skybox AI and Cinevva's <a href="/tools/skybox">Skybox Generator</a> create full 360-degree environments from a prompt.</p>
<h3>Do I need to credit Poly Haven or ambientCG in my game?</h3>
<p>No. CC0 means no attribution is required anywhere, including commercial games. Both sites appreciate a credit or a donation, but legally you owe nothing.</p>
<p><BuildCta
  title="Skip the texture hunt. Build the scene instead"
  desc="Cinevva searches Poly Haven and ambientCG for you and drops materials and HDRIs straight into a playable game."
  prompt="Build a foggy mountain valley at sunset with a stone ruin I can walk through, lit by a warm HDRI sky" /></p>
<h2>Related</h2>
<ul>
<li><a href="/guides/game-assets-guide">Where to Find Free Game Assets</a>: the full 20+ source guide</li>
<li><a href="/guides/free-3d-model-sites">Best Free 3D Model Sites</a>: the models to put those materials on</li>
<li><a href="/guides/game-asset-licenses">Game Asset Licenses Explained</a>: CC0, CC-BY, and the rest</li>
<li><a href="/guides/ai-texture-generators">Best AI Texture Generators for Games</a>: when the library doesn't have it</li>
<li><a href="/guides/ai-skybox-generators">Best AI Skybox and HDRI Generators</a>: generated skies next to the free HDRIs</li>
<li><a href="/guides/webgpu-vs-webgl-games">WebGPU vs WebGL for Games</a>: where those compressed textures end up</li>
<li><a href="/assets">Asset Library Search</a>: search Poly Haven, ambientCG, and more in one place</li>
<li><a href="/game-assets/free-wood-textures">Free wood</a>, <a href="/game-assets/free-metal-textures">metal</a>, <a href="/game-assets/free-stone-textures">stone</a> and <a href="/game-assets/free-grass-textures">grass textures</a>, plus <a href="/game-assets/free-hdri-skies">HDRI skies</a>: the free library, one category at a time</li>
</ul>
<style scoped>
.sample-sheet { margin: 1.25rem 0; }
.sample-sheet > a { display: block; }
.sample-sheet img { width: 100%; border-radius: 10px; border: 1px solid var(--vp-c-divider); display: block; }
.sample-sheet figcaption { font-size: 0.9rem; color: var(--vp-c-text-2); margin: 0.5rem 0 0; }
</style>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[CrazyGames Developer Guide: Publish and Earn (2026)]]></title>
            <link>https://app.cinevva.com/guides/publish-game-crazygames</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/publish-game-crazygames</guid>
            <pubDate>Fri, 17 Jul 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[How to publish your game on CrazyGames in 2026: the developer portal, submission and review, the SDK, ad revenue share, in-game purchases, and how payouts work.]]></description>
            <content:encoded><![CDATA[<h1>CrazyGames Developer Guide: Publish and Earn (2026)</h1>
<p><em>Last updated: July 2026.</em></p>
<p>To publish on CrazyGames, you upload an HTML5 or Unity WebGL build through the <a href="https://developer.crazygames.com/">developer portal</a>, the QA team reviews it (feedback usually lands in <a href="https://docs.pley.com/docs/crazy-games">1 to 2 days</a>), and your game goes live in one of two stages. Basic Launch puts it on the site without any SDK work so CrazyGames can measure how players respond. If it holds attention, you're invited to Full Launch, where you integrate the <a href="https://docs.crazygames.com/">CrazyGames SDK</a> and start earning. There's no fee to publish and <a href="https://docs.crazygames.com/faq/">no exclusivity requirement</a>, so you can run the same game on Steam, mobile, or a rival portal at the same time.</p>
<p>You earn through a revenue share on ads served by the SDK (video and banner), plus in-game purchases for invited games through Xsolla. CrazyGames doesn't publish the exact split, but it pays out monthly through <a href="https://docs.crazygames.com/payouts/">Tipalti</a> once your balance clears a €100 minimum, and it targets payment by the 10th of the following month. Earnings track higher in English-speaking Tier 1 markets like the US, UK, and Australia, because that's where ad demand is strongest and where most of the platform's audience sits.</p>
<h2>Quick Reference</h2>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td>Submission model</td>
<td>Self-serve upload via the developer portal, then human QA review</td>
</tr>
<tr>
<td>Cost to publish</td>
<td>Free, no exclusivity required</td>
</tr>
<tr>
<td>Review time</td>
<td>Feedback usually 1 to 2 days; updates often same working day</td>
</tr>
<tr>
<td>Launch stages</td>
<td>Basic Launch (no SDK, no monetization) → Full Launch (SDK required, earns)</td>
</tr>
<tr>
<td>Monetization</td>
<td>Ad revenue share (SDK video + banner); in-game purchases via Xsolla (invite-only)</td>
</tr>
<tr>
<td>Revenue split</td>
<td>Not in the main docs; <a href="https://crazygames.indiehero.io/cggmwj-jg/">2026 jam terms</a> list 60% ads / 70% IAP to developers</td>
</tr>
<tr>
<td>Payout threshold</td>
<td>€100 minimum, paid monthly via Tipalti (wire, ACH, PayPal)</td>
</tr>
<tr>
<td>Build limits</td>
<td>Initial load ≤ 50MB, total ≤ 250MB, ≤ 1,500 files</td>
</tr>
<tr>
<td>Audience</td>
<td>PEGI 12 / age 13+</td>
</tr>
</tbody>
</table>
<h2>Why CrazyGames</h2>
<p>CrazyGames is one of the biggest browser-game portals on the web. The company's developer portal now claims <a href="https://developer.crazygames.com/">over 50 million monthly players</a>, concentrated in Tier 1 markets, up from the <a href="https://mobidictum.com/crazygames-reaches-35-million-monthly-users/">35 million monthly active users</a> independently reported in early 2025 across a catalog of roughly 4,000 games. That's a large, ready-made audience you don't have to acquire yourself, which is the whole appeal of a portal versus launching cold on your own domain.</p>
<p>The pitch to developers is straightforward. You bring a web-playable game, CrazyGames brings the traffic and the ad stack, and you split the ad revenue. The platform leans hard on supporting small and solo developers, and it doesn't lock you in. Because there's no exclusivity clause, CrazyGames is usually a distribution channel you add rather than a bet you make.</p>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 210" role="img" aria-label="CrazyGames at a glance: 50 million-plus monthly players, about 4,000 games, review feedback in 1 to 2 days, 100 euro payout threshold" style="width:100%;height:auto;max-width:720px;margin:1.5rem auto;display:block;border-radius:14px">
  <rect width="720" height="210" rx="14" fill="#0b1020"/>
  <text x="24" y="40" font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif" font-size="20" font-weight="800" fill="#e8edf5">CrazyGames at a glance</text>
  <text x="24" y="62" font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif" font-size="13" fill="#9aa7b4">Platform scale and publishing basics. Source: CrazyGames developer portal &amp; docs.</text>
  <g font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif">
    <g transform="translate(24,80)">
      <rect width="156" height="106" rx="10" fill="#121a31"/>
      <text x="16" y="48" font-size="27" font-weight="800" fill="#c8a8ff">50M+</text>
      <text x="16" y="72" font-size="12" fill="#9aa7b4">Monthly players</text>
      <rect x="16" y="82" width="72" height="20" rx="10" fill="#c8a8ff22"/>
      <text x="26" y="96" font-size="12" font-weight="700" fill="#c8a8ff">Tier 1 heavy</text>
    </g>
    <g transform="translate(196,80)">
      <rect width="156" height="106" rx="10" fill="#121a31"/>
      <text x="16" y="48" font-size="27" font-weight="800" fill="#7dd3fc">~4,000</text>
      <text x="16" y="72" font-size="12" fill="#9aa7b4">Games in catalog</text>
      <rect x="16" y="82" width="80" height="20" rx="10" fill="#7dd3fc22"/>
      <text x="26" y="96" font-size="12" font-weight="700" fill="#7dd3fc">HTML5 + Unity</text>
    </g>
    <g transform="translate(368,80)">
      <rect width="156" height="106" rx="10" fill="#121a31"/>
      <text x="16" y="48" font-size="27" font-weight="800" fill="#6ee7b7">1-2 days</text>
      <text x="16" y="72" font-size="12" fill="#9aa7b4">Review feedback</text>
      <rect x="16" y="82" width="76" height="20" rx="10" fill="#6ee7b722"/>
      <text x="26" y="96" font-size="12" font-weight="700" fill="#6ee7b7">Human QA</text>
    </g>
    <g transform="translate(540,80)">
      <rect width="156" height="106" rx="10" fill="#121a31"/>
      <text x="16" y="48" font-size="27" font-weight="800" fill="#fb7185">€100</text>
      <text x="16" y="72" font-size="12" fill="#9aa7b4">Payout minimum</text>
      <rect x="16" y="82" width="60" height="20" rx="10" fill="#fb718522"/>
      <text x="26" y="96" font-size="12" font-weight="700" fill="#fb7185">Monthly</text>
    </g>
  </g>
</svg>
<h2>How Publishing Works</h2>
<p>You start in the <a href="https://developer.crazygames.com/games">developer portal</a>, where you set up your account, complete your payment details, and upload a build. The portal includes a Quality Assurance Tool that runs your game exactly as it would appear on CrazyGames, so you can test SDK calls and catch problems before a human ever looks at it. Set up your payout method before you submit, because CrazyGames asks for that first.</p>
<p>From there it's a review, not an instant publish. The QA team plays your game, checks it against the requirements, and sends back a round of feedback. Developers report that feedback typically arrives within <a href="https://docs.pley.com/docs/crazy-games">1 to 2 days</a>, often with screenshots pointing at what to fix, and the notes cover both must-fix issues and suggestions for improvement. Once you've addressed the blockers, preparing the game for release takes roughly another two days. Updates to an already-live game move faster, usually <a href="https://docs.crazygames.com/faq/">processed within the same working day</a>.</p>
<h3>Basic Launch, Then Full Launch</h3>
<p>CrazyGames uses a <a href="https://docs.crazygames.com/requirements/intro/">two-stage launch</a>. At Basic Launch, your game goes live with no customization required. The SDK is optional and monetization is off. This is a soft-launch window (developers describe it as roughly two weeks) where the platform watches real engagement: average playtime, how many visitors convert into actually playing, and retention. If your game hits the benchmarks, you're invited to Full Launch.</p>
<p>Full Launch is where the money starts. You integrate the SDK properly, meet the full set of integration and QA requirements, and the game lands directly in gameplay with monetization enabled. The gate between the two stages is the point of the model. CrazyGames would rather give a game a fair trial with live players than approve on promise alone, which is why polish and a strong first session matter more here than a long feature list.</p>
<h3>Build Limits and Technical Requirements</h3>
<p>Your build has hard limits: the <a href="https://docs.crazygames.com/requirements/intro/">initial download must be 50MB or less</a>, the total size 250MB or less (50MB if you skip the SDK), and the whole thing must stay under 1,500 files. Games target a 16:9 responsive iframe and must be legible at a devicePixelRatio of 1. Physics has to stay <a href="https://docs.crazygames.com/requirements/quality/">consistent across refresh rates</a> like 144Hz and 165Hz, which trips up a surprising number of engines that tie movement to frame rate instead of delta time. CrazyGames is a site for players <a href="https://docs.crazygames.com/requirements/gameplay/">aged 13 and up</a>, so your game has to be PEGI 12 compliant.</p>
<h2>The CrazyGames SDK</h2>
<p>The SDK is how your game talks to the platform, and it's mandatory for Full Launch. It handles <a href="https://docs.crazygames.com/">ads, user accounts, cloud saves, invites, leaderboards, and purchases</a>. Only ads served through the SDK are allowed, which is the core rule of the whole revenue model.</p>
<p>On ads, you get two kinds of video ad. Midgame ads fire at natural breaks, like when a player dies or finishes a level, and rewarded ads are requested by the player in exchange for something in-game. The <a href="https://docs.crazygames.com/requirements/ads/">requirements are strict</a>: ads can't interrupt active gameplay or surprise the player, the game must pause and block input while an ad runs, and your audio has to mute for the ad and unmute when it ends. There are banner ads too. Beyond ads, the SDK gives you cloud data storage so progress follows a player across devices, user authentication tied to their CrazyGames account, and friend invites and social features for multiplayer, which the platform has been pushing since it added social features around its 35-million-user milestone.</p>
<p>The SDK supports <a href="https://docs.crazygames.com/">HTML5, Unity, GameMaker, Construct 3, Godot, and Cocos</a> directly, with partner extensions for GDevelop, Defold, and Wonderland Engine. CrazyGames has live games built in Unity, Defold, Godot, Phaser, PlayCanvas, Construct, Pixi.js, and BabylonJS, so the engine you pick matters far less than whether it exports a clean, fast web build. Hands-on SDK support and individualized advice on ad placement kick in once your games clear <a href="https://docs.crazygames.com/requirements/intro/">50,000 combined plays</a>.</p>
<h3>In-Game Purchases</h3>
<p>In-game purchases exist, but they're <a href="https://docs.crazygames.com/sdk/in-game-purchases/">invite-only</a>. CrazyGames runs IAP through <a href="https://xsolla.com/partner-spotlight/crazygames-adds-xsolla-payments">Xsolla</a> as the payments provider, and purchases are always handled through the CrazyGames Xsolla account so they link back to the player's CrazyGames user ID automatically. This rolled out more widely through 2025. Xsolla and Defold <a href="https://www.pocketgamer.biz/xsolla-partners-with-defold-to-simplify-in-game-purchases-for-web-developers/">shipped a dedicated SDK</a> in June 2025 that lets Defold web games on CrazyGames add purchases without the manual API plumbing. Practically, IAP isn't something you plan your launch around. Get invited by performing well on ads first, then layer purchases on top.</p>
<h2>How You Get Paid</h2>
<p>CrazyGames doesn't publish a revenue split in its main developer docs, so be wary of guides that quote a hard percentage as official. The closest thing to an official figure is the terms CrazyGames published for its <a href="https://crazygames.indiehero.io/cggmwj-jg/">2026 GameMaker web jam</a>, which list developers keeping 60% of in-game advertising revenue and 70% of in-game purchase revenue. The <a href="https://developer.crazygames.com/">developer portal</a> lets you track revenue per game. What CrazyGames documents fully is the payout mechanics, and those are concrete.</p>
<p>Payments run <a href="https://docs.crazygames.com/payouts/">monthly through Tipalti</a> once your balance reaches the €100 minimum. If you don't clear €100 in a given month, the balance rolls over to the next. Tipalti supports wire transfer, direct deposit/ACH, eCheck, and PayPal, with availability depending on your country. The formal terms are NET 60, but CrazyGames says it currently aims to pay sooner, typically by the 10th of the following month. Expect FX fees when converting currencies and possible intermediary bank fees outside CrazyGames' control. Your earnings depend on play volume, retention, and where your players are, so the same game earns very differently with a US audience than with a low-CPM one.</p>
<h2>What Performs on CrazyGames</h2>
<p>The catalog skews toward .io-style multiplayer, quick-session action, casual puzzle, racing, and shooters, the kinds of games that hook someone in the first ten seconds and survive being played in a browser tab between other things. Because the Basic Launch gate measures playtime and retention, games that front-load their fun do well and games that need a five-minute tutorial before anything happens tend to stall. The SDK's social and invite features reward games with any multiplayer or shareable hook, which is why so many breakout browser hits are built around playing with or against other people.</p>
<h2>Common Rejection Reasons</h2>
<p>The fastest way to get rejected is to submit something unoriginal. CrazyGames explicitly screens for <a href="https://docs.crazygames.com/requirements/quality/">clones, reskins, and asset flips</a>, and your game shouldn't be easily confused with another by name or iconography. The second most common problem is polish. One developer wrote up getting a game <a href="https://www.linkedin.com/pulse/my-game-got-rejected-just-2-hours-dmitrii-rigin">rejected in about two hours</a> with the note that it &quot;looks like a prototype,&quot; and complained the feedback was thin compared to some rival portals. That's a fair warning: the bar is a finished-feeling game, not a jam build, and the feedback you get can be terse.</p>
<p>Technical failures round out the list. Games that load slowly, stutter, crash, or throw errors get bounced, as do builds with graphical defects like compression artifacts, inconsistent art styles, physics that breaks on high-refresh-rate monitors, or controls that ignore common keyboard layouts. Text that isn't legible at standard resolution or on the 16:9 iframe is another frequent miss. None of these are exotic, but they're exactly the things that are easy to skip when you're rushing to submit.</p>
<h2>Where Cinevva Fits</h2>
<p>If you're staring at that &quot;must feel finished, not like a prototype&quot; bar and don't have a build yet, this is where a tool like Cinevva helps. You describe the game you want and Cinevva builds a playable 3D web game in your browser, then exports it as a self-contained HTML5 build. That gives you something to iterate on and take through the CrazyGames QA tool, rather than starting from an empty engine project. It won't clear the originality and polish bar for you, but it collapses the distance between an idea and a first playable, which is the slowest part of getting to a submission.</p>
<h2>Common Questions</h2>
<h3>How much does CrazyGames pay developers?</h3>
<p>CrazyGames doesn't publish a revenue split in its main developer docs. The closest official datapoint is its <a href="https://crazygames.indiehero.io/cggmwj-jg/">2026 GameMaker web jam terms</a>, which list developers keeping 60% of ad revenue and 70% of purchase revenue. You earn a share of the ad revenue your game generates through the SDK, tracked per game in the developer portal, plus in-game purchases if you're invited. Payouts run monthly via Tipalti once you clear a €100 balance, and actual earnings depend heavily on play volume, retention, and how much of your audience sits in high-CPM markets like the US and UK.</p>
<h3>How long does CrazyGames take to review a game?</h3>
<p>Developers typically hear back within 1 to 2 days of submitting, often with screenshots showing what needs fixing. After you address the blockers, preparing the game for release takes roughly another two days. Updates to a game that's already live are faster and usually get processed within the same working day. The bigger time cost is the Basic Launch window, a soft-launch period of about two weeks where CrazyGames measures real engagement before inviting you to Full Launch.</p>
<h3>Do I have to make my game exclusive to CrazyGames?</h3>
<p>No. CrazyGames does not require exclusivity, so you can publish the same game on Steam, mobile app stores, <a href="http://itch.io">itch.io</a>, or competing portals like Poki at the same time and still earn revenue share on CrazyGames. That makes it a low-risk channel to add to a multi-platform launch rather than a decision that ties up your game.</p>
<h3>What kind of games work best on CrazyGames?</h3>
<p>Fast-loading, instantly-fun browser games win here. The platform's launch gate measures playtime and retention, so .io multiplayer games, quick-session action, casual puzzles, racing, and shooters that hook players in the first ten seconds tend to pass and grow. Games that need a long tutorial before the fun starts, or that load slowly, struggle. The SDK's invite and social features also give multiplayer and shareable games an extra edge.</p>
<h3>What are the build size limits for CrazyGames?</h3>
<p>Your initial download has to be 50MB or less, your total build 250MB or less (or 50MB if you don't integrate the SDK), and the whole thing must stay under 1,500 files. Games run in a responsive 16:9 iframe and must be readable at a devicePixelRatio of 1. Keeping the first load small matters most, since a slow start hurts the conversion and retention metrics that decide whether you reach Full Launch.</p>
<h3>Can I sell in-game purchases on CrazyGames?</h3>
<p>Yes, but it's invite-only. In-game purchases run through Xsolla, handled via CrazyGames' own Xsolla account so every purchase links to the player's CrazyGames ID automatically. You generally get invited after your game performs well on ad monetization, so plan to launch on ads first and add purchases later rather than building your whole economy around IAP from day one.</p>
<p><BuildCta
  title="Need a web-ready game to submit?"
  desc="Build a playable 3D game from one sentence and export a self-contained HTML5 build for the CrazyGames QA tool."
  prompt="Make a fast-loading .io-style multiplayer arena game I can publish on CrazyGames" /></p>
<h2>Related</h2>
<ul>
<li><a href="/guides/publish-web-game">How to Publish a Web Game</a> — the full menu of portals and platforms for browser games</li>
<li><a href="/guides/publish-game-poki">Publish Your Game on Poki</a> — the other big browser-game portal, compared side by side</li>
<li><a href="/guides/web-game-monetization">Web Game Monetization</a> — how ad revenue share, IAP, and rewarded video actually pay out</li>
<li><a href="/guides/itch-io-launch-guide">Launch Your Game on itch.io</a> — the open, no-gatekeeping alternative where you set your own terms</li>
<li><a href="/guides/promote-indie-game-no-budget">Promote an Indie Game With No Budget</a> — driving your own traffic when the portal isn't enough</li>
<li><a href="/tutorials/ship-web-game-fast">Ship a Web Game That Loads Fast</a> — hitting the 50MB initial-load limit CrazyGames enforces</li>
<li><a href="/guides/multiplayer-browser-game">Build a Multiplayer Browser Game</a> — the .io-style hook that performs best on CrazyGames</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How to Publish a Game on Discord Activities (2026)]]></title>
            <link>https://app.cinevva.com/guides/publish-game-discord-activities</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/publish-game-discord-activities</guid>
            <pubDate>Fri, 17 Jul 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[How to publish a game on Discord Activities in 2026 - the Embedded App SDK, iframe and proxy constraints, multiplayer hooks, monetization, and discovery reality.]]></description>
            <content:encoded><![CDATA[<h1>How to Publish a Game on Discord Activities (2026)</h1>
<p><em>Last updated: July 2026.</em></p>
<p>Yes, you can publish a game on Discord, and the path is called an Activity. An Activity is a web app that runs inside Discord's client, embedded in an iframe you can launch from a voice channel, a text channel, or a DM. You build it with the <a href="https://github.com/discord/embedded-app-sdk">Discord Embedded App SDK</a>, a JavaScript kit that first launched in 2024 and is still actively shipped (v2.5.0 landed <a href="https://github.com/discord/embedded-app-sdk/releases">May 5, 2026</a>). If your game already runs in a browser, most of the work is hosting it, telling Discord where it lives, and using the SDK to get the current user and the other people in the channel.</p>
<p>The short version of how: create an application in the Discord Developer Portal, enable the Activities feature, host your web build somewhere public, add a URL mapping so Discord's proxy will serve it, and use the SDK to authenticate the player and read the participant list. That gets you a working Activity your friends can launch. Getting other people to find it is the harder half, because Discord has no &quot;browse all games&quot; store, and we'll be honest about that below.</p>
<h2>Quick reference</h2>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>What it is</strong></td>
<td>A web app (your game) running in an iframe inside Discord, launchable in voice/text channels and DMs</td>
</tr>
<tr>
<td><strong>Tech stack</strong></td>
<td>Any web build (HTML5/WebGL, Unity WebGL, Godot web export) plus the <a href="https://www.npmjs.com/package/@discord/embedded-app-sdk">Embedded App SDK</a> for auth and participants</td>
</tr>
<tr>
<td><strong>Hosting</strong></td>
<td>You host the build yourself; Discord proxies it through <code>discordsays.com</code> under a strict CSP</td>
</tr>
<tr>
<td><strong>Monetization</strong></td>
<td>Native in-app purchases (subscriptions + one-time items). Discord's platform fee is <a href="https://support-dev.discord.com/hc/en-us/articles/17299902720919-Premium-Apps-Payout">15% on your first $1M, then 30%</a>, plus payment processing</td>
</tr>
<tr>
<td><strong>Discovery</strong></td>
<td>App Launcher, App Directory profile (after verification), and mostly word of mouth. No global browse-all surface</td>
</tr>
<tr>
<td><strong>Cost to publish</strong></td>
<td>Free to create the app; you pay for your own hosting and any game servers</td>
</tr>
</tbody>
</table>
<h2>What Activities are in 2026</h2>
<p>An Activity is not a native game you upload. It's your website, running live, that Discord loads inside a sandboxed frame while people are hanging out together. The SDK sits between your page and the Discord client and handles the social plumbing: who's here, who am I, what channel are we in, and the OAuth handshake to get a token you can trust (<a href="https://docs.discord.com/developers/developer-tools/embedded-app-sdk">SDK reference</a>).</p>
<p>The reason this matters more in 2026 than at launch is that Discord has leaned hard into games as a category. Apps and Activities are now used by more than 25% of Discord's monthly active users, and by the end of 2025 there were over 10,000 game communities on the platform with more than 80 million members combined (<a href="https://discord.com/press-releases/discord-deepens-its-ability-to-drive-growth-for-games">Discord press release, GDC 2026</a>). A few Activities have found real traction inside that crowd. Death by AI from Playroom peaked around 700K daily active users and reached roughly 7 million players within weeks, with more than 70% of sessions including three or more friends. Mojiworks' Chef Showdown has been played by over 14 million people, who spend around three times longer in-game than they do on other platforms. Krunker Strike FRVR more than doubled its player base after shipping as an Activity (<a href="https://a16z.com/discord-activities-social-gaming/">a16z</a>, <a href="https://discord.com/press-releases/discord-deepens-its-ability-to-drive-growth-for-games">Discord</a>). The pattern in every one of those is social, casual, and instantly multiplayer. That's the shape of game that works here.</p>
<h2>Setting one up</h2>
<p>Start in the <a href="https://discord.com/developers/build">Discord Developer Portal</a>. Create a new application, then turn on the Activities entitlement for it under the Activities section. Your game needs to be reachable at a public HTTPS URL, so host the web build on whatever you already use (Cloudflare Pages, Vercel, Netlify, a plain static host).</p>
<p>The step that trips people up is URL mapping. Discord doesn't load your site directly. It routes every request through a proxy at <code>https://&lt;your-app-id&gt;.discordsays.com</code> to hide players' IP addresses and block known-malicious endpoints (<a href="https://docs.discord.com/developers/activities/development-guides/networking">Discord networking docs</a>). In the Developer Portal you map a path prefix to your real host, so <code>/</code> points at your game and, say, <code>/api</code> points at your backend. Anything your game fetches that you haven't mapped gets blocked. For requests that only show up at runtime, the SDK's <code>patchUrlMappings</code> API rewrites them on the fly so your dev build and your proxied production build behave the same (<a href="https://github.com/discord/embedded-app-sdk/blob/main/patch-url-mappings.md">patch-url-mappings guide</a>).</p>
<p>Once hosting and mapping are set, wire up the SDK. You call <code>discordSdk.ready()</code> to confirm the frame is connected, then <code>authorize()</code> and <code>authenticate()</code> to run the OAuth flow and get a token identifying the player (<a href="https://docs.discord.com/developers/developer-tools/embedded-app-sdk">SDK reference</a>). From there you can read the participants in the channel and build your game around them. Test it by launching the Activity in a real voice channel with the app installed. Discord's docs and community templates for <a href="https://robojs.dev/discord-activities/proxy">Robo.js</a> and vanilla setups will get you from empty repo to running frame in an afternoon.</p>
<h2>Technical constraints</h2>
<p>Because an Activity is a web page in a locked-down iframe, the constraints are the constraints of the web plus Discord's security rules. Activities run under a restrictive Content Security Policy, and all network requests must go through the <code>discordsays.com</code> proxy. A direct call to an external domain you didn't map fails with a <code>blocked:csp</code> error (<a href="https://blog.waveplay.com/discord-proxy-csp-patch/">Discord proxy notes</a>). This bites hardest when a third-party npm module quietly calls out to its own CDN or API. You either map that domain or patch the request.</p>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 300" role="img" aria-label="Discord Activity request flow: your game iframe sends every request to the discordsays.com proxy; a request to a mapped host is allowed and served, while a request to an unmapped external host is blocked with a blocked:csp error" style="width:100%;height:auto;max-width:720px;margin:1.5rem auto;display:block;border-radius:14px">
  <defs>
    <marker id="ah-g" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse"><path d="M0 0 L10 5 L0 10 z" fill="#6ee7b7"/></marker>
    <marker id="ah-r" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse"><path d="M0 0 L10 5 L0 10 z" fill="#fb7185"/></marker>
    <marker id="ah-b" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse"><path d="M0 0 L10 5 L0 10 z" fill="#c8a8ff"/></marker>
  </defs>
  <rect width="720" height="300" rx="14" fill="#0b1020"/>
  <text x="32" y="44" font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif" font-size="20" font-weight="800" fill="#e8edf5">Every request goes through the proxy</text>
  <text x="32" y="68" font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif" font-size="13" fill="#9aa7b4">Map a host and it's served. Skip the mapping and Discord's CSP blocks it.</text>
  <g font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif">
    <rect x="24" y="150" width="160" height="70" rx="12" fill="#121a31" stroke="#7dd3fc" stroke-width="1.5"/>
    <text x="104" y="181" text-anchor="middle" font-size="14" font-weight="800" fill="#e8edf5">Your game</text>
    <text x="104" y="200" text-anchor="middle" font-size="11.5" fill="#9aa7b4">iframe in Discord</text>
    <rect x="262" y="150" width="182" height="70" rx="12" fill="#121a31" stroke="#c8a8ff" stroke-width="1.5"/>
    <text x="353" y="181" text-anchor="middle" font-size="14" font-weight="800" fill="#c8a8ff">discordsays.com</text>
    <text x="353" y="200" text-anchor="middle" font-size="11.5" fill="#9aa7b4">proxy + CSP</text>
    <rect x="524" y="94" width="172" height="66" rx="12" fill="#121a31" stroke="#6ee7b7" stroke-width="1.5"/>
    <text x="610" y="122" text-anchor="middle" font-size="14" font-weight="800" fill="#6ee7b7">Your mapped host</text>
    <text x="610" y="141" text-anchor="middle" font-size="11.5" fill="#9aa7b4">served &#10003;</text>
    <rect x="524" y="210" width="172" height="66" rx="12" fill="#121a31" stroke="#fb7185" stroke-width="1.5"/>
    <text x="610" y="238" text-anchor="middle" font-size="14" font-weight="800" fill="#fb7185">Unmapped host</text>
    <text x="610" y="257" text-anchor="middle" font-size="11.5" fill="#9aa7b4">blocked:csp &#10007;</text>
    <path d="M184 185 H256" fill="none" stroke="#c8a8ff" stroke-width="2.5" marker-end="url(#ah-b)"/>
    <path d="M444 176 C486 176 486 127 518 127" fill="none" stroke="#6ee7b7" stroke-width="2.5" marker-end="url(#ah-g)"/>
    <path d="M444 194 C486 194 486 243 518 243" fill="none" stroke="#fb7185" stroke-width="2.5" marker-end="url(#ah-r)"/>
    <text x="470" y="112" font-size="11" font-weight="700" fill="#6ee7b7">mapped</text>
    <text x="470" y="270" font-size="11" font-weight="700" fill="#fb7185">unmapped</text>
  </g>
</svg>
<p>On engine compatibility, if it compiles to the web, it can be an Activity. Plain HTML5 and WebGL work. Unity's WebGL export works, with the community maintaining <a href="https://www.supertorio.dev/creating-a-unity-discord-activity/">Unity SDK wrappers</a> and templates, since Discord just proxies the served WebGL build into the frame. Godot's web export works the same way, and there are <a href="https://github.com/TheSleepyKoala/Svelcordot">ready-made templates</a> pairing Godot with a web host. Native engines that can't target the browser can't be Activities, full stop. Keep your initial load small, because a heavy WebGL download inside a chat window loses people faster than it does on a store page.</p>
<p>Mobile is part of the deal, not an afterthought. Activities run on Discord's desktop, web, and mobile clients, so design for touch and portrait from the start rather than assuming keyboard and mouse.</p>
<h2>Multiplayer and social hooks</h2>
<p>This is the actual reason to be on Discord. The platform hands you a group of friends who are already in a voice channel together, which is the exact setup most multiplayer games spend a fortune trying to manufacture. The SDK gives you the participant list and identity for free, so &quot;everyone in this call is now in my game&quot; is a few lines, not a matchmaking system.</p>
<p>You still have to run the game's real-time state yourself. The Embedded App SDK handles identity and presence, not your netcode, so you'll pair it with a game server. <a href="https://colyseus.io/blog/discord-embedded-sdk/">Colyseus wrote up how it fits behind a Discord Activity</a>, and the same options from our <a href="/guides/multiplayer-browser-game">multiplayer browser game guide</a> apply: WebSockets to ship, an authoritative server so cheating and source-of-truth stay simple. Just remember your game server is one more external host, so it needs a URL mapping like everything else.</p>
<p>Lean into the social framing. The Activities that broke out are the ones where being in a group is the point, not a mode you can toggle off. Party games, drawing games, trivia, quick competitive rounds, anything where dropping in with the people already in your call is more fun than playing alone.</p>
<h2>Monetization reality</h2>
<p>Discord supports native in-app purchases for Activities, so you can sell without kicking players out to an external checkout. The <a href="https://docs.discord.com/developers/monetization/implementing-iap-for-activities">IAP system for Activities</a> covers subscriptions (user or server) and one-time purchases, which come in durable form for permanent unlocks and consumable form for things players spend.</p>
<p>On the split, be clear-eyed. Discord's platform fee is 15% for your first $1 million in cumulative sales, then 30% after you cross that threshold, and that's before payment processing and transaction fees come out (<a href="https://support-dev.discord.com/hc/en-us/articles/17299902720919-Premium-Apps-Payout">Premium Apps Payout, effective June 6, 2024</a>). You'll see a &quot;Discord takes 10%&quot; figure floating around online. Treat it with suspicion, because the documented payout terms are the 15%/30% tiers above. You become eligible for payout once you've earned $100.</p>
<p>Two other pieces of the 2026 money picture are worth knowing even though they aren't for most indies yet. Discord's Orbs currency, which rolled out globally in <a href="https://www.tweaktown.com/news/105500/discord-rewards-users-for-engaging-with-ads-new-orbs-currency-introduced/index.html">July 2025</a>, lets players earn a soft currency by completing Quests (rewarded ad actions) and spend it in Discord's Shop, which is an advertising economy aimed at big-game marketing budgets more than at a first Activity. And at GDC 2026 Discord expanded Social Commerce, a native way to buy and gift in-game items inside servers, first shown with Marvel Rivals in <a href="https://discord.com/blog/bringing-in-game-commerce-to-discord-communities">December 2025</a>. Roughly 20% of Discord Shop purchases are gifts, and in the Marvel Rivals rollout 41% of purchases were gifts (<a href="https://discord.com/blog/building-on-the-social-layer-of-games-whats-new-from-gdc-2026">GDC 2026 recap</a>). Social Commerce is rolling out to a limited group of partners first, so it's a &quot;grow into it&quot; option, not a day-one lever.</p>
<h2>Discovery reality</h2>
<p>Here's the part to internalize before you build your plan around Discord. There is no global &quot;browse Activities&quot; store inside Discord the way Steam or a web portal has a front page (<a href="https://www.strayspark.studio/blog/discord-activities-embedded-app-sdk-indie-game-distribution-2026">StraySpark, May 14, 2026</a>). Discovery happens through servers people are already in, links shared in chat, and the App Launcher (the shapes icon at the bottom of the client) plus your App Directory profile page, which show up only after your app is verified and you've enabled Discovery in the Developer Portal (<a href="https://support-dev.discord.com/hc/en-us/articles/21204493235991-How-Can-Users-Discover-and-Play-My-Activity">Discord support</a>).</p>
<p>What that means in practice: an Activity does not manufacture an audience. If your community isn't already on Discord, publishing an Activity won't magically create one. The games that took off did it by spreading through existing friend groups, where one person launches it in a call and the whole group is instantly playing. So the growth loop you're designing for is &quot;one person shares it in a channel,&quot; not &quot;someone finds it while browsing a catalog.&quot; Build the game so that the first 30 seconds with three friends is the pitch.</p>
<h2>Is it worth it versus web portals</h2>
<p>Discord and web portals solve different problems, so the answer is usually &quot;both, for different reasons.&quot;</p>
<table>
<thead>
<tr>
<th></th>
<th>Discord Activities</th>
<th>Web portals (Poki, CrazyGames, <a href="http://itch.io">itch.io</a>)</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Audience</strong></td>
<td>Friends already in a voice call together</td>
<td>Strangers browsing for a game to try</td>
</tr>
<tr>
<td><strong>Discovery</strong></td>
<td>Word of mouth, no browse-all store</td>
<td>Front-page and algorithmic traffic</td>
</tr>
<tr>
<td><strong>Best for</strong></td>
<td>Social, casual, instantly multiplayer</td>
<td>Single-player and broad-reach web games</td>
</tr>
<tr>
<td><strong>Monetization</strong></td>
<td>Native IAP, 15%/30% fee tiers</td>
<td>Portal ad revenue share or your own IAP</td>
</tr>
<tr>
<td><strong>Effort on top of a web build</strong></td>
<td>SDK, proxy mapping, CSP, social design</td>
<td>Usually just an embed and a page</td>
</tr>
</tbody>
</table>
<p>Portals like <a href="/guides/publish-game-poki">Poki</a> and <a href="/guides/publish-game-crazygames">CrazyGames</a> send you strangers and put your game in front of people actively hunting for something new, which Discord doesn't do. Discord sends you groups of friends and a social context that makes multiplayer trivial to bootstrap, which portals don't do. If your game is single-player, a portal is the better first home. If it's the kind of thing that lights up with three friends in a call, Discord is worth the extra plumbing. The good news is that since all of these run web builds, one game can go everywhere. Ship it as a web game first, then adapt it to each surface.</p>
<h2>Common Questions</h2>
<h3>Can I publish any game on Discord?</h3>
<p>Only if it runs in a browser. A Discord Activity is a web app loaded in an iframe, so HTML5, WebGL, Unity WebGL, and Godot web exports all qualify, while native-only games that can't compile to the web do not. You build it with the Embedded App SDK, host the web build yourself at a public URL, and register it as an Activity in the Discord Developer Portal. If your game already plays in a browser, you're most of the way there.</p>
<h3>Is it free to publish a Discord Activity?</h3>
<p>Creating the application and enabling Activities in the Developer Portal costs nothing. What you pay for is your own hosting for the web build and any game servers you run for multiplayer, since Discord only proxies your site rather than hosting it. If you sell in-app purchases, Discord takes a platform fee of 15% on your first $1 million in sales and 30% after that, plus payment processing, but there's no upfront or listing fee to publish.</p>
<h3>How do players find my Discord Activity?</h3>
<p>Mostly through friends. Discord has no global &quot;browse all Activities&quot; storefront, so discovery runs on links shared in channels, someone launching it in a voice call, and, after your app is verified, your App Directory profile and the in-client App Launcher. The Activities that grew big did it by spreading inside existing friend groups, not by being found in a catalog. Plan for word-of-mouth growth and design the first minute with friends to be the hook.</p>
<h3>Do I need multiplayer to publish an Activity?</h3>
<p>No, but it's the whole reason the platform is interesting. Activities can be single-player, but Discord's advantage is that it drops your game into a voice channel where friends already are, and the SDK hands you the participant list for free. The breakout Activities are social and instantly multiplayer. A single-player game will usually do better on a web portal that sends it browsing traffic.</p>
<h3>How does Discord Activity monetization compare to portals?</h3>
<p>Discord lets you sell native in-app purchases (subscriptions and one-time items) without sending players to an external checkout, and it keeps 85% of your revenue to you up to $1 million in sales, then 70% after, before processing fees. Web portals more often pay you a share of ad revenue based on plays, or let you run your own IAP. Discord's model rewards games with committed players who buy cosmetics or unlocks, while portals reward games that pull high volumes of casual plays.</p>
<h3>What are the technical gotchas when publishing to Discord?</h3>
<p>The big two are the proxy and the CSP. Every network request from your Activity routes through <code>discordsays.com</code>, and any external domain you haven't declared as a URL mapping gets blocked, which most often bites when a dependency quietly calls its own API. You fix it by mapping the domain or patching the request with the SDK. Beyond that, keep the initial load light because it's running in a chat window, and design for touch since Activities run on mobile too.</p>
<p><BuildCta
  title="Discord Activities run web games"
  desc="Build a playable 3D browser game from one sentence, then adapt it into an Activity."
  prompt="Make a fast party game where up to four friends compete in quick rounds" /></p>
<h2>Related</h2>
<ul>
<li><a href="/guides/multiplayer-browser-game">How to Make a Multiplayer Browser Game</a> — the netcode your Activity needs behind the SDK</li>
<li><a href="/guides/publish-web-game">How to Publish a Web Game</a> — ship the web build that becomes your Activity</li>
<li><a href="/guides/publish-game-poki">How to Publish a Game on Poki</a> — a portal that sends you browsing traffic Discord doesn't</li>
<li><a href="/guides/publish-game-crazygames">How to Publish a Game on CrazyGames</a> — another web portal for broad reach</li>
<li><a href="/guides/web-game-monetization">Web Game Monetization</a> — how IAP and ad revenue on Discord stack up against portals</li>
<li><a href="/guides/co-op-game-design">Co-op Game Design</a> — designing the social hooks that make Activities spread</li>
<li><a href="/tutorials/iframe-embedding-games">Iframe embedding games</a> — the technical basis for how Discord frames your game</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How to Get Your Game on Poki (2026)]]></title>
            <link>https://app.cinevva.com/guides/publish-game-poki</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/publish-game-poki</guid>
            <pubDate>Fri, 17 Jul 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Poki is invite-only and ad-funded. Here's how to submit your web game, pass the Web Fit Test, meet the tech requirements, and read the revenue share.]]></description>
            <content:encoded><![CDATA[<h1>How to Get Your Game on Poki (2026)</h1>
<p><em>Last updated: July 2026.</em></p>
<p>To get your game on Poki, you submit it through the <a href="https://developers.poki.com/">Poki for Developers</a> portal, where a human team reviews every game and decides whether it fits the platform. There's no open upload button and no &quot;publish now.&quot; You create a developer account, upload an HTML5 build that meets Poki's technical requirements (an initial download under 8 MB, a 16:9 canvas that scales to desktop and mobile, and the Poki SDK wired in correctly), then your game moves through a staged test funnel: a Player Fit Test, a Web Fit Test, and a final review before global release.</p>
<p>Poki is a curated web-game platform, not a storefront, so getting in is closer to pitching a publisher than uploading to <a href="http://itch.io">itch.io</a>. The upside is that Poki does the distribution for you. It welcomed <a href="https://markets.financialcontent.com/stocks/article/accwirecq-2026-3-20-poki-announces-milestone-of-625-million-players-without-raising-external-funding">625 million players in 2025</a> and counts <a href="https://www.superjumpmagazine.com/what-pokis-100-million-monthly-gamers-reveal-about-the-future-of-browser-games/">over 100 million monthly players</a>, all reached by a 65-person team that has never taken outside investment. You bring a good web game that holds players in the first three minutes, and Poki puts it in front of an audience the size of a console network. This guide walks through how the submission actually works, what the tech bar is, how you get paid, and why games get rejected.</p>
<h2>Quick Reference</h2>
<table>
<thead>
<tr>
<th></th>
<th>Poki</th>
</tr>
</thead>
<tbody>
<tr>
<td>Submission model</td>
<td>Curated, invite-style. Every game is human-reviewed. No open upload</td>
</tr>
<tr>
<td>Cost to submit</td>
<td>Free</td>
</tr>
<tr>
<td>Revenue model</td>
<td>Ad-based revenue share. <a href="https://developers.poki.com/guide/monetization">100% of revenue on traffic you bring, 50/50 on traffic Poki brings</a></td>
</tr>
<tr>
<td>Payout method</td>
<td>Wire transfer or PayPal, in your chosen currency</td>
</tr>
<tr>
<td>Tech</td>
<td>HTML5. Initial download <a href="https://sdk.poki.com/new-requirements">under 8 MB</a>, 16:9 canvas, Poki SDK required</td>
</tr>
<tr>
<td>Review funnel</td>
<td>Player Fit Test, then Web Fit Test (<a href="https://sdk.poki.com/web-fit-test">about 3-5 days</a>), then final review</td>
</tr>
<tr>
<td>Time to global release</td>
<td>Roughly 2-3 weeks of <a href="https://sdk.poki.com/releaseprocess">soft release</a> after you pass testing</td>
</tr>
</tbody>
</table>
<h2>What Poki is, and why it's worth the effort</h2>
<p>Poki is the biggest name in web games. It runs entirely in the browser, no download and no app store, and it's built around casual titles people play in short bursts. The scale is the reason to care. Poki announced it hit <a href="https://markets.financialcontent.com/stocks/article/accwirecq-2026-3-20-poki-announces-milestone-of-625-million-players-without-raising-external-funding">625 million players in 2025</a> and clears <a href="https://www.superjumpmagazine.com/what-pokis-100-million-monthly-gamers-reveal-about-the-future-of-browser-games/">over 100 million monthly players</a>, which puts it in the same conversation as PlayStation Network. The games that win there are big: Subway Surfers has passed a billion plays on the platform, and titles like Stickman Hook (over 500 million plays) and Monkey Mart (around 300 million) show what a hit web game looks like, per <a href="https://www.gamedeveloper.com/business/the-huge-hidden-web-game-market-no-one-talks-about-and-how-to-get-in-">Game Developer</a>.</p>
<p>The trade-off is control. On <a href="http://itch.io">itch.io</a> you publish yourself and market yourself. On Poki, the team curates the catalog and handles distribution, so you're trading independence for reach. That model only works if your game clears their bar, which is what the rest of this guide is about.</p>
<h2>The submission process, step by step</h2>
<p>You start at <a href="https://developers.poki.com/">Poki for Developers</a>, the portal where your team info and games live. You create an account and submit your game through the form. Poki describes itself as hand-curated: the team checks every submission and decides whether it's a fit, so a &quot;no&quot; or silence is a normal outcome, not a bug.</p>
<p>If Poki wants to move forward, your game runs through a staged funnel documented on the <a href="https://sdk.poki.com/what-is-p4d">Poki for Developers site</a>: you add your game, gather early player feedback, then hit the Player Fit Test, the Web Fit Test, and a final Poki review. Each stage exists to answer one question with real players before Poki spends its traffic on you: do people actually keep playing?</p>
<p>The Player Fit Test is the first real gate. One developer who documented his path to publishing describes the bar as <a href="https://kuyimobile.substack.com/p/my-game-production-process-and-how">125 of 500 players (25%) playing for at least 3 minutes</a>. If enough players stick, you advance to the Web Fit Test, which runs the game past a larger pool for <a href="https://sdk.poki.com/web-fit-test">about 3 to 5 days per Poki's docs</a> (some developers report closer to a week). Clear that and Poki reaches out to take you toward release.</p>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 380" role="img" aria-label="The Poki submission funnel: submit via the developer portal, then the Player Fit Test where 125 of 500 testers (25 percent) must play 3 or more minutes, then a 3 to 5 day Web Fit Test, then a 2 to 3 week soft release aiming for at least one ad per daily active user, then global release with a roughly 2 week featured push" style="width:100%;height:auto;max-width:720px;margin:1.5rem auto;display:block;border-radius:14px">
  <rect width="720" height="380" rx="14" fill="#0b1020"/>
  <text x="32" y="44" font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif" font-size="20" font-weight="800" fill="#e8edf5">The Poki submission funnel</text>
  <text x="32" y="68" font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif" font-size="13" fill="#9aa7b4">Every stage is a gate. Real players decide before Poki spends its traffic.</text>
  <g font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif">
    <g transform="translate(80,92)">
      <rect width="600" height="42" rx="9" fill="#7dd3fc"/>
      <text x="18" y="19" font-size="14" font-weight="800" fill="#0b1020">1 · Submit via the developer portal</text>
      <text x="18" y="35" font-size="11.5" fill="#0b1020" fill-opacity="0.72">Create an account, upload the HTML5 build. Human-reviewed, no open upload.</text>
    </g>
    <g transform="translate(80,148)">
      <rect width="500" height="42" rx="9" fill="#c8a8ff"/>
      <text x="18" y="19" font-size="14" font-weight="800" fill="#0b1020">2 · Player Fit Test</text>
      <text x="18" y="35" font-size="11.5" fill="#0b1020" fill-opacity="0.72">125 of 500 testers (25%) must play 3+ minutes.</text>
    </g>
    <g transform="translate(80,204)">
      <rect width="410" height="42" rx="9" fill="#a9b4ff"/>
      <text x="18" y="19" font-size="14" font-weight="800" fill="#0b1020">3 · Web Fit Test</text>
      <text x="18" y="35" font-size="11.5" fill="#0b1020" fill-opacity="0.72">Larger player pool, runs 3–5 days.</text>
    </g>
    <g transform="translate(80,260)">
      <rect width="340" height="42" rx="9" fill="#f0abfc"/>
      <text x="18" y="19" font-size="14" font-weight="800" fill="#0b1020">4 · Soft release</text>
      <text x="18" y="35" font-size="11.5" fill="#0b1020" fill-opacity="0.72">2–3 weeks. Aim for ≥1 ad per DAU.</text>
    </g>
    <g transform="translate(80,316)">
      <rect width="300" height="42" rx="9" fill="#6ee7b7"/>
      <text x="18" y="19" font-size="14" font-weight="800" fill="#0b1020">5 · Global release</text>
      <text x="18" y="35" font-size="11.5" fill="#0b1020" fill-opacity="0.72">~2-week featured push.</text>
    </g>
  </g>
</svg>
<h2>Soft release and going global</h2>
<p>Passing the fit tests doesn't drop you straight onto the homepage. Poki runs a soft release first. According to the <a href="https://sdk.poki.com/releaseprocess">release process docs</a>, soft release typically takes one to two weeks to schedule and then runs for around two to three weeks. During that window your game shows on relevant category pages but not the homepages, and you watch a specific set of numbers in the dashboard: conversion to play, engagement, errors, and monetization, where Poki says to aim for at least one ad per daily active user with a healthy mix of midroll and rewarded video.</p>
<p>Soft release is where you patch. You can push new versions and A/B test while the game is live to a smaller audience, tuning retention and ad pacing before the big push. Once your soft-release metrics are strong, the game goes to global release, and Poki's promotion system features it across localized homepages, category pages, and game pages, with what the docs call a significant push for around two weeks plus a &quot;new&quot; fire icon.</p>
<h2>Technical requirements you have to hit</h2>
<p>Poki's <a href="https://sdk.poki.com/new-requirements">requirements page</a> is specific, and missing these is a fast way to get bounced. The headline number is size: target an initial download under 8 MB. Web players won't wait through a heavy load, and this is the single constraint most console or mobile ports fail.</p>
<p>Your game has to fit a 16:9 canvas and scale cleanly across devices. Poki lists the proportional dimensions as 640x360, 836x470, or 1031x580, and your game must cover the full canvas on desktop, mobile, and tablet. On phones it should fill the screen in portrait, landscape, or both. Tablets should get the mobile control scheme, not the desktop one.</p>
<p>You have to integrate the Poki SDK correctly, and the SDK events aren't optional decoration. <code>gameplayStart()</code> fires on the player's first input, never on load, and <code>gameplayStop()</code> fires on any interruption like a pause, a menu, or the end of a level. These events can't fire back to back, and no ad events should fire during a midroll or rewarded video. Poki uses these signals to place ads and to measure the fit tests, so getting them wrong breaks both.</p>
<p>A few more that trip people up. Poki <a href="https://sdk.poki.com/new-requirements">blocks all external requests by default</a>, so you have to bundle everything: no Google Fonts, no asset CDNs, no external code libraries loaded at runtime. Only Poki's own ad system is allowed, so strip any other ad or tracking SDK (external trackers need Poki's approval first). Your game must work in incognito mode, which means wrapping <code>localStorage</code> access in try/catch so a blocked storage call doesn't crash the game. And for global release you need both a static and an animated thumbnail. Before you submit, remove all debug code, dev tools, and test artifacts.</p>
<p>On engines, Poki isn't picky about how you build as long as it exports clean HTML5. The <a href="https://sdk.poki.com/faq">FAQ</a> lists SDK support for HTML5, Defold, Unity, GameMaker, Phaser 3, Godot, Cocos, Construct 3, and GDevelop, and there's a tool to convert old Flash games to HTML5. Unity works but is the hardest fit for the 8 MB budget: you'll need to follow Poki's optimization guidance and export a WASM build to have a chance at the size limit.</p>
<p>If you're building with Cinevva, this part is mostly handled for you. Cinevva exports a self-contained HTML5 build with assets bundled in, which is the shape Poki wants, so the work shifts from wrestling a heavy engine down to size toward wiring the SDK events and tuning retention.</p>
<h2>How developers get paid</h2>
<p>Poki's model is <a href="https://developers.poki.com/guide/monetization">entirely ad-based</a>, which means you never touch payment integration or in-app purchases. You earn a share of ad revenue, and the split depends on where the player came from. If a player reaches your game directly, through a bookmark, a search, social media, or your own community, you keep 100% of that player's revenue. If a player comes to your game through <a href="http://Poki.com">Poki.com</a> or a Poki marketing effort, Poki splits the revenue 50/50 with you. That structure quietly rewards bringing your own audience: traffic you drive is worth twice as much to you as traffic Poki drives.</p>
<p>Poki pays out by wire transfer or PayPal, and you can set your billing details and preferred currency in the developer portal. Beyond straight revenue share, Poki also does licensing deals, paying some developers upfront or on an ongoing basis to keep a game exclusively or primarily on the platform. Those deals aren't publicly standardized and tend to be reserved for games Poki wants to feature heavily.</p>
<p>Set your expectations with real numbers. For a first web game, a realistic range is <a href="https://indiegamebusiness.com/web-gaming-for-indie-developers/">roughly $500 to $3,000 per month</a>, and earnings depend heavily on genre, how often you update, and how long the game has been live. That's meaningfully less than a Steam hit can make in a burst, but web revenue is steadier and compounds: session time drives ad revenue, so a game with high replay value keeps earning long after launch, and most developers who do well on web do it across several games rather than one.</p>
<h2>Poki vs the other web platforms</h2>
<p>Poki isn't the only place to put a browser game, and the right choice depends on how much you value reach versus control.</p>
<table>
<thead>
<tr>
<th>Platform</th>
<th>Getting in</th>
<th>Revenue model</th>
<th>Best for</th>
</tr>
</thead>
<tbody>
<tr>
<td>Poki</td>
<td>Curated, human-reviewed, invite-style</td>
<td>Ad share: <a href="https://developers.poki.com/guide/monetization">100% direct traffic, 50/50 Poki traffic</a></td>
<td>Casual games chasing the biggest web audience</td>
</tr>
<tr>
<td>CrazyGames</td>
<td>Curated, reviewed before going live</td>
<td>Ad revenue share</td>
<td>Casual and mid-core web games, similar reach to Poki</td>
</tr>
<tr>
<td><a href="http://itch.io">itch.io</a></td>
<td>Open, no gatekeeping</td>
<td>You set the cut (<a href="https://itch.io/docs/creators/pricing">~10% default</a>, pay-what-you-want or fixed)</td>
<td>Indie, experimental, and jam games you want to own end to end</td>
</tr>
<tr>
<td>Newgrounds</td>
<td>Open community submission</td>
<td>Ad revenue sharing plus supporter tips</td>
<td>Community-driven and creative shorts with a built-in audience</td>
</tr>
</tbody>
</table>
<p>The clean way to think about it: Poki and CrazyGames are curated, ad-funded, and huge, so you trade independence for distribution. <a href="http://itch.io">itch.io</a> and Newgrounds are open, so anyone can publish, but you do your own marketing. Many web developers submit to Poki and CrazyGames for reach while keeping an <a href="http://itch.io">itch.io</a> page they fully control. For the full <a href="http://itch.io">itch.io</a> playbook, see our <a href="/guides/itch-io-launch-guide">itch.io launch guide</a>.</p>
<h2>What actually performs on Poki</h2>
<p>Poki is casual-first. The games that scale are quick to understand, playable in short sessions, mobile-friendly, and high on replay value. That last point matters more than it sounds: because you earn on ad impressions over session time, a game people come back to earns far more than a one-and-done experience with the same peak audience. Simple arcade loops, <code>.io</code>-style multiplayer, dress-up and customization games, and short-run action titles all fit the mold. The audience also skews younger and more mobile than a typical Steam crowd, so one-thumb controls and instant restart beat deep, commitment-heavy design.</p>
<h2>Common rejection reasons</h2>
<p>Most rejections come down to retention and polish, not taste. The biggest one is <a href="https://indiegamebusiness.com/web-gaming-for-indie-developers/">weak player retention in the first three minutes</a>, which is exactly what the Player Fit Test measures, so if your opening is slow or confusing you'll fail the gate before a human even weighs in. After that: builds that blow past the <a href="https://sdk.poki.com/new-requirements">8 MB initial download</a>, poor mobile compatibility, games that need complex controls or a long time commitment, and anything that feels unfinished or unpolished. IP problems get you rejected too, since Poki reviews games for both technical fit and rights. Fix retention and size first, because those are the two that kill submissions before anything else.</p>
<p><BuildCta
  title="Build something you could pitch to Poki"
  desc="Cinevva turns one sentence into a playable HTML5 web game you can export, wire the Poki SDK into, and submit."
  prompt="Make a one-thumb arcade game with a 10-second loop and instant restart" /></p>
<h2>Common Questions</h2>
<h3>How do I submit my game to Poki?</h3>
<p>You submit through the <a href="https://developers.poki.com/">Poki for Developers portal</a> by creating a developer account and sending your game through the submission form. Poki is hand-curated, so a real team reviews every submission and decides whether it fits before anything goes live. If they're interested, your game runs through a test funnel (Player Fit Test, then Web Fit Test, then a final review) so real players can prove it holds attention before Poki commits its traffic. There's no open upload, so treat it more like pitching a publisher than posting to a storefront.</p>
<h3>Is Poki free to publish on, and how selective is it?</h3>
<p>Submitting is free, but Poki is selective. The team reviews every game and runs it past real players in staged tests, so it's not an open marketplace where anything gets published. The main gate is retention: a widely cited developer account puts the Player Fit Test bar at <a href="https://kuyimobile.substack.com/p/my-game-production-process-and-how">25% of testers playing at least three minutes</a>. Games that are unpolished, too heavy, hard to control, or weak on mobile tend not to make it through, so polish and a strong opening minute matter more than a novel idea.</p>
<h3>How much money can you make on Poki?</h3>
<p>Poki pays an ad-revenue share, and a realistic range for a first web game is <a href="https://indiegamebusiness.com/web-gaming-for-indie-developers/">about $500 to $3,000 per month</a>, depending on genre, update cadence, and how long the game has been live. The split favors developers who bring their own audience: you keep <a href="https://developers.poki.com/guide/monetization">100% of the revenue from traffic you drive and 50% from traffic Poki drives</a>. It's less than a breakout Steam launch, but it's steadier, and because earnings track session time, a high-replay game keeps paying long after release.</p>
<h3>What are Poki's technical requirements?</h3>
<p>Your game has to be HTML5 with an <a href="https://sdk.poki.com/new-requirements">initial download under 8 MB</a>, fit a 16:9 canvas that scales across desktop, mobile, and tablet, and integrate the Poki SDK with <code>gameplayStart()</code> and <code>gameplayStop()</code> events fired correctly. Poki blocks external requests by default, so bundle all your fonts, assets, and libraries rather than loading them at runtime, and use only Poki's ad system. The game must also work in incognito mode (wrap <code>localStorage</code> in try/catch) and ship with both static and animated thumbnails for global release.</p>
<h3>How long does it take to get a game live on Poki?</h3>
<p>Plan for weeks, not days. After you pass the Player Fit and Web Fit tests (the <a href="https://sdk.poki.com/web-fit-test">Web Fit Test alone runs about 3-5 days</a>), your game enters a soft release that <a href="https://sdk.poki.com/releaseprocess">typically takes one to two weeks to schedule and runs two to three weeks</a>. Only after your soft-release metrics look strong does the game go to global release with a promotional push. The whole path from submission to a featured global launch is usually a month or more.</p>
<h3>What kinds of games do best on Poki?</h3>
<p>Casual games with high replay value. Poki's audience plays in short bursts and skews mobile, so quick-to-grasp arcade loops, <code>.io</code>-style games, dress-up and customization titles, and short-run action games fit best. Because you earn on ad impressions over session time, a game people return to daily out-earns a one-time experience with the same audience. Complex controls, long time commitments, and heavy builds work against you.</p>
<h2>Related</h2>
<ul>
<li><a href="/guides/publish-web-game">Publish a Web Game: The Complete Guide</a> — every platform and path for shipping a browser game</li>
<li><a href="/guides/publish-game-crazygames">How to Get Your Game on CrazyGames</a> — the other big curated web platform, submitted side by side with Poki</li>
<li><a href="/guides/web-game-monetization">Web Game Monetization</a> — ad revenue, IAP, and licensing across web platforms</li>
<li><a href="/guides/publish-game-discord-activities">How to Publish a Game on Discord Activities</a> — another built-in web audience to ship into</li>
<li><a href="/guides/itch-io-launch-guide">How to Launch Your Game on itch.io</a> — the open alternative you fully control</li>
<li><a href="/tutorials/ship-web-game-fast">Ship a Web Game That Loads Fast</a> — hitting Poki's 8 MB budget and fast first load</li>
<li><a href="/guides/casual-games-trends-2026">Casual Games Trends in 2026</a> — what the data says about the games Poki's audience wants</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Web Game Monetization: What the Data Actually Says (2026)]]></title>
            <link>https://app.cinevva.com/guides/web-game-monetization</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/web-game-monetization</guid>
            <pubDate>Fri, 17 Jul 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[What web games really earn in 2026, from portal revenue shares like Poki and itch.io to real ad CPMs, license prices, and honest earnings ranges, all sourced.]]></description>
            <content:encoded><![CDATA[<h1>Web Game Monetization: What the Data Actually Says (2026)</h1>
<p><em>Last updated: September 2026.</em></p>
<p>Ask &quot;how do web games make money&quot; and you'll get a dozen confident answers, most of them a pitch for whatever platform the author sells. The honest version is messier and more useful. Web-game money comes from four places (portal ad revenue-share, one-time licensing deals, in-game purchases, and direct sales) and the amounts range from a few euros a year to seven figures for the tiny handful of games at the top. We pulled the current terms straight from the platforms (<a href="https://developers.poki.com/guide/working-with-poki">Poki</a>, <a href="https://crazygames.indiehero.io/cggmwj-jg/">CrazyGames</a>, <a href="https://itch.io/updates/introducing-open-revenue-sharing">itch.io</a>, <a href="https://gamemonetize.com/developers">GameMonetize</a>), the 2026 ad benchmarks, and a real developer earnings breakdown, and left out every number we couldn't source. Here's what's actually true.</p>
<p>The short version: most web games make money by giving them away free on a portal like Poki or CrazyGames and splitting the ad revenue, where developers keep roughly 50% to 80% depending on the platform and traffic source, per <a href="https://developers.poki.com/guide/working-with-poki">platform docs</a>. A second path is licensing your finished HTML5 game to portals for a flat fee, typically <a href="https://playgama.com/blog/main/10-ways-to-monetize-html5-games-that-actually-work-in-2026/">$300 to $800 non-exclusive and $5,000 or more exclusive</a>. A third is selling in-game purchases or the whole game direct, where <a href="http://itch.io">itch.io</a> lets you keep <a href="https://itch.io/updates/introducing-open-revenue-sharing">90% by default</a>. The numbers are brutal at the median (most paid games on <a href="http://itch.io">itch.io</a> earn <a href="https://generalistprogrammer.com/tutorials/how-to-make-money-on-itchio-indie-game-guide">under $50 a month</a>) and huge at the top (Poki's best studios pull <a href="https://app.dealroom.co/news/feed/poki-hits-1b-monthly-plays-as-developer-first-model-boosts-top-studio-revenues-tenfold-1">up to €1 million a year</a>). A well-performing casual game on a major portal lands somewhere in the <a href="https://www.abratabia.com/web-game-monetization/licensing-to-portals.php">$200 to $2,000 a month</a> middle.</p>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 350" role="img" aria-label="Developer revenue share by web-game platform in 2026: itch.io 90 percent, Playgama Bridge 80 percent, CrazyGames in-game purchases 70 percent, CrazyGames ads 60 percent, Poki 50 percent, GameMonetize 45 percent" style="width:100%;height:auto;max-width:720px;margin:1.5rem auto;display:block;border-radius:14px">
  <rect width="720" height="350" rx="14" fill="#0b1020"/>
  <text x="32" y="44" font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif" font-size="20" font-weight="800" fill="#e8edf5">What each platform lets you keep</text>
  <text x="32" y="68" font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif" font-size="13" fill="#9aa7b4">Developer share of revenue, mid-2026. Source: platform docs and published jam terms.</text>
  <g font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif" font-size="13" font-weight="700">
    <text x="205" y="118" text-anchor="end" fill="#e8edf5">itch.io (default)</text>
    <rect x="220" y="102" width="414" height="24" rx="5" fill="#6ee7b7"/>
    <text x="644" y="119" font-size="13" font-weight="800" fill="#6ee7b7">90%</text>
    <text x="205" y="158" text-anchor="end" fill="#e8edf5">Playgama Bridge</text>
    <rect x="220" y="142" width="368" height="24" rx="5" fill="#7dd3fc"/>
    <text x="598" y="159" font-size="13" font-weight="800" fill="#7dd3fc">80%</text>
    <text x="205" y="198" text-anchor="end" fill="#e8edf5">CrazyGames · purchases</text>
    <rect x="220" y="182" width="322" height="24" rx="5" fill="#7dd3fc"/>
    <text x="552" y="199" font-size="13" font-weight="800" fill="#7dd3fc">70%</text>
    <text x="205" y="238" text-anchor="end" fill="#e8edf5">CrazyGames · ads</text>
    <rect x="220" y="222" width="276" height="24" rx="5" fill="#a9b4ff"/>
    <text x="506" y="239" font-size="13" font-weight="800" fill="#a9b4ff">60%</text>
    <text x="205" y="278" text-anchor="end" fill="#e8edf5">Poki</text>
    <rect x="220" y="262" width="230" height="24" rx="5" fill="#c8a8ff"/>
    <text x="460" y="279" font-size="13" font-weight="800" fill="#c8a8ff">50%</text>
    <text x="516" y="279" font-size="11.5" font-weight="600" fill="#9aa7b4">100% on your own traffic</text>
    <text x="205" y="318" text-anchor="end" fill="#e8edf5">GameMonetize</text>
    <rect x="220" y="302" width="207" height="24" rx="5" fill="#fb7185"/>
    <text x="437" y="319" font-size="13" font-weight="800" fill="#fb7185">45%</text>
  </g>
</svg>
<h2>The default web-game business is free-to-play plus ad revenue share</h2>
<p>The dominant model on the open web is dead simple. You put your game on a portal for free, players play it in the browser, the portal shows ads around and inside it, and you split the money. There's no upfront fee and no store gatekeeping. The portal handles the ad tech, the traffic, and the payouts, and you get a cut.</p>
<p>The cut is where platforms differ. <a href="https://developers.poki.com/guide/working-with-poki">Poki</a> runs a straight 50/50 split, with one important twist: if a player reaches your game through <a href="http://Poki.com">Poki.com</a> or Poki's own marketing, you split the revenue in half, but if they come through your own bookmarks, search, social media, or community, you keep 100%. That's a deliberate nudge to bring your own audience. One nuance Poki's <a href="https://developers.poki.com/guide/revenue-deal-types">partnership page</a> added: the revenue share applies to web-exclusive deals, non-exclusive placements are a one-time flat license fee with no share at all, and the exact figures are set per game in your agreement. CrazyGames doesn't state a split in its main developer docs, but the terms it published for its <a href="https://crazygames.indiehero.io/cggmwj-jg/">2026 GameMaker web jam</a> list developers keeping 60% of in-game advertising revenue and 70% of in-game purchase revenue, with payouts once you clear the <a href="https://docs.crazygames.com/faq/">€100 minimum</a>. GameMonetize sits at the low end with a <a href="https://gamemonetize.com/developers">45% share</a>, while newer distribution layers like Playgama Bridge advertise <a href="https://playgama.com/blog/main/10-ways-to-monetize-html5-games-that-actually-work-in-2026/">80%</a>. The spread is real, so the platform you pick is a revenue decision, not just a distribution one.</p>
<p>Scale is the reason these splits are worth anything. Poki crossed <a href="https://app.dealroom.co/news/feed/poki-hits-1b-monthly-plays-as-developer-first-model-boosts-top-studio-revenues-tenfold-1">1 billion monthly plays</a> in 2026 with over 600 independent studios in its catalog, and CrazyGames reports <a href="https://gamesbeat.com/crazygames-hits-35m-users-for-browser-games-and-launches-social-multiplayer-features/">more than 300 million gameplays a month</a> across more than 50 million monthly players, per its developer portal. Aggregators go wider still: <a href="https://gamedistribution.com/developers/partnership/">GameDistribution</a> syndicates to 4,000-plus portals reaching 350 million monthly users, and its <a href="https://static.gamedistribution.com/terms/developer.html">developer agreement</a> fixes your share at 33% of net revenue from ads and in-game purchases, paid within 60 days of the monthly report once you clear EUR 100. Y8, one of the oldest portals still taking submissions, pays <a href="https://developer.y8.com/">50% of in-game ad revenue</a> under its managed partnership, with a $100 PayPal or $500 bank-transfer payout minimum. A single good game can rack up numbers that are hard to picture. In the web-game market rundown <a href="https://www.gamedeveloper.com/business/the-huge-hidden-web-game-market-no-one-talks-about-and-how-to-get-in-">Game Developer published</a>, Monkey Mart hit 300 million plays, Level Devil 83 million, and Stickman Hook 574 million, all on games that cost under $10,000 and took one to three months to build.</p>
<h2>What ad rates web games actually clear</h2>
<p>Revenue share only matters if you know the underlying ad rates, and this is where web-game data gets thin, because most published benchmarks are for mobile apps. The clearest web-specific figures come from <a href="https://playgama.com/blog/main/10-ways-to-monetize-html5-games-that-actually-work-in-2026/">Playgama's 2026 monetization breakdown</a>: rewarded video, the highest-paying format, clears roughly $15 to $28 eCPM in the United States, $8 to $15 in the EU, and just $1 to $3 in tier-3 markets like India and Brazil. In-game &quot;intrinsic&quot; ads (brand placement baked into the scene) run $2 to $6. Those are the gross rates before your revenue split, so a US-heavy audience on Poki nets you half of that top number and a global audience nets you a blend weighted toward the low end.</p>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 300" role="img" aria-label="Web rewarded video eCPM by region in 2026: United States 15 to 28 dollars, European Union 8 to 15 dollars, tier-3 markets 1 to 3 dollars" style="width:100%;height:auto;max-width:720px;margin:1.5rem auto;display:block;border-radius:14px">
  <rect width="720" height="300" rx="14" fill="#0b1020"/>
  <text x="32" y="44" font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif" font-size="20" font-weight="800" fill="#e8edf5">What rewarded video pays on the web</text>
  <text x="32" y="68" font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif" font-size="13" fill="#9aa7b4">eCPM range for rewarded video on web, before revenue split. Source: Playgama, 2026.</text>
  <g font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif" font-size="12" fill="#5b6472">
    <line x1="180" y1="96" x2="180" y2="248" stroke="#ffffff" stroke-opacity="0.14"/>
    <text x="180" y="268" text-anchor="middle">$0</text>
    <text x="347" y="268" text-anchor="middle">$10</text>
    <text x="513" y="268" text-anchor="middle">$20</text>
    <text x="680" y="268" text-anchor="middle">$30</text>
  </g>
  <g font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif" font-size="14" font-weight="700">
    <text x="165" y="126" text-anchor="end" fill="#e8edf5">United States</text>
    <rect x="430" y="110" width="217" height="26" rx="6" fill="#c8a8ff"/>
    <text x="538" y="128" text-anchor="middle" font-size="12.5" font-weight="800" fill="#0b1020">$15–$28</text>
    <text x="165" y="176" text-anchor="end" fill="#e8edf5">European Union</text>
    <rect x="313" y="160" width="117" height="26" rx="6" fill="#7dd3fc"/>
    <text x="371" y="178" text-anchor="middle" font-size="12.5" font-weight="800" fill="#0b1020">$8–$15</text>
    <text x="165" y="226" text-anchor="end" fill="#e8edf5">Tier-3 (IN, BR)</text>
    <rect x="197" y="210" width="34" height="26" rx="6" fill="#fb7185"/>
    <text x="252" y="228" font-size="12.5" font-weight="800" fill="#fb7185">$1–$3</text>
  </g>
</svg>
<p>The rate you get also depends on the format, and here every source agrees on the ranking. Rewarded video (the opt-in &quot;watch an ad for a reward&quot; placement) pays the most, often around twice what an interstitial does, per <a href="https://www.applixir.com/blog/the-complete-guide-to-ecpm-optimization-for-web-games/">AppLixir's web-games guide</a>. Interstitials that play at natural breaks come next, and banners scrape the bottom at pennies per thousand impressions in most regions. That ordering is why CrazyGames and Poki both push rewarded and mid-game video in their SDKs and treat banners as an afterthought.</p>
<p>Google reopened its web-ad program too. The old AdSense for Games has become <a href="https://support.google.com/adsense/answer/9959170">H5 Games Ads</a>, a by-application product that serves interstitial and rewarded ads through an Ad Placement API. It's not automatic (approval depends on eligibility), but it gives web developers a first-party ad option outside the big portals. Google's own case study cites a developer seeing a 20% revenue lift and a 50% eCPM increase within three months of switching to it.</p>
<h2>Licensing your game for a flat fee</h2>
<p>Not everyone wants to bet on revenue share. The older model, which sites like FGL pioneered years ago, is licensing: you sell the right to run your finished HTML5 game to a portal or brand for a one-time fee. The buyer gets the game, you get paid up front and move on. This still exists through marketplaces like MarketJS, GameDistribution, and CodeThisLab.</p>
<p>Prices are all over the map because &quot;a license&quot; means different things. <a href="https://playgama.com/blog/main/10-ways-to-monetize-html5-games-that-actually-work-in-2026/">Playgama's 2026 figures</a> put non-exclusive licenses (the same game sold to many buyers) at roughly $300 to $800 per platform, with exclusive deals (the buyer owns it outright and it's pulled from the catalog) starting around $5,000 and climbing past $25,000 for a polished title. An independent write-up on <a href="https://www.abratabia.com/web-game-monetization/licensing-to-portals.php">licensing to portals</a> lands in the same neighborhood, pegging flat fees at &quot;a few hundred dollars for simple games to $5,000 or more&quot; for high-quality ones. The tradeoff is straightforward. Licensing pays now and caps your upside, revenue share pays later and doesn't.</p>
<h2>In-game purchases and direct sales on the open web</h2>
<p>Selling things inside a browser game used to be a headache. It's gotten easier. On the purchase side, CrazyGames runs an <a href="https://docs.crazygames.com/resources/ad-monetization-guide/">invite-only in-game purchase program through Xsolla</a> for high-performing titles, paying developers <a href="https://crazygames.indiehero.io/cggmwj-jg/">70% of purchase revenue</a>. Newer distribution layers like Playgama Bridge advertise full IAP support with local payment gateways baked in. If you ship the same build as a Discord Activity, items sell through Discord's Premium Apps system, where Discord's <a href="https://support-dev.discord.com/hc/en-us/articles/23810643331735-Premium-Apps-Required-Support-for-Monetizing-Apps">developer support page</a> lists a 15% platform fee for smaller teams and 30% above a $1 million lifetime revenue threshold. Outside the portals, you can wire up Stripe or Xsolla checkout on your own site and keep nearly everything after processing fees.</p>
<p>The purest version of &quot;keep the money&quot; is <a href="http://itch.io">itch.io</a>. It's a storefront, not an ad portal, and its <a href="https://itch.io/updates/introducing-open-revenue-sharing">open revenue sharing</a> model lets you set the platform's cut yourself, anywhere from 0% to 100%, with a 10% default. On a $10 sale at the default rate, after payment processing of about <a href="https://generalistprogrammer.com/tutorials/how-to-make-money-on-itchio-indie-game-guide">2.9% plus $0.30</a> and <a href="http://itch.io">itch.io</a>'s dollar, you keep $8.41. Compare that to the 30% that Steam, the App Store, and Google Play take and you can see why <a href="http://itch.io">itch.io</a> is the default for developers who want to charge for a web build directly. Newgrounds runs a similar creator-friendly setup, paying out its ad revenue share once you clear <a href="https://newgrounds.fandom.com/wiki/Revenue_Sharing">$50 via PayPal or check</a>, and in 2026 it's leaning harder on its Supporter membership (raising the price to <a href="https://newgrounds.wiki.gg/wiki/Supporter_Status">$5 a month in April 2026</a>) to fund a healthier payout pool.</p>
<h2>The master comparison</h2>
<p>Here's every major web-game money path in one place. Treat the developer-share column as the headline rate before your traffic mix and geography adjust it.</p>
<table>
<thead>
<tr>
<th>Platform / model</th>
<th>How you earn</th>
<th>Developer share</th>
<th>Notable terms</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="https://developers.poki.com/guide/working-with-poki">Poki</a></td>
<td>Free-to-play, ad revenue share</td>
<td>50% (100% on your own traffic)</td>
<td>No upfront fee, curated catalog, 1B+ monthly plays</td>
</tr>
<tr>
<td><a href="https://crazygames.indiehero.io/cggmwj-jg/">CrazyGames</a></td>
<td>Ad revenue share + invite-only IAP</td>
<td>60% ads, 70% purchases (per 2026 jam terms, not in main docs)</td>
<td>€100 payout minimum, Xsolla IAP for top titles</td>
</tr>
<tr>
<td><a href="https://gamemonetize.com/developers">GameMonetize</a></td>
<td>Ad revenue share via SDK</td>
<td>45%</td>
<td>Wide syndication, monthly PayPal/USDT payouts</td>
</tr>
<tr>
<td><a href="https://playgama.com/blog/main/10-ways-to-monetize-html5-games-that-actually-work-in-2026/">Playgama Bridge</a></td>
<td>Ad revenue share + IAP</td>
<td>80%</td>
<td>Local payment gateways, higher stated share</td>
</tr>
<tr>
<td><a href="https://static.gamedistribution.com/terms/developer.html">GameDistribution</a></td>
<td>Syndicated ad revenue share + IAP</td>
<td>33% of net revenue</td>
<td>4,000+ portals, 350M monthly reach, EUR 100 payout minimum</td>
</tr>
<tr>
<td><a href="https://developer.y8.com/">Y8</a></td>
<td>Ad revenue share (Y8 Managed Partnership)</td>
<td>50%</td>
<td>$100 PayPal or $500 bank payout minimum</td>
</tr>
<tr>
<td><a href="https://support-dev.discord.com/hc/en-us/articles/23810643331735-Premium-Apps-Required-Support-for-Monetizing-Apps">Discord Activities</a></td>
<td>In-app purchases via Premium Apps</td>
<td>85% (70% past $1M lifetime)</td>
<td>Same web build, sold inside Discord</td>
</tr>
<tr>
<td>Licensing (MarketJS, CodeThisLab)</td>
<td>One-time flat fee</td>
<td>100% of the fee</td>
<td><a href="https://playgama.com/blog/main/10-ways-to-monetize-html5-games-that-actually-work-in-2026/">$300–$800 non-exclusive, $5,000+ exclusive</a></td>
</tr>
<tr>
<td><a href="https://itch.io/updates/introducing-open-revenue-sharing">itch.io</a></td>
<td>Direct sales, pay-what-you-want cut</td>
<td>Up to 100% (10% default)</td>
<td>You set the platform's share</td>
</tr>
<tr>
<td><a href="https://newgrounds.fandom.com/wiki/Revenue_Sharing">Newgrounds</a></td>
<td>Ad revenue share + Supporter pool</td>
<td>Share of ad pool</td>
<td>$50 payout minimum</td>
</tr>
</tbody>
</table>
<h2>Honest earnings expectations</h2>
<p>This is the part most guides skip. The distribution of web-game earnings is wildly top-heavy, and the median is close to zero. The clearest breakdown comes from a <a href="https://generalistprogrammer.com/tutorials/how-to-make-money-on-itchio-indie-game-guide">2026 itch.io revenue analysis</a> that sorts paid games into tiers: roughly 80% earn $0 to $50 a month, about 15% earn $50 to $500, around 4% reach part-time money at $500 to $2,000, under 1% hit full-time income of $2,000 to $10,000, and fewer than 0.2% are breakout hits above $10,000. Most games, it notes bluntly, earn under $100 in their entire lifetime.</p>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 320" role="img" aria-label="Share of paid itch.io games by monthly revenue in 2026: 80 percent earn 0 to 50 dollars, 15 percent earn 50 to 500, 4 percent earn 500 to 2000, under 1 percent earn 2000 to 10000, under 0.2 percent earn over 10000" style="width:100%;height:auto;max-width:720px;margin:1.5rem auto;display:block;border-radius:14px">
  <rect width="720" height="320" rx="14" fill="#0b1020"/>
  <text x="32" y="44" font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif" font-size="20" font-weight="800" fill="#e8edf5">Most games earn almost nothing</text>
  <text x="32" y="68" font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif" font-size="13" fill="#9aa7b4">Share of paid itch.io games by monthly revenue, 2026. Source: Generalist Programmer.</text>
  <g font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif" font-size="13" font-weight="700">
    <text x="205" y="118" text-anchor="end" fill="#e8edf5">$0–$50 / mo</text>
    <rect x="220" y="102" width="400" height="24" rx="5" fill="#fb7185"/>
    <text x="628" y="119" font-size="13" font-weight="800" fill="#fb7185">~80%</text>
    <text x="205" y="158" text-anchor="end" fill="#e8edf5">$50–$500</text>
    <rect x="220" y="142" width="75" height="24" rx="5" fill="#a9b4ff"/>
    <text x="303" y="159" font-size="13" font-weight="800" fill="#a9b4ff">~15%</text>
    <text x="205" y="198" text-anchor="end" fill="#e8edf5">$500–$2,000</text>
    <rect x="220" y="182" width="20" height="24" rx="5" fill="#7dd3fc"/>
    <text x="248" y="199" font-size="13" font-weight="800" fill="#7dd3fc">~4%</text>
    <text x="205" y="238" text-anchor="end" fill="#e8edf5">$2,000–$10,000</text>
    <rect x="220" y="222" width="7" height="24" rx="3" fill="#6ee7b7"/>
    <text x="235" y="239" font-size="13" font-weight="800" fill="#6ee7b7">&lt;1%</text>
    <text x="205" y="278" text-anchor="end" fill="#e8edf5">$10,000+</text>
    <rect x="220" y="262" width="5" height="24" rx="2.5" fill="#c8a8ff"/>
    <text x="233" y="279" font-size="13" font-weight="800" fill="#c8a8ff">&lt;0.2%</text>
  </g>
</svg>
<p>Ad-portal earnings tell the same story from a different angle. A well-performing casual game on a major portal typically clears <a href="https://www.abratabia.com/web-game-monetization/licensing-to-portals.php">$200 to $2,000 a month</a> through revenue share, while the very top of Poki's catalog reaches <a href="https://app.dealroom.co/news/feed/poki-hits-1b-monthly-plays-as-developer-first-model-boosts-top-studio-revenues-tenfold-1">up to €1 million a year</a>, a tenfold jump over what those studios made before Poki's model, per Dealroom. One indie developer's 2025 write-up describes reaching <a href="https://medium.com/@playrea/from-hobby-to-67-million-gameplays-on-poki-in-2025-df2c147cfb27">67 million gameplays across five Poki games</a> and about 200,000 plays a day by year's end, enough, they say, to make game development a primary income.</p>
<p>For a concrete per-play sense of the low end, one developer's <a href="https://donislawdev.com/earnings-and-statistics-from-my-8-games-android-ios-webgl/">multi-game earnings breakdown</a> is instructive, though the numbers are older (the games launched around 2018). Across eight WebGL games and 451,327 CrazyGames plays, they earned €556.92, roughly €1.20 per thousand plays, plus $163.79 on Kongregate from another 104,444 plays. Their single best performer, Fish Eat Fishes, pulled €149.36 from 143,000 plays. Rates have shifted since then and vary hugely by geography and format, but the shape holds: you need real volume before ad revenue share becomes meaningful money. A game with 10,000 lifetime plays is a portfolio piece, not a paycheck.</p>
<h2>What the numbers add up to</h2>
<p>Put it together and a clear strategy falls out. If you want the widest reach with zero upfront cost, put a free game on Poki or CrazyGames and live on the revenue split, bringing your own traffic wherever you can to push toward Poki's 100% direct-traffic rate. If you'd rather get paid now and skip the volume gamble, license a finished game for a flat fee. If your game is something people will pay to own, sell it direct on <a href="http://itch.io">itch.io</a> and keep 90-plus percent. And if you're serious, do more than one, because the developers actually making a living stack ad revenue on portals with purchases and direct sales rather than betting on a single channel.</p>
<p>The thread running through all of it is that the money follows the game, not the other way around. No monetization scheme rescues a game nobody wants to play, and a genuinely fun web game finds a revenue path no matter which portal it lands on. That's also the cheapest thing to test now. When building a playable prototype takes minutes instead of a weekend, you can put several games in front of real players and let the ad dashboards and wishlists tell you which one is worth monetizing. A tool like Cinevva can turn a sentence into a playable 3D web game in your browser, which is the fastest way to get to the only question that matters, which is whether anyone keeps playing.</p>
<h2>Common Questions</h2>
<h3>How much money can a browser game make?</h3>
<p>Almost nothing to millions, and the distribution is brutally top-heavy. About <a href="https://generalistprogrammer.com/tutorials/how-to-make-money-on-itchio-indie-game-guide">80% of paid games on itch.io earn under $50 a month</a> and most earn under $100 in their lifetime. A well-performing casual game on a portal like Poki or CrazyGames typically clears <a href="https://www.abratabia.com/web-game-monetization/licensing-to-portals.php">$200 to $2,000 a month</a> on ad revenue share, and the rare top studios on Poki reach <a href="https://app.dealroom.co/news/feed/poki-hits-1b-monthly-plays-as-developer-first-model-boosts-top-studio-revenues-tenfold-1">up to €1 million a year</a>. Volume is everything, because ad money only adds up past hundreds of thousands of plays.</p>
<h3>What revenue share does Poki take?</h3>
<p><a href="https://developers.poki.com/guide/working-with-poki">Poki splits ad revenue 50/50</a> when a player reaches your game through <a href="http://Poki.com">Poki.com</a> or Poki's marketing. When a player comes through your own bookmarks, search, social media, or community, you keep 100%. That split applies to web-exclusive deals, while non-exclusive placements are a one-time flat license fee, per Poki's <a href="https://developers.poki.com/guide/revenue-deal-types">partnership page</a>. There's no upfront fee to publish, and Poki's catalog now draws over 1 billion plays a month across 600-plus studios.</p>
<h3>What revenue share do CrazyGames and Poki pay developers?</h3>
<p>As of September 2026, Poki's published terms are the clearer of the two: <a href="https://developers.poki.com/guide/working-with-poki">50% on players Poki brings you and 100% on players you bring yourself</a>, on web-exclusive deals. CrazyGames' <a href="https://docs.crazygames.com/faq/">developer FAQ</a> confirms monthly payouts above a €100 balance and a 50M+ monthly audience but doesn't publish a percentage, so the best official datapoint remains its <a href="https://crazygames.indiehero.io/cggmwj-jg/">2026 GameMaker jam terms</a>: 60% of ad revenue and 70% of in-game purchase revenue to the developer. Both are far above GameDistribution's <a href="https://static.gamedistribution.com/terms/developer.html">33%</a> and Y8's <a href="https://developer.y8.com/">50%</a>, and below <a href="http://itch.io">itch.io</a>'s default 90% on direct sales.</p>
<h3>How much can a browser game earn?</h3>
<p>Only sourced ranges here, because the spread is enormous. A well-performing casual game on a major portal typically clears <a href="https://www.abratabia.com/web-game-monetization/licensing-to-portals.php">$200 to $2,000 a month</a> on ad revenue share, Poki's top studios reach <a href="https://app.dealroom.co/news/feed/poki-hits-1b-monthly-plays-as-developer-first-model-boosts-top-studio-revenues-tenfold-1">up to €1 million a year</a>, and a flat-fee license runs <a href="https://playgama.com/blog/main/10-ways-to-monetize-html5-games-that-actually-work-in-2026/">$300 to $800 non-exclusive or $5,000-plus exclusive</a>. At the other end, about <a href="https://generalistprogrammer.com/tutorials/how-to-make-money-on-itchio-indie-game-guide">80% of paid itch.io games make under $50 a month</a>. The thing that moves you between those bands is play volume, which is why a free portal listing is usually the first step even for a game you eventually want to sell.</p>
<h3>What revenue share does CrazyGames take?</h3>
<p>CrazyGames doesn't publish a split in its main developer docs, but the closest official datapoint is the terms of its <a href="https://crazygames.indiehero.io/cggmwj-jg/">2026 GameMaker web jam</a>, which list developers keeping 60% of in-game advertising revenue and 70% of in-game purchase revenue. Payouts happen monthly once your balance clears the <a href="https://docs.crazygames.com/faq/">€100 minimum</a>, and in-game purchases run through an invite-only Xsolla integration reserved for high-performing titles.</p>
<h3>Can you sell in-app purchases in a web game?</h3>
<p>Yes. CrazyGames offers an <a href="https://docs.crazygames.com/resources/ad-monetization-guide/">invite-only in-game purchase program through Xsolla</a> paying 70% to developers, distribution layers like Playgama Bridge include IAP with local payment gateways, and you can wire up Stripe or Xsolla checkout on your own site to keep nearly everything after processing fees. For selling a whole game rather than items, <a href="http://itch.io">itch.io</a> lets you charge directly and set the platform's cut yourself, defaulting to just 10%.</p>
<h3>How much do web games earn per 1,000 plays?</h3>
<p>It depends heavily on ad format and player geography, so treat any single number with caution. Rewarded video, the top-paying format, clears roughly <a href="https://playgama.com/blog/main/10-ways-to-monetize-html5-games-that-actually-work-in-2026/">$15 to $28 eCPM in the US, $8 to $15 in the EU, and $1 to $3 in tier-3 markets</a> before your revenue split. That's the gross rate per thousand ad views, not per game session, and banners pay a tiny fraction of it. One older developer breakdown reported roughly <a href="https://donislawdev.com/earnings-and-statistics-from-my-8-games-android-ios-webgl/">€1.20 per thousand plays</a> on CrazyGames across a portfolio of simple games.</p>
<h3>How much does it cost to license an HTML5 game to a portal?</h3>
<p>Nothing to publish on a revenue-share portal like Poki or CrazyGames. If you mean the flat-fee licensing model, <a href="https://playgama.com/blog/main/10-ways-to-monetize-html5-games-that-actually-work-in-2026/">non-exclusive licenses run about $300 to $800 per platform and exclusive deals start around $5,000 and can pass $25,000</a> for a polished game. Non-exclusive means the same game is sold to many buyers, exclusive means one buyer owns it and it leaves the marketplace.</p>
<h3>Is <a href="http://itch.io">itch.io</a> a good way to make money from a web game?</h3>
<p>It's the best option if you want to charge for the game directly and keep the most money. <a href="http://itch.io">itch.io</a>'s <a href="https://itch.io/updates/introducing-open-revenue-sharing">open revenue sharing</a> lets you set its cut anywhere from 0% to 100%, defaulting to 10%, so on a $10 sale you keep about $8.41 after payment processing. That beats the 30% that Steam and the mobile stores take. The catch is that <a href="http://itch.io">itch.io</a> sends buyers, not a firehose of free-play traffic, so it rewards games with a built-in audience or strong word of mouth rather than casual portal browsers.</p>
<p><BuildCta
  title="Build the game first, monetize second"
  desc="No revenue model saves a game nobody plays. Start with something fun."
  prompt="Make a fast browser game where you wall-jump up a collapsing tower" /></p>
<h2>Related</h2>
<ul>
<li><a href="/guides/publish-web-game">How to Publish a Web Game</a>: where to put a finished build and how each platform works</li>
<li><a href="/guides/publish-game-poki">How to Publish Your Game on Poki</a>: the submission bar and Poki's 50/50 program up close</li>
<li><a href="/guides/publish-game-crazygames">How to Publish Your Game on CrazyGames</a>: the SDK, ad formats, and how the payout works</li>
<li><a href="/guides/publish-game-discord-activities">How to Publish a Game on Discord Activities</a>: another distribution surface, with its own IAP and ad path</li>
<li><a href="/guides/casual-games-trends-2026">Casual Games Trends in 2026</a>: where the money is moving across the whole casual market</li>
<li><a href="/guides/itch-io-launch-guide">The itch.io Launch Guide</a>: selling a game direct and keeping 90% of it</li>
<li><a href="/guides/get-more-plays-itch-io">How to Get More Plays on itch.io</a>: the volume that makes any of these splits matter</li>
<li><a href="/guides/promote-indie-game-no-budget">How to Promote an Indie Game With No Budget</a>: bringing the traffic that turns a revenue split into real money</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Best AI Music Generators for Games (2026)]]></title>
            <link>https://app.cinevva.com/guides/ai-music-generators-games</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/ai-music-generators-games</guid>
            <pubDate>Thu, 16 Jul 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[The best AI music generators for game soundtracks in 2026, compared on vocals, commercial licensing, stems, and self-hosting, from Suno and ElevenLabs Music to open models like Stable Audio and ACE-Step.]]></description>
            <content:encoded><![CDATA[<h1>Best AI Music Generators for Games (2026)</h1>
<figure style="margin:1.5rem 0">
<img src="https://cdn.cinevva.com/guides/ai-music-generators-games.jpg?v=1" alt="Best AI music generators for game soundtracks in 2026" style="width:100%;border-radius:10px">
</figure>
<p><em>Last updated: July 2026.</em></p>
<p>A soundtrack used to be the part of a game that solo developers just skipped. You'd ship silence, or grab a free loop that fifty other games already used, because hiring a composer costs more than the whole rest of the project. AI music changed that math. You can describe a mood in a sentence and get a finished track back in under a minute.</p>
<p>The hard part in 2026 isn't quality. Most of these tools sound good enough to ship. It's licensing. A game is a commercial product, and half the popular music generators either block commercial use on their free tier or carry unsettled lawsuits over their training data. Pick the wrong one and you're shipping a legal problem inside your game files.</p>
<p>We have skin in this. Cinevva runs its own <a href="/tools/music">music tool</a>, and when we chose the engines behind it we tried far more than three. We settled on ElevenLabs Music, ACE-Step, and Mubert, and the deciding factor wasn't which one won a blind listening test. It was which licenses we'd be comfortable standing behind when a creator asks the only question that matters: can I sell a game with this track in it? That question runs through everything below.</p>
<p>Here's roughly what prompt-to-track sounds like, the same flow you'd use inside the tool:</p>
<audio controls style="width:100%">
  <source src="/img/ai-samples/music-sample.mp3" type="audio/mpeg">
</audio>
<p><em>A short AI-generated clip. Describe a mood, get a track that fits it.</em></p>
<p>This guide compares the AI music generators that actually work for games, sorted by how you'll use them: full-song tools with vocals, royalty-free generators built for products, and open models you can run yourself. For every one, the thing that matters most comes first: can you legally put the output in a game you sell?</p>
<h2>Quick pick</h2>
<p>If you want the short version, here's who each tool is for.</p>
<table>
<thead>
<tr>
<th>Tool</th>
<th>Best for</th>
<th>Vocals</th>
<th>Commercial license</th>
<th>Self-host</th>
<th>Price</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>ElevenLabs Music</strong></td>
<td>Cleanest licensing for a shipped game</td>
<td>Yes</td>
<td>Cleared for commercial use, licensed training data</td>
<td>No</td>
<td>Paid plans</td>
</tr>
<tr>
<td><strong>Suno</strong></td>
<td>Fast full songs with vocals</td>
<td>Yes</td>
<td>Paid plans only, litigation tail risk</td>
<td>No</td>
<td>Pro $10/mo</td>
</tr>
<tr>
<td><strong>Stable Audio 3</strong></td>
<td>Self-hosting and sound design</td>
<td>Instrumental</td>
<td>Community License, free under $1M revenue</td>
<td>Yes</td>
<td>Open weights</td>
</tr>
<tr>
<td><strong>ACE-Step</strong></td>
<td>Open, self-hosted full tracks</td>
<td>Yes</td>
<td>MIT, fully permissive</td>
<td>Yes</td>
<td>Free</td>
</tr>
<tr>
<td><strong>Mubert</strong></td>
<td>Endless in-app background music</td>
<td>No</td>
<td>Royalty-free by plan, built for products</td>
<td>API</td>
<td>API tiers</td>
</tr>
<tr>
<td><strong>Soundraw</strong></td>
<td>Royalty-free tracks and an in-product API</td>
<td>No</td>
<td>Royalty-free, in-house licensed catalog</td>
<td>API</td>
<td>~$17/mo</td>
</tr>
<tr>
<td><strong>AIVA</strong></td>
<td>Cinematic and orchestral scores</td>
<td>Instrumental</td>
<td>Commercial on paid tiers</td>
<td>No</td>
<td>Paid plans</td>
</tr>
<tr>
<td><strong>Magenta RealTime</strong></td>
<td>Adaptive music that reacts in real time</td>
<td>Instrumental</td>
<td>Open, CC-BY weights</td>
<td>Yes</td>
<td>Free</td>
</tr>
<tr>
<td><strong>Udio</strong></td>
<td>Listening and remixing, not game files</td>
<td>Yes</td>
<td>Streaming-only, no export</td>
<td>No</td>
<td>Paid plans</td>
</tr>
</tbody>
</table>
<h2>Full-song generators with vocals</h2>
<p>These are the tools that write a complete track, often with singing, from a text prompt. They're the ones most people mean by &quot;AI music,&quot; and they're the right pick when you want a theme song, a menu track, or a vocal piece for a trailer.</p>
<h3>ElevenLabs Music</h3>
<p>If you're shipping a commercial game and you want to stop worrying about licensing, start here. ElevenLabs launched Eleven Music in August 2025, and unlike its rivals it built the model on licensed production music and signed deals with Merlin and Kobalt so rightsholders are paid. The outputs are cleared for broad commercial use, and gaming is called out by name in the terms.</p>
<p>The trade-off is a set of guardrails you have to respect. You can't prompt it with real artist names, song titles, or lyrics, and a few sectors are excluded, so read the music terms before you build around it. For a game soundtrack those limits rarely bite. What you get in return is the one thing every other vocal generator can't offer in 2026: a clean chain of licensing you can point to if anyone asks. This is one of the three engines behind our own <a href="/tools/music">music tool</a>, specifically because the licensing is settled.</p>
<h3>Suno</h3>
<p>Suno is the fastest way to a finished vocal song, and by the v5.5 model (March 2026) the vocals are the most natural of any generator. For games, the rules are simple and strict. The free tier is non-commercial, full stop. You need the Pro plan at $10 a month (or $8 billed annually), which grants commercial rights and downloadable files, roughly 500 songs' worth of credits, and access to the v5.5 model. The Premier plan at $30 a month adds Suno Studio, which matters for games because it separates a track into stems you can remix into different in-game contexts.</p>
<p>Two things to keep straight. First, a commercial license is not copyright ownership. Suno's own terms say granting commercial-use rights differs from transferring ownership, and US law generally needs a human author for full copyright, so what you hold is a license to use the track, not an ironclad copyright. Second, Suno settled with Warner in November 2025, but the Sony and Universal lawsuits were still active heading into a July 2026 summary-judgment hearing. Suno has also said it plans to replace its current models with new label-licensed ones later in 2026, so the exact model and download rules can shift under you. No court has held downstream users liable, and the practical risk to an indie is low, but it's a tail risk worth knowing before you build a franchise on it. Keep your payment receipts as proof you were subscribed when you generated each track.</p>
<h3>Udio</h3>
<p>Udio makes gorgeous audio, and in 2026 you can't put it in a game. After its Universal Music settlement in October 2025 it disabled all downloads and stems and became a streaming-only walled garden. You can create and listen and remix inside the app, but you cannot export a file. For game development that's disqualifying, because the whole point is getting an audio file into your engine. Universal is co-developing a licensed Udio platform for 2026, so this may change, but as of this writing treat Udio as a place to play, not a place to source a soundtrack.</p>
<h2>Royalty-free generators built for products</h2>
<p>This group is aimed at creators and companies rather than musicians. The tracks are usually instrumental, the interfaces are simpler, and the pitch is licensing safety. Several offer an API, which is the path if you want players to generate their own music inside your game.</p>
<h3>Mubert</h3>
<p>Mubert is built for products, and games are a core use case. It generates royalty-free, DMCA-free music by prompt, mood, BPM, or activity, trained on licensed and partner content. The important detail is the plan structure, because it governs what you can legally do. On the Startup plan, music plays inside your app but users can't export it, which fits a mobile game with background music. If you want players to export or share tracks they made, you need Startup+ or higher, which adds sublicensing. The free tier is non-commercial. Mubert is also one of the engines behind our <a href="/tools/music">music tool</a>, which is why generating in-app is a first-class path rather than an afterthought.</p>
<h3>Soundraw</h3>
<p>Soundraw is the veteran royalty-free generator, trained entirely on an in-house licensed catalog to sidestep the copyright question. You pick genre, mood, and theme, then fine-tune the arrangement. It's a subscription for individual use, around $17 a month, and it offers an API used by game developers and creator tools who want to embed generation. It's a safe, unflashy pick when you want instrumental background music and a licensing story you can explain to a publisher.</p>
<h3>Beatoven, Loudly, and AIVA</h3>
<p>Three more worth knowing for specific needs. <strong><a href="http://Beatoven.ai">Beatoven.ai</a></strong> is the budget option, roughly $2.50 a month with commercial rights included, which is hard to beat if you just need clean background music. <strong>Loudly</strong> sits a little higher at around $6 a month and leans into customization and collaboration controls. <strong>AIVA</strong> is the specialist: it was built for cinematic and orchestral scoring, so it's the one to reach for when your game wants a sweeping symphonic theme rather than a pop loop. All three grant commercial rights on their paid tiers and block it on free, which is the pattern across this entire category.</p>
<h2>Open models you can run yourself</h2>
<p>If you want no subscription, no per-track fees, and full control over unreleased project audio, run the model on your own hardware. The open audio models caught up fast, and by 2026 several are genuinely good. The one rule: check the license on the weights, not just the code, because they often differ.</p>
<h3>Stable Audio 3</h3>
<p>Stable Audio 3 (May 2026) is the strongest open option for games, and the reason is licensing plus reach. Stability released three open-weight models trained on fully licensed data: Small-Music and Small-SFX both run on a CPU, no GPU required, and Medium runs on a consumer GPU for higher quality. Only the Large model is API-only. Under the Stability AI Community License you own your outputs and can commercialize them freely until your studio passes $1M in annual revenue, at which point you move to an Enterprise license that also adds legal indemnification.</p>
<p>For games this hits two needs at once. The music models generate variable-length tracks up to about six minutes, and Small-SFX is the best open model for sound effects you can actually ship. You can also LoRA fine-tune any of them on a folder of your own audio, which is how you teach it your game's sonic style, then generate matching menu loops, combat stingers, and ambience that all sound like one score.</p>
<h3>ACE-Step</h3>
<p>ACE-Step is the open model to know for full tracks with vocals. The 1.5 line (January 2026) is MIT-licensed, which is as permissive as it gets, and it generates several minutes of music quickly across 19 languages, with voice cloning, remixing, and lyric editing built in. It's the self-hosted answer to Suno for teams that would rather own the pipeline than rent it, and it's the third engine behind our <a href="/tools/music">music tool</a>.</p>
<h3>The rest of the open field</h3>
<p>A few more depending on what you need. <strong>YuE</strong> (Apache 2.0) generates full songs with vocals from a lyric sheet and was the first open model to do it well. <strong>DiffRhythm 2</strong> (Apache 2.0, February 2026) is built for fast full-song generation. <strong>MusicGen</strong> from Meta still works fine for prototyping, but its weights are CC-BY-NC, so it's a sketch tool only. Never ship a MusicGen track in a game you sell. Move to ACE-Step or Stable Audio for the final version.</p>
<p><strong>Magenta RealTime</strong> from Google (Apache 2.0 code, CC-BY weights) is the odd one out, in the best way for games. Instead of rendering a finished file, it generates music live that you steer as it plays. That's the exact shape of an adaptive soundtrack that shifts when the player enters combat or a boss appears. No other open model is built for real-time steering, so if interactive music is your goal, this is the starting point.</p>
<h2>Sound effects, not just music</h2>
<p>A soundtrack is half the job. Games also need footsteps, UI clicks, explosions, and ambience, and the same AI-licensing rules apply. Two options stand out. <strong>Stable Audio 3 Small-SFX</strong> runs locally, generates effects on demand, and ships under the same commercial-safe Community License as its music siblings. <strong>ElevenLabs</strong> has a dedicated sound-effects generator with the same cleared-for-commercial posture as Eleven Music, which is why our own <a href="/tools/sfx">SFX tool</a> exists alongside the music one. For the traditional route, our guide to <a href="/guides/free-sound-effects-music">free sound effects and music</a> covers the CC0 libraries worth keeping in your back pocket.</p>
<h2>The licensing reality for games</h2>
<p>This is the section that saves you from a takedown notice, so read it before you generate anything you plan to ship.</p>
<p><strong>&quot;Royalty-free&quot; is not &quot;copyright-free,&quot; and neither is ownership.</strong> Royalty-free means you don't pay a fee every time the track plays. It says nothing about who owns the music or whether the training data was clean. Three different concepts, often conflated in marketing copy.</p>
<p><strong>Free tiers are almost never safe for a commercial game.</strong> Across Suno, Mubert, Soundraw, Beatoven, and Loudly, the free plan is personal and non-commercial. A game you sell, or even a free game with ads or a paid DLC, is a commercial project. Use a paid plan or a permissively licensed open model, and don't ship a free-tier track.</p>
<p><strong>Watch the training-data lawsuits.</strong> Suno and Udio both face active litigation from major labels. No court has held a downstream user liable so far, and the practical exposure to an indie is low, but it's real, and it's the reason the cleanest picks in 2026 are the tools trained on licensed data: ElevenLabs Music, Stable Audio, Mubert, Soundraw, and AIVA.</p>
<p><strong>Keep your receipts.</strong> Commercial rights on tools like Suno apply to tracks generated while you were subscribed. Save proof of the subscription active at the time of generation, so you can show the track was licensed when you made it.</p>
<p><strong>Disclose where the platform requires it.</strong> <a href="http://itch.io">itch.io</a> and Steam have their own AI-content disclosure rules, and honesty here is cheap insurance. See our <a href="/ai-content">AI-generated content policy</a> for how we handle disclosure, and our <a href="/guides/game-asset-licenses">game asset licenses guide</a> for how music licensing fits alongside your art and code.</p>
<h2>Making music that fits a game, not just a track</h2>
<p>A three-minute pop song is not a game soundtrack. Games need loops that don't have an audible seam, stems you can mix as the scene changes, and mood transitions that follow the player. A few workflow notes.</p>
<p>For <strong>loops</strong>, generate a slightly longer piece and trim it to a clean loop point, or use a continuation and inpainting feature (Stable Audio and Suno both have one) to bridge the end back to the start. For <strong>stems</strong>, Suno Studio on the Premier plan and ACE-Step's remix mode both split a track into parts, so you can drop the drums during a stealth section and bring them back for a chase. For <strong>adaptive, real-time</strong> music that reacts as the player acts, Magenta RealTime is purpose-built, and Mubert's endless streams by mood work well for ambient or infinite background layers inside an app.</p>
<h2>What I'd actually use</h2>
<p>If I were scoring a game today, here's the stack I'd reach for.</p>
<p><strong>Shipping a commercial game where licensing has to be airtight?</strong> Use ElevenLabs Music for vocal and lead tracks and Stable Audio 3 for instrumental beds and sound effects. Both train on licensed data and clear their outputs for commercial use, which is exactly why two of the three engines in our own tool come from this bucket.</p>
<p>Need <strong>fast iteration and the best vocals</strong>? Suno Pro is the answer, as long as you keep your receipts and accept the small litigation tail risk. Bounce the keepers into Suno Studio to pull stems.</p>
<p>Want <strong>full control and no subscription</strong>? Self-host ACE-Step for vocal tracks and Stable Audio 3 for instrumentals and SFX, then LoRA fine-tune Stable Audio on your own audio so everything sounds like one score.</p>
<p>For <strong>background music inside your app</strong>, or to let players generate their own, wire up the Mubert or Soundraw API on the plan tier that matches whether users can export. And if you want <strong>an adaptive score that reacts to gameplay</strong>, start by prototyping with Magenta RealTime.</p>
<p>The common mistake is reaching for one tool for everything. Music, stems, SFX, and adaptive layers are different jobs, and the right answer is usually two or three tools that each do one well. The point of all of them is the same: the soundtrack stops being the corner you cut.</p>
<hr>
<h2>Common questions</h2>
<h3>What is the best AI music generator for a commercial game?</h3>
<p>For clean licensing, ElevenLabs Music and Stable Audio 3 lead in 2026 because both train on licensed data and clear their outputs for commercial use. For the best vocals fast, Suno Pro works if you accept the ongoing Sony litigation as a small tail risk. Avoid free tiers and non-commercial weights for anything you ship.</p>
<h3>Can I legally use AI-generated music in a game I sell?</h3>
<p>Usually yes, on a paid plan or a permissively licensed open model, but the details matter. Free tiers are almost always non-commercial, a commercial license is not the same as owning the copyright, and tools trained on unlicensed data carry litigation risk. Check the specific license, keep proof of your subscription, and disclose AI content where your platform requires it.</p>
<h3>Which AI music generators can I run on my own hardware?</h3>
<p>Stable Audio 3 (Small models run on a CPU, Medium on a consumer GPU), ACE-Step, YuE, DiffRhythm 2, and Magenta RealTime are all open and self-hostable. Check the weights license, not just the code: MusicGen's weights are non-commercial, while ACE-Step (MIT) and Stable Audio (Community License) allow commercial use.</p>
<h3>How do I get looping or adaptive music for a game?</h3>
<p>Generate a longer track and trim to a gapless loop, or use continuation and inpainting to bridge the ends. For stems, use Suno Studio or ACE-Step's remix mode. For real-time music that reacts to gameplay, Magenta RealTime is built for live steering, and Mubert's mood-based streams suit endless background layers.</p>
<hr>
<h2>More reading</h2>
<ul>
<li><a href="/guides/frontier-gen-ai-models">Best Open-Source Generative AI Models for Games</a>, the full open model rundown for video, image, 3D, audio, and voice</li>
<li><a href="/guides/ai-asset-generators-games">Best AI Asset Generators for Games</a>, 3D models, textures, and audio generation together</li>
<li><a href="/guides/ai-voice-acting-games">AI Voice Acting for Games</a>, the same tooling question for dialogue and narration</li>
<li><a href="/guides/free-sound-effects-music">Free Sound Effects and Music for Games</a>, the CC0 libraries to pair with AI generation</li>
<li><a href="/guides/game-asset-licenses">Game Asset Licenses Explained</a>, how music licensing fits with your art and code</li>
<li><a href="/ai-content">AI-generated content policy</a>, how we handle AI disclosure</li>
</ul>
<p><BuildCta
  title="Generate a game and its soundtrack in one place"
  desc="Music is more fun when it's scoring a game you actually made."
  prompt="Make a rhythm game set in a neon city where the beat drives the obstacles" /></p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[China Mini-Game & HTML5 Platforms Compared (2026)]]></title>
            <link>https://app.cinevva.com/guides/china-mini-game-platforms</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/china-mini-game-platforms</guid>
            <pubDate>Fri, 10 Jul 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[The platforms that distribute HTML5 and Mini Games in China, compared. WeChat, Douyin, QQ, 4399, Kuaishou, Alipay, and Meituan on reach, revenue share, audience, and what it takes to get on each.]]></description>
            <content:encoded><![CDATA[<h1>China Mini-Game &amp; HTML5 Platforms Compared (2026)</h1>
<figure style="margin:1.5rem 0">
<img src="https://cdn.cinevva.com/guides/china-mini-game-platforms-hero.jpg?v=1" alt="China Mini-Game and HTML5 platforms compared in 2026" style="width:100%;border-radius:10px">
</figure>
<p>In the West, &quot;publish a web game&quot; means <a href="http://itch.io">itch.io</a>, Poki, CrazyGames, Newgrounds. China has its own version of that map, and it's enormous. The Mini Game market did about $7.65 billion in 2025 and is forecast to reach roughly $20 billion by 2030. The platforms are different, the discovery mechanics are different, and the rules for getting on them are different. This is the field guide.</p>
<p>For the Western equivalent, see <a href="/guides/publish-web-game">best places to publish a web game</a>. This page is the China map. If you want the mechanics of getting listed and paid, the <a href="/guides/publish-wechat-douyin-mini-games">WeChat and Douyin publishing guide</a> goes deeper on licensing and revenue share.</p>
<h2>The two that matter most</h2>
<p>WeChat and Douyin together take more than 90% of China's Mini Game revenue. If you only ship to two places, these are the two.</p>
<p>WeChat Mini Games is the giant. Roughly 500 to 570 million monthly players, running games inside the app a billion people use for messaging and payments. Discovery is social: games spread through friends and group chats. There are over 400,000 WeChat Mini Game developers, and more than 300 teams clear 10 million yuan in quarterly revenue. It rewards retention and word of mouth, and its in-app-purchase economy is deep. If your game has a loop people re-open and a reason to tell friends, WeChat is where that compounds.</p>
<p>Douyin Mini Games is the fast-growing challenger. Around 170 million monthly players, but revenue grew roughly 100% and users about 120% year over year in 2025. Discovery is algorithmic, powered by short video. A great clip in the feed sends a wave of players. Douyin offers aggressive terms, with some preferred partners keeping up to 90% of proceeds, and its Ohayoo label specializes in hyper-casual publishing. If your game looks irresistible in five seconds, Douyin's feed is a growth engine WeChat can't match.</p>
<h2>The rest of the field</h2>
<p>Beyond the big two, several platforms are worth knowing, mostly for reaching audiences the giants don't own outright.</p>
<p>QQ Mini Games is Tencent's other social platform, skewing younger than WeChat. If your game targets teenagers and students, QQ's demographic is a real reason to be there, and being inside the Tencent ecosystem can simplify some integrations.</p>
<p>4399 is a veteran of the Chinese casual-web-game era, a portal that predates the Mini Game boom and still pulls a large casual audience. It and similar established companies (BoKe, Tanwan, and others) have expanded into Mini Games while keeping their traditional casual-portal strengths. Good for straightforward casual titles.</p>
<p>Kuaishou is Douyin's main short-video rival, with the same algorithmic-discovery model and a more rural, lower-tier-city audience. Smaller Mini Game revenue so far, but a distinct user base.</p>
<p>Alipay and Meituan round out the picture. Both are building Mini Game momentum off gigantic transactional user bases (payments and food delivery), and both are still early. Their reach is huge but their gaming share is small, so they're a bet on a niche or on getting in before it's crowded, not a primary channel yet.</p>
<h2>The comparison at a glance</h2>
<table>
<thead>
<tr>
<th>Platform</th>
<th>Monthly players</th>
<th>Discovery</th>
<th>Revenue terms</th>
<th>Best for</th>
</tr>
</thead>
<tbody>
<tr>
<td>WeChat</td>
<td>~500-570M</td>
<td>Social, friend-to-friend sharing</td>
<td>Ads ~50/50, IAP dev keeps ~60-70%</td>
<td>Retention-driven, socially shareable games</td>
</tr>
<tr>
<td>Douyin</td>
<td>~170M</td>
<td>Algorithmic short video</td>
<td>Preferred partners up to ~90%</td>
<td>Hyper-casual with a strong visual hook</td>
</tr>
<tr>
<td>QQ</td>
<td>Large, younger</td>
<td>Social, Tencent ecosystem</td>
<td>Tencent terms</td>
<td>Teen and student audiences</td>
</tr>
<tr>
<td>4399</td>
<td>Large casual base</td>
<td>Portal browsing</td>
<td>Portal terms</td>
<td>Straightforward casual games</td>
</tr>
<tr>
<td>Kuaishou</td>
<td>Growing</td>
<td>Algorithmic short video</td>
<td>Negotiated</td>
<td>Lower-tier-city, rural reach</td>
</tr>
<tr>
<td>Alipay / Meituan</td>
<td>Huge, early for games</td>
<td>Transactional app placement</td>
<td>Early-stage terms</td>
<td>Niche bets, first-mover positioning</td>
</tr>
</tbody>
</table>
<p>Player counts and terms move with the market and with promotions, so read this as the shape of the field, not fixed figures.</p>
<h2>How to choose</h2>
<p>Match the platform to how your game is discovered, not just to its size.</p>
<p>If your game earns re-opens and gets shared, WeChat is where retention turns into growth. If it's a hyper-casual title that lives or dies on a great clip, Douyin's feed is the strongest engine in the market. If you're targeting a young audience, QQ is worth the extra integration. If it's a simple casual game, 4399 and the portal players are a fit. And because the license and the build carry across platforms, shipping to more than one of the big two is usually the default, not the exception.</p>
<p>The single biggest gate is the same everywhere: a monetized game needs a Chinese license and a local operator to hold it. That's covered in the <a href="/guides/publish-wechat-douyin-mini-games">publishing guide</a>, and it applies across this whole table.</p>
<h2>Where Cinevva fits</h2>
<p>None of these platforms are where you should be finding out whether your game is fun. The license, the local partner, the platform review, all of that is expensive to spend on an untested idea. Cinevva is the cheap front of the funnel: build a browser game in minutes, put it in front of real players, and learn which titles have the WeChat loop or the Douyin hook before you pay to enter China. The Mini Game platforms reward the same things a good web game does, instant play and no install, so a game that works in the browser is already speaking their language.</p>
<h2>Frequently asked questions</h2>
<h3>What are the biggest Mini Game platforms in China?</h3>
<p>WeChat Mini Games and Douyin Mini Games, which together take more than 90% of the market's revenue. WeChat has around 500 to 570 million monthly players, Douyin around 170 million and growing fast.</p>
<h3>Is there a Chinese equivalent of <a href="http://itch.io">itch.io</a> or Poki?</h3>
<p>Not exactly. The closest analogues are the Mini Game platforms inside super-apps (WeChat, Douyin, QQ) and legacy casual portals like 4399. Discovery runs through social graphs and short-video algorithms rather than a standalone game site.</p>
<h3>Do I need a different build for each Chinese platform?</h3>
<p>Usually you need platform-specific adaptation (login, ads, payment SDKs differ), but the core game and its license carry across. Engines like Cocos and LayaAir target multiple Chinese platforms from one project.</p>
<h3>Which platform is best for a hyper-casual game?</h3>
<p>Douyin, because its short-video feed can send a viral wave to a game with a strong visual hook, and its revenue terms for preferred partners are generous. Ohayoo, Douyin's label, specializes in hyper-casual.</p>
<h3>How big is China's Mini Game market?</h3>
<p>About $7.65 billion in 2025, up roughly 34% year over year, with forecasts near $20 billion by 2030.</p>
<p><BuildCta
  title="Find your channel by testing the game"
  desc="Build it in the browser, watch how players react, then pick the platform that fits."
  prompt="Make a colorful physics stacking game that's hard to put down" /></p>
<h2>Related</h2>
<ul>
<li><a href="/guides/publish-wechat-douyin-mini-games">How to Publish on WeChat &amp; Douyin Mini Games</a> — licenses, review, revenue share</li>
<li><a href="/guides/wechat-mini-game-engines">Game Engines for WeChat Mini Games</a> — build for the platform</li>
<li><a href="/guides/localize-web-game-china">Localizing a Web Game for China</a> — fonts, hosting, payments</li>
<li><a href="/guides/publish-web-game">Best Places to Publish a Web Game</a> — the Western field</li>
<li><a href="/guides/casual-games-trends-2026">Casual Games Trends in 2026</a> — where casual is heading</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Localizing a Web Game for China (2026)]]></title>
            <link>https://app.cinevva.com/guides/localize-web-game-china</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/localize-web-game-china</guid>
            <pubDate>Fri, 10 Jul 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[What it actually takes to bring a web game into China in 2026. Simplified Chinese and fonts, the ICP filing, hosting inside the Great Firewall, WeChat Pay and Alipay, and the third-party services that silently break.]]></description>
            <content:encoded><![CDATA[<h1>Localizing a Web Game for China (2026)</h1>
<figure style="margin:1.5rem 0">
<img src="https://cdn.cinevva.com/guides/localize-web-game-china-hero.jpg?v=1" alt="Localizing a web game for China in 2026" style="width:100%;border-radius:10px">
</figure>
<p>Localizing a web game for China is not translation. Translation is the easy 10%. The hard 90% is that the technical and legal environment is different: your fonts, your host, your payment provider, and half the third-party services you quietly depend on all change or break at the border. This guide is the checklist of what actually has to happen.</p>
<p>If your target is Mini Games specifically, pair this with the <a href="/guides/publish-wechat-douyin-mini-games">WeChat and Douyin publishing guide</a>. This page covers the broader web-game case, whether you're going to a Mini Game platform or a standalone site.</p>
<h2>Language: Simplified Chinese, done properly</h2>
<p>Start with Simplified Chinese (简体中文), the written standard in mainland China. Traditional Chinese is for Hong Kong and Taiwan and is not interchangeable. Get the variant right before anything else.</p>
<p>Then handle the parts machine translation won't. Chinese text is denser than English, so UI that was tuned for English strings will have awkward whitespace, and buttons sized to &quot;Continue&quot; look strange holding two characters. Line breaking works differently because there are no spaces between words. And tone matters: a literal translation reads as robotic to Chinese players in exactly the way a literal Chinese-to-English translation reads as robotic to you. Budget for a native pass, not just a model output.</p>
<h2>Fonts: the trap nobody expects</h2>
<p>This is where most Western web games fall over. You cannot pull Chinese fonts from Google Fonts, because Google is blocked in mainland China and the request simply fails. A page that renders beautifully on your machine shows broken or fallback text inside the Firewall.</p>
<p>Worse, Chinese fonts are huge. A full CJK typeface covers tens of thousands of glyphs and can run into the tens of megabytes, which is a non-starter for a web game and outright impossible under the Mini Game package limits. The fixes: lean on the system fonts each device already has, or subset a font down to only the characters your game actually uses and self-host that. Either way, host the font yourself from inside China. Don't rely on an external font CDN.</p>
<h2>Hosting: inside the wall or slow outside it</h2>
<p>Where your game is served decides how it feels. Host offshore and every request crawls through the Great Firewall's inspection, adding latency that makes a real-time game feel broken. Host inside mainland China and it's fast, but hosting in China means the ICP filing.</p>
<p>The ICP (Internet Content Provider) filing is a registration with China's Ministry of Industry and Information Technology, mandatory for any site served from mainland servers. It comes in two forms: a basic filing (备案) for non-commercial sites, and a commercial ICP license for sites that sell, advertise, or take payment, which a monetized game does. A game operating commercially also generally needs an Internet Culture Business License (网络文化经营许可证). The ICP number has to appear in the site footer, linked to the government records site. Filings take weeks and require a local business entity, which is one more reason foreign studios work through a Chinese partner.</p>
<p>The ICP filing only covers hosting, though. A monetized game additionally needs the ISBN game approval (版号, the &quot;banhao&quot;), which you can only get through a licensed Chinese publisher. Our <a href="/guides/publish-wechat-douyin-mini-games">WeChat and Douyin publishing guide</a> walks the full licensing pipeline.</p>
<p>The filing isn't just red tape. It's the key that unlocks the rest: onshore hosting, a Chinese CDN for fast delivery across the country, and payment integration.</p>
<h2>Payments: WeChat Pay and Alipay, not Stripe</h2>
<p>Chinese players don't use the cards and wallets the rest of the world does. Payments run through WeChat Pay and Alipay, full stop. Stripe, PayPal, and Western card flows are not the answer. Integrating WeChat Pay or Alipay requires onshore hosting and the ICP license, so payment, hosting, and filing are one connected problem, not three separate ones. Plan them together.</p>
<h2>The services that silently break</h2>
<p>The most painful bugs in a China launch are the ones that don't show up until a player inside the Firewall loads the game. Anything your game fetches from a blocked service fails, often silently, even after your hosting and filing are correct. The usual casualties:</p>
<p>Google Fonts, Google Analytics, and anything else on Google. Blocked. Replace with self-hosted fonts and a domestic analytics provider.</p>
<p>YouTube and embedded video from Western hosts. Blocked. Use a domestic video host if you embed trailers.</p>
<p>Facebook, Twitter, and their SDKs and share buttons. Blocked. Swap in WeChat and Weibo sharing.</p>
<p>External CDNs and script hosts you didn't think about. Some work, many don't. Audit every third-party URL your game loads and assume each one is guilty until proven reachable.</p>
<p>The rule: if a resource is served from a company that's blocked in China, it will fail for your Chinese players regardless of how correct the rest of your setup is. Self-host or find a domestic equivalent for every dependency.</p>
<h2>Content review</h2>
<p>China reviews game content, and standards differ from Western platforms. Themes, imagery, and text that pass elsewhere can be flagged. This is another place a local publisher earns their cut, since they know the lines and can review before submission instead of after a rejection. Build the review step into your timeline rather than treating it as a formality at the end.</p>
<h2>The localization checklist</h2>
<p>Translate to Simplified Chinese with a native tone pass, not just machine output.</p>
<p>Fix UI for denser text and different line breaking.</p>
<p>Self-host subset or system fonts. Never load Chinese fonts from a blocked CDN.</p>
<p>Decide hosting: onshore with an ICP filing for speed and payments, or accept offshore slowness.</p>
<p>Integrate WeChat Pay and Alipay for anything monetized.</p>
<p>Audit every third-party resource and replace what's blocked.</p>
<p>Plan for content review with a local partner.</p>
<h2>Where Cinevva fits</h2>
<p>The honest version: the game is the portable part, and the China layer is distribution and compliance. Cinevva builds web-native games that already run from a link with no install, which is the shape China's platforms want, but we won't pretend the ICP filing, the local publisher, or the payment integration are things a tool makes disappear. What we do make cheap is the part before all that. Build the game, prove it's worth localizing, and only spend on the China stack once you know the game earns it. Most games don't need to survive that checklist. The ones that do are worth doing it properly.</p>
<h2>Frequently asked questions</h2>
<h3>Do I need an ICP license to run a web game in China?</h3>
<p>To host inside mainland China, yes. Non-commercial sites need a basic ICP filing (备案); commercial sites that sell, advertise, or take payment need a commercial ICP license, and a monetized game generally also needs an Internet Culture Business License. Hosting offshore avoids the filing but makes the game slow through the Great Firewall.</p>
<h3>Why do my fonts break in China?</h3>
<p>Almost always because you're loading them from Google Fonts or another blocked CDN, which fails inside the Firewall. Chinese fonts are also very large, so the fix is to subset the font to the glyphs you use and self-host it, or rely on device system fonts.</p>
<h3>Can I use Stripe or PayPal for a game in China?</h3>
<p>No. Chinese players pay with WeChat Pay and Alipay. Integrating either requires onshore hosting and an ICP license, so payments, hosting, and the filing are one linked project.</p>
<h3>What third-party services break in China?</h3>
<p>Anything from a company blocked in the country: Google (Fonts, Analytics), YouTube, Facebook and Twitter SDKs, and many external CDNs. Audit every URL your game loads and replace blocked ones with self-hosted assets or domestic providers.</p>
<h3>Is translating to Chinese enough to localize a game?</h3>
<p>No. Translation is a small part. You also have to handle denser text and line breaking, self-hosted fonts, onshore hosting and filing, local payments, blocked third-party services, and content review. The language is the easy layer.</p>
<p><BuildCta
  title="Build the game first, localize what earns it"
  desc="Make a web-native game in minutes and prove it before you invest in the China stack."
  prompt="Make a cozy farming game with day and night cycles" /></p>
<h2>Related</h2>
<ul>
<li><a href="/guides/publish-wechat-douyin-mini-games">How to Publish on WeChat &amp; Douyin Mini Games</a> — licenses, review, revenue share</li>
<li><a href="/guides/china-mini-game-platforms">China Mini-Game &amp; HTML5 Platforms Compared</a> — where to distribute</li>
<li><a href="/guides/wechat-mini-game-engines">Game Engines for WeChat Mini Games</a> — build for the platform</li>
<li><a href="/guides/publish-web-game">Best Places to Publish a Web Game</a> — the Western field</li>
<li><a href="/guides/publish-web-game">How to Publish a Web Game</a> — get the game live anywhere first</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How to Publish on WeChat & Douyin Mini Games (2026)]]></title>
            <link>https://app.cinevva.com/guides/publish-wechat-douyin-mini-games</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/publish-wechat-douyin-mini-games</guid>
            <pubDate>Fri, 10 Jul 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[The real pipeline for publishing a Mini Game in China in 2026. The ISBN/banhao license, why a foreign studio needs a local publisher, WeChat vs Douyin revenue share, and how the two platforms actually differ.]]></description>
            <content:encoded><![CDATA[<h1>How to Publish on WeChat &amp; Douyin Mini Games (2026)</h1>
<figure style="margin:1.5rem 0">
<img src="https://cdn.cinevva.com/guides/publish-wechat-douyin-mini-games-hero.jpg?v=1" alt="Publishing on WeChat and Douyin Mini Games in 2026" style="width:100%;border-radius:10px">
</figure>
<p>China's Mini Games market did roughly $7.65 billion in 2025, up about 34% year over year, and forecasts put it near $20 billion by 2030. Two platforms take more than 90% of that: WeChat Mini Games and Douyin Mini Games. If you've built a game and you want a shot at that market, this is the pipeline you actually have to walk. It's less about the game and more about licensing, a local partner, and picking the right platform.</p>
<p>If you haven't chosen an engine yet, start with <a href="/guides/wechat-mini-game-engines">game engines for WeChat Mini Games</a>. This guide assumes you have a build and asks how it gets published and paid for.</p>
<h2>The license is the gate</h2>
<p>Every game distributed in China, from AAA console titles down to a Mini Game running inside a chat app, exists under the same licensing regime. Two documents matter.</p>
<p>The software copyright (软著) is the easier one, a registration of authorship. The one that decides your business is the ISBN, or 版号 (banhao), the publishing license issued by the regulator. In practice, a Mini Game that takes in-app payments needs a banhao. An ad-only or free game has historically had a lighter path, but the rules tighten over time and the safe assumption is that any real monetization eventually needs the license.</p>
<p>Here's the part that stops most foreign studios cold: only an approved Chinese entity can hold the license and operate a monetized game. You cannot get a banhao as a foreign company. You publish through a licensed Chinese operator who holds the license, runs the payments, and takes a cut. This isn't a formality you can route around. It's the structure of the market.</p>
<p>The good news underneath it: <a href="/news/2026-01-06-china-game-approvals-2025">China approved 1,771 games in 2025</a>, the most since 2018, and the monthly cadence has been steady. The pipeline that used to freeze unpredictably is running predictably again, which makes planning around it possible in a way it wasn't a few years ago.</p>
<h2>What a foreign studio actually does</h2>
<p>The realistic sequence looks like this.</p>
<p>Find a Chinese publisher or operator. This is the load-bearing decision. They hold the license, handle the banhao application, integrate payments, and often help with cultural review and platform relationships. Their cut and their competence are the two things that make or break the deal.</p>
<p>Register the Mini Game account. A monetizing account needs a Chinese business entity behind it, which in practice is your publisher's, not yours.</p>
<p>Build against the platform. Package the game with the right engine and adapter, get under the initial-package limit, and wire in the platform's login, ad, and payment SDKs.</p>
<p>Submit for review. Every Mini Game goes through platform review before it's public, on top of the license. Content that's fine elsewhere can get flagged, so the earlier your publisher reviews it, the fewer surprises.</p>
<p>Launch and iterate. Both platforms reward live operations, events, and updates. A Mini Game is a service, not a one-time ship.</p>
<h2>WeChat vs Douyin: two different machines</h2>
<p>The big two are not interchangeable. They reach players in opposite ways, and that changes which games win on each.</p>
<p>WeChat Mini Games is the giant, around 500 to 570 million monthly players. Discovery runs on the social graph: friends sharing, group chats, the sense that everyone's already playing. Retention and word of mouth are the engine. WeChat's revenue share depends on the model. For in-game ads it's a 50/50 split. For in-app purchases the developer typically keeps about 60% and WeChat takes 40%, and titles published directly through WeChat can keep as much as 70%. WeChat rewards games people come back to and tell their friends about.</p>
<p>Douyin Mini Games is smaller, around 170 million monthly players, but it grew explosively, with revenue up roughly 100% and users up about 120% year over year in 2025. Discovery is the opposite of WeChat's: it's algorithmic, driven by short video. A clip of your game goes viral in the feed and sends a flood of players. Douyin also courts developers aggressively, letting some preferred partners keep as much as 90% of proceeds, and its Ohayoo label helps publish and monetize hyper-casual titles. Douyin rewards games that look irresistible in a five-second video.</p>
<p>The practical read: a retention-driven, socially shareable game leans WeChat. A hyper-casual game with a killer visual hook leans Douyin. Many studios ship to both, because the license and the build carry over and the audiences barely overlap.</p>
<h2>The revenue-share picture, briefly</h2>
<table>
<thead>
<tr>
<th>Platform</th>
<th>In-game ads</th>
<th>In-app purchases</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td>WeChat</td>
<td>~50/50</td>
<td>Developer keeps ~60% (up to 70% direct)</td>
<td>Social discovery, huge reach, retention-driven</td>
</tr>
<tr>
<td>Douyin</td>
<td>Favorable, negotiated</td>
<td>Preferred partners up to ~90%</td>
<td>Algorithmic video discovery, aggressive dev terms, Ohayoo for hyper-casual</td>
</tr>
</tbody>
</table>
<p>Numbers shift with promotions and partner status, so treat these as the shape of the deal, not a contract. Your publisher's cut sits on top of the platform's, which is why choosing the right operator matters as much as choosing the right platform.</p>
<h2>Where Cinevva fits</h2>
<p>Cinevva doesn't publish your game to WeChat or Douyin for you, and we won't pretend the licensing layer is smaller than it is. A local publisher and a banhao are real costs of entering China. What Cinevva gives you is the cheapest possible way to find out whether a game is worth that effort: build it as a browser game in minutes, put it in front of players, and see if it has the hook that survives a Douyin clip or the loop that earns a WeChat re-open. Prove the game on the open web first. Take the ones that work through the China pipeline second.</p>
<h2>Frequently asked questions</h2>
<h3>Do I need an ISBN (banhao) to publish a Mini Game in China?</h3>
<p>If the game takes in-app payments, effectively yes. Free or ad-only Mini Games have had a lighter path, but monetized games need the publishing license, and only an approved Chinese entity can hold it.</p>
<h3>Can a foreign developer publish directly to WeChat Mini Games?</h3>
<p>Not for a monetized game. Foreign studios publish through a licensed Chinese operator who holds the license, runs payments, and takes a share. Finding the right local publisher is the key decision.</p>
<h3>Which pays better, WeChat or Douyin?</h3>
<p>It depends on the model and your partner status. WeChat splits ads about 50/50 and lets developers keep roughly 60 to 70% of purchases. Douyin offers some preferred partners up to about 90%. Douyin's terms can be more generous, but WeChat's reach is far larger.</p>
<h3>What's the difference between WeChat and Douyin Mini Games?</h3>
<p>WeChat discovery is social, driven by sharing between friends and groups, and rewards retention. Douyin discovery is algorithmic, driven by short video, and rewards games that look great in a clip. WeChat is bigger, Douyin is growing faster.</p>
<h3>How big is the China Mini Games market?</h3>
<p>Around $7.65 billion in 2025, up about 34% year over year, with forecasts near $20 billion by 2030. WeChat and Douyin together account for more than 90% of it.</p>
<p><BuildCta
  title="Prove the game before you pay for the pipeline"
  desc="Build a browser version in minutes and test the hook before committing to a China launch."
  prompt="Make a satisfying merge puzzle with juicy combine effects" /></p>
<h2>Related</h2>
<ul>
<li><a href="/guides/wechat-mini-game-engines">Game Engines for WeChat Mini Games</a> — pick the engine before you publish</li>
<li><a href="/guides/china-mini-game-platforms">China Mini-Game &amp; HTML5 Platforms Compared</a> — beyond the big two</li>
<li><a href="/guides/localize-web-game-china">Localizing a Web Game for China</a> — fonts, hosting, payments, and the Firewall</li>
<li><a href="/guides/publish-web-game">Best Places to Publish a Web Game</a> — the Western distribution field</li>
<li><a href="/guides/promote-indie-game-no-budget">How to Promote an Indie Game With No Budget</a> — build the audience that makes a launch land</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Game Engines for WeChat Mini Games (2026)]]></title>
            <link>https://app.cinevva.com/guides/wechat-mini-game-engines</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/wechat-mini-game-engines</guid>
            <pubDate>Fri, 10 Jul 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Which engine to use for WeChat Mini Games in 2026. Cocos Creator, LayaAir, Egret, Unity's WebGL transform, and Unity China's Tuanjie engine, compared on the 4 MB package limit, the built-in engine plugin, and how you port an existing web game.]]></description>
            <content:encoded><![CDATA[<h1>Game Engines for WeChat Mini Games (2026)</h1>
<figure style="margin:1.5rem 0">
<img src="https://cdn.cinevva.com/guides/wechat-mini-game-engines-hero.jpg?v=1" alt="Game engines for WeChat Mini Games in 2026" style="width:100%;border-radius:10px">
</figure>
<p>WeChat Mini Games (微信小游戏) are the biggest games platform most Western developers have never shipped to. More than 500 million people play them every month, inside the same app they use to message friends and pay for lunch. There's no install, no app store, no download screen. A player taps a link and the game runs.</p>
<p>The catch is that a Mini Game is not a normal web game. It runs in a JavaScript sandbox with no DOM and no HTML, on a custom canvas the platform hands you, and your first package cannot exceed 4 MB. Which engine you pick decides how much of that fight you have to have yourself. This guide compares the real options in 2026.</p>
<p>If you're choosing a browser engine in general first, our <a href="/guides/web-game-engines-comparison">web game engines comparison</a> covers the wider field. This page is only about the engines that ship to WeChat.</p>
<h2>Quick Reference</h2>
<table>
<thead>
<tr>
<th>Engine</th>
<th>Built-in WeChat plugin?</th>
<th>2D/3D</th>
<th>Language</th>
<th>Package-size story</th>
<th>Best for</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Cocos Creator</strong></td>
<td>Yes, baked into the WeChat client</td>
<td>2D + 3D</td>
<td>TypeScript</td>
<td>Best: the engine doesn't count against your 4 MB, plus AssetBundle subpackaging</td>
<td>WeChat-first with no existing code (the default)</td>
</tr>
<tr>
<td><strong>LayaAir</strong></td>
<td>No</td>
<td>2D + 3D</td>
<td>TypeScript</td>
<td>Engine eats package budget; fine for small 2D, tight for 3D</td>
<td>Teams who prefer Laya's workflow</td>
</tr>
<tr>
<td><strong>Egret</strong></td>
<td>No</td>
<td>2D</td>
<td>—</td>
<td>Legacy, shrinking ecosystem</td>
<td>Maintaining an existing Egret game only</td>
</tr>
<tr>
<td><strong>Unity (WebGL transform)</strong></td>
<td>No, uses the transform SDK</td>
<td>2D + 3D</td>
<td>C#</td>
<td>Brutal: WebGL builds are large, so expect heavy stripping and subpackaging</td>
<td>Porting an existing Unity game fast</td>
</tr>
<tr>
<td><strong>Tuanjie (Unity China)</strong></td>
<td>No, WeChat is a native export target</td>
<td>2D + 3D</td>
<td>C#</td>
<td>Native target, avoids the WebGL-conversion bloat</td>
<td>China-committed studios with Unity skills</td>
</tr>
<tr>
<td><strong>Three.js / raw WebGL</strong></td>
<td>No, via <code>weapp-adapter</code></td>
<td>2D + 3D</td>
<td>JavaScript</td>
<td>You own the subpackaging yourself; good for small, size-sensitive games</td>
<td>Small custom games or teams already in Three.js</td>
</tr>
</tbody>
</table>
<h2>What makes a WeChat Mini Game different</h2>
<p>Before the engine choice makes sense, three constraints matter.</p>
<p>There's no DOM. The Mini Game runtime is a bare JavaScript environment with a <code>canvas</code> and a WebGL (and increasingly WebGPU) context, plus WeChat's own APIs for storage, audio, networking, and the social layer. Anything that assumes <code>document</code>, <code>window</code>, or an HTML element has to go through an adapter that fakes those objects. Every engine below ships that adapter.</p>
<p>The 4 MB rule is the whole game. Your initial package, the code and assets that load before the first frame, must fit in 4 MB. Everything else has to be split into subpackages (分包) that download on demand, up to a much larger total. Getting under 4 MB is the single hardest engineering problem on the platform, and it's the main thing your engine either helps or hurts with.</p>
<p>Monetization needs a license. A Mini Game that takes in-app payments needs a Chinese game license, and a foreign studio needs a local publisher to get one. That's a distribution problem, not an engine problem, and we cover it in the <a href="/guides/publish-wechat-douyin-mini-games">WeChat and Douyin publishing guide</a>.</p>
<h2>Cocos Creator: the default</h2>
<p>Cocos Creator is what most WeChat Mini Games are built in, and the platform is built to reward that. Since WeChat client 7.0.7, the Cocos engine runtime is a plugin baked into the WeChat app itself. If a player has run any Cocos Mini Game before, the engine code is already on their phone and doesn't count against your 4 MB. That's a structural advantage no other engine has: your package is just your game, not your game plus the engine.</p>
<p>Cocos also ships the AssetBundle system, which is the cleanest way to handle subpackaging. You mark bundles to load on demand, and the difference between a project that fits in 4 MB and one that doesn't is usually just moving the right bundles out of the main package. It does 2D and 3D, uses TypeScript, and its build panel targets WeChat as a first-class platform.</p>
<p>If you have no existing codebase and you're building for WeChat first, Cocos Creator is the safe pick. Start here unless you have a specific reason not to.</p>
<h2>LayaAir: the strong alternative</h2>
<p>LayaAir (from Laya) is the other engine that adapted to WeChat early and treats it as a first-class target. You pick WeChat Mini Game in the build panel and it publishes. It handles 2D and 3D, uses TypeScript, and has a loyal base of developers who prefer its workflow to Cocos. Developers who've used both tend to describe the choice as a matter of taste rather than capability.</p>
<p>The one thing to weigh: LayaAir's engine runtime is not baked into the WeChat client the way Cocos is, so you pay more of your package budget for the engine itself. For a small 2D game that's usually fine. For an asset-heavy 3D game where every kilobyte of the 4 MB matters, Cocos's built-in plugin can be the deciding factor.</p>
<h2>Egret: legacy, use with eyes open</h2>
<p>Egret (白鹭) is an older 2D HTML5 engine that supported WeChat Mini Games early and powered a lot of the first wave. It still works, but momentum has moved to Cocos and Laya, community activity has thinned, and starting a new project on it in 2026 means betting on a shrinking ecosystem. If you're maintaining an existing Egret game, fine. If you're starting fresh, pick Cocos or Laya.</p>
<h2>Unity: the WebGL transform path</h2>
<p>Unity has no native WeChat export, but Tencent and Unity maintain an official tool that converts a Unity WebGL build into a Mini Game package: the WeChat Mini Game transform SDK, sometimes shipped as the WeChat MiniGame Exporter. As of a mid-2025 update it does one-click export, and the companion <code>minigame-adaptor</code> claims roughly 3x rendering performance over plain WebGL by using WeChat's optimized rendering path.</p>
<p>This is the route if you already have a Unity game and want it on WeChat without a rewrite. Be realistic about the tradeoff. Unity WebGL builds are large, and the 4 MB initial package is brutal for an engine that wasn't designed around it. You'll spend real effort on stripping, code splitting, and pushing assets into subpackages. It's a port-an-existing-game tool, not a build-for-WeChat-first tool.</p>
<h2>Tuanjie: Unity China's native answer</h2>
<p>If you like Unity's workflow but want WeChat as a real build target instead of a WebGL conversion, look at Tuanjie (团结引擎), Unity China's localized engine. It's based on Unity 2022 LTS and treats WeChat Mini Games as a native platform alongside iOS and Android, plus domestic targets like OpenHarmony and AliOS. Recent versions added a full real-time global illumination system (TuanjieGI), and it's passed 500,000 downloads.</p>
<p>For a studio committed to the Chinese market with Unity muscle memory, Tuanjie is the most future-proof of the Unity-family options, because WeChat isn't an afterthought bolted on through WebGL. It's a first-class export.</p>
<h2>Three.js and raw WebGL</h2>
<p>You can run Three.js or hand-written WebGL inside a Mini Game through WeChat's <code>weapp-adapter</code>, which stubs out the DOM and canvas objects the library expects. This is the most flexible and the most work: you own the render loop, the asset pipeline, the subpackaging, and every adapter edge case yourself. It makes sense for a small, custom, size-sensitive game where a full engine is overkill, or when your team already lives in Three.js and wants to reuse its code.</p>
<p>This is also the path closest to a browser game you've already built. A Three.js game that runs on the open web is structurally close to one that runs in WeChat. The gap is the adapter and the 4 MB budget, not the rendering.</p>
<h2>The quick pick</h2>
<p>Building for WeChat first, no existing code: Cocos Creator. The built-in engine plugin and AssetBundle system make the 4 MB fight winnable.</p>
<p>Porting an existing Unity game: the WeChat WebGL transform SDK to get there fast, or Tuanjie if you're committing to China long term and want a native target.</p>
<p>Small, custom, or already in Three.js: the <code>weapp-adapter</code> and raw WebGL, and accept that you're doing the plumbing yourself.</p>
<p>Prefer Laya's workflow: LayaAir, with an eye on package size for 3D.</p>
<h2>Where Cinevva fits</h2>
<p>Cinevva builds web-first 3D games on Three.js that run from a link in any browser, which is the same shape a WeChat Mini Game wants: no install, instant play, JavaScript and WebGL under the hood. The Great Firewall and the licensing layer are real, and we're honest that shipping into WeChat means a local publisher and the 4 MB discipline. But the game itself, a browser-native 3D experience with no download, is already the thing the biggest games platform in China is built around. If you're prototyping something you might one day want in front of 500 million Mini Game players, starting in the browser is the least wasted motion.</p>
<h2>Frequently asked questions</h2>
<h3>What is the file size limit for a WeChat Mini Game?</h3>
<p>The initial package is capped at 4 MB. Anything beyond that must be split into subpackages (分包) that load on demand, which together can reach a much larger total. Fitting the first-load experience into 4 MB is the core optimization problem on the platform.</p>
<h3>Can I use Unity for WeChat Mini Games?</h3>
<p>Yes, but not natively. Tencent and Unity provide an official transform SDK that converts a Unity WebGL build into a Mini Game, with one-click export as of mid-2025. Alternatively, Unity China's Tuanjie engine supports WeChat as a native build target. Expect to spend effort on build size either way.</p>
<h3>Which engine do most WeChat Mini Games use?</h3>
<p>Cocos Creator is the most common choice, helped by the fact that its engine runtime is built into the WeChat client, so it doesn't eat into your 4 MB package. LayaAir is the main alternative.</p>
<h3>Do WeChat Mini Games support 3D?</h3>
<p>Yes. Cocos Creator, LayaAir, Unity (via the transform SDK), and Tuanjie all handle 3D, and WeChat's runtime exposes WebGL and increasingly WebGPU. The constraint is package size and performance on low-end phones, not whether 3D is possible.</p>
<h3>Can I turn my browser game into a WeChat Mini Game?</h3>
<p>Often, yes. A game built on Three.js or WebGL can run inside WeChat through the <code>weapp-adapter</code>, which emulates the browser objects the code expects. The work is in the adapter layer and getting under the 4 MB initial-package limit, not in rewriting the game.</p>
<p><BuildCta
  title="Start in the browser, keep your options open"
  desc="Prototype a web-native 3D game first. It's the same shape a Mini Game wants, minus the sandbox."
  prompt="Make a fast one-tap endless runner through a neon city" /></p>
<h2>Related</h2>
<ul>
<li><a href="/guides/publish-wechat-douyin-mini-games">How to Publish on WeChat &amp; Douyin Mini Games</a> — licenses, review, and revenue share</li>
<li><a href="/guides/china-mini-game-platforms">China Mini-Game &amp; HTML5 Platforms Compared</a> — WeChat, Douyin, QQ, 4399, and the rest</li>
<li><a href="/guides/localize-web-game-china">Localizing a Web Game for China</a> — fonts, hosting, payments, and the Firewall</li>
<li><a href="/guides/web-game-engines-comparison">Best Web Game Engines for 2026 (Compared)</a> — the full field</li>
<li><a href="/guides/threejs-vs-babylonjs">Three.js vs Babylon.js</a> — if you're going the raw-WebGL route</li>
<li><a href="/engine">Cinevva Engine</a> — our open-source, web-first engine built on Three.js</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Casual Games Trends in 2026 (What the Data Actually Says)]]></title>
            <link>https://app.cinevva.com/guides/casual-games-trends-2026</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/casual-games-trends-2026</guid>
            <pubDate>Tue, 30 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[A data-backed look at casual games trends in 2026, from the download decline and the rise of hybrid-casual to where the money is, which titles are breaking out, and what AI is changing.]]></description>
            <content:encoded><![CDATA[<h1>Casual Games Trends in 2026 (What the Data Actually Says)</h1>
<p><em>Last updated: September 2026.</em></p>
<p>The casual games story for 2026 is not &quot;the boom continues.&quot; It's &quot;the boom matured.&quot; Players are still opening these games more often, but they're installing fewer new ones, and the money is moving in ways that reward a different kind of game than the one that won three years ago. We dug through the full-year 2025 numbers from <a href="https://sensortower.com/state-of-gaming-2025">Sensor Tower</a>, AppMagic (via <a href="https://investgame.net/wp-content/uploads/2025/07/Gamesforum-Intelligence-Casual-Gaming-Report.pdf">Gamesforum Intelligence</a> and <a href="https://www.gamerefinery.com/mobile-game-market-review-december-2025/">GameRefinery</a>), and the analysts at <a href="https://www.deconstructoroffun.com/blog/2026/2/2/state-of-mobile-2026">Deconstructor of Fun</a> and <a href="https://www.pocketgamer.biz/what-happened-to-hypercasual-the-markets-evolution-over-the-past-year/">PocketGamer.biz</a> to separate the real shifts from the hype. Here's what's actually happening.</p>
<p>The short version: the casual games market matured in 2025. In-app revenue rose just 1.3% to about $81.75 billion while downloads fell 7.2% to 50.4 billion, so growth now comes from players spending more, not from new installs. Hybrid-casual was the only segment to grow in-app revenue, up 20% to $4.2 billion, with hybrid-casual puzzle as the standout. Monetization spread into a wide spectrum, from ad-only volume plays to ad-free games earning over $500 million, and generative AI moved from experiment to standard tooling in studios. The first half of 2026 confirmed the pattern: mobile game spending slipped 2% to about $40 billion while hybrid-casual grew another 23%, and the year's biggest casual deals were for exactly that kind of game.</p>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 210" role="img" aria-label="The 2025 mobile-game scoreboard: $81.8B in-app revenue up 1.3%, 50.4B downloads down 7.2%, $4.2B hybrid-casual revenue up 20%, 22.05B hypercasual installs" style="width:100%;height:auto;max-width:720px;margin:1.5rem auto;display:block;border-radius:14px">
  <rect width="720" height="210" rx="14" fill="#0b1020"/>
  <text x="24" y="40" font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif" font-size="20" font-weight="800" fill="#e8edf5">The 2025 scoreboard</text>
  <text x="24" y="62" font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif" font-size="13" fill="#9aa7b4">Full-year mobile-game data. Source: Sensor Tower.</text>
  <g font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif">
    <g transform="translate(24,80)">
      <rect width="156" height="106" rx="10" fill="#121a31"/>
      <text x="16" y="48" font-size="27" font-weight="800" fill="#c8a8ff">$81.8B</text>
      <text x="16" y="72" font-size="12" fill="#9aa7b4">Mobile-game IAP</text>
      <rect x="16" y="82" width="62" height="20" rx="10" fill="#fbbf2422"/>
      <text x="26" y="96" font-size="12" font-weight="700" fill="#fbbf24">+1.3%</text>
    </g>
    <g transform="translate(196,80)">
      <rect width="156" height="106" rx="10" fill="#121a31"/>
      <text x="16" y="48" font-size="27" font-weight="800" fill="#7dd3fc">50.4B</text>
      <text x="16" y="72" font-size="12" fill="#9aa7b4">App downloads</text>
      <rect x="16" y="82" width="62" height="20" rx="10" fill="#fb718522"/>
      <text x="26" y="96" font-size="12" font-weight="700" fill="#fb7185">&#8722;7.2%</text>
    </g>
    <g transform="translate(368,80)">
      <rect width="156" height="106" rx="10" fill="#121a31"/>
      <text x="16" y="48" font-size="27" font-weight="800" fill="#f0abfc">$4.2B</text>
      <text x="16" y="72" font-size="12" fill="#9aa7b4">Hybrid-casual IAP</text>
      <rect x="16" y="82" width="56" height="20" rx="10" fill="#6ee7b722"/>
      <text x="26" y="96" font-size="12" font-weight="700" fill="#6ee7b7">+20%</text>
    </g>
    <g transform="translate(540,80)">
      <rect width="156" height="106" rx="10" fill="#121a31"/>
      <text x="16" y="48" font-size="27" font-weight="800" fill="#e8edf5">22.05B</text>
      <text x="16" y="72" font-size="12" fill="#9aa7b4">Hypercasual installs</text>
      <rect x="16" y="82" width="92" height="20" rx="10" fill="#ffffff14"/>
      <text x="26" y="96" font-size="12" font-weight="700" fill="#9aa7b4">#1 by volume</text>
    </g>
  </g>
</svg>
<h2>The market stopped growing on installs</h2>
<p>Mobile games pulled in about $81.75 billion in in-app purchases in 2025, but that was only a 1.3% increase over 2024, according to the <a href="https://www.deconstructoroffun.com/blog/2026/2/2/state-of-mobile-2026">full-year 2025 numbers</a>. Downloads went the other way and fell 7.2% to 50.4 billion, the second year in a row they've declined. For context, all-app in-app spending across the store grew a healthy 10.6% to $167 billion, so it's games specifically that flattened out, not mobile commerce in general.</p>
<p>That gap is the whole story. Engagement is still climbing (the prior year saw sessions up 12% and time spent up 7.9%), but new installs are shrinking. Growth now comes from getting more money out of the players you already have, not from acquiring new ones. The cheap-user-acquisition era is over.</p>
<p>The early 2026 numbers say this is accelerating, not reversing. <a href="https://gamedevreports.substack.com/p/sensor-tower-mobile-market-in-q1">Sensor Tower's Q1 2026 data</a> puts mobile game spending at $20.4 billion, up just 0.5% year over year, while downloads fell 11.9%, a steeper drop than 2025's full-year decline. The bright spot is puzzle, with revenue up 21% year over year.</p>
<p>You can see the same divergence inside the casual category itself. Across the top 1,000 casual games, in-app purchase revenue climbed from $17.47 billion in 2022 to $21.99 billion in 2024, with 2025 forecast at $22.99 billion, while downloads stayed roughly flat near 16 billion, per the <a href="https://investgame.net/wp-content/uploads/2025/07/Gamesforum-Intelligence-Casual-Gaming-Report.pdf">Gamesforum Intelligence casual report</a> (AppMagic data). More revenue, the same number of downloads. Players are simply spending more per install.</p>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 360" role="img" aria-label="Casual revenue keeps climbing while downloads stay flat, 2022 to 2025" style="width:100%;height:auto;max-width:720px;margin:1.5rem auto;display:block;border-radius:14px">
  <defs>
    <linearGradient id="revfill" x1="0" y1="0" x2="0" y2="1">
      <stop offset="0" stop-color="#c8a8ff" stop-opacity="0.34"/>
      <stop offset="1" stop-color="#c8a8ff" stop-opacity="0"/>
    </linearGradient>
  </defs>
  <rect width="720" height="360" rx="14" fill="#0b1020"/>
  <text x="32" y="44" font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif" font-size="20" font-weight="800" fill="#e8edf5">Casual revenue keeps climbing. Installs don't.</text>
  <text x="32" y="68" font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif" font-size="13" fill="#9aa7b4">Top 1,000 casual games: IAP revenue ($B) vs downloads (B). 2025 forecast. Source: AppMagic / Gamesforum.</text>
  <g stroke="#ffffff" stroke-opacity="0.07"><path d="M70 130 H680 M70 190 H680 M70 250 H680"/></g>
  <g font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif" font-size="12" fill="#9aa7b4">
    <line x1="70" y1="300" x2="680" y2="300" stroke="#ffffff" stroke-opacity="0.14"/>
    <text x="110" y="324" text-anchor="middle">2022</text>
    <text x="300" y="324" text-anchor="middle">2023</text>
    <text x="490" y="324" text-anchor="middle">2024</text>
    <text x="650" y="324" text-anchor="middle">2025f</text>
  </g>
  <path d="M110 208 L300 168 L490 130 L650 120 L650 300 L110 300 Z" fill="url(#revfill)"/>
  <polyline points="110,208 300,168 490,130 650,120" fill="none" stroke="#c8a8ff" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/>
  <polyline points="110,244 300,242 490,238 650,232" fill="none" stroke="#7dd3fc" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/>
  <g font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif" font-weight="700" font-size="12">
    <circle cx="650" cy="120" r="5" fill="#c8a8ff"/>
    <text x="638" y="108" text-anchor="end" fill="#c8a8ff">Revenue $23.0B</text>
    <circle cx="650" cy="232" r="5" fill="#7dd3fc"/>
    <text x="638" y="258" text-anchor="end" fill="#7dd3fc">Downloads 16.4B</text>
  </g>
  <g transform="translate(118,128)">
    <rect width="186" height="26" rx="13" fill="#c8a8ff1f"/>
    <text x="16" y="18" font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif" font-size="13" font-weight="700" fill="#c8a8ff">+32% revenue since 2022</text>
  </g>
</svg>
<h2>Hypercasual's ad-only model broke, and that's fine</h2>
<p>The headline you'll see a lot is &quot;hypercasual is dying.&quot; That's half right. What broke is the economics, not the games. For years hypercasual ran on a single trick: buy installs cheap, show ads, keep the spread. As acquisition costs rose past what ads could pay back, that pure ad-only model stopped working.</p>
<p>The games themselves are doing fine. Hypercasual still dominated downloads in 2025 with 22.05 billion installs and kept expanding time spent, per <a href="https://gameworldobserver.com/2026/01/21/in-2025-the-revenue-of-the-mobile-gaming-market-grew-but-only-slightly-analysis">Game World Observer</a>. <a href="https://www.pocketgamer.biz/what-happened-to-hypercasual-the-markets-evolution-over-the-past-year/">PocketGamer.biz reports</a> that leading titles earned roughly 3x more per month than the year before, though that number comes off a low base and partly reflects hybrid-casual games that got reclassified. The takeaway is simple: the format survives by adding in-app purchases on top of ads instead of living on ads alone.</p>
<h2>Hybrid-casual is the actual winner</h2>
<p>If one trend defines 2026, it's hybrid-casual. It was the only casual segment to grow in-app purchase revenue last year, up 20% to $4.2 billion, with the top 10 titles posting year-over-year IAP growth between 67% and 100%, as <a href="https://gameworldobserver.com/2026/01/21/in-2025-the-revenue-of-the-mobile-gaming-market-grew-but-only-slightly-analysis">Game World Observer</a> breaks down. Trackers cut the segment differently, with Game World Observer's read at 20% and Sensor Tower's own at 37%, but every read agrees it was the only casual segment growing. Hybrid-casual takes the snackable, ad-friendly loops of hypercasual and bolts on the meta-progression and spending depth of a real casual game. It keeps the easy install and adds a reason to pay.</p>
<p>The growth is concentrated in hybrid-casual puzzle. <a href="https://www.gamerefinery.com/mobile-game-market-review-december-2025/">GameRefinery's December 2025 review</a> calls established subgenres like Match3 &quot;intensely saturated&quot; while a cluster of newer puzzle titles scaled into the top grossing charts: Color Block Jam, Pixel Flow, Screwdom, Magic Sort, and All in Hole. Color Block Jam alone did about $42 million in revenue on 21.8 million installs in a single quarter. The story kept moving through the first half of 2026: Pixel Flow graduated from newcomer to category leader, passing <a href="https://appmagic.rocks/research/casual-report-H12026">$125 million in in-app revenue in under a year</a> per AppMagic's H1 2026 report, Jigsolitaire and Color Block: Combo Blast are the names scaling now, and Gossip Harbor and Tasty Travels drove much of puzzle's Q1 revenue growth. Pixel Flow's studio also became the year's headline acquisition, which the next section covers. If you're deciding what kind of casual game to make in 2026, &quot;saturated Match3 clone&quot; and &quot;fresh hybrid-casual puzzle&quot; are very different bets.</p>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 300" role="img" aria-label="Notable casual hits of 2025: top grossing Royal Match and Monopoly Go, breakout hybrid-casual puzzle Color Block Jam, Screwdom and Pixel Flow" style="width:100%;height:auto;max-width:720px;margin:1.5rem auto;display:block;border-radius:14px">
  <rect width="720" height="300" rx="14" fill="#0b1020"/>
  <text x="32" y="44" font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif" font-size="20" font-weight="800" fill="#e8edf5">What broke out in 2025</text>
  <text x="32" y="68" font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif" font-size="13" fill="#9aa7b4">Revenue windows vary. Source: AppMagic.</text>
  <g font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif">
    <text x="32" y="100" font-size="12" font-weight="800" letter-spacing="1" fill="#c8a8ff">TOP GROSSING · NO ADS</text>
    <g transform="translate(32,112)">
      <rect width="316" height="46" rx="10" fill="#121a31"/>
      <text x="16" y="29" font-size="15" font-weight="700" fill="#e8edf5">Royal Match</text>
      <text x="300" y="29" text-anchor="end" font-size="14" font-weight="800" fill="#c8a8ff">&gt;$500M</text>
    </g>
    <g transform="translate(32,166)">
      <rect width="316" height="46" rx="10" fill="#121a31"/>
      <text x="16" y="29" font-size="15" font-weight="700" fill="#e8edf5">Monopoly Go!</text>
      <text x="300" y="29" text-anchor="end" font-size="14" font-weight="800" fill="#c8a8ff">$431M</text>
    </g>
    <text x="372" y="100" font-size="12" font-weight="800" letter-spacing="1" fill="#7dd3fc">BREAKOUT HYBRID-CASUAL PUZZLE</text>
    <g transform="translate(372,112)">
      <rect width="316" height="46" rx="10" fill="#121a31"/>
      <text x="16" y="22" font-size="15" font-weight="700" fill="#e8edf5">Color Block Jam</text>
      <text x="16" y="38" font-size="11" fill="#9aa7b4">21.8M installs in a quarter</text>
      <text x="300" y="30" text-anchor="end" font-size="14" font-weight="800" fill="#7dd3fc">$42M</text>
    </g>
    <g transform="translate(372,166)">
      <rect width="150" height="46" rx="10" fill="#121a31"/>
      <text x="16" y="22" font-size="14" font-weight="700" fill="#e8edf5">Screwdom</text>
      <text x="134" y="38" text-anchor="end" font-size="13" font-weight="800" fill="#7dd3fc">$27.1M</text>
    </g>
    <g transform="translate(538,166)">
      <rect width="150" height="46" rx="10" fill="#121a31"/>
      <text x="16" y="22" font-size="14" font-weight="700" fill="#e8edf5">Pixel Flow</text>
      <text x="134" y="38" text-anchor="end" font-size="11" fill="#9aa7b4">overtook by Dec</text>
    </g>
  </g>
  <text x="32" y="248" font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif" font-size="12.5" fill="#9aa7b4">Magic Sort and All in Hole also scaled into the top-50 grossing charts, while Match3</text>
  <text x="32" y="268" font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif" font-size="12.5" fill="#9aa7b4">stayed flat in an intensely saturated field.</text>
</svg>
<h2>The H1 2026 numbers and the deals they triggered</h2>
<p>The first-half 2026 reports landed in August, and they read like a continuation of 2025 rather than a turn. Sensor Tower's <a href="https://sensortower.com/blog/h1-2026-digital-gaming-market-index">H1 2026 gaming market index</a> puts mobile in-app spending at about $40 billion, down 2% year over year, with downloads off 12% to 24 billion and playtime flat at 221 billion hours. Inside that, casual held near $16.5 billion, mid-core fell about 7% to roughly $20.6 billion, and hybrid-casual was again the only segment growing, up about 23% to $2.4 billion. Puzzle IAP grew almost 20% to $8.07 billion in the same window, per the <a href="https://gamedevreports.substack.com/p/sensor-tower-the-gaming-market-in">report breakdown</a>, which also lists Block Blast! as the top ad earner from January to May at $127 million and shows hybrid-casual titles now beating the top-25 casual games on day-7 retention, a benchmark that averaged 14.9% for casual in December 2025 per Sensor Tower's <a href="https://gamedevreports.substack.com/p/sensor-tower-state-of-gaming-2026">State of Gaming 2026</a>.</p>
<p>AppMagic's <a href="https://appmagic.rocks/research/casual-report-H12026">Casual Games Report H1 2026</a> (summarized by <a href="https://www.pocketgamer.biz/puzzle-accounts-for-44-of-casual-mobile-earnings-in-h1-2026/">PocketGamer.biz</a>) cuts the same period by subgenre. Casual IAP came to about $11 billion, effectively flat, with puzzle taking 44% of it at $4.9 billion. Match-3 stayed flat at $2.5 billion even as downloads rose 10%, and only one in 120 new match-3 games reached $100,000 a month. Merge-2 jumped 74% to $1.3 billion on the back of Gossip Harbor, which cleared $100 million in a single month in March, and Tasty Travels, which earned $127 million in the half. Hybrid-casual puzzles as a group made around $600 million on IAP alone, sort puzzles grew 229% by revenue, and more than 2,000 block puzzles launched in six months, up 89%. That last number is the clearest sign yet of where the clones are heading.</p>
<p>The money followed. Scopely <a href="https://www.scopely.com/en/news/scopely-to-acquire-majority-stake-in-breakout-mobile-game-pixel-flow-and-the-development-team-behind-it">announced a majority stake in Loom Games</a>, the 20-person Istanbul studio behind Pixel Flow, on February 19, 2026, a deal InvestGame's <a href="https://investgame.net/news/pdf/video-game-market-update-q2-2026/">Q2 2026 market update</a> values at roughly $1 billion. Tripledot bought the hybrid-casual publishing label Supersonic from Unity for about <a href="https://www.gamedeveloper.com/business/unity-sells-supersonic-publishing-biz-to-tripledot-for-40m">$40 million</a>, a deal that closed August 4, 2026. InvestGame counts Q1 2026 as the most active quarter for $100 million-plus content deals since the pandemic cycle, <a href="https://wnhub.io/news/other/item-50518">$7.7 billion across 52 transactions</a>, most of it Savvy Games Group's roughly $6 billion purchase of Moonton, with Q2 settling to $2.3 billion across 54 deals. The pattern is consistent: scaled publishers are buying proven hybrid-casual puzzle hits and the pipelines that make them, not hypercasual volume. For the full year, Newzoo's forecast (report due September 10, 2026, <a href="https://gamedevreports.substack.com/p/newzoo-the-gaming-market-in-2026">previewed here</a>) has the total games market at $213.9 billion, up 6.1%, with mobile at $121.1 billion, up 6.8%, so the industry expects the revenue side to keep growing even as installs shrink.</p>
<h2>Monetization is now a spectrum, not a model</h2>
<p>There's no single &quot;casual monetization model&quot; anymore. The market split into a clear spectrum, and where a game sits depends on what it is. The consistent read across the trackers is that blending in-app purchases with ads has become the optimized middle strategy, but the extremes still win big.</p>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 290" role="img" aria-label="The casual monetization spectrum, from ad-only Block Blast to hybrid Candy Crush and Coin Master to ad-free Royal Match and Monopoly Go" style="width:100%;height:auto;max-width:720px;margin:1.5rem auto;display:block;border-radius:14px">
  <defs>
    <linearGradient id="spec" x1="0" y1="0" x2="1" y2="0">
      <stop offset="0" stop-color="#7dd3fc"/>
      <stop offset="0.5" stop-color="#a9b4ff"/>
      <stop offset="1" stop-color="#c8a8ff"/>
    </linearGradient>
  </defs>
  <rect width="720" height="290" rx="14" fill="#0b1020"/>
  <text x="32" y="44" font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif" font-size="20" font-weight="800" fill="#e8edf5">One genre, three money models</text>
  <text x="32" y="68" font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif" font-size="13" fill="#9aa7b4">Where casual hits sit on the monetization spectrum. Source: AppMagic, Gamesforum.</text>
  <rect x="60" y="150" width="600" height="10" rx="5" fill="url(#spec)"/>
  <g font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif">
    <g text-anchor="middle">
      <circle cx="150" cy="155" r="9" fill="#7dd3fc" stroke="#0b1020" stroke-width="3"/>
      <text x="150" y="120" font-size="14" font-weight="800" fill="#e8edf5">Block Blast!</text>
      <text x="150" y="138" font-size="11.5" fill="#9aa7b4">most-downloaded</text>
      <text x="150" y="186" font-size="12" font-weight="700" fill="#7dd3fc">Ad-only</text>
      <text x="150" y="204" font-size="11.5" fill="#9aa7b4">monetized on volume</text>
    </g>
    <g text-anchor="middle">
      <circle cx="360" cy="155" r="9" fill="#a9b4ff" stroke="#0b1020" stroke-width="3"/>
      <text x="360" y="120" font-size="14" font-weight="800" fill="#e8edf5">Candy Crush · Coin Master</text>
      <text x="360" y="138" font-size="11.5" fill="#9aa7b4">the rising default</text>
      <text x="360" y="186" font-size="12" font-weight="700" fill="#a9b4ff">Hybrid (IAP + ads)</text>
      <text x="360" y="204" font-size="11.5" fill="#9aa7b4">rewarded video plus purchases</text>
    </g>
    <g text-anchor="middle">
      <circle cx="570" cy="155" r="9" fill="#c8a8ff" stroke="#0b1020" stroke-width="3"/>
      <text x="570" y="120" font-size="14" font-weight="800" fill="#e8edf5">Royal Match · Monopoly Go!</text>
      <text x="570" y="138" font-size="11.5" fill="#9aa7b4">&gt;$500M · $431M</text>
      <text x="570" y="186" font-size="12" font-weight="700" fill="#c8a8ff">Ad-free, IAP only</text>
      <text x="570" y="204" font-size="11.5" fill="#9aa7b4">spenders carry it</text>
    </g>
  </g>
  <g font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif" font-size="12" fill="#5b6472" font-weight="600">
    <text x="60" y="252">◄ Reach &amp; volume</text>
    <text x="660" y="252" text-anchor="end">Depth &amp; spenders ►</text>
  </g>
</svg>
<table>
<thead>
<tr>
<th>Model</th>
<th>Who runs it</th>
<th>Examples</th>
<th>What it tells you</th>
</tr>
</thead>
<tbody>
<tr>
<td>Ad-free, IAP only</td>
<td>The top grossing earners</td>
<td>Royal Match (over $500M Jan-Apr 2025), Monopoly Go! ($431M)</td>
<td>Deep meta-games don't need ads, paying players carry them</td>
</tr>
<tr>
<td>Hybrid (IAP + ads)</td>
<td>The mid-tier and most new hits</td>
<td>Candy Crush, Coin Master, Township</td>
<td>The rising default, rewarded video plus purchases</td>
</tr>
<tr>
<td>Ad-only</td>
<td>The most-downloaded titles</td>
<td>Block Blast!</td>
<td>Huge reach, monetized almost entirely on volume</td>
</tr>
</tbody>
</table>
<p>The lesson isn't &quot;pick one.&quot; It's that the model should follow the game. A pure puzzle toy with massive reach can live on ads. A game with collection, progression, and social hooks leaves money on the table if it shows ads to its spenders. Most everything in between does best blending the two. The figures here come from the <a href="https://investgame.net/wp-content/uploads/2025/07/Gamesforum-Intelligence-Casual-Gaming-Report.pdf">Gamesforum Intelligence casual report</a> (AppMagic data).</p>
<h2>What ad revenue can a casual game expect in 2026?</h2>
<p>The ad side of that spectrum is bigger than most people assume. Mobile game advertising passed <a href="https://gameworldobserver.com/2026/07/06/in-2025-mobile-game-advertising-revenue-exceeded-12-billion-analytics">$12 billion in 2025</a>, per Sensor Tower's ad monetization deep-dive, and puzzle games alone took 53% of genre ad revenue share in early 2026. How much of your revenue ads should be depends heavily on where your players are. Ads made up about 22% of US mobile game revenue between January and May 2026 but 70% in India, so a tier-1 audience pays you through purchases and a high-volume global audience pays you through impressions.</p>
<p>On rates, <a href="https://business.mistplay.com/resources/mobile-ads-ecpm/">Appodeal's eCPM benchmarks</a> put US averages at roughly $15 for rewarded video, $12 to $13 for interstitials, and around $0.50 for banners, with Europe and APAC meaningfully lower. Per-player earnings swing by subgenre more than by network: Appodeal's <a href="https://appdevelopermagazine.com/mobile-casual-benchmarks-report-2025/">casual benchmarks report</a> shows US Android ad ARPU running under a dollar for hypercasual, near $3 for match games, and well past $10 for merge titles. And <a href="https://tenjin.com/blog/ad-mon-gaming-2026/">Tenjin and CAS.AI's 2026 benchmark report</a> has Android carrying 57% of mobile game ad revenue, with AdMob and AppLovin the largest networks. Treat all of these as direction rather than gospel. Genre, geo mix, and placement design move the numbers more than the mediation stack does.</p>
<h2>Meta-features: renovation is table stakes, the new layers are tasks and co-op</h2>
<p>If you're wondering which meta-features top-grossing casual games actually use, the answer has been remarkably stable: decoration and construction. GameRefinery found renovation elements in <a href="https://www.pocketgamer.biz/gamerefinery-renovation-features-are-in-every-top-100-us-casual-mobile-game/">every one of the top 100 highest-grossing US casual games released since 2020</a> (a 2022 finding that still frames the category), and <a href="https://www.gamerefinery.com/why-renovation-and-construction-elements-are-becoming-more-popular-in-casual-games/">construction elements in 49% of top-100-grossing US Match3 games</a>, up from 7% six years earlier.</p>
<p>What's changing in 2026 is the layer on top. <a href="https://www.gamerefinery.com/mobile-game-market-review-january-2026/">GameRefinery's January 2026 review</a> calls it evolution over revolution: Zen Match swapped its room-decoration meta for a task-based island-exploration layer, Gossip Harbor added Medal Challenges, a grid of parallel long-format meta tasks in place of one-off monthly events, and Hay Day layered cooperative neighborhood-level progression on top of the farm. Decoration got everyone here, but the differentiation now comes from task systems, seasonal loops, and co-op metas stacked above it.</p>
<h2>Where the money is moving</h2>
<p>Geographically, casual games drove the largest growth in Western markets. North America saw the most absolute growth and Europe grew faster in percentage terms, while Asia was the only region where in-app purchase revenue actually <a href="https://sensortower.com/state-of-gaming-2025">declined</a>. Some of that Asia dip is a strong-dollar artifact, but the direction is clear: the West is where casual spending is expanding.</p>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 240" role="img" aria-label="Casual revenue growth by region in 2025: Europe up 14 percent, North America up 9 percent with the most absolute growth, Asia down 3 percent" style="width:100%;height:auto;max-width:720px;margin:1.5rem auto;display:block;border-radius:14px">
  <rect width="720" height="240" rx="14" fill="#0b1020"/>
  <text x="32" y="44" font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif" font-size="20" font-weight="800" fill="#e8edf5">Casual growth went West</text>
  <text x="32" y="68" font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif" font-size="13" fill="#9aa7b4">2025 in-app revenue change by region. Asia's dip is partly a strong-dollar effect. Source: Sensor Tower.</text>
  <line x1="280" y1="96" x2="280" y2="212" stroke="#ffffff" stroke-opacity="0.18"/>
  <g font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif" font-size="14" font-weight="700">
    <text x="150" y="122" text-anchor="end" fill="#e8edf5">Europe</text>
    <rect x="280" y="106" width="252" height="22" rx="5" fill="#6ee7b7"/>
    <text x="542" y="122" font-size="13" font-weight="800" fill="#6ee7b7">+14%</text>
    <text x="150" y="164" text-anchor="end" fill="#e8edf5">North America</text>
    <rect x="280" y="148" width="162" height="22" rx="5" fill="#7dd3fc"/>
    <text x="452" y="164" font-size="13" font-weight="800" fill="#7dd3fc">+9%</text>
    <text x="504" y="164" font-size="11.5" font-weight="600" fill="#9aa7b4">most absolute growth</text>
    <text x="150" y="206" text-anchor="end" fill="#e8edf5">Asia</text>
    <rect x="226" y="190" width="54" height="22" rx="5" fill="#fb7185"/>
    <text x="218" y="206" text-anchor="end" font-size="13" font-weight="800" fill="#fb7185">&#8722;3%</text>
  </g>
</svg>
<p>The most striking 2025 milestone sits just outside games. For the first time, non-game apps out-earned games in mobile in-app purchases, about $85.6 billion to $81.8 billion, and a big chunk of that swing came from generative-AI subscription apps, as <a href="https://www.deconstructoroffun.com/blog/2026/2/2/state-of-mobile-2026">Deconstructor of Fun</a> lays out. Games lost the top spot on the store they used to own, partly to AI products. That's worth sitting with.</p>
<h2>The store rules are moving too</h2>
<p>The other thing reshaping casual monetization in 2026 is happening in courtrooms and regulator offices, not in game design. In the US, Apple has been forced to allow commission-free external payment links since the April 2025 contempt ruling, and while a <a href="https://www.macrumors.com/2025/12/11/apple-app-store-fees-external-payment-links/">December 2025 appeals decision</a> lets Apple eventually charge &quot;a reasonable commission,&quot; no fee applies until a court approves one, so the links stay free as of mid-2026. In the EU, the per-install Core Technology Fee is gone, replaced by a <a href="https://developer.apple.com/support/dma-and-apps-in-the-eu/">5% Core Technology Commission</a> on digital-goods revenue from January 2026. And on Android, Google and Epic <a href="https://www.pocketgamer.biz/google-and-epic-withdraw-settlement-as-play-store-overhaul-moves-ahead/">withdrew their settlement on July 15, 2026</a>, which leaves the original injunction in force: from July 22, rival app stores ship as downloadable apps on the US Play Store, and US listings are auto-enrolled into third-party stores unless developers opt out.</p>
<p>For a casual studio the practical takeaway is that off-store revenue stopped being exotic. RevenueCat's <a href="https://www.revenuecat.com/state-of-subscription-apps">State of Subscription Apps 2026</a> found 41% of the largest apps already generate web revenue, against about 1% of hobby-tier ones. Direct-to-consumer webshops, external checkout links, and alternative stores are now levers a mid-size casual game is expected to at least evaluate.</p>
<h2>What AI is changing in how casual games get made</h2>
<p>AI shows up on both sides of the equation. On the spending side, as noted above, AI apps are now pulling money that used to flow to games. On the production side, generative AI has moved from experiment to standard tooling. GDC's State of the Game Industry survey for 2025 found that 52% of developers worked at companies using generative AI somewhere in the org, and the 2026 edition put personal use at 36%.</p>
<p>It's not a straight line up, though. A more recent <a href="https://www.gamedeveloper.com/production/developer-use-of-generative-ai-may-be-declining">Game Developer Collective survey</a> found personal use dipped to 29%, suggesting some teams tried AI tooling and pulled back. And sentiment is souring even as adoption spreads: in the same GDC 2026 survey, 52% of developers said generative AI is having a negative impact on the industry, the highest share yet. The honest read in 2026 is that AI is firmly mainstream in game studios but still settling into where it genuinely helps, which for casual games means fast prototyping, asset generation, and live-ops content rather than shipping a whole game untouched.</p>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 250" role="img" aria-label="Generative AI adoption among game developers: 52 percent at companies using AI, 36 percent using it themselves, 29 percent in a later survey" style="width:100%;height:auto;max-width:720px;margin:1.5rem auto;display:block;border-radius:14px">
  <rect width="720" height="250" rx="14" fill="#0b1020"/>
  <text x="32" y="44" font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif" font-size="20" font-weight="800" fill="#e8edf5">AI moved into the studio</text>
  <text x="32" y="68" font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif" font-size="13" fill="#9aa7b4">Share of game developers using generative AI. Source: GDC; Game Developer Collective.</text>
  <g transform="translate(180,120)">
    <circle r="44" fill="none" stroke="#1b2540" stroke-width="11"/>
    <circle r="44" fill="none" stroke="#c8a8ff" stroke-width="11" stroke-linecap="round" stroke-dasharray="143.8 276.5" transform="rotate(-90)"/>
    <text y="8" text-anchor="middle" font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif" font-size="26" font-weight="800" fill="#e8edf5">52%</text>
    <text y="74" text-anchor="middle" font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif" font-size="13" font-weight="700" fill="#e8edf5">At companies using AI</text>
    <text y="92" text-anchor="middle" font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif" font-size="11.5" fill="#9aa7b4">GDC 2025 survey</text>
  </g>
  <g transform="translate(360,120)">
    <circle r="44" fill="none" stroke="#1b2540" stroke-width="11"/>
    <circle r="44" fill="none" stroke="#7dd3fc" stroke-width="11" stroke-linecap="round" stroke-dasharray="99.5 276.5" transform="rotate(-90)"/>
    <text y="8" text-anchor="middle" font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif" font-size="26" font-weight="800" fill="#e8edf5">36%</text>
    <text y="74" text-anchor="middle" font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif" font-size="13" font-weight="700" fill="#e8edf5">Use it themselves</text>
    <text y="92" text-anchor="middle" font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif" font-size="11.5" fill="#9aa7b4">GDC 2026 survey</text>
  </g>
  <g transform="translate(540,120)">
    <circle r="44" fill="none" stroke="#1b2540" stroke-width="11"/>
    <circle r="44" fill="none" stroke="#f0abfc" stroke-width="11" stroke-linecap="round" stroke-dasharray="80.2 276.5" transform="rotate(-90)"/>
    <text y="8" text-anchor="middle" font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif" font-size="26" font-weight="800" fill="#e8edf5">29%</text>
    <text y="74" text-anchor="middle" font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif" font-size="13" font-weight="700" fill="#e8edf5">Personal use, later</text>
    <text y="92" text-anchor="middle" font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif" font-size="11.5" fill="#9aa7b4">down from 36%</text>
  </g>
</svg>
<p>For solo and small creators, this is the most interesting front. The same prompt-to-game approach that built the AI-app category is now aimed at making the games themselves. Casual is the genre AI handles best, since the loops are tight and the scope is small, which is exactly why a tool like Cinevva can take a sentence and hand you a playable game in your browser.</p>
<h2>What this means if you're making a casual game</h2>
<p>Pull it together and the strategy for 2026 is different from 2022. You're not racing to win cheap installs anymore, because that game is over. You're trying to make something a smaller audience will actually keep and spend on. That favors a clear hook with depth underneath, hybrid monetization that respects both the ad-watchers and the spenders, and a fresh take on a proven loop instead of the thousandth Match3 clone. Western audiences are spending, puzzle is crowded at the top but wide open for new mechanics, and the cost of trying an idea has collapsed now that AI can build the first playable version for you.</p>
<p>That last part is the real opening. When a prototype takes minutes instead of a weekend, you can test ten hybrid-casual hooks for the effort one used to cost. The market rewards the idea that sticks, and the fastest way to find it is to build and play, not plan. <a href="/create">Start one from a prompt</a> and see what holds up.</p>
<h2>Common Questions</h2>
<h3>Is the casual games market shrinking in 2026?</h3>
<p>No, but it stopped growing on downloads. In-app revenue still inched up to about $81.75 billion in 2025, while downloads fell 7.2%, and the slide continued into 2026: Q1 downloads were off 11.9% year over year, and Sensor Tower's <a href="https://sensortower.com/blog/h1-2026-digital-gaming-market-index">H1 2026 index</a> has first-half spending down 2% to about $40 billion with downloads down 12%. Casual itself held near $16.5 billion. The market is maturing, so growth comes from players spending more, not from new installs.</p>
<h3>What is hybrid-casual and why does it matter?</h3>
<p>Hybrid-casual blends the easy, ad-friendly loops of hypercasual with the deeper progression and purchases of a full casual game. It was the only casual segment to grow in-app revenue in 2025, up 20% to $4.2 billion, and it kept growing in H1 2026, up about 23% to $2.4 billion, which makes it the category to study right now.</p>
<h3>What makes a hybrid-casual game successful in 2026?</h3>
<p>A core loop you understand in one screenshot, a meta layer that gives players a reason to come back, and monetization that treats ad-watchers and spenders differently. The 2026 winners share the same shape: Pixel Flow, Color Block Jam, and the sort-puzzle wave all start from a hypercasual-simple mechanic, then add progression, collections, and a difficulty curve that sells boosters without blocking free players. The data backs the recipe. Hybrid-casual was the only segment to grow IAP in both 2025 and H1 2026, and Sensor Tower's <a href="https://gamedevreports.substack.com/p/sensor-tower-state-of-gaming-2026">State of Gaming 2026</a> has top hybrid-casual titles beating top casual games on day-7 retention, so stickiness, not install volume, is what separates the hits. The failure mode is equally clear: AppMagic counted more than <a href="https://appmagic.rocks/research/casual-report-H12026">2,000 block puzzles launched in H1 2026</a>, so a fresh mechanic in a proven wrapper beats a faithful clone of last quarter's chart-topper.</p>
<h3>What are the hyper-casual games trends in 2026?</h3>
<p>Hypercasual is still the volume king and no longer a business on its own. It led all downloads in 2025 with 22.05 billion installs, and Sensor Tower's <a href="https://sensortower.com/blog/h1-2026-digital-gaming-market-index">H1 2026 index</a> notes engagement gains in hypercasual offsetting declines elsewhere. The money side moved: hypercasual pulled about $2.02 billion in ad revenue from February to April 2026, roughly level with all of casual, per the <a href="https://gamedevreports.substack.com/p/sensor-tower-the-gaming-market-in">report breakdown</a>, but almost every studio that started there now ships hybrid-casual, adding purchases on top of ads. The 2026 trend list is short: block and sort puzzles as the dominant new subgenres, hybrid monetization as the default, and consolidation, with Tripledot's <a href="https://www.gamedeveloper.com/business/unity-sells-supersonic-publishing-biz-to-tripledot-for-40m">purchase of Supersonic</a> the clearest example of hypercasual publishing infrastructure changing hands.</p>
<h3>Which casual game studios were acquired in 2026?</h3>
<p>The headline deal was Scopely's <a href="https://www.scopely.com/en/news/scopely-to-acquire-majority-stake-in-breakout-mobile-game-pixel-flow-and-the-development-team-behind-it">majority stake in Loom Games</a>, the studio behind Pixel Flow, announced February 19, 2026 and valued by <a href="https://investgame.net/news/pdf/video-game-market-update-q2-2026/">InvestGame</a> at about $1 billion. Tripledot acquired the Supersonic publishing label from Unity for around <a href="https://www.gamedeveloper.com/business/unity-sells-supersonic-publishing-biz-to-tripledot-for-40m">$40 million</a>, closing August 4, 2026. Both target hybrid-casual puzzle, which tells you where buyers think the next few years of casual revenue sit.</p>
<h3>Which casual games are breaking out right now?</h3>
<p>On the new-hits side, hybrid-casual puzzle titles like Color Block Jam, Pixel Flow, Screwdom, and Magic Sort scaled fast in 2025. Among established giants, Royal Match and Monopoly Go! lead on revenue, and Block Blast! leads on downloads.</p>
<h3>Should my game use ads or in-app purchases?</h3>
<p>It depends on the game. High-reach toys can live on ads, deep meta-games do best ad-free on purchases, and most everything in between earns more by blending the two. The model should follow the design, not the other way around.</p>
<h3>How is AI changing casual game development?</h3>
<p>Generative AI is now standard in studios, with 52% of developers at companies using it. For casual games specifically it speeds up prototyping, asset creation, and live-ops, and prompt-to-game tools now let creators build a playable casual game from a description.</p>
<h3>How big is the casual games market in 2026?</h3>
<p>Mobile games earned about $81.75 billion in in-app purchases in 2025, up just 1.3% over 2024, and the top 1,000 casual games make up roughly $23 billion of that. Downloads fell 7.2% to 50.4 billion, so the market is growing on spend per player rather than new installs.</p>
<h3>Is hypercasual dead in 2026?</h3>
<p>No. What broke is the ad-only business model, not the games. Hypercasual still led all downloads in 2025 with 22.05 billion installs, and the format is shifting to hybrid monetization that layers in-app purchases on top of ads.</p>
<p><BuildCta
  title="Ride the casual wave with your own game"
  desc="Cozy and casual is the easiest genre to start with."
  prompt="Make a cozy match-and-merge puzzle game with soft colors" /></p>
<h2>Related</h2>
<ul>
<li><a href="/guides/ai-game-generators-2026">Best AI Game Generators in 2026</a>: the tools that build casual games from a prompt</li>
<li><a href="/guides/make-a-game-with-ai">How to Make a Game with AI (No Coding)</a>: the step-by-step build</li>
<li><a href="/guides/vibe-coding-games">Vibe Coding Games: What It Is and How to Start</a>: the prototyping mindset this market rewards</li>
<li><a href="/guides/vibe-coding-game-prompts">AI Game Prompts You Can Build in One Click</a>: casual hooks to test fast</li>
<li><a href="/guides/get-more-plays-itch-io">How to Get More Plays on itch.io</a>: finding the audience that sticks</li>
<li><a href="/guides/web-game-monetization">Web Game Monetization: What the Data Actually Says</a>: the same data-first look at how browser games earn</li>
<li><a href="/guides/publish-web-game">Best Places to Publish a Web Game in 2026</a>: where a browser-first casual game finds players</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How to write a game in Cinevva]]></title>
            <link>https://app.cinevva.com/guides/how-to-write-a-game</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/how-to-write-a-game</guid>
            <pubDate>Wed, 24 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[A practical guide to writing prompts that turn into a game you actually want to keep. How to start, how to iterate, and how to describe a bug so the AI fixes it on the first try.]]></description>
            <content:encoded><![CDATA[<h1>How to write a game in Cinevva</h1>
<p>You type what you want, Cinevva builds a playable game in your browser, then you change it by chatting. That's the whole loop. The hard part isn't the tool, it's knowing what to say.</p>
<p>We read a week of real sessions to see what separates a prompt that becomes a game someone keeps from one that gets abandoned right after the first build. The pattern was clear, and none of it is complicated. Here's what works.</p>
<h2>Start with one clear sentence</h2>
<p>The best opening is one or two sentences that name the kind of game and the one thing that makes it fun. &quot;A top-down zombie survival where you carry a flashlight and limited ammo&quot; gives the AI a genre, a camera angle, a core tension, and a constraint to build around. It knows exactly what to make. You can <a href="/create#prompt=A%20top%20down%20zombie%20survival%20where%20you%20carry%20a%20flashlight%20and%20limited%20ammo">build that opener as written</a> and watch what a specific sentence buys you. If you want a hundred more openers in that shape, our <a href="/guides/vibe-coding-game-prompts">AI game prompt ideas</a> page is all one-liners.</p>
<p>Compare that to &quot;platformer&quot; or &quot;shooter games&quot;. Those are real openers we see every day. Cinevva will build something from them, but it's a coin flip whether it's the something you had in your head. The more specific your first line, the closer that first build lands to what you wanted.</p>
<h2>Describe the feel, not a famous game</h2>
<p>A lot of people open with a single title. Pokemon. GTA. Minecraft. A Roblox game they love. We get it, those are the games that made you want to build one. The catch is those took whole studios years to make, and they don't fit in a browser tab.</p>
<p>So name the parts you actually want instead. If you say GTA, you probably mean &quot;drive around an open city and take on missions&quot;. If you say Minecraft, you might mean &quot;place and break blocks on an endless grid to build things&quot;. Spell out the mechanic and Cinevva can capture the feel, even though it can't ship the entire franchise. Describing the experience beats naming the brand every time.</p>
<h2>Let it build small, then grow it</h2>
<p>Cinevva builds a playable slice on the very first turn on purpose. The creators who end up with something they love don't try to pack everything into the opening prompt. They add one thing per message once they can see it running.</p>
<p>&quot;Add traffic cars.&quot; &quot;Make the jump higher.&quot; &quot;Give me a second level.&quot; &quot;Add a health bar.&quot; Each change is small, fast, and easy to check, and they stack up into a real game. Trying to cram ten features into turn one usually gets you a shaky version of all ten. One clear change at a time is how the good games get made.</p>
<h2>When something is wrong, say exactly what</h2>
<p>The most common message that doesn't help is &quot;it doesn't work&quot;, or just &quot;fix it&quot;. The AI can't see your screen, so it's left guessing.</p>
<p>Tell it three things: what you did, what happened, and what you expected. &quot;When I press space the bird barely hops, I wanted it to flap higher&quot; gets a real fix on the first try. &quot;The car drives through walls instead of stopping&quot; points straight at collision detection. The extra ten words save you three rounds of back and forth.</p>
<h2>Be concrete about how things look</h2>
<p>Cinevva is good at visuals when you give it something to picture. Colors, shapes, mood, character details. One creator described their hero as &quot;a dark figure with a white cape, white gloves, and glowing white eyes&quot; and got exactly that back.</p>
<p>&quot;Make it look cooler&quot; gives the AI nothing to work with. Instead, name the palette, the vibe (neon, cozy, retro, horror, hand-drawn), and any key character or world details that matter to you. A few concrete words change the whole look.</p>
<h2>Bring your own art</h2>
<p>You're not stuck with whatever the AI draws. Drop your own images straight into the chat and it'll use them as textures, sprites, or backgrounds. Or open the asset library to pull in free 3D models with no attribution headaches. When you have a specific look in mind, handing over a reference image often works better than trying to describe it. If you'd rather make a model or a sky first and bring it in, the standalone <a href="/tools/hunyuan3d#prompt=dark%20figure%20with%20a%20white%20cape&amp;character=1">3D generator</a> and <a href="/tools/skybox">skybox generator</a> produce the same kind of assets outside the chat.</p>
<h2>The first build is the slow one, and your work is saved</h2>
<p>The first build takes the longest because Cinevva is writing your whole game from scratch. After that, edits come back in seconds. So hang on through that first wait, it really is the worst one you'll have in the session.</p>
<p>And yes, your games are saved. Close the tab, come back tomorrow, open My games, and pick up exactly where you left off. Nothing disappears when you leave.</p>
<h2>A good prompt, start to finish</h2>
<p>Put it all together and a strong opener looks like this:</p>
<p>&quot;A top-down twin-stick shooter. I'm a little robot in a neon arena, waves of enemies close in, and I dodge and shoot to survive. Make it fast and arcadey.&quot;</p>
<p>That's a genre, a character, a setting, a core loop, and a feel, all in four short sentences. <a href="/create#prompt=A%20top%20down%20twin%20stick%20shooter.%20I%27m%20a%20little%20robot%20in%20a%20neon%20arena%2C%20waves%20of%20enemies%20close%20in%2C%20and%20I%20dodge%20and%20shoot%20to%20survive.%20Make%20it%20fast%20and%20arcadey.">Build it</a>, watch it run, then start adding. A boss every five waves. A dash on the shift key. A score multiplier for combos. That's how one sentence turns into a game you actually want to share. For the wider method behind this, including what to do when the first build isn't what you pictured, see <a href="/guides/make-a-game-with-ai">how to make a game with AI</a> and the <a href="/guides/vibe-coding-games">vibe coding guide</a>.</p>
<h2>Common Questions</h2>
<h3>How do I write a game prompt that actually works?</h3>
<p>Name the kind of game, the one thing that makes it fun, and what the player is trying to do, in one or two sentences. Describe the experience (&quot;drive around an open city and take on missions&quot;) instead of naming a famous title, and hold every extra feature for a later message. That's the pattern that separated the games people kept from the ones abandoned after the first build in the sessions we read.</p>
<h3>How do I describe a bug so the AI fixes it on the first try?</h3>
<p>Tell it what you did, what happened, and what you expected, in that order. &quot;When I press space the bird barely hops, I wanted it to flap higher&quot; gets fixed in one round, while &quot;it doesn't work&quot; gets a guess. The AI can't see your screen, so the ten extra words replace three rounds of back-and-forth.</p>
<h3>Why is the first build slow and the later ones fast?</h3>
<p>The first turn writes your whole game from scratch, so it's the longest wait you'll have in a session. Every edit after that changes a small part of an existing game and comes back in seconds. Your work is saved as you go, so you can close the tab and pick up from My games later.</p>
<h3>Can I start with a template or another game instead of a blank prompt?</h3>
<p>Yes. The <a href="/guides/vibe-coding-game-prompts">100 AI game prompt ideas</a> page is a hundred one-click starting points sorted by genre, each already in the shape this guide recommends. Pick one, build it, and change a word or add a mechanic to make it yours.</p>
<p>Ready to try it? <a href="/create?utm_source=guide&amp;utm_medium=content&amp;utm_campaign=how_to_write_a_game">Open the creator and start building free →</a></p>
<h2>Related</h2>
<ul>
<li><a href="/guides/vibe-coding-game-prompts">100 AI Game Prompt Ideas</a>: one-click openers sorted by genre</li>
<li><a href="/guides/make-a-game-with-ai">How to Make a Game with AI (No Coding)</a>: the full workflow from prompt to publish</li>
<li><a href="/guides/vibe-coding-games">Vibe Coding Games: What It Is and How to Start</a>: the iterate-by-chatting approach explained</li>
<li><a href="/guides/ai-game-generators-2026">Best AI Game Generators in 2026</a>: how Cinevva compares to the other tools</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How to Make a 3D Browser Game Without Coding (2026)]]></title>
            <link>https://app.cinevva.com/guides/3d-browser-game-without-coding</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/3d-browser-game-without-coding</guid>
            <pubDate>Tue, 23 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[The real options for making a 3D browser game without coding in 2026, why most no-code tools are 2D, and how AI prompt-to-game tools became the practical path to 3D in the browser.]]></description>
            <content:encoded><![CDATA[<h1>How to Make a 3D Browser Game Without Coding (2026)</h1>
<p><em>Last updated: September 2026.</em></p>
<p>Making a 2D game without code has been possible for years. Making a 3D game that runs in a browser, with no code, has been surprisingly hard, and most guides quietly dodge it by showing you a 2D tool. This one doesn't. Here's the honest state of 3D-no-code-in-the-browser in 2026, and the path that actually works now.</p>
<h2>The uncomfortable truth about no-code 3D</h2>
<p>The classic no-code game builders are overwhelmingly 2D. The few pure no-code 3D tools that ran in a browser have mostly died or drifted away:</p>
<ul>
<li><strong>Struckd</strong>, the closest thing to true drag-and-drop 3D on the web, shut down on August 1, 2026, per its <a href="https://struckdunity.zendesk.com/hc/en-us/articles/48481704549908-Struckd-Shutdown-FAQ">shutdown FAQ</a>. Games that weren't exported to Unity before that date are gone.</li>
<li><strong>Crayta</strong> shut down back in 2023.</li>
<li><strong>Core</strong> does no-code 3D but is a download-only client, not a browser game.</li>
<li><strong>PlayCanvas</strong> is a superb web 3D engine, but it expects you to write JavaScript, so it isn't really no-code.</li>
</ul>
<p>That leaves a real gap. If you want 3D, in a browser, with no code, the classic visual-builder world has almost nothing left to offer except one exception.</p>
<h2>The one classic exception: GDevelop</h2>
<p>GDevelop is a free, open-source, visual game builder that runs in the browser and has invested heavily in 3D since late 2025. You build logic with visual event sheets instead of code, it has a dedicated 3D editor and 3D physics, and it publishes to the web on gd.games with a share link. It's primarily a 2D tool with growing 3D, so it won't match a dedicated 3D engine, but for genuinely no-code 3D in the browser it's the strongest classic option. It also added an AI agent, which leads to the other path.</p>
<h2>The path that actually works in 2026: AI prompt-to-game</h2>
<p>Here's the shift. The most practical way to make a 3D browser game without coding in 2026 isn't a visual editor at all, it's describing the game to an AI and letting it build a real 3D game on a web engine. This is sometimes called <a href="/guides/vibe-coding-games">vibe coding</a>, and for 3D specifically it has quietly become the credible route while the classic no-code 3D tools faded.</p>
<p>A few tools do this:</p>
<ul>
<li><strong>Cinevva</strong> builds genuinely 3D, browser-playable games from a text prompt on a Three.js-based engine, with built-in 3D model, image, music, and skybox generation, and an instantly shareable link.</li>
<li><strong>Rosebud</strong> does prompt-to-game with both 2D and growing 3D, browser-hosted.</li>
<li><strong>Nilo</strong> has narrowed to a browser suite that generates, rigs, animates, and exports 3D assets into Roblox Studio (open beta as of September 2026), so it's the pick if Roblox is where your game will live.</li>
<li><strong>SEELE</strong> builds 2D and 3D games from one prompt and exports browser-playable WebGL or Unity 6 projects, with commercial rights on its Pro plan.</li>
</ul>
<p>You're not writing code in any of these. You describe the game, play the result, and refine it by asking for changes. See the full <a href="/guides/ai-game-generators-2026">comparison of AI game generators</a> for how they differ.</p>
<h2>How to make a 3D browser game with AI, step by step</h2>
<h3>1. Describe a small 3D game</h3>
<p>Name the genre, one distinctive detail, and a goal. 3D works best when the concept is simple and spatial. For example:</p>
<blockquote>
<p>Make a first-person parkour game where I jump across floating islands and race a timer to the end.</p>
</blockquote>
<p>You can <a href="/create#prompt=Make%20a%20first%20person%20parkour%20game%20where%20I%20jump%20across%20floating%20islands%20and%20race%20a%20timer%20to%20the%20end">build that exact prompt</a>, <a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=3d_no_code">start from a blank prompt</a> or grab a <a href="/guides/vibe-coding-game-prompts">one-click 3D prompt</a> and tweak it.</p>
<h3>2. Play it, then change one thing</h3>
<p>You'll get a playable 3D scene. Play it and pick the single biggest issue. Ask for that one change: &quot;make the jumps reach farther,&quot; &quot;add a fall-and-respawn,&quot; &quot;speed up the player.&quot; Change, play, repeat. This loop is the whole craft.</p>
<h3>3. Add 3D assets</h3>
<p>Ask for the models and look you want: &quot;give the player a low-poly robot,&quot; &quot;use a sunset skybox,&quot; &quot;make the islands stone with grass on top.&quot; The same generators exist as standalone tools if you want to inspect a model or a sky before it goes into a game: our <a href="/tools/hunyuan3d#prompt=low%20poly%20robot&amp;character=1">3D generator</a> and <a href="/tools/skybox">skybox generator</a>. If the tool has a CC0 asset library, lean on it for anything you'll publish. Our <a href="/guides/game-assets-guide">free game assets guide</a> explains the sources and licenses.</p>
<h3>4. Make it feel like a game</h3>
<p>Add the finishing touches players notice in 3D: a clear camera, responsive controls, a visible goal, sound on key actions, and a win or lose state. Ask for a title screen and a restart button.</p>
<h3>5. Publish the link</h3>
<p>Browser tools give you a shareable URL in one click. Send it around, see where people fall off, and turn that into your next round of changes.</p>
<h2>What about doing it by hand?</h2>
<p>If you're willing to learn a little code, the web 3D world is rich: Three.js, Babylon.js, and PlayCanvas all build excellent browser 3D, and engines like Godot export to the web too. That's not no-code, but it's worth knowing the ceiling is high once you cross that line. Our <a href="/guides/web-game-engines-comparison">web game engines comparison</a> covers those options. For staying genuinely no-code, GDevelop or an AI prompt-to-game tool is the answer.</p>
<h2>Common Questions</h2>
<h3>Can you make a 3D game in a browser without coding?</h3>
<p>Yes, but the options are narrow. GDevelop is the main classic no-code tool with real browser 3D, and AI prompt-to-game tools like Cinevva, Rosebud, and Nilo let you build 3D browser games by describing them instead of coding. Several older pure no-code 3D tools (Struckd, Crayta) have shut down, so the practical paths as of September 2026 are GDevelop or the AI route.</p>
<h3>What's the easiest way to make a 3D game with no experience?</h3>
<p>Describe the game to an AI prompt-to-game tool and refine it by chatting. You get a playable 3D game in minutes with no engine to install and no code, then improve it one change at a time. It's the lowest-friction starting point for a complete beginner.</p>
<h3>Is GDevelop good for 3D?</h3>
<p>GDevelop is primarily a 2D engine, but it has added a dedicated 3D editor, 3D physics, and 3D features since late 2025, and it's free, open-source, and browser-based with web publishing. It won't match a dedicated 3D engine, but for free no-code 3D in the browser it's the strongest classic option.</p>
<h3>What happened to Struckd?</h3>
<p>Struckd, the mobile-first 3D game creator that Unity acquired, shut down on August 1, 2026 after an April 30 announcement. Creators could export projects to the Unity Editor before the deadline, but the hosted games and the in-app editor are gone. If you came here looking for a Struckd replacement, GDevelop is the nearest classic no-code option with browser 3D, and AI prompt-to-game tools are the faster route to a shareable 3D link.</p>
<h3>Which AI tools make a 3D browser game from a prompt?</h3>
<p>Cinevva builds a real Three.js-based 3D game from a text prompt and gives you a link plus a downloadable web build. Rosebud does prompt-to-game with growing 3D on a hosted link. SEELE generates 2D and 3D games with WebGL or Unity export, and Nilo generates 3D assets for Roblox rather than standalone web games. Our <a href="/guides/ai-game-generators-2026">AI game generator comparison</a> has the full table, or you can <a href="/create#prompt=Build%20a%203D%20platformer%20collecting%20stars%20to%20open%20the%20next%20door">try a 3D prompt</a> and judge for yourself.</p>
<h3>Do I need a powerful computer to make a 3D browser game?</h3>
<p>No. Browser-based AI tools and GDevelop run the heavy work on their servers or in the browser itself, so you don't need a gaming PC or a dedicated GPU. Any reasonably modern computer and a current browser are enough to build and play.</p>
<h2>Related</h2>
<ul>
<li><a href="/guides/ai-game-generators-2026">Best AI Game Generators in 2026</a>: the tools that build 3D from prompts</li>
<li><a href="/guides/make-a-game-with-ai">How to Make a Game with AI (No Coding)</a>: the full beginner workflow</li>
<li><a href="/guides/vibe-coding-games">Vibe Coding Games: What It Is and How to Start</a>: the prompt-driven approach explained</li>
<li><a href="/guides/vibe-coding-game-prompts">AI Game Prompts You Can Build in One Click</a>: 3D starting points</li>
<li><a href="/guides/web-game-engines-comparison">Best Web Game Engines for 2026</a>: if you decide to learn a little code</li>
<li><a href="/guides/ai-3d-model-generators">Best AI 3D Model Generators</a>: the tools behind text-to-3D assets</li>
<li><a href="/guides/game-assets-guide">Where to Find Free Game Assets</a>: 3D models and textures</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Best AI Asset Generators for Games (2026)]]></title>
            <link>https://app.cinevva.com/guides/ai-asset-generators-games</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/ai-asset-generators-games</guid>
            <pubDate>Tue, 23 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[The best AI asset generators for games in 2026 for 3D models, textures, and audio, comparing Meshy, Tripo, Hunyuan3D, TRELLIS, Stable Audio, and more, with licensing notes.]]></description>
            <content:encoded><![CDATA[<h1>Best AI Asset Generators for Games (2026)</h1>
<p><em>Last updated: September 2026.</em></p>
<p>The best AI asset generators for games in 2026 are Meshy and Tripo for hosted 3D, Hunyuan3D 2.1 and TRELLIS.2 for open 3D you can self-host, FLUX.2 klein and Stable Diffusion 3.5 for textures and 2D art, and Stable Audio 3.0 and ACE-Step 1.5 for open-weight sound and music. Generating a game asset is often faster than searching for the right free one. Describe a prop, get a textured 3D model in under a minute. Type a mood, get music. This guide covers the best AI asset generators for games across 3D, textures, and audio, what each does well, and the licensing catch you have to watch before shipping.</p>
<div class="video-embed">
<iframe src="https://www.youtube.com/embed/9zUOvhQ828g" title="Meshy 5 - AI 3D Model generator review" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<div class="video-caption">A review of Meshy, one of the leading AI 3D model generators.</div>
<h2>The licensing catch (read this first)</h2>
<p>Most hosted AI generators let you create for free but gate commercial rights behind a paid plan, and free-tier output is often non-commercial. Open models you self-host are usually the cleanest for commercial use, but each has its own license (some exclude certain regions). Before you ship anything an AI made, confirm the model's output-rights terms. When in doubt, use an open model with a permissive license or a paid tier that grants commercial rights.</p>
<h2>3D model generators</h2>
<p>This is the deepest category in the stack, so it has its own guide: <a href="/guides/ai-3d-model-generators">best AI 3D model generators</a> compares Meshy, Tripo, Rodin, Hi3D, TRELLIS.2, Hunyuan3D, and SAM 3D on output quality, topology, pricing, and commercial rights. The short version follows.</p>
<h3>Hosted (fastest to start)</h3>
<ul>
<li><strong>Meshy</strong>: text or image to a textured, riggable 3D mesh with PBR materials, now on its Meshy 6 and 7 model generations. The free plan gives 100 credits a month and its outputs are licensed CC BY 4.0, so commercial use is allowed as long as you attribute Meshy, while Pro ($20/month) and up give you full ownership, per the <a href="https://www.meshy.ai/pricing">Meshy pricing page</a>. The most popular all-rounder. <a href="https://www.meshy.ai">meshy.ai</a></li>
<li><strong>Tripo</strong>: text or image to 3D with 4K PBR and auto-rigging, and since February 2026 its rigger handles non-humanoid creatures too (quadruped, hexapod, avian, serpentine, aquatic, per the <a href="https://developers.tripo3d.ai/en/docs/animations-rig">Tripo developer docs</a>). Free tier is public and non-commercial, with commercial rights on paid plans. Strong, game-focused output. <a href="https://www.tripo3d.ai">tripo3d.ai</a></li>
<li><strong>Rodin / Hyper3D</strong>: clean quad topology, free to generate and pay to download. Good when you care about mesh topology. <a href="https://hyper3d.ai">hyper3d.ai</a></li>
<li><strong>Sloyd</strong>: game-focused parametric and AI generation, commercial on the paid tier. <a href="https://www.sloyd.ai">sloyd.ai</a></li>
</ul>
<h3>Open (self-host, commercial-friendly)</h3>
<ul>
<li><strong>Hunyuan3D 2.1</strong> (Tencent): open weights and training code, production PBR texturing, still the open production model as of September 2026. Its <a href="https://github.com/Tencent-Hunyuan/Hunyuan3D-2.1">license</a> &quot;does not apply in the European Union, United Kingdom and South Korea&quot;, so check before shipping in those regions. Tencent's newer Hunyuan 3D 3.0 (launched globally in November 2025) is hosted-only with 20 free generations a day rather than open weights, while the smaller Hunyuan3D-Omni and Hunyuan3D-Part repos are open. Cinevva runs 2.1 as the <a href="/tools/hunyuan3d">3D Model Generator</a>.</li>
<li><strong>TRELLIS.2</strong> (Microsoft): <a href="https://github.com/microsoft/TRELLIS.2">MIT-licensed</a> 4B-parameter image-to-3D model released in December 2025, the current open leader, with native PBR (base color, roughness, metallic, opacity).</li>
<li><strong>SAM 3D</strong> (Meta): single photo to 3D, for objects and human bodies. Cinevva runs it as an in-browser <a href="/tools/sam3d">image-to-3D object capture</a> that outputs a Gaussian splat.</li>
<li><strong>Roblox Cube 3D</strong>: open-sourced text-to-mesh.</li>
</ul>
<div class="video-embed">
<iframe src="https://www.youtube.com/embed/-_ZlUTXaFqA" title="Tripo 3.1 - AI 3D asset generation review" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<div class="video-caption">A look at Tripo generating game-ready 3D assets.</div>
<h2>Texture and image generators</h2>
<p>For tileable textures, sprites, concept art, and UI:</p>
<ul>
<li><strong>FLUX.2</strong> (Black Forest Labs): strong text-to-image and editing. The freely-commercial open option is the klein 4B, released under Apache 2.0 per the <a href="https://bfl.ai/blog/flux2-klein-towards-interactive-visual-intelligence">FLUX.2 klein announcement</a>, which runs in about 13 GB of VRAM. The larger klein 9B is non-commercial.</li>
<li><strong>Qwen-Image</strong> (Alibaba): open, Apache 2.0, with best-in-class text rendering (great for signage and labels).</li>
<li><strong>Stable Diffusion 3.5</strong>: mature ecosystem (ControlNet, inpainting, LoRAs) for deep customization, under the <a href="https://stability.ai/community-license-agreement">Stability Community License</a>, which is free for commercial use until your organization passes $1M in annual revenue.</li>
<li><strong>Scenario</strong> (hosted): train a model on your own art style and generate on-brand sprites and props. Free daily credits are for &quot;personal and evaluation use only&quot;, and commercial rights start on the Starter plan at $15/month per the <a href="https://www.scenario.com/pricing">Scenario pricing page</a>.</li>
<li><strong>Layer</strong> (hosted): studio-oriented 2D generation with a commercial license on every tier, priced by usage from $10/month for 300 Creative Units per <a href="https://layer.ai/pricing">layer.ai/pricing</a>.</li>
</ul>
<p>These models generate tileable textures and 2D art you can drop straight into a game, and Cinevva's <a href="/tools/flux">Image Generator</a> runs a FLUX model in the browser on a free account. See our <a href="/guides/frontier-gen-ai-models">open generative AI models guide</a> for the full lineup and licenses.</p>
<h2>Audio generators (music and SFX)</h2>
<ul>
<li><strong>Stable Audio 3.0</strong>: released May 20, 2026 as a four-model family per <a href="https://stability.ai/news-updates/meet-stable-audio-3-the-model-family-built-for-artistic-experimentation-with-open-weight-models">Stability AI's announcement</a>. Small-SFX (a dedicated sound-effects model), Small-Music, and Medium ship as open weights under the Stability Community License, Large is API-only, and everything is trained on licensed data (clean legal footing). The strongest open pick for game SFX.</li>
<li><strong>ACE-Step 1.5</strong>: open, <a href="https://github.com/ace-step/ACE-Step-1.5">MIT-licensed</a> music generation released February 2026, runs on under 4 GB of VRAM, many languages, with voice cloning.</li>
<li><strong>ElevenLabs</strong>: the strongest hosted option for SFX and music, with commercial rights on paid plans.</li>
</ul>
<h2>Rigging and animation</h2>
<p>Auto-rigging has matured: the open <strong>UniRig</strong> model (<a href="https://github.com/VAST-AI-Research/UniRig">MIT</a>, SIGGRAPH 2025) predicts skeletons and skin weights for bipeds, quadrupeds, birds, and insects, and NVIDIA's <strong>SOMA-X</strong> (Apache 2.0) provides a unified body-model rig for retargeting and digital-human pipelines, together a credible replacement for Mixamo, which has become unreliable. Hosted tools like Tripo and Meshy also auto-rig, and Tripo's v2.5 rigger (February 2026) covers non-humanoid creatures. Cinevva's <a href="/tools/rigger">Auto Rigger</a> does it in the browser: upload a GLB, FBX, or OBJ and get back a rigged model with optional preset animations, with your first rigged character free to download. For an action no preset library covers, <a href="/tools/animate">Prompt Animations</a> generates the motion from a written description and retargets it onto the rigged character.</p>
<h2>Comparison</h2>
<table>
<thead>
<tr>
<th>Tool</th>
<th>Makes</th>
<th>Open / hosted</th>
<th>Commercial use</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Meshy</strong></td>
<td>3D models</td>
<td>Hosted</td>
<td>Free tier CC BY (attribute Meshy), Pro from $20/mo owns outputs</td>
</tr>
<tr>
<td><strong>Tripo</strong></td>
<td>3D models + rig (incl. quadrupeds)</td>
<td>Hosted</td>
<td>Paid tier</td>
</tr>
<tr>
<td><strong>Hunyuan3D 2.1</strong></td>
<td>3D models</td>
<td>Open</td>
<td>Yes (not EU, UK, South Korea)</td>
</tr>
<tr>
<td><strong>TRELLIS.2</strong></td>
<td>3D models</td>
<td>Open (MIT)</td>
<td>Yes</td>
</tr>
<tr>
<td><strong>FLUX.2 klein 4B</strong></td>
<td>Images/textures</td>
<td>Open (Apache)</td>
<td>Yes (9B is non-commercial)</td>
</tr>
<tr>
<td><strong>Qwen-Image</strong></td>
<td>Images/textures</td>
<td>Open (Apache)</td>
<td>Yes</td>
</tr>
<tr>
<td><strong>Stable Diffusion 3.5</strong></td>
<td>Images/textures</td>
<td>Open (Community License)</td>
<td>Yes under $1M revenue</td>
</tr>
<tr>
<td><strong>Scenario</strong></td>
<td>2D art in your style</td>
<td>Hosted</td>
<td>Paid tier from $15/mo</td>
</tr>
<tr>
<td><strong>Layer</strong></td>
<td>2D art for studios</td>
<td>Hosted</td>
<td>All tiers, from $10/mo</td>
</tr>
<tr>
<td><strong>Stable Audio 3.0</strong></td>
<td>Music + SFX</td>
<td>Open (Small and Medium), Large hosted</td>
<td>Yes under $1M revenue</td>
</tr>
<tr>
<td><strong>ACE-Step 1.5</strong></td>
<td>Music</td>
<td>Open (MIT)</td>
<td>Yes</td>
</tr>
<tr>
<td><strong>ElevenLabs</strong></td>
<td>SFX + music</td>
<td>Hosted</td>
<td>Paid tier</td>
</tr>
<tr>
<td><strong>UniRig</strong></td>
<td>Rigging</td>
<td>Open (MIT)</td>
<td>Yes</td>
</tr>
</tbody>
</table>
<h2>The all-in-one option</h2>
<p>Stitching these tools together works, but it's a pipeline. Some game creators bundle generation into the editor: Cinevva has text-to-3D, image, music, and skybox generation built in, so you can generate an asset and drop it straight into your game without exporting and importing between tools. You can <a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=ai_asset_generators">try it free</a>.</p>
<h2>Common Questions</h2>
<h3>What is the best AI 3D model generator for games?</h3>
<p>For hosted tools, Meshy and Tripo are the leading all-rounders (text or image to a textured, riggable mesh). Meshy's free-tier output is CC BY 4.0, so you can use it commercially if you credit Meshy, while Tripo grants commercial rights on its paid plans. For open, self-hostable models, Hunyuan3D 2.1 and Microsoft's TRELLIS.2 are the strongest as of September 2026. The best pick depends on whether you want a quick hosted tool or commercial-friendly open weights. Our <a href="/guides/ai-3d-model-generators">best AI 3D model generators</a> guide compares all of them side by side.</p>
<h3>Can I use AI-generated assets in a commercial game?</h3>
<p>Often yes, but check the license. Open models you self-host are usually cleanest (note Hunyuan3D excludes some regions). Hosted tools typically gate commercial rights behind a paid plan, and free-tier output is frequently non-commercial. Always confirm the model's output-rights terms, and disclose AI content where your platform requires it.</p>
<h3>Are there free AI asset generators?</h3>
<p>Many tools have free tiers, but they usually limit usage and exclude commercial rights. Open models like TRELLIS.2, FLUX.2 klein, Qwen-Image, and Stable Audio are free to run yourself with commercial-friendly licenses if you have the hardware. The comparison table above shows which are open versus hosted.</p>
<h3>Can AI generate game music and sound effects?</h3>
<p>Yes. Stable Audio 3.0 offers open weights including a dedicated sound-effects model, ACE-Step generates music under an MIT license, and ElevenLabs is a strong hosted option with commercial rights on paid plans. These cover both music and SFX for a game's full soundscape.</p>
<h3>What are the best Tripo3D alternatives for game asset generation?</h3>
<p>Meshy is the closest hosted alternative: text or image to a textured, riggable mesh, with a free tier whose outputs are CC BY 4.0 (commercial use with attribution) rather than Tripo's non-commercial free tier. Rodin (Hyper3D) is the pick when you care about quad topology. If you'd rather own the pipeline, Hunyuan3D 2.1 and Microsoft's MIT-licensed TRELLIS.2 are the two open models worth self-hosting in 2026. For a no-setup route, Cinevva's <a href="/tools/hunyuan3d#prompt=a%20low%20poly%20sci-fi%20supply%20crate">3D Model Generator</a> runs Hunyuan3D in the browser on a free account, and our <a href="/guides/ai-3d-model-generators">best AI 3D model generators</a> guide compares all of them on quality and licensing.</p>
<h3>V2Fun vs Meshy: which should I use for game characters?</h3>
<p>V2Fun is a real product: a browser pipeline that chains AI image generation, text or image to 3D, auto-rigging, and animation, exporting FBX and GLB per <a href="https://v2fun.ai/">v2fun.ai</a>. What it doesn't publish, as of September 2026, is a pricing page or commercial-license terms, and third-party listings describe access as gated. Meshy publishes both: 100 free credits a month under CC BY 4.0, full ownership from $20/month. For a game you plan to sell, pick the tool whose terms you can read, which today means Meshy, and revisit V2Fun once it posts its license. If the appeal of V2Fun is the generate-then-rig-then-animate chain, Cinevva does the same in three browser tools: <a href="/tools/hunyuan3d#prompt=a%20stylized%20robot%20companion%20in%20T-pose&amp;character=1">3D Model Generator</a>, <a href="/tools/rigger">Auto Rigger</a>, and <a href="/tools/animate">Prompt Animations</a>.</p>
<h3>What's the most cost-effective open-source AI image generator to self-host for game textures at scale?</h3>
<p>FLUX.2 klein 4B is the best value in 2026: Apache 2.0, so no revenue cap or attribution, and it generates in under a second on a consumer GPU with about 13 GB of VRAM, which is what &quot;at scale&quot; comes down to when you're batching thousands of tile variations. Stable Diffusion 3.5 is the runner-up if you need ControlNet, inpainting, and the LoRA ecosystem for tileable seams, and it's free under the Stability Community License until your organization passes $1M a year in revenue. Qwen-Image (Apache 2.0) wins when textures include readable text like signage. Skip the FLUX.2 klein 9B for commercial work, since its weights are non-commercial. Cinevva's <a href="/tools/flux">Image Generator</a> runs FLUX in the browser if you want to prototype the prompts before renting GPUs.</p>
<h3>Is there an AI 3D game asset generator with built-in rigging and animation tools?</h3>
<p>Yes, in a few flavors. Tripo and Meshy both generate a mesh and auto-rig it in the same app, and Tripo's February 2026 rigger extends to quadrupeds and other creatures. Cinevva runs the whole chain as free-to-start browser tools: generate a character with the <a href="/tools/hunyuan3d#prompt=a%20low%20poly%20knight%20with%20a%20sword%20in%20T-pose&amp;character=1">3D Model Generator</a>, send it to the <a href="/tools/rigger">Auto Rigger</a> for a skeleton and a library of 260 CC0 clips, then use <a href="/tools/animate">Prompt Animations</a> to generate any motion the library lacks from a sentence. The output is a GLB with animations baked in that drops into Unity, Godot, Three.js, or Blender.</p>
<h2>Related</h2>
<ul>
<li><a href="/guides/frontier-gen-ai-models">Best Open-Source Generative AI Models for Games</a>: the deep technical rundown</li>
<li><a href="/guides/ai-3d-model-generators">Best AI 3D Model Generators</a>: the 3D tools compared in depth</li>
<li><a href="/guides/free-character-animations-rigging">Free Character Animations and Auto-Rigging</a>: rig and animate what you generate</li>
<li><a href="/guides/game-assets-guide">Where to Find Free Game Assets</a>: pre-made free assets</li>
<li><a href="/guides/free-3d-model-sites">Best Free 3D Model Sites for Games</a>: search instead of generate</li>
<li><a href="/guides/free-sound-effects-music">Free Sound Effects and Music for Games</a>: pre-made audio</li>
<li><a href="/guides/game-asset-licenses">Game Asset Licenses Explained</a>: understanding the terms</li>
</ul>
<style scoped>
.video-embed { position: relative; width: 100%; max-width: 720px; margin: 1.5rem 0; }
.video-embed iframe { width: 100%; aspect-ratio: 16/9; border-radius: 8px; }
.video-caption { font-size: 0.9rem; color: var(--vp-c-text-2); margin: 0.5rem 0 1.5rem; max-width: 720px; }
</style>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Best AI Game Generators in 2026 (Ranked and Compared)]]></title>
            <link>https://app.cinevva.com/guides/ai-game-generators-2026</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/ai-game-generators-2026</guid>
            <pubDate>Tue, 23 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[We compared the best AI game generators in 2026 on what they actually build, 2D vs 3D, ownership, and price, from Rosebud and Summer to Replit, Gameer, GDevelop AI, and Cinevva.]]></description>
            <content:encoded><![CDATA[<h1>Best AI Game Generators in 2026 (Ranked and Compared)</h1>
<p><em>Last updated: September 2026.</em></p>
<p>You type a sentence, an AI builds a game. That's the promise, and in 2026 it's real, but the tools that make this happen are wildly different under the hood. Some build polished 2D arcade games in your browser. Some are desktop engines that hand you a project you fully own. Some are general code assistants that happen to be able to make a game. Picking the wrong one wastes a weekend. Our short answer as of September 2026: Rosebud or Cinevva if you want a playable browser game fastest, Summer Engine if you want to own the code and ship to Steam, GDevelop AI if you want free and open-source, and Gameer if your game is really an interactive story.</p>
<p>This guide compares the AI game generators worth knowing in 2026, what each one actually produces, whether you can own and export your game, and what it costs. We've tried to be honest about where each tool wins, including where ours does and doesn't.</p>
<h2>Choose by what you can publish</h2>
<p>Compare the final deliverable: a hosted playable link, downloadable web files, or an editable engine project. Then check supported controls, 2D or 3D scope, and what your plan permits you to export. The picks below are editorial recommendations, not a measured speed leaderboard. Cinevva publishes this guide and is one of the products compared. You can inspect <a href="/arcade">playable community games</a>, <a href="/create">open the creator</a>, and review <a href="/plans">plans and access</a> before choosing.</p>
<h2>The four kinds of &quot;AI game generator&quot;</h2>
<p>Most &quot;best AI game maker&quot; lists mix these together, which is why they're confusing. There are really four categories:</p>
<ol>
<li><strong>Prompt-to-game builders</strong> make a playable game from a description. Rosebud, Gameer, Astrocade, SEELE, and Cinevva live here.</li>
<li><strong>Engine-integrated AI agents</strong> add an AI assistant inside an existing engine. GDevelop AI, Buildbox 4, Unity AI, and the newer Godot agents Ziva and Orca Engine are these.</li>
<li><strong>General code builders</strong> like Replit and Websim can build a game because they can build any web app, but they aren't games-native.</li>
<li><strong>Ideation and asset tools</strong> like <a href="http://Ludo.ai">Ludo.ai</a> help you plan and generate assets but don't produce the finished game.</li>
</ol>
<p>Knowing which category you want narrows the field fast.</p>
<h2>Quick Picks</h2>
<ul>
<li><strong>Fastest playable result in a browser:</strong> Rosebud or Cinevva.</li>
<li><strong>You want to own the code and ship to Steam:</strong> Summer Engine.</li>
<li><strong>Interactive fiction and visual novels:</strong> Gameer.</li>
<li><strong>Free and open-source with web hosting:</strong> GDevelop AI.</li>
<li><strong>3D game from a prompt, instantly shareable by link:</strong> Cinevva or Nilo.</li>
<li><strong>Already a Unity or web dev:</strong> Unity AI or Replit.</li>
<li><strong>Casual or hyper-casual HTML5 game to share on social:</strong> Astrocade for the instant remix loop, Rosebud or GDevelop for a build you can host yourself.</li>
</ul>
<h2>Comparison Table</h2>
<table>
<thead>
<tr>
<th>Tool</th>
<th>Builds</th>
<th>2D / 3D</th>
<th>Own the code?</th>
<th>Web-shareable</th>
<th>Free tier</th>
<th>Cheapest paid</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="/engine"><strong>Cinevva</strong></a></td>
<td>Playable game</td>
<td>2D + 3D (web)</td>
<td>✅ download</td>
<td>✅ link</td>
<td>✅</td>
<td>see <a href="/plans">plans</a></td>
</tr>
<tr>
<td><a href="https://rosebud.ai/"><strong>Rosebud</strong></a></td>
<td>Playable game</td>
<td>2D + 3D</td>
<td>JS export</td>
<td>✅ link</td>
<td>✅ ~20 prompts/wk</td>
<td>credit plans (10x Dev, Pro)</td>
</tr>
<tr>
<td><a href="https://www.summerengine.com/"><strong>Summer Engine</strong></a></td>
<td>Real engine project</td>
<td>2D + 3D</td>
<td>✅ full (Godot)</td>
<td>❌ native builds</td>
<td>✅ (manual export)</td>
<td>$20/mo (Pro)</td>
</tr>
<tr>
<td><a href="https://www.gameer.io/"><strong>Gameer</strong></a></td>
<td>Interactive story</td>
<td>2D</td>
<td>❌ engine-locked</td>
<td>✅ link</td>
<td>✅</td>
<td>$1.99/mo (Pro)</td>
</tr>
<tr>
<td><a href="https://gdevelop.io/"><strong>GDevelop AI</strong></a></td>
<td>Engine project</td>
<td>2D + 3D</td>
<td>✅ open-source</td>
<td>✅ gd.games</td>
<td>✅ 40 AI cr/mo</td>
<td>Silver (200 cr/wk)</td>
</tr>
<tr>
<td><a href="https://replit.com/"><strong>Replit</strong></a></td>
<td>Web app/game</td>
<td>2D (3D possible)</td>
<td>✅ code export</td>
<td>✅ URL</td>
<td>✅</td>
<td>$20/mo (Core)</td>
</tr>
<tr>
<td><a href="https://unity.com/"><strong>Unity AI</strong></a></td>
<td>Unity project</td>
<td>2D + 3D</td>
<td>✅ your project</td>
<td>WebGL export</td>
<td>14-day trial (1,000 cr)</td>
<td>$10/mo (Personal)</td>
</tr>
<tr>
<td><a href="https://www.buildbox.com/"><strong>Buildbox 4</strong></a></td>
<td>No-code game</td>
<td>2D + 3D</td>
<td>❌ engine-locked</td>
<td>HTML5 export</td>
<td>✅</td>
<td>subscription (see site)</td>
</tr>
<tr>
<td><a href="https://www.astrocade.com/"><strong>Astrocade</strong></a></td>
<td>Social game</td>
<td>2D (claims 3D)</td>
<td>❌ locked</td>
<td>✅ link</td>
<td>✅</td>
<td>none listed (creator payouts)</td>
</tr>
<tr>
<td><a href="https://nilo.io/"><strong>Nilo</strong></a></td>
<td>3D assets for Roblox</td>
<td>3D</td>
<td>Roblox Studio export</td>
<td>✅ link + Roblox</td>
<td>✅ 1,500 Bits/mo</td>
<td>$14.99/mo (Builder, promo)</td>
</tr>
<tr>
<td><a href="https://www.seeles.ai/"><strong>SEELE</strong></a></td>
<td>Playable game + assets</td>
<td>2D + 3D</td>
<td>✅ Unity 6 / Three.js export</td>
<td>✅ WebGL</td>
<td>✅ credits</td>
<td>Pro (commercial rights)</td>
</tr>
</tbody>
</table>
<p>Prices were checked against each vendor's own pricing page in September 2026 and change often, so confirm at checkout. Where a vendor hides prices behind a login (Rosebud, Buildbox), we've dropped the number rather than guess. Free tiers usually restrict commercial rights, so check the terms before you ship anything you intend to sell.</p>
<h2>Tool by tool</h2>
<h3>Rosebud AI</h3>
<p>Rosebud turns prompts into browser-playable games and is strongest in 2D, with growing 3D and voxel support. Under the hood it generates JavaScript (Three.js for 3D, Phaser for 2D), so the output is portable in principle. You iterate by chatting with its assistant, it generates sprites and NPCs for you, and you publish to a shareable Rosebud-hosted URL. The free tier gives you about 20 prompts a week without commercial rights, and per Rosebud's own <a href="https://lab.rosebud.ai/blog/pricing-subscription-faqs">pricing FAQ</a> you need the 10x Dev or Pro plan to sell what you make, with no revenue cut taken. Plans are credit-based and the numbers move often, so read them off Rosebud's plan page rather than any roundup. Best for beginners, educators, and jam entries who want the fastest path to a 2D link.</p>
<h3>Summer Engine</h3>
<p>Summer is the pick if you want to ship and sell a real game and own everything. It's a desktop, AI-native engine positioned as a drop-in for Godot 4, so your project is standard Godot files (GDScript or C#) with no lock-in. You describe scenes and logic in chat, it generates code and assets, and you export to Windows, macOS, Linux, mobile, web, and Steam, keeping all your revenue. The trade-off versus the browser tools: it's a desktop app aimed at shipping to stores, not an instant public link. As of September 2026 the <a href="https://www.summerengine.com/pricing">pricing page</a> lists a free app tier with editor access and manual export, Pro at $20/month with hosted frontier models and asset generation, Pro+ at $60, and Ultra at $200 with 20x usage. Worth noting that Summer publishes a lot of the &quot;best AI game maker&quot; roundups that rank Summer first, so weigh those accordingly. Two smaller Godot-based rivals showed up in 2026. <a href="https://ziva.sh/">Ziva</a> is an AI agent that runs inside the stock Godot 4.2+ editor and can use your existing Claude or ChatGPT subscription or a local model. <a href="https://github.com/Simplifine-gamedev/orca-engine">Orca Engine</a> is a source-available Godot fork with the agent wired into the editor core that you compile yourself and power with your own API keys, and its own code carries a non-commercial licence, so treat it as a tinkerer's option.</p>
<h3>Gameer</h3>
<p>Gameer makes cinematic interactive-story and visual-novel games from a plain-text prompt in a few minutes, with no code. A multi-agent system handles narrative, visuals, and mechanics. You get an instant shareable link, though the game is locked to Gameer's runtime. Pricing is the simplest in this list: free, Pro at $1.99/month, or Enterprise at $99/month per its <a href="https://www.gameer.io/pricing">pricing page</a>. It's built for writers, educators, and marketers who want branching fiction, not real-time action or 3D. If you want branching dialogue inside a real-time 3D game instead, try <a href="/create#prompt=Make%20a%20quest%20game%20talking%20to%20villagers%20to%20find%20a%20lost%20relic">a quest game where you talk to villagers</a>.</p>
<h3>GDevelop AI</h3>
<p>GDevelop is a free, open-source engine that added an in-editor AI agent. You ask it to build features or whole games and it writes events and behaviors into your editable project. It does 2D and growing 3D, exports to web, Android, iOS, and desktop, and gives you free public hosting on gd.games with share links. The AI runs on a credit allowance: 40 free AI credits a month, then Silver, Gold, and Pro at 200, 1,000, and 3,000 credits a week per the <a href="https://gdevelop.io/pricing">pricing page</a>. Paid prices went up 20% on January 12, 2026 for new subscribers, per the <a href="https://forum.gdevelop.io/t/gdevelop-premium-subscription-prices-will-increase-this-monday/74132">GDevelop forum announcement</a>. A strong free, open option if you don't mind a credit limit and some iteration.</p>
<h3>Replit</h3>
<p>Replit's Agent is a general full-stack builder, not a games engine, but it can build a web game from a description and deploy it to a public URL. It doesn't generate sprites, music, or sound, so you bring your own assets, and it leans 2D. Core is $20/month ($17 on annual billing) with $20 of model credits included, and Pro is $100, per <a href="https://replit.com/pricing">Replit's pricing page</a>. Best for people who are already comfortable steering an AI coding tool and want a web-playable result they fully control.</p>
<h3>Unity AI</h3>
<p>Unity replaced its old Muse product with Unity AI, which went into open beta in May 2026 and is still labelled beta as of September 2026 on <a href="https://unity.com/features/ai">Unity's AI page</a>. It's an in-editor agent for Unity 6.0 and up that generates C# code, placeholder assets, and scenes using frontier models. Personal users get a one-time 1,000-credit trial for 14 days, then $10 a month for 1,000 credits, while Pro, Enterprise, and Industry seats include it. You stay inside your own Unity project and own your game, exporting to WebGL among other targets. This is for people who already work in Unity and want AI assistance, not for newcomers who want a game from a sentence.</p>
<h3>Buildbox 4, Astrocade, Nilo</h3>
<p><strong>Buildbox 4</strong> is a no-code, mostly hyper-casual mobile engine that added AI asset and node generation. It exports HTML5 but is engine-locked, and its plan prices sit behind a signup wall, so check them there. <strong>Astrocade</strong> is the best-funded instant-share social platform in the group: it raised a $56 million Series B led by Sequoia in May 2026 and reported about 5 million monthly active users, 140 million plays a month, and 75,000 creator-built games, per <a href="https://fortune.com/2026/05/05/astrocade-raises-56-million-series-b-sequoia-video-games-platform-ali-amir-sadeghian/">Fortune</a>. Its output skews 2D in practice despite 3D marketing, with hard lock-in and no code export, and it lists no paid plan, with top creators paid out of the platform instead. <strong>Nilo</strong> has narrowed its pitch since our June pass. It now describes itself as a browser suite to generate, rig, animate, and export 3D assets straight into Roblox Studio, in open beta, with a free Starter tier of 1,500 Bits a month and a Builder plan at $14.99 a month on promotional pricing per its <a href="https://nilo.io/pricing">pricing page</a>. Good if Roblox is your target, less so if you want a standalone web game.</p>
<h3>SEELE and Websim</h3>
<p><strong>SEELE</strong> is a 2026 entrant worth knowing. Its <a href="https://www.seeles.ai/">SeeleAgent</a> turns one prompt into a 2D or 3D game plus images, 3D assets, and video, with browser-playable WebGL builds and export to Unity 6 or Three.js projects. It's free to start on credits, but commercial rights need its Pro plan, so read that before selling anything. <strong>Websim</strong> is the free end of the spectrum: a prompt-to-web sandbox where the community mostly makes small browser games and simulations, each with a shareable URL that others can fork and remix. There's no pricing page at all as of September 2026, which makes it a fun place to prototype an idea like <a href="/create#prompt=Build%20a%20game%20where%20gravity%20points%20wherever%20I%20click">a game where gravity points wherever you click</a>, but not a place to build something you'll maintain.</p>
<h2>AI generators for casual and HTML5 games</h2>
<p>A lot of the searches that land here are really asking a narrower question: which AI game builders make the kind of small, fast, casual game that lives on a web portal or a phone? The answer splits by what you need at the end. If you want an HTML5 build you can upload to <a href="http://itch.io">itch.io</a>, CrazyGames, or Poki, you need a tool that exports a standalone web bundle. GDevelop does this natively (its whole export story is HTML5, Android, iOS, and desktop), Buildbox 4 exports HTML5, Rosebud generates JavaScript on Phaser and Three.js that you can take out, and Cinevva lets you download the complete web game to host anywhere. Our guides to <a href="/guides/publish-game-crazygames">publishing on CrazyGames</a> and <a href="/guides/publish-game-poki">Poki</a> cover what those portals expect from a build.</p>
<p>If the goal is instead a hyper-casual loop that people play and remix on the platform itself, Astrocade is built for exactly that, and Websim is the free sandbox version of the same idea. Neither gives you a file you own, which is fine for a viral 60-second game and a problem for anything you want to monetize yourself. The AI HTML5 game-generation startups that attracted funding in 2025 and 2026 mostly sit in this second group, because casual UGC doesn't need the systems depth (inventory, save states, progression curves) that AI generators still struggle with. Our <a href="/guides/casual-games-trends-2026">casual games trends</a> guide has the market side of that story. To see how far a one-line casual prompt gets in a 3D builder, try <a href="/create#prompt=Build%20an%20endless%20runner%20dodging%20obstacles%20that%20speeds%20up%20over%20time">an endless runner that speeds up over time</a>.</p>
<h2>How to choose</h2>
<p>For a comparison you can inspect, open the <a href="/arena#compare-model-results-and-build-costs">AI Game Development Arena</a>: it publishes successful builds, model calls, run counts and measured costs alongside playable results. Read the <a href="/arena#arcade-benchmark-brief-and-scoring">benchmark brief and scoring</a> before comparing scores. Models with fewer than three runs are provisional; player preference and technical completion are separate measures.</p>
<p>Ask three questions. First, do you need 3D, or is 2D fine? Most tools are strongest in 2D, and reliable 3D from a prompt is the hard bar that few clear. Second, do you need to own and export the code, or is a hosted link enough? Summer, GDevelop, Unity AI, and Cinevva all let you export your project (Cinevva lets you download the complete game to host anywhere); Rosebud, Gameer, and Astrocade lean on the instant shareable link. Third, are you shipping to Steam and app stores, or sharing a link with friends? Stores favor the desktop engines; links favor the browser tools.</p>
<h2>Where Cinevva fits</h2>
<p>We'll be straight about this. The crowded part of the market is 2D-in-the-browser (Rosebud, Astrocade, Gameer, Replit). Cinevva sits in a much less crowded spot: chat-driven, builds both 2D and genuinely 3D games, browser-playable on a real Three.js-based engine, instantly shareable by link, and exportable as a complete game you can download and host anywhere, with text-to-3D, image, music, and skybox generation and CC0 asset libraries built in. That code export matters, because several instant-share rivals (Astrocade, Gameer) lock your game to their runtime. The tools closest to that intersection are SEELE, which exports WebGL and Unity builds but puts commercial rights behind its Pro plan, and Nilo, which has narrowed to generating 3D assets for Roblox, so the self-hosted web game you can both share and download is the gap we focus on.</p>
<p>The honest caveat is that &quot;real 3D from a prompt&quot; is the hardest claim in this category, and reviewers are right to be skeptical. The fair way to judge any of these tools, including ours, is to make something and share the link. You can <a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=ai_game_generators">build a 3D game from a prompt free</a> and see where it lands, or <a href="/guides/vibe-coding-game-prompts">start from a one-click prompt</a> if you'd rather not stare at a blank box.</p>
<h2>Common Questions</h2>
<h3>What is the best AI game generator in 2026?</h3>
<p>There's no single best, because the tools serve different goals. For a 2D browser game fast, Rosebud is excellent. For a 3D browser game you can share instantly, Cinevva or Nilo. For a game you own and ship to Steam, Summer Engine. For free and open-source, GDevelop AI. Pick based on 2D vs 3D, whether you need to own the code, and whether you're sharing a link or shipping to a store.</p>
<h3>Can AI really make a full game from a prompt?</h3>
<p>For small and casual games, yes, especially 2D. The AI handles movement, collision, physics, and basic art so you can go from idea to playable in minutes. Larger or more polished games still need iteration and human design work, and 3D is harder for AI to get right than 2D. Treat the first generation as a strong starting point you refine, not a finished product.</p>
<h3>Do I own games I make with an AI game generator?</h3>
<p>It depends on the tool. Engine-based tools like Summer, GDevelop, and Unity AI give you a real project you own and can export. Hosted prompt-to-game platforms vary: some let you export code, others lock the game to their runtime, and many gate commercial rights behind a paid plan. Always read the terms before selling anything.</p>
<h3>What is the best AI game maker for beginners?</h3>
<p>For a complete beginner, a browser prompt-to-game builder beats an engine with an AI bolted on, because there's nothing to install and the first playable result arrives in minutes. Rosebud is the gentlest for 2D, Cinevva for 3D, and Gameer if you want to write branching stories rather than mechanics. Move to GDevelop, Summer Engine, or Unity AI once you know you want to own a real project file. You can <a href="/create#prompt=Make%20a%20cozy%20fishing%20game%20on%20a%20quiet%20lake%20at%20sunset">start from a one-line prompt</a> to see whether the browser route fits before committing to an engine.</p>
<h3>Is there an AI game engine, or just AI inside game engines?</h3>
<p>Both exist now. Summer Engine and Orca Engine are AI-native engines built on Godot 4, where the agent creates nodes, writes GDScript, and runs the game to check its own work, and Cinevva is an AI-native browser engine on Three.js. The other direction is AI inside an existing engine: Unity AI in Unity 6, GDevelop's agent in GDevelop, and Ziva inside the stock Godot editor. The practical difference is ownership and lock-in, not intelligence. The engine-side tools hand you a normal project you can keep working on without the AI.</p>
<h3>Which AI game builders can make casual or HTML5 games?</h3>
<p>For an HTML5 file you can upload to a portal, use GDevelop, Buildbox 4, Rosebud, or Cinevva, all of which export a standalone web build. For casual games that live on a social platform and get remixed, Astrocade and Websim are the two built around that loop, but you don't get a file to host elsewhere. Match the tool to where the game will be played, and read the section above on casual and HTML5 generators for the trade-offs.</p>
<h3>Are AI-generated games free to make?</h3>
<p>Most tools have a free tier good enough to try them, but free tiers usually limit how much you can generate and often exclude commercial rights. Expect to pay once you want to publish commercially, generate heavily, or export. The comparison table above lists each tool's free tier and cheapest paid plan.</p>
<h2>Related</h2>
<ul>
<li><a href="/guides/make-a-game-with-ai">How to Make a Game with AI (2026 Guide)</a>: the full no-code workflow, step by step</li>
<li><a href="/guides/3d-browser-game-without-coding">How to Make a 3D Browser Game Without Coding</a>: the 3D-specific path</li>
<li><a href="/guides/vibe-coding-games">Vibe Coding Games: What It Is and How to Start</a>: the term, the workflow, the pitfalls</li>
<li><a href="/guides/vibe-coding-game-prompts">AI Game Prompts You Can Build in One Click</a>: starting points to try</li>
<li><a href="/guides/web-game-engines-comparison">Best Web Game Engines for 2026</a>: if you'd rather build by hand</li>
<li><a href="/guides/frontier-gen-ai-models">Best Open-Source Generative AI Models for Games</a>: the models behind AI asset generation</li>
<li><a href="/guides/ai-npcs-dialogue">AI NPCs and Dialogue in Games</a>: AI inside the game, not just building it</li>
<li><a href="/guides/publish-web-game">How to Publish a Web Game</a>: getting an HTML5 build in front of players</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Best Free Game Engines for Beginners (2026)]]></title>
            <link>https://app.cinevva.com/guides/best-free-game-engines-beginners</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/best-free-game-engines-beginners</guid>
            <pubDate>Tue, 23 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[The best free game engines for beginners in 2026, from no-code tools like GDevelop to Godot and Phaser, with what each is best for and how to pick your first engine.]]></description>
            <content:encoded><![CDATA[<h1>Best Free Game Engines for Beginners (2026)</h1>
<p><em>Last updated: September 2026.</em></p>
<p>Starting out, the best engine is the one that gets you to a playable game fastest without a bill or a steep wall of code. The short answer: GDevelop if you don't want to code, Godot if you want to learn programming, Phaser if you already know JavaScript, and all three are free with no revenue caps. The good news in 2026 is that the strongest beginner options are completely free, and we've re-checked every free-tier limit below as of September 2026. Here are the picks, sorted by how much code you want to write, plus the newer &quot;describe it to an AI&quot; route.</p>
<h2>Quick picks by where you're starting</h2>
<ul>
<li><strong>No code at all, want a game today:</strong> GDevelop, or an AI prompt-to-game tool.</li>
<li><strong>A little code, want to learn properly:</strong> Godot.</li>
<li><strong>You know some JavaScript:</strong> Phaser.</li>
<li><strong>Visual scripting with a polished editor:</strong> Construct (free tier) or GDevelop.</li>
</ul>
<h2>The best free engines</h2>
<h3>GDevelop</h3>
<p>Free, open-source, runs in your browser or as a desktop app, and you build logic with visual event sheets instead of code. It does 2D and increasingly 3D, exports to web, mobile, and desktop, and gives you free hosting on gd.games with a share link. The free plan allows 3 cloud projects and one desktop or Android export a day, per <a href="https://gdevelop.io/pricing">GDevelop's pricing page</a> as of September 2026, and the engine itself is MIT licensed. It even added an AI agent that can build features from prompts. The single best no-code starting point for most beginners, with no cost to ship.</p>
<h3>Godot</h3>
<p>Free and open-source under the MIT license, with no fees or revenue caps ever. Godot does both 2D and 3D, has a gentle scripting language (GDScript) designed to be approachable, and a huge library of free tutorials. The current version is 4.7.2 (August 2026), with 4.8 in development, per the <a href="https://godotengine.org/blog/">Godot blog</a>. It's the best pick if you want to learn real game programming without licensing worries, and it scales with you from first project to shipping a full game. One note: C# projects can't export to the web, so use GDScript if web is your target.</p>
<h3>Phaser</h3>
<p>Free under the MIT license, Phaser is the most popular HTML5 game framework, with the largest community and the most tutorials for 2D web games. Version 4 shipped in April 2026 and sits at 4.2.1 as of September 2026, per the <a href="https://github.com/phaserjs/phaser/releases">Phaser releases</a>. It's code-first (JavaScript or TypeScript), so it suits beginners who already know a little web development and want to learn by writing code rather than using a visual editor.</p>
<h3>Construct (free tier)</h3>
<p>Construct is a visual, event-sheet engine that runs in the browser with no coding. Its free edition lets you build and publish 2D games to the web, with limits you outgrow as projects get bigger: 50 events and 2 layers per project, per <a href="https://www.construct.net/en/make-games/buy-construct">Construct's pricing page</a> as of September 2026. The Personal plan that removes the caps is $129.99 a year or $15.99 a month. Great for absolute beginners who want a polished, guided editor, with a subscription only needed once you scale up.</p>
<h3>The AI / no-code route</h3>
<p>A newer option: describe a game to an AI prompt-to-game tool and refine it by chatting, with no engine to install. This is the fastest path from idea to a shareable playable game, especially for 3D, where classic no-code tools are weak. See <a href="/guides/make-a-game-with-ai">how to make a game with AI</a> and our <a href="/guides/ai-game-generators-2026">comparison of AI game generators</a>.</p>
<h2>Comparison</h2>
<table>
<thead>
<tr>
<th>Engine</th>
<th>Code needed</th>
<th>2D / 3D</th>
<th>Runs in browser</th>
<th>Web publish</th>
<th>Cost</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>GDevelop</strong></td>
<td>None (visual)</td>
<td>2D + 3D</td>
<td>Yes</td>
<td>gd.games</td>
<td>Free</td>
</tr>
<tr>
<td><strong>Godot</strong></td>
<td>Light (GDScript)</td>
<td>2D + 3D</td>
<td>Desktop</td>
<td>Export</td>
<td>Free (MIT)</td>
</tr>
<tr>
<td><strong>Phaser</strong></td>
<td>Yes (JS/TS)</td>
<td>2D</td>
<td>Yes</td>
<td>Your own</td>
<td>Free (MIT)</td>
</tr>
<tr>
<td><strong>Construct</strong></td>
<td>None (visual)</td>
<td>2D</td>
<td>Yes</td>
<td>Free tier</td>
<td>Free tier; paid to scale</td>
</tr>
<tr>
<td><strong>AI prompt-to-game</strong></td>
<td>None (describe it)</td>
<td>2D + 3D</td>
<td>Yes</td>
<td>Instant link</td>
<td>Free to start</td>
</tr>
</tbody>
</table>
<h2>What &quot;free&quot; means for each engine</h2>
<p>Free doesn't mean the same thing everywhere. Here's the fine print as of September 2026, checked against each vendor's own pricing or license page.</p>
<table>
<thead>
<tr>
<th>Engine</th>
<th>Free terms</th>
<th>What you pay later</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Godot</strong></td>
<td>MIT license, no caps, no royalties</td>
<td>Nothing, ever</td>
</tr>
<tr>
<td><strong>GDevelop</strong></td>
<td>MIT engine, free web export, 3 cloud projects</td>
<td>Optional Silver/Gold/Pro tiers for cloud services</td>
</tr>
<tr>
<td><strong>Phaser</strong></td>
<td>MIT license, no caps</td>
<td>Nothing (an optional paid editor exists)</td>
</tr>
<tr>
<td><strong>Defold</strong></td>
<td>Free, no royalties, no runtime fee</td>
<td>Nothing</td>
</tr>
<tr>
<td><strong>Construct</strong></td>
<td>Free edition: 50 events, 2 layers</td>
<td>Personal $129.99/yr or $15.99/mo</td>
</tr>
<tr>
<td><strong>GameMaker</strong></td>
<td>Free for non-commercial use</td>
<td>$99.99 one-time Professional for commercial release</td>
</tr>
<tr>
<td><strong>Unity</strong></td>
<td>Personal is free under $200K revenue or funding in the prior 12 months</td>
<td>Pro $2,310/seat/yr above that</td>
</tr>
<tr>
<td><strong>Unreal</strong></td>
<td>Free to use, source-available</td>
<td>5% royalty on a product's gross revenue above $1M lifetime</td>
</tr>
</tbody>
</table>
<p>Sources: <a href="https://godotengine.org/license/">Godot</a>, <a href="https://gdevelop.io/pricing">GDevelop</a>, <a href="https://defold.com/">Defold</a>, <a href="https://www.construct.net/en/make-games/buy-construct">Construct</a>, <a href="https://gamemaker.io/en/get">GameMaker</a>, <a href="https://unity.com/pricing">Unity</a>, <a href="https://www.unrealengine.com/en-US/faq">Unreal</a>.</p>
<h2>How to pick your first engine</h2>
<p>Don't overthink it. Match the engine to how much code you want to write, and start small. If the idea of code is off-putting, start with GDevelop and ship a tiny game this week. If you want to learn programming alongside design, start with Godot and follow one of its many beginner tutorials. If you already know JavaScript, Phaser will feel natural. And if you just want to see your idea playable as fast as possible, try the AI route, then move to a code or visual engine as your projects grow. The biggest mistake beginners make is picking a heavy professional engine, getting overwhelmed, and quitting. A finished small game in a simple engine teaches you more than an abandoned big one.</p>
<h2>Common Questions</h2>
<h3>What is the easiest free game engine for beginners?</h3>
<p>GDevelop is the easiest free starting point: it's no-code (visual event sheets), runs in the browser, and publishes free to the web. Construct is similarly beginner-friendly with a free tier. If you want zero setup at all, an AI prompt-to-game tool gets you a playable game from a description.</p>
<h3>Is Godot good for beginners?</h3>
<p>Yes. Godot is free, open-source, and has a beginner-friendly scripting language (GDScript) plus a large library of free tutorials. It's the best free pick if you want to learn real game programming, and it does both 2D and 3D. Just note that C# projects can't export to the web, so stick to GDScript if you're targeting browsers.</p>
<h3>Do I need to know how to code to make a game?</h3>
<p>No. No-code engines like GDevelop and Construct let you build games with visual logic, and AI prompt-to-game tools build a game from a plain-English description. Coding opens up more control and is worth learning eventually, but you can make and publish a real game today without it.</p>
<h3>Are there any game engines that are completely free with no revenue limits?</h3>
<p>Yes. Godot (MIT), Phaser (MIT), GDevelop's engine (MIT), and Defold (free, no royalties) have no revenue caps, seat fees, or royalties at any income level, and neither do the web 3D libraries Three.js (MIT) and Babylon.js (Apache 2.0). The engines that are &quot;free&quot; with strings attached are Unity Personal (free only under $200K revenue or funding), Unreal (5% royalty above $1M per product), GameMaker (free only for non-commercial use), and Construct (free edition capped at 50 events). Our <a href="/guides/open-source-game-engines-2026">open-source game engines guide</a> lists every no-strings option.</p>
<h3>What is the best free 3D game engine for beginners?</h3>
<p>Godot. It's free with no caps, its 3D tools are solid for indie-scale games, and GDScript is the gentlest way into 3D programming. GDevelop now has a real-time 3D editor if you want no-code 3D, and Unity Personal is free under $200K if you want the biggest 3D tutorial library and don't mind a steeper editor. If you just want to see a 3D idea running today, <a href="/create#prompt=Make%20a%20simple%203D%20obstacle%20course%20with%20checkpoints%20and%20a%20finish%20line">describe it and play it in the browser</a> before you install anything.</p>
<h3>What is the best free drag-and-drop game engine?</h3>
<p>GDevelop. It's the best free drag-and-drop engine because the whole engine is free and open source, it runs in the browser, and it publishes to the web at no cost. Construct is the other polished drag-and-drop editor, but its free edition is capped at 50 events, so most finished games need the paid Personal plan. See <a href="/guides/construct-vs-gdevelop">Construct vs GDevelop</a> for the head to head.</p>
<h3>Are game engines free?</h3>
<p>Most of the good ones are free to start, but the terms differ. Godot, GDevelop, Phaser, and Defold are free at any revenue. Unity and Unreal are free until your game earns real money ($200K and $1M respectively), then charge a seat fee or a royalty. GameMaker is free for hobby projects and $99.99 one-time to sell a game. Construct is free to learn and a subscription to ship. The table above has the exact terms as of September 2026.</p>
<h3>Which free engine should I learn in 2026?</h3>
<p>Pick by how much code you want to write: GDevelop or an AI tool for no-code, Godot to learn programming, Phaser if you know JavaScript. All are free to ship commercial games. Start with whichever lowers the barrier for you, finish a small game, and move up from there.</p>
<p><BuildCta
  title="Build your first game before you install anything"
  desc="The fastest way to find out if game making is for you."
  prompt="Make a simple 3D obstacle course with checkpoints and a finish line" /></p>
<h2>Related</h2>
<ul>
<li><a href="/guides/vibe-coding-game-prompts">100 AI Game Prompt Ideas You Can Build in One Click</a>: steal an idea and have it playable in about a minute</li>
<li><a href="/guides/web-game-engines-comparison">Best Web Game Engines for 2026</a>: the full field as you grow</li>
<li><a href="/guides/best-2d-game-engines-2026">Best 2D Game Engines for 2026</a>: if your first game is 2D</li>
<li><a href="/guides/make-a-game-with-ai">How to Make a Game with AI (No Coding)</a>: the no-code AI route</li>
<li><a href="/guides/3d-browser-game-without-coding">How to Make a 3D Browser Game Without Coding</a>: 3D for beginners</li>
<li><a href="/guides/itch-io-launch-guide">How to Launch Your Game on itch.io</a>: publishing your first game</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Best Free 3D Model Sites for Games (2026)]]></title>
            <link>https://app.cinevva.com/guides/free-3d-model-sites</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/free-3d-model-sites</guid>
            <pubDate>Tue, 23 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[The best free 3D model sites for games in 2026, from CC0 sources like Kenney, Quaternius, and Poly Haven to Sketchfab and the Google Poly successors, with licenses explained.]]></description>
            <content:encoded><![CDATA[<h1>Best Free 3D Model Sites for Games (2026)</h1>
<p>For individual downloads with creator credit and available model metadata, browse our <a href="/game-assets/free-3d-character-models">free 3D character models</a>, <a href="/game-assets/free-3d-vehicle-models">vehicle models</a>, and <a href="/game-assets/free-3d-weapon-models">weapon models</a>. Each collection links directly to CC0 GLB files.</p>
<p><em>Last updated: September 2026.</em></p>
<p>The best free 3D model sites for games in 2026 are Kenney, Quaternius, KayKit, and Poly Haven, all CC0 so you can ship their models commercially with no attribution, followed by Sketchfab and Poly Pizza for variety under mixed Creative Commons licenses. You don't need to model everything yourself, or pay for it. There's a deep well of free, game-ready 3D models out there, and the best of them are CC0, meaning you can use them commercially with no attribution. Here are the sites worth bookmarking in 2026, sorted by how you'll actually use them, with the licensing made clear.</p>
<p>If you'd rather skip straight to results, we keep browsable pages of free models by subject: <a href="/game-assets/free-3d-character-models">characters</a>, <a href="/game-assets/free-3d-vehicle-models">vehicles</a>, <a href="/game-assets/free-3d-weapon-models">weapons</a>, <a href="/game-assets/free-3d-tree-models">trees and plants</a>, <a href="/game-assets/free-3d-furniture-models">furniture</a>, <a href="/game-assets/free-3d-building-models">buildings</a> and <a href="/game-assets/">more</a>.</p>
<div class="video-embed">
<iframe src="https://www.youtube.com/embed/pC937t3NlOA" title="1000s of FREE 3D Game Models (Quaternius CC0 assets)" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<div class="video-caption">A tour of thousands of free CC0 3D game models from Quaternius.</div>
<h2>Quick reference</h2>
<table>
<thead>
<tr>
<th>Need</th>
<th>Best source</th>
<th>License</th>
<th>Attribution</th>
</tr>
</thead>
<tbody>
<tr>
<td>Game-ready props in one coherent style</td>
<td>Kenney</td>
<td>CC0</td>
<td>None</td>
</tr>
<tr>
<td>Stylized low-poly characters</td>
<td>Quaternius, KayKit</td>
<td>CC0</td>
<td>None</td>
</tr>
<tr>
<td>Rigged base characters and clothing</td>
<td>Quaternius Universal Base Characters and Modular Outfits</td>
<td>CC0</td>
<td>None</td>
</tr>
<tr>
<td>Photorealistic props, textures, HDRIs</td>
<td>Poly Haven</td>
<td>CC0</td>
<td>None</td>
</tr>
<tr>
<td>Widest variety, complex models</td>
<td>Sketchfab</td>
<td>Mixed, filter per model</td>
<td>Depends on model</td>
</tr>
<tr>
<td>Google Poly archive, fast stylized props</td>
<td>Poly Pizza, Icosa Gallery</td>
<td>Mostly CC-BY</td>
<td>Credit the creator</td>
</tr>
<tr>
<td>Free AAA-quality scans</td>
<td>Fab (Megascans starter pack)</td>
<td>Fab Standard, some CC</td>
<td>None, check listing</td>
</tr>
<tr>
<td>Huge Blender-first library</td>
<td>BlenderKit free tier</td>
<td>Royalty-Free and CC0</td>
<td>None</td>
</tr>
<tr>
<td>Open-source-friendly community art</td>
<td>OpenGameArt</td>
<td>CC0, CC-BY, OGA-BY, GPL</td>
<td>Depends on asset</td>
</tr>
<tr>
<td>Marketplace freebies</td>
<td>CGTrader, TurboSquid</td>
<td>Royalty-Free</td>
<td>None</td>
</tr>
<tr>
<td>Museum and space scans</td>
<td>Smithsonian, NASA</td>
<td>CC0 / US government work</td>
<td>None</td>
</tr>
</tbody>
</table>
<h2>Quick picks</h2>
<ul>
<li><strong>Game-ready, consistent style, zero hassle:</strong> Kenney, Quaternius, KayKit (all CC0).</li>
<li><strong>Photorealistic models, textures, HDRIs:</strong> Poly Haven (CC0).</li>
<li><strong>Widest variety, complex models:</strong> Sketchfab (mixed licenses, check each).</li>
<li><strong>Low-poly, Google Poly archive:</strong> Poly Pizza, Icosa Gallery (mostly CC-BY).</li>
<li><strong>Unusual props nobody else has:</strong> Smithsonian Open Access and NASA 3D Resources.</li>
<li><strong>Downloaded a character that won't animate:</strong> Cinevva's <a href="/tools/rigger">Auto Rigger</a> fits a skeleton in the browser and bakes in walk, idle and combat clips, with your first rigged character free.</li>
</ul>
<h2>The CC0 staples (no attribution, commercial-safe)</h2>
<h3>Kenney</h3>
<p>The single best starting point. Kenney offers tens of thousands of game-ready assets, all CC0, across 3D models, sprites, UI, and audio, in consistent art styles you can mix and match. Everything is optimized for games, with shared texture atlases and sane poly counts. If you want a coherent look fast, start here.</p>
<figure class="sample-sheet">
<a href="/assets?providers=kenney"><img src="https://cdn.cinevva.com/guides/samples/samples-kenney-3d.jpg" alt="Sample CC0 3D models from Kenney: race car, spaceship, siege tower, house, pirate ship, windmill, UFO and firetruck" loading="lazy"></a>
<figcaption>Eight Kenney props, all CC0. <a href="/assets?providers=kenney">Browse the full Kenney set in the asset library</a>.</figcaption>
</figure>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://kenney.nl">kenney.nl</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>CC0, no attribution required</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>Over 200 packs, more than 60,000 individual assets per Kenney's own <a href="https://kenney.itch.io/kenney-game-assets">All-in-1 listing</a></td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>GLB/GLTF, OBJ, FBX for 3D, plus PNG and WAV</td>
</tr>
<tr>
<td><strong>Direct download</strong></td>
<td>Yes, free ZIP per pack, no account needed</td>
</tr>
<tr>
<td><strong>Best for</strong></td>
<td>Prototyping fast and shipping with one coherent style</td>
</tr>
</tbody>
</table>
<h3>Quaternius</h3>
<p>Cute, stylized low-poly 3D models, all CC0, organized into themed packs (characters, environments, vehicles, monsters) plus a universal animation library that works across the character packs. Perfect for indie games that want a charming low-poly aesthetic.</p>
<figure class="sample-sheet">
<a href="/assets"><img src="https://cdn.cinevva.com/guides/samples/samples-quaternius.jpg" alt="Sample CC0 low-poly models from Quaternius: monsters, pirate captain, mech, wizard, spaceship, shiba inu and knight" loading="lazy"></a>
<figcaption>Quaternius characters and ships, all CC0 and most of them animated. <a href="/assets">Search them in the free asset library</a>.</figcaption>
</figure>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://quaternius.com">quaternius.com</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>CC0, no attribution required</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>Over 80 themed packs, including the rigged Universal Base Characters and a CC0 Modular Character Outfits kit</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>GLTF/GLB, FBX</td>
</tr>
<tr>
<td><strong>Direct download</strong></td>
<td>Yes, free ZIP per pack, no account needed</td>
</tr>
<tr>
<td><strong>Best for</strong></td>
<td>Low-poly characters and creatures with matching animations</td>
</tr>
</tbody>
</table>
<h3>KayKit by Kay Lousberg</h3>
<p>KayKit is Kay Lousberg's line of low-poly asset packs, and it fills the gap between Kenney and Quaternius with dungeon kits, character packs (adventurers, skeletons), hex terrain, and dozens of themed &quot;Bits&quot; prop packs. Most packs are free and CC0, with a paid complete bundle if you want everything at once. The character packs ship with animations and rig cleanly.</p>
<figure class="sample-sheet">
<a href="/assets"><img src="https://cdn.cinevva.com/guides/samples/samples-kaykit.jpg" alt="Sample CC0 models from KayKit: treasure chest, skeleton mage, knight, hexagon tower, mage, water tower, barrel and jack-o-lantern" loading="lazy"></a>
<figcaption>KayKit's dungeon and character packs, CC0. <a href="/assets">Search KayKit in the asset library</a>.</figcaption>
</figure>
<figure class="sample-sheet">
<a href="/assets"><img src="https://cdn.cinevva.com/guides/samples/samples-kaylousberg.jpg" alt="Sample CC0 interior and park props by Kay Lousberg: fridge, birthday cake, cactus, tree, park bench, bathtub, fountain and bread" loading="lazy"></a>
<figcaption>Kay Lousberg's household and park Bits packs, CC0. <a href="/assets">Find them in the asset library</a>.</figcaption>
</figure>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://kaylousberg.itch.io">kaylousberg.itch.io</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>CC0 on the free packs, no attribution required</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>Around 25 packs, most of them free</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>GLTF, FBX, OBJ</td>
</tr>
<tr>
<td><strong>Direct download</strong></td>
<td>Yes, via <a href="http://itch.io">itch.io</a> (pay-what-you-want at $0)</td>
</tr>
<tr>
<td><strong>Best for</strong></td>
<td>Dungeon crawlers, RPG props, animated fantasy characters</td>
</tr>
</tbody>
</table>
<h3>Poly Haven</h3>
<p>Photorealistic 3D models, PBR textures, and HDRIs, all CC0, with multiple resolutions and a no-key API for direct downloads. Over 2,300 assets and growing as of September 2026 (the <a href="https://api.polyhaven.com/assets?t=models">public API</a> lists 521 models, 856 texture sets, and 993 HDRIs). Best for realistic props, environments, and lighting. The HDRIs alone are worth the bookmark, they'll make any scene look better in one click, and our <a href="/game-assets/free-hdri-skies">free HDRI skies</a> page pulls the best of them together.</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://polyhaven.com">polyhaven.com</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>CC0, no attribution required</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>Over 2,300 (520+ models, 850+ PBR textures, 990+ HDRIs)</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>GLTF, Blend, FBX, resolutions from 1K to 16K</td>
</tr>
<tr>
<td><strong>API</strong></td>
<td>Yes, public and keyless</td>
</tr>
<tr>
<td><strong>Best for</strong></td>
<td>Realistic props, materials, and image-based lighting</td>
</tr>
</tbody>
</table>
<h3>PolygonalMind</h3>
<p>A studio that open-sources a chunk of its work. The 100 Avatars project released over 200 CC0 low-poly characters across two full rounds (with a third in progress), each rigged and ready for games or VR, plus themed CC0 prop packs published on Sketchfab and GitHub. A great source of varied, stylized characters when you need a crowd.</p>
<figure class="sample-sheet">
<a href="/assets"><img src="https://cdn.cinevva.com/guides/samples/samples-polygonalmind.jpg" alt="Sample CC0 avatars from PolygonalMind's 100 Avatars project: eight rigged stylized characters" loading="lazy"></a>
<figcaption>Eight of the 200+ rigged CC0 avatars from 100 Avatars. <a href="/assets">Browse avatars in the asset library</a>.</figcaption>
</figure>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://github.com/PolygonalMind">github.com/PolygonalMind</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>CC0 on the open-source releases</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>Over 200 avatars plus themed prop packs</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>FBX, VRM, GLB (varies by pack)</td>
</tr>
<tr>
<td><strong>Direct download</strong></td>
<td>Yes, via GitHub releases and Sketchfab</td>
</tr>
<tr>
<td><strong>Best for</strong></td>
<td>Rigged stylized characters in bulk</td>
</tr>
</tbody>
</table>
<h2>The big libraries (mixed licenses, check each)</h2>
<h3>Sketchfab</h3>
<p>The largest 3D model library, with millions of models and a 3D preview before you download. Licenses vary per model, so filter for downloadable plus CC0 or CC-BY. The 2026 story has two chapters. First, Sketchfab's paid store closed and selling moved to Epic's Fab, where only CC-BY and Fab Standard content could migrate, so CC0, CC-BY-SA, CC-BY-NC, and CC-BY-ND models stayed on Sketchfab. Then on August 10, 2026 Epic <a href="https://www.epicgames.com/site/news/kitbash-acquires-artstation-and-sketchfab">sold Sketchfab and ArtStation to KitBash</a>, the company behind KitBash3D and Greyscalegorilla, which says there are no immediate changes to how you access or use either site. As of September 2026 free downloads and the download API still work (we checked the API this month), and Epic's earlier plan to drop free licensing from Sketchfab hasn't happened under the new owner. Treat it as a still-useful source whose future is being decided by someone new, so grab what you need rather than assuming it will always be there.</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://sketchfab.com">sketchfab.com</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>Mixed, per model (CC0, CC-BY, CC-BY-NC, and more)</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>Millions of models</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>GLTF, FBX, OBJ, USDZ</td>
</tr>
<tr>
<td><strong>API</strong></td>
<td>Yes, download and viewer APIs still live as of September 2026</td>
</tr>
<tr>
<td><strong>Best for</strong></td>
<td>Finding the one specific model nothing else has</td>
</tr>
</tbody>
</table>
<h3>Poly Pizza and Icosa Gallery</h3>
<p>Google Poly shut down in 2021, but its low-poly catalog lives on. Poly Pizza hosts over 10,600 free models (its own homepage count as of September 2026), including the archived &quot;Poly by Google&quot; collection plus thousands of new community uploads. The non-profit Icosa Gallery continues the open mission with its own archive, an API, and ties to the Open Brush and Open Blocks projects. Most models on both are CC-BY (credit the creator), with some CC0. Great for fast, stylized props that match the Kenney and Quaternius look.</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://poly.pizza">poly.pizza</a> and <a href="https://icosa.gallery">icosa.gallery</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>Mostly CC-BY, some CC0, shown per model</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>Over 10,600 on Poly Pizza, thousands more on Icosa</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>GLB/GLTF, OBJ</td>
</tr>
<tr>
<td><strong>Direct download</strong></td>
<td>Yes, no account needed on Poly Pizza</td>
</tr>
<tr>
<td><strong>Best for</strong></td>
<td>Quick low-poly props when you don't mind a credits line</td>
</tr>
</tbody>
</table>
<h3>Fab (Epic)</h3>
<p>Epic's unified marketplace, the successor to the Unreal Marketplace, Quixel Megascans, and the Sketchfab store. The draw for asset hunters is a free Megascans starter collection that Epic describes as &quot;1500+ assets&quot; usable &quot;in any engine or tool&quot; under the Fab Standard license (per <a href="https://forums.unrealengine.com/t/megascans-starter-content-on-fab/2255322">Epic's forum announcement</a>), plus a rotating selection of limited-time free content. The wider Megascans library went paid at the end of 2024. Check the license on each listing before shipping.</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://www.fab.com">fab.com</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>Fab Standard (Personal/Professional) and some Creative Commons</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>A 1,500+ asset free Megascans starter set plus rotating limited-time free drops</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>Unreal, Unity, glTF, and more</td>
</tr>
<tr>
<td><strong>Direct download</strong></td>
<td>Yes, after free sign-up</td>
</tr>
<tr>
<td><strong>Best for</strong></td>
<td>Photoreal scans and the biweekly freebie habit</td>
</tr>
</tbody>
</table>
<h3>OpenGameArt</h3>
<p>The community art repository for open-source and indie games, running since 2009. It hosts 2D and 3D art, audio, and textures under a strict set of open licenses (CC0, CC-BY 3.0 and 4.0, CC-BY-SA 3.0 and 4.0, OGA-BY 3.0 and 4.0, GPL 2.0 and 3.0, per its <a href="https://opengameart.org/content/faq">FAQ</a>), so everything on it is legal to use if you follow the license shown, and the FAQ confirms that includes commercial projects. The 3D section is smaller and less consistent than the dedicated model sites, but it hides gems, and the license filter makes CC0-only browsing easy. Watch out for GPL-licensed assets, which can put share-alike obligations on your project.</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://opengameart.org">opengameart.org</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>CC0, CC-BY, CC-BY-SA, OGA-BY, or GPL, per asset</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>Thousands of community submissions across 2D, 3D, and audio</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>Varies (Blend, OBJ, FBX, GLTF)</td>
</tr>
<tr>
<td><strong>Direct download</strong></td>
<td>Yes, no account needed</td>
</tr>
<tr>
<td><strong>Best for</strong></td>
<td>CC0-filtered browsing and open-source-friendly projects</td>
</tr>
</tbody>
</table>
<h3>BlenderKit</h3>
<p>A huge asset library that lives inside a Blender add-on, so models, materials, and HDRIs drop straight into your scene. The free tier is genuinely large: over 17,000 free models, 26,000 free materials, and 2,000 free HDRIs at last public count. BlenderKit uses exactly two licenses, Royalty-Free and CC0, and you can filter to either. Royalty-Free here means free commercial use in your game but no reselling the raw asset.</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://www.blenderkit.com">blenderkit.com</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>Royalty-Free or CC0, filterable</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>Over 45,000 free (models, materials, HDRIs, brushes)</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>Blend natively, export to GLB/FBX from Blender</td>
</tr>
<tr>
<td><strong>API</strong></td>
<td>Yes, via the Blender add-on, free account required</td>
</tr>
<tr>
<td><strong>Best for</strong></td>
<td>Scene dressing and materials if Blender is in your pipeline</td>
</tr>
</tbody>
</table>
<h2>Marketplace free sections (royalty-free, read the fine print)</h2>
<h3>TurboSquid</h3>
<p>The oldest big 3D marketplace, now owned by Shutterstock, with a sizeable free section. Free models use the same TurboSquid royalty-free license as paid ones: games for console, PC, mobile, and VR are explicitly permitted, you can use a model in unlimited projects forever, but you can't redistribute the raw files and end users must not be able to extract them. Skip anything labeled &quot;Editorial Use&quot;, those models can't ship in a commercial game.</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://www.turbosquid.com/Search/3D-Models/free">turbosquid.com</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>TurboSquid royalty-free, games permitted</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>A large free section within a multimillion-model catalog</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>MAX, FBX, OBJ, Blend, GLTF (varies per model)</td>
</tr>
<tr>
<td><strong>Direct download</strong></td>
<td>After free account sign-up</td>
</tr>
<tr>
<td><strong>Best for</strong></td>
<td>Realistic one-off props, vehicles, and hard-surface models</td>
</tr>
</tbody>
</table>
<h3>CGTrader</h3>
<p>The biggest free section of any marketplace, with over 150,000 free models (CGTrader's <a href="https://www.cgtrader.com/free-3d-models">free section</a> counted just over 150,000 as of September 2026). The royalty-free license allows commercial use in games with no extra fees, with the same catch as TurboSquid: the model must be incorporated into your game so players can't pull the file out, and you can't resell it on its own. Quality varies a lot more than on the curated sites, so check the poly count and textures before you commit.</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://www.cgtrader.com/free-3d-models">cgtrader.com/free-3d-models</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>CGTrader royalty-free, commercial use allowed</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>Over 150,000 free models</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>FBX, OBJ, Blend, GLTF, MAX (varies per model)</td>
</tr>
<tr>
<td><strong>Direct download</strong></td>
<td>After free account sign-up</td>
</tr>
<tr>
<td><strong>Best for</strong></td>
<td>Sheer volume when the CC0 sites don't have it</td>
</tr>
</tbody>
</table>
<h2>Public domain scans (museums and space)</h2>
<h3>Smithsonian Open Access 3D</h3>
<p>The Smithsonian released millions of collection items under CC0, including over 2,000 downloadable 3D scans: dinosaur fossils, spacecraft, statues, instruments, and artifacts you won't find anywhere else. Look for the CC0 mark on the model page. The scans are photogrammetry-heavy, so plan to decimate them in Blender before they go anywhere near a browser game.</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://3d.si.edu">3d.si.edu</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>CC0 on marked models, check each</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>Over 2,000 3D scans</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>OBJ, glTF/GLB</td>
</tr>
<tr>
<td><strong>Direct download</strong></td>
<td>Yes, no account needed</td>
</tr>
<tr>
<td><strong>Best for</strong></td>
<td>Museum-grade props, fossils, and historical set dressing</td>
</tr>
</tbody>
</table>
<h3>NASA 3D Resources</h3>
<p>NASA publishes hundreds of models of spacecraft, rovers, asteroids, and planetary terrain, free to download and use under NASA's media usage guidelines (most NASA-created material isn't copyrighted, just don't imply NASA endorses your game or use the NASA insignia). Mesh quality ranges from print-ready scans to real engineering models, and the collection is also mirrored on GitHub.</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://science.nasa.gov/3d-resources/">science.nasa.gov/3d-resources</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>Free per NASA media guidelines, no endorsement implied</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>Hundreds of models and textures</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>GLB, FBX, Blend, STL, 3DS, and more</td>
</tr>
<tr>
<td><strong>Direct download</strong></td>
<td>Yes, no account needed</td>
</tr>
<tr>
<td><strong>Best for</strong></td>
<td>Space games that want the real Curiosity rover</td>
</tr>
</tbody>
</table>
<h2>Generate models with AI</h2>
<p>By 2026, generating a model can be faster than searching for one. Tools like Meshy and Tripo turn text or an image into a textured 3D mesh, and open models like Hunyuan3D and TRELLIS.2 let you self-host. Most hosted tools gate commercial rights behind a paid plan, so check terms. Our <a href="/guides/ai-3d-model-generators">best AI 3D model generators</a> guide compares every text-to-3D and image-to-3D tool worth using, with the licensing on each one spelled out, and the <a href="/guides/ai-asset-generators-games">AI asset generators guide</a> covers the wider pipeline. Cinevva also has a built-in <a href="/tools/hunyuan3d#prompt=a%20low%20poly%20wooden%20market%20stall%20with%20a%20striped%20awning">3D Model Generator</a> that turns a photo or a text prompt into a model.</p>
<p>If the thing you came here looking for isn't in any of the libraries above, it's usually quicker to describe it than to keep searching. The kind of thing that pays off: the one prop nobody packs into a free set, a vehicle when every pack ships cars, or set dressing for a specific scene.</p>
<p>One caveat worth keeping in mind against everything above: a generated mesh has no edge loops built for deformation, so it's excellent for props and set dressing and weaker for a hero character you plan to animate up close.</p>
<h2>Getting models game-ready</h2>
<p>Finding the model is half the job. Here's how to make sure it actually runs in your game.</p>
<p><strong>Prefer GLB for web games.</strong> GLB is a single binary file with the mesh, materials, and textures embedded, and every web engine (Three.js, Babylon.js, PlayCanvas) loads it natively. If a model only comes as FBX or OBJ, open it in Blender and export to GLB, it takes a minute. Kenney, Quaternius, KayKit, and Poly Haven all ship GLTF/GLB already, which is a big part of why they're first on this list.</p>
<p><strong>Mind the poly budget.</strong> Browser games run on whatever hardware shows up, including three-year-old phones. As a rule of thumb, keep props to a few hundred or a few thousand triangles, hero characters between 10,000 and 30,000, and individual downloads under 100,000. Marketplace and museum models often blow way past this, so check the triangle count before you fall in love, or plan a decimation pass in Blender.</p>
<p><strong>Watch draw calls, not just polygons.</strong> Fifty separate props with fifty materials will hurt more than one dense mesh. The curated packs help here too, Kenney and Quaternius assets share texture atlases so an entire scene can render in a handful of draw calls.</p>
<p><strong>Check the license before you ship, not after.</strong> Save a screenshot or PDF of the license page for every non-CC0 model you use, and keep a running credits list for CC-BY assets. Chasing down where a model came from a year later is miserable.</p>
<p><strong>Rig the characters you download.</strong> This is the step that stops most people. Almost every free character model on this list ships as a static mesh with no skeleton, so it can't walk, idle, or attack until someone rigs it, and manual bone placement plus weight painting in Blender is a genuine afternoon. Cinevva's <a href="/tools/rigger">Auto Rigger</a> does it in the browser, and your first rigged character is free to download: upload the GLB, FBX, or OBJ you just downloaded and get back a rigged GLB. For humanoids you get a Mixamo-compatible skeleton and can bake in motion by category, locomotion through combat and reactions, so a walk cycle comes back inside the file. Four-legged characters like the KayKit and Quaternius animal packs are supported too, on the Pro engine, and they come back as a rig without baked clips, so plan to animate those yourself. Our <a href="/guides/free-character-animations-rigging">free character animations and rigging guide</a> covers the desktop alternatives.</p>
<p><strong>Or skip the tab-hopping.</strong> Cinevva's <a href="/assets">asset search</a> queries Kenney, Quaternius, Poly Haven, Sketchfab, and more from one search box, with license info on every tile and per-source filters like <a href="/assets?providers=kenney">Kenney only</a> or <a href="/assets?providers=polyhaven">Poly Haven only</a>.</p>
<h2>Licenses in 30 seconds</h2>
<ul>
<li><strong>CC0:</strong> public domain. Use commercially, modify, no attribution. The safest option.</li>
<li><strong>CC-BY:</strong> free commercial use, but you must credit the creator.</li>
<li><strong>Royalty-Free:</strong> pay once (or free), use without per-use fees, but you can't resell the raw files.</li>
<li><strong>CC-BY-NC / Editorial:</strong> no commercial use. Avoid for games you'll sell.</li>
</ul>
<p>When in doubt, prefer CC0. For a full breakdown, see our <a href="/guides/game-asset-licenses">game asset licenses guide</a>.</p>
<h2>Common Questions</h2>
<h3>Where can I find free 3D models for games?</h3>
<p>Kenney, Quaternius, KayKit, and Poly Haven are the best starting points, all CC0 so you can use them commercially with no attribution. For more variety, Sketchfab has millions of models under mixed licenses, Poly Pizza hosts the archived Google Poly catalog, and CGTrader's free section has over 150,000 models. Always check the license on the individual model before shipping.</p>
<h3>What does CC0 mean for 3D models?</h3>
<p>CC0 means the model is in the public domain: you can use it in commercial games, modify it, and you don't have to credit the creator. It's the most permissive and lowest-risk license. Kenney, Quaternius, KayKit, Poly Haven, and AmbientCG are the main CC0 sources for game assets.</p>
<h3>Are free 3D models okay for commercial games?</h3>
<p>Most are, but it depends on the license. CC0 assets are always safe. CC-BY requires crediting the creator. Royalty-free marketplace models allow commercial games but forbid redistributing the raw files. CC-BY-NC and Editorial-only models cannot be used in games you sell, so check each model's license and prefer CC0 when you can.</p>
<h3>What happened to Google Poly?</h3>
<p>Google shut Poly down on June 30, 2021. The catalog was archived by the community before it went dark, and it lives on in two places: Poly Pizza hosts the &quot;Poly by Google&quot; collection alongside thousands of newer uploads, and the non-profit Icosa Gallery continues the open platform mission. Most of the archived models are CC-BY, so credit the original creator.</p>
<h3>Is Sketchfab shutting down?</h3>
<p>Not shut down, and it has a new owner. Epic closed the Sketchfab store in 2024 and moved selling to Fab, where only CC-BY and Fab Standard content could migrate, then sold Sketchfab and ArtStation to KitBash on August 10, 2026. KitBash says nothing changes immediately, and as of September 2026 the site, the free downloads, and the download API all still work, with CC0 models still downloadable. The safe move is still to download anything you know you'll want rather than assuming it stays up forever.</p>
<h3>What are the best free 3D model websites in 2026?</h3>
<p>For game-ready models, Kenney, Quaternius, and KayKit lead because everything is CC0 and built for engines, and Poly Haven is the best photorealistic CC0 source for models, textures, and HDRIs. Sketchfab has the widest variety under mixed licenses, Poly Pizza carries the Google Poly archive under CC-BY, and CGTrader has the largest marketplace free section at over 150,000 models. Pick by art direction first, then license, and you'll rarely need more than two or three of these.</p>
<h3>For a commercial indie game, where can I find royalty-free 3D clothing assets with clear licensing?</h3>
<p>Start with Quaternius's <a href="https://quaternius.com/packs/modularcharacteroutfitsfantasy.html">Modular Character Outfits</a> pack: 12 fantasy outfits in 62 swappable parts with three texture variations each, CC0, in FBX and glTF, built to fit the <a href="https://quaternius.com/packs/universalbasecharacters.html">Universal Base Characters</a> but usable on your own heads too. Kenney's and KayKit's CC0 character packs ship outfits baked onto the characters rather than as separate garments, which is fine when you're using their characters anyway. Beyond CC0, Sketchfab's search lets you combine &quot;downloadable&quot; with a CC0 or CC-BY filter on terms like &quot;jacket&quot; or &quot;armor&quot;, and Fab, CGTrader, and TurboSquid sell royalty-free clothing you can ship in a game but not redistribute as files. For cloth materials rather than garments, our <a href="/game-assets/free-fabric-textures">free fabric textures</a> page collects CC0 PBR sets, and for a one-off garment prop nobody packs, Cinevva's <a href="/tools/hunyuan3d">3D Model Generator</a> can generate it from a description. Whatever you pick, save the license page for each non-CC0 item before you build on it.</p>
<h3>Which free 3D model sites don't require a sign-up?</h3>
<p>Kenney, Quaternius, KayKit (pay-what-you-want at $0 on <a href="http://itch.io">itch.io</a>, no account needed), Poly Haven, Poly Pizza, OpenGameArt, Smithsonian Open Access, and NASA 3D Resources all let you download without an account. Sketchfab, Fab, CGTrader, TurboSquid, and BlenderKit require a free account before the download button works. If you want one search box across the no-signup CC0 sources, Cinevva's <a href="/assets">asset search</a> covers Kenney, Quaternius, and Poly Haven together.</p>
<h3>What's the best free alternative to TurboSquid?</h3>
<p>For game-ready assets, Kenney, Quaternius, and KayKit beat any marketplace free section because everything is CC0 and optimized for engines. For realistic scans, Poly Haven and Fab's free Megascans starter pack are stronger. If you specifically want marketplace variety, CGTrader's free section is larger than TurboSquid's, with over 150,000 free models under a similar royalty-free license.</p>
<h3>How many polygons should a game model have for web games?</h3>
<p>Keep props to a few hundred or a few thousand triangles, characters between 10,000 and 30,000, and avoid any single model over 100,000. A whole browser scene should stay in the low hundreds of thousands of triangles to run well on mid-range phones. A <a href="/tools/glb-viewer">glTF inspector</a> will tell you what a downloaded model actually costs, and if it's too heavy, Blender's Decimate modifier can usually cut the count in half before you notice a difference.</p>
<h3>Can I generate 3D models with AI instead?</h3>
<p>Yes. Tools like Meshy and Tripo create textured meshes from text or images, and open models like Hunyuan3D and TRELLIS.2 can be self-hosted. Commercial rights on hosted tools usually need a paid plan, so confirm terms. AI generation is increasingly faster than hunting for the right free model. See our <a href="/guides/ai-3d-model-generators">best AI 3D model generators</a> comparison for which tool to pick.</p>
<p><BuildCta
  title="Skip the downloading. Get props placed for you"
  desc="Cinevva ships with thousands of free CC0 props and puts them in a game for you."
  prompt="Build a low poly campsite scene I can explore at night with a flashlight" /></p>
<h2>Related</h2>
<ul>
<li><a href="/guides/game-assets-guide">Where to Find Free Game Assets</a>: the full 20+ source guide</li>
<li><a href="/guides/sketchfab-polyhaven-kenney">Sketchfab vs Poly Haven vs Kenney</a>: three top sources head to head</li>
<li><a href="/guides/ai-asset-generators-games">Best AI Asset Generators for Games</a>: generate instead of search</li>
<li><a href="/guides/game-asset-licenses">Game Asset Licenses Explained</a>: CC0, CC-BY, and the rest</li>
<li><a href="/guides/free-sound-effects-music">Free Sound Effects and Music for Games</a>: the audio side</li>
<li><a href="/guides/free-character-animations-rigging">Free Character Animations and Auto-Rigging</a>: rig the character you just downloaded</li>
<li><a href="/tools/rigger">Cinevva Auto Rigger</a>: in-browser rigging, GLB, FBX or OBJ in, first rig free</li>
<li><a href="/game-assets/free-3d-character-models">Free 3D character models</a>, <a href="/game-assets/free-3d-vehicle-models">vehicles</a>, <a href="/game-assets/free-3d-weapon-models">weapons</a> and <a href="/game-assets/free-low-poly-3d-models">low-poly packs</a>: browse the free library one category at a time</li>
</ul>
<style scoped>
.sample-sheet { margin: 1.25rem 0; }
.sample-sheet > a { display: block; }
.sample-sheet img { width: 100%; border-radius: 10px; border: 1px solid var(--vp-c-divider); display: block; }
.sample-sheet figcaption { font-size: 0.9rem; color: var(--vp-c-text-2); margin: 0.5rem 0 0; }
.video-embed { position: relative; width: 100%; max-width: 720px; margin: 1.5rem 0; }
.video-embed iframe { width: 100%; aspect-ratio: 16/9; border-radius: 8px; }
.video-caption { font-size: 0.9rem; color: var(--vp-c-text-2); margin: 0.5rem 0 1.5rem; max-width: 720px; }
</style>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Free Sound Effects and Music for Games (2026)]]></title>
            <link>https://app.cinevva.com/guides/free-sound-effects-music</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/free-sound-effects-music</guid>
            <pubDate>Tue, 23 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Where to find free sound effects and music for games in 2026, from CC0 sources like Kenney and Freesound to Incompetech and Pixabay, with licenses and attribution explained.]]></description>
            <content:encoded><![CDATA[<h1>Free Sound Effects and Music for Games (2026)</h1>
<p><em>Last updated: September 2026.</em></p>
<p>The best free sound effects for games come from Freesound (over 730,000 sounds, about half of them CC0), Kenney's CC0 audio packs, and the Sonniss GDC bundle (7 GB of royalty-free studio SFX a year), while Pixabay Music and Incompetech cover free music with and without a credit line. Audio is half of how a game feels, and you don't need a budget to get it. The licenses vary a lot, though, and a few popular sites are non-commercial only, which can quietly sink a game you plan to sell. Here's where to look in 2026 and exactly what you can ship.</p>
<div class="video-embed">
<iframe src="https://www.youtube.com/embed/eFSKkNdHh_k" title="Where to get Sound Effects and Music for your Game (Free and Paid)" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<div class="video-caption">An overview of free and paid sources for game sound effects and music.</div>
<h2>Quick Reference</h2>
<table>
<thead>
<tr>
<th>Need</th>
<th>Best Source</th>
<th>License</th>
<th>Attribution</th>
</tr>
</thead>
<tbody>
<tr>
<td>SFX in bulk, studio grade</td>
<td><a href="https://sonniss.com/gameaudiogdc">Sonniss GDC bundle</a></td>
<td>Royalty-free</td>
<td>No</td>
</tr>
<tr>
<td>One specific sound</td>
<td><a href="https://freesound.org">Freesound</a> (CC0 filter)</td>
<td>CC0</td>
<td>No</td>
</tr>
<tr>
<td>Cohesive game-ready SFX</td>
<td><a href="https://kenney.nl/assets/category:Audio">Kenney</a></td>
<td>CC0</td>
<td>No</td>
</tr>
<tr>
<td>Quick UI and casual SFX</td>
<td><a href="https://mixkit.co/free-sound-effects/">Mixkit</a></td>
<td>Mixkit free license</td>
<td>No</td>
</tr>
<tr>
<td>Background music, zero friction</td>
<td><a href="https://pixabay.com/music/">Pixabay Music</a></td>
<td>Pixabay Content License</td>
<td>No</td>
</tr>
<tr>
<td>Big soundtrack variety</td>
<td><a href="https://incompetech.com">Incompetech</a></td>
<td>CC-BY 4.0</td>
<td>Yes</td>
</tr>
<tr>
<td>Chiptune and RPG music</td>
<td><a href="https://opengameart.org">OpenGameArt</a></td>
<td>CC0 / CC-BY per item</td>
<td>Depends</td>
</tr>
<tr>
<td>Styled themed packs</td>
<td><a href="https://itch.io/game-assets/free/tag-audio">itch.io</a></td>
<td>Per pack, often CC0</td>
<td>Depends</td>
</tr>
<tr>
<td>Huge SFX library, credit OK</td>
<td><a href="https://www.zapsplat.com">ZapSplat</a></td>
<td>ZapSplat Standard</td>
<td>Yes</td>
</tr>
<tr>
<td>Custom generated audio</td>
<td><a href="/tools/sfx">Cinevva SFX</a> and <a href="/tools/music">Music</a> tools</td>
<td>Yours to use</td>
<td>No</td>
</tr>
</tbody>
</table>
<h2>The safest CC0 picks (no attribution, commercial-safe)</h2>
<p>If you want zero license homework, start here. <strong>Kenney audio</strong> is fully CC0 with clean game-ready UI clicks, impacts, and retro SFX. <strong>Pixabay Music</strong> is free under the Pixabay Content License with commercial use and no attribution (you can't resell the standalone file, but shipping it in your game is fine). The <strong>Sonniss GDC bundle</strong> is royalty-free for commercial use with no attribution, and a decade of past bundles is still downloadable alongside the new one. And both <strong>Freesound</strong> and <strong>OpenGameArt</strong> host CC0 content behind a license filter, so filter for it and you're safe. If you'd rather browse than filter, our <a href="/game-assets/free-footstep-sound-effects">footstep</a>, <a href="/game-assets/free-ui-sound-effects">UI</a>, <a href="/game-assets/free-explosion-sound-effects">explosion</a>, <a href="/game-assets/free-gun-sound-effects">gun</a> and <a href="/game-assets/free-ambient-game-sounds">ambient</a> pages are pre-filtered to commercial-safe sounds.</p>
<h2>Sound effects</h2>
<h3>Freesound</h3>
<p><strong>Best for:</strong> Specific one-off effects and field recordings</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://freesound.org">freesound.org</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>Per sound: CC0, CC-BY, or CC-BY-NC (plus a legacy Sampling+ set)</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>Over 730,000 sounds, about 52% of them CC0</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>WAV, MP3, FLAC, OGG (varies per upload)</td>
</tr>
<tr>
<td><strong>Attribution</strong></td>
<td>None for CC0, required for CC-BY, CC-BY-NC is not commercial-safe</td>
</tr>
</tbody>
</table>
<p><strong>Strengths:</strong></p>
<ul>
<li>The largest free SFX library on the web, still growing in 2026</li>
<li>Advanced search filters by license, so you can restrict results to CC0</li>
<li>Field recordings and oddball sounds you won't find in curated packs</li>
</ul>
<p>The catch is that licenses are per-sound, so check each file before you ship. CC0 needs no credit, CC-BY needs a credit line, and CC-BY-NC is off-limits for a game you sell. The good news is that CC0 is now the majority: as of September 2026 Freesound's <a href="https://freesound.org/search/?q=">license filter</a> shows about 381,000 CC0 sounds out of 734,000, and CC0 made up 72% of everything uploaded in 2025 per Freesound's <a href="https://blog.freesound.org/?p=2347">2025 in numbers</a> post. Freesound's CC0 catalog is also searchable directly inside <a href="/assets?providers=freesound">Cinevva's asset search</a>, pre-filtered so everything you import is commercial-safe.</p>
<h3>Kenney audio</h3>
<p><strong>Best for:</strong> Cohesive, game-ready SFX with zero license friction</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://kenney.nl/assets/category:Audio">kenney.nl</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>CC0 (Public Domain)</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>10 audio packs (UI, impacts, sci-fi, RPG, casino, jingles, voiceovers)</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>WAV, game-ready</td>
</tr>
<tr>
<td><strong>Attribution</strong></td>
<td>None</td>
</tr>
</tbody>
</table>
<p><strong>Strengths:</strong></p>
<ul>
<li>Everything is CC0, so there's nothing to track or credit</li>
<li>Sounds within a pack share a style, so your game sounds consistent</li>
<li>Covers the basics every game needs: clicks, confirms, impacts, jingles</li>
</ul>
<p>Grab the Interface Sounds and Impact Sounds packs first. Between those two you've covered most of what a small game needs, and the Music Jingles pack handles win/lose stingers.</p>
<h3>Sonniss GDC bundle</h3>
<p><strong>Best for:</strong> Studio-grade SFX in bulk</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://sonniss.com/gameaudiogdc">sonniss.com/gameaudiogdc</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>Royalty-free, commercial use, unlimited projects for life</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>2026 bundle is 7.47 GB across 347 WAV files, plus every bundle back to 2015 in the archive</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>WAV (high sample rates)</td>
</tr>
<tr>
<td><strong>Attribution</strong></td>
<td>None</td>
</tr>
</tbody>
</table>
<p><strong>Strengths:</strong></p>
<ul>
<li>Professional sound-design libraries donated by commercial vendors</li>
<li>A new bundle drops every year around GDC (the 2026 one landed in March)</li>
<li>The archive of past bundles stays downloadable indefinitely</li>
</ul>
<p>The 2026 edition at <a href="https://gdc.sonniss.com/">gdc.sonniss.com</a> is &quot;7.47GB+ of Sound Effects&quot; in 347 files, every one a sample from a full library in the Sonniss store, and you can grab it with no account through direct links, Google Drive mirrors, or a torrent. The <a href="https://sonniss.com/gameaudiogdc">archive page</a> still hosts the 2015 to 2024 bundles too. Two restrictions from Sonniss's own terms: using the sounds for AI/ML training &quot;is strictly prohibited&quot;, and you can't redistribute them &quot;as standalone files or in sound effect libraries&quot;, though you &quot;can absolutely sell them as part of your finished game&quot;. The files are big, so plan to download, pick what you need, and transcode to OGG before shipping.</p>
<h3>ZapSplat</h3>
<p><strong>Best for:</strong> A broad everyday SFX library when you can include a credit</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://www.zapsplat.com">zapsplat.com</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>ZapSplat Standard License (free tier), some sounds CC-BY</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>Tens of thousands of SFX across categories</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>MP3 free, WAV with the paid Gold tier</td>
</tr>
<tr>
<td><strong>Attribution</strong></td>
<td>Required on the free tier</td>
</tr>
</tbody>
</table>
<p><strong>Strengths:</strong></p>
<ul>
<li>Unlimited free downloads for personal and commercial projects</li>
<li>The credit requirement is simple and games are explicitly covered</li>
<li>Gold membership removes attribution and keeps sounds licensed for life</li>
</ul>
<p>The required credit for a game is a line like &quot;Sound effects obtained from <a href="http://zapsplat.com">zapsplat.com</a>&quot; on your credits screen or the game's page. Sounds downloaded while a Gold subscription is active stay attribution-free forever, even after you cancel.</p>
<h3>Mixkit</h3>
<p><strong>Best for:</strong> Quick, polished UI and casual-game sounds with no sign-up</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://mixkit.co/free-sound-effects/">mixkit.co</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>Mixkit Sound Effects Free License</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>Curated SFX and stock music categories, including a dedicated game section</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>MP3 and WAV</td>
</tr>
<tr>
<td><strong>Attribution</strong></td>
<td>None</td>
</tr>
</tbody>
</table>
<p><strong>Strengths:</strong></p>
<ul>
<li>Explicitly allows commercial use including video games, no attribution</li>
<li>No account needed, you just download</li>
<li>Curated quality, so less digging than the big libraries</li>
</ul>
<p>Mixkit's music and sound effects sit under separate free licenses, so skim both if you take from both catalogs. The selection is smaller than Freesound or ZapSplat, but everything is clean and usable as-is.</p>
<h3>OpenGameArt audio</h3>
<p><strong>Best for:</strong> Chiptune, RPG music, and retro SFX made by game people for games</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://opengameart.org">opengameart.org</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>Per item: CC0, CC-BY, OGA-BY, or GPL</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>Thousands of music tracks and SFX packs</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>OGG, WAV, MP3, tracker formats</td>
</tr>
<tr>
<td><strong>Attribution</strong></td>
<td>None for CC0, required for CC-BY and OGA-BY</td>
</tr>
</tbody>
</table>
<p><strong>Strengths:</strong></p>
<ul>
<li>Music written specifically for games, so tracks loop and fit genres</li>
<li>License filter in search, easy to restrict to CC0</li>
<li>Community collections gather the best CC0 audio in one place</li>
</ul>
<p>Two license notes: OGA-BY is OpenGameArt's own attribution license, similar to CC-BY but friendlier to games behind DRM. GPL-licensed audio is legally awkward in a closed-source game, so prefer the CC options.</p>
<h3><a href="http://itch.io">itch.io</a> audio packs</h3>
<p><strong>Best for:</strong> Themed packs with a strong art direction</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://itch.io/game-assets/free/tag-audio">itch.io/game-assets/free/tag-audio</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>Per pack, set by each creator (many CC0 or royalty-free)</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>Over 1,000 free audio-tagged packs (1,046 as of September 2026)</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>WAV, OGG, MP3 (varies per pack)</td>
</tr>
<tr>
<td><strong>Attribution</strong></td>
<td>Depends on the pack, read each page</td>
</tr>
</tbody>
</table>
<p><strong>Strengths:</strong></p>
<ul>
<li>Indie composers publish full genre-matched packs (synthwave, fantasy RPG, horror)</li>
<li>Many packs are pay-what-you-want, so free now and tippable later</li>
<li>Pack pages state terms in plain language</li>
</ul>
<p>There's no site-wide license on <a href="http://itch.io">itch.io</a>, the creator sets terms per pack, so read the description before shipping. Most popular packs say &quot;free for commercial use&quot; outright, and many are CC0.</p>
<h2>Music</h2>
<h3>Incompetech (Kevin MacLeod)</h3>
<p><strong>Best for:</strong> Complete background tracks across almost every mood</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://incompetech.com">incompetech.com</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>CC-BY 4.0, paid no-attribution license available</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>Over 2,000 full tracks</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>MP3</td>
</tr>
<tr>
<td><strong>Attribution</strong></td>
<td>Required, exact credit line provided per track</td>
</tr>
</tbody>
</table>
<p><strong>Strengths:</strong></p>
<ul>
<li>One of the largest single-composer free music catalogs anywhere</li>
<li>Searchable by genre, mood, and tempo</li>
<li>The license is one clear rule instead of per-track roulette</li>
</ul>
<p>The required credit is the full line: &quot;Music by Kevin MacLeod (<a href="http://incompetech.com">incompetech.com</a>), Licensed under Creative Commons: By Attribution 4.0&quot;. If you can't show credits, a paid no-attribution license starts at $30 for a single song, with cheaper per-song pricing when you license several at once. Still free with attribution in 2026, nothing has changed there.</p>
<h3>Pixabay Music</h3>
<p><strong>Best for:</strong> Zero-friction commercial-safe background music</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://pixabay.com/music/">pixabay.com/music</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>Pixabay Content License (pre-2019 uploads are CC0)</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>Large searchable catalog of tracks and loops</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>MP3</td>
</tr>
<tr>
<td><strong>Attribution</strong></td>
<td>None</td>
</tr>
</tbody>
</table>
<p><strong>Strengths:</strong></p>
<ul>
<li>Commercial use with no attribution and no account hoops</li>
<li>Good coverage of loops and genre background beds</li>
<li>Sound effects live on the same site under the same license</li>
</ul>
<p>The Content License forbids reselling the file on a standalone basis and using content that shows trademarks or logos to promote goods, but embedding a track in your game is exactly the intended use. It stays the easiest &quot;just give me music&quot; pick.</p>
<h3>Purple Planet</h3>
<p><strong>Best for:</strong> Mood-organized soundtrack music with a simple credit</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://www.purple-planet.com">purple-planet.com</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>Free with attribution, paid license removes the credit</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>Original tracks by Chris Martyn and Geoff Harvey, organized by mood</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>MP3 free, higher-quality files with paid licenses</td>
</tr>
<tr>
<td><strong>Attribution</strong></td>
<td>Required on the free tier: &quot;Music: <a href="https://www.purple-planet.com">https://www.purple-planet.com</a>&quot;</td>
</tr>
</tbody>
</table>
<p><strong>Strengths:</strong></p>
<ul>
<li>Their terms explicitly allow games you sell and distribute yourself</li>
<li>Tracks are grouped by emotion, which makes soundtrack hunting fast</li>
<li>The credit can live on your credits screen or the game's store page</li>
</ul>
<p>Broader commercial uses like ads and broadcast need one of their paid licenses, which also drop the attribution requirement. For a typical indie game, the free tier plus a credit line covers you.</p>
<h3>Uppbeat</h3>
<p><strong>Best for:</strong> Content-creator music, weaker for shipped games</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://uppbeat.io">uppbeat.io</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>Uppbeat free plan, per-download credit code</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>Curated modern catalog (25% of it on the free plan)</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>MP3</td>
</tr>
<tr>
<td><strong>Attribution</strong></td>
<td>Required on the free plan</td>
</tr>
</tbody>
</table>
<p>The free plan now gives 3 downloads a month and the license language targets social platforms, livestreams, podcasts, and websites rather than downloadable games, so read the terms carefully before building a soundtrack on it. It's great for your game's trailer and devlogs. For music inside a commercial game, the sources above are safer.</p>
<h3>Free Music Archive</h3>
<p><strong>Best for:</strong> Deep genre digging when you're willing to check each license</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://freemusicarchive.org">freemusicarchive.org</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>Per track: CC0, CC-BY, CC-BY-SA, and many NC variants</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>Huge cross-genre catalog of real artists</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>MP3</td>
</tr>
<tr>
<td><strong>Attribution</strong></td>
<td>Depends on the track's CC license</td>
</tr>
</tbody>
</table>
<p>FMA is alive and well in 2026 under Tribe of Noise. The catch hasn't changed: many tracks are non-commercial or share-alike, so filter by license and read the track page before shipping. Their paid arm, Tribe of Noise PRO, licenses tracks for commercial projects including games at around 45 euro per song.</p>
<h3>Jamendo</h3>
<p><strong>Best for:</strong> Discovering music, not for free commercial use</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://www.jamendo.com">jamendo.com</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>CC for personal listening, paid sync license for commercial projects</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>Large independent-artist catalog</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>MP3</td>
</tr>
<tr>
<td><strong>Attribution</strong></td>
<td>n/a for commercial use (paid license required)</td>
</tr>
</tbody>
</table>
<p>Jamendo trips people up. The free downloads are for personal use, and most tracks carry non-commercial CC terms. Putting a track in a game you sell requires a per-track license from Jamendo Licensing, their paid sync program. Treat it as a paid source with a free preview, not a free source.</p>
<h2>Watch the license traps</h2>
<p>A few popular sources are not safe for commercial games:</p>
<ul>
<li><strong>BBC Sound Effects archive</strong> is free but its RemArc license is non-commercial only. Use it for prototypes and student projects, not games you sell.</li>
<li><strong>Jamendo free downloads</strong> are personal-use only, as covered above. Commercial use means buying a sync license.</li>
<li><strong>Uppbeat's free plan</strong> is written for social content, not downloadable games, so don't assume it covers your build.</li>
<li><strong>Internet Archive</strong> audio varies wildly per item, with some uploaded without rightsholder consent. Check the rights field on each item, it's the highest-risk source here.</li>
</ul>
<h2>Audio formats for web games</h2>
<p>If your game runs in a browser, format choice affects both file size and whether loops actually loop.</p>
<table>
<thead>
<tr>
<th>Format</th>
<th>Size at good quality</th>
<th>Browser support</th>
<th>Use it for</th>
</tr>
</thead>
<tbody>
<tr>
<td>OGG Vorbis</td>
<td>Small</td>
<td>Everywhere, Safari since 18.4 (2025)</td>
<td>Music and SFX, your default</td>
</tr>
<tr>
<td>MP3</td>
<td>Slightly larger</td>
<td>Universal, including old Safari</td>
<td>Fallback, one-shot sounds</td>
</tr>
<tr>
<td>Opus (WebM/OGG)</td>
<td>Smallest</td>
<td>Modern browsers, Safari support is recent</td>
<td>Long music at low bitrates</td>
</tr>
<tr>
<td>WAV</td>
<td>Huge</td>
<td>Universal</td>
<td>Tiny UI blips only, if at all</td>
</tr>
</tbody>
</table>
<p>Safari finally added native OGG Vorbis support in version 18.4, so as of 2026 you can ship OGG alone for most audiences. If your analytics show older iOS traffic, provide an MP3 fallback with the <code>&lt;audio&gt;</code> element's multiple-source pattern or a library like Howler.js.</p>
<h3>Looping music without gaps</h3>
<p>MP3 is the wrong format for loops. The encoder pads the start and end of every file with a few milliseconds of silence, so an MP3 loop clicks or stutters at the seam. Use OGG for anything that repeats. For sample-accurate loops, decode the file with the Web Audio API (<code>decodeAudioData</code> into an <code>AudioBufferSourceNode</code> with <code>loop = true</code>), which repeats with no gap at all. Trim silence off both ends of the file and cut the loop on a musical bar boundary so the seam is inaudible.</p>
<h3>Normalizing volume</h3>
<p>Free sounds come from different sources at wildly different loudness. Before shipping, pull everything into an editor like Audacity and normalize: music beds around -14 to -16 LUFS, sound effects peaking a decibel or two below full scale so several playing at once don't clip. In code, route everything through one master gain node so a single volume slider controls the whole mix.</p>
<h3>Keeping total audio weight down</h3>
<p>Audio quietly becomes the heaviest part of a browser game. Encode music at 96 to 128 kbps OGG (players won't hear the difference over gameplay), export SFX in mono, and prefer one 60-second loop over a 4-minute track. Stream long music through an <code>&lt;audio&gt;</code> element instead of decoding it into memory, and reserve Web Audio buffers for short SFX that need low latency. A complete small game's audio can sit comfortably under 5 MB.</p>
<h2>Generate audio with AI</h2>
<p>The other way to get free game audio in 2026 is to generate it. Open models cover both halves now: <a href="https://stability.ai/news-updates/meet-stable-audio-3-the-model-family-built-for-artistic-experimentation-with-open-weight-models">Stable Audio 3.0</a> (May 2026) ships a dedicated Small-SFX model plus Small-Music and Medium as open weights under the Stability Community License, free to use commercially below $1M in annual revenue, and <a href="https://github.com/ace-step/ACE-Step-1.5">ACE-Step 1.5</a> (February 2026) generates full songs under an MIT license. ElevenLabs is the strongest hosted option, with commercial rights on paid plans. Our <a href="/guides/frontier-gen-ai-models">open generative AI models guide</a> compares them.</p>
<p>One licensing note: under current US Copyright Office guidance, purely AI-generated audio isn't copyrightable on its own, so nobody can claim ownership over your generated SFX, but you also can't stop others from using identical output. What matters practically is the provider's terms, so confirm you have commercial usage rights before shipping.</p>
<p>Cinevva has both built in, free to try. <a href="/tools/sfx">Generate sound effects from a text description</a> (a laser zap, a door creak, a coin pickup) or <a href="/tools/music">generate original songs</a> with vocals and instrumentals for your soundtrack. And if you'd rather use recorded sounds, Freesound's CC0 catalog is wired into <a href="/assets?providers=freesound">Cinevva's asset search</a>, so you can search and drop commercial-safe audio straight into a game.</p>
<h2>License quick reference</h2>
<table>
<thead>
<tr>
<th>Source</th>
<th>License</th>
<th>Attribution</th>
<th>Commercial-safe</th>
</tr>
</thead>
<tbody>
<tr>
<td>Kenney audio</td>
<td>CC0</td>
<td>No</td>
<td>✅</td>
</tr>
<tr>
<td>Pixabay Music</td>
<td>Pixabay Content License</td>
<td>No</td>
<td>✅</td>
</tr>
<tr>
<td>Sonniss GDC</td>
<td>Royalty-free</td>
<td>No</td>
<td>✅</td>
</tr>
<tr>
<td>Mixkit</td>
<td>Mixkit free license</td>
<td>No</td>
<td>✅</td>
</tr>
<tr>
<td>Freesound</td>
<td>Per-sound (CC0/CC-BY/NC)</td>
<td>Depends</td>
<td>✅ (check each)</td>
</tr>
<tr>
<td>OpenGameArt</td>
<td>Per-item (CC0/CC-BY/OGA-BY)</td>
<td>Depends</td>
<td>✅ (check each)</td>
</tr>
<tr>
<td><a href="http://itch.io">itch.io</a> packs</td>
<td>Per-pack</td>
<td>Depends</td>
<td>✅ (check each)</td>
</tr>
<tr>
<td>Incompetech</td>
<td>CC-BY 4.0</td>
<td>Yes</td>
<td>✅</td>
</tr>
<tr>
<td>ZapSplat (free)</td>
<td>Standard</td>
<td>Yes</td>
<td>✅</td>
</tr>
<tr>
<td>Purple Planet (free)</td>
<td>Attribution license</td>
<td>Yes</td>
<td>✅</td>
</tr>
<tr>
<td>Uppbeat (free)</td>
<td>Free tier</td>
<td>Yes</td>
<td>Limited</td>
</tr>
<tr>
<td>Free Music Archive</td>
<td>Per-track CC</td>
<td>Depends</td>
<td>⚠️ many NC tracks</td>
</tr>
<tr>
<td>Jamendo</td>
<td>CC personal / paid sync</td>
<td>n/a</td>
<td>❌ without paid license</td>
</tr>
<tr>
<td>BBC Sound Effects</td>
<td>RemArc</td>
<td>n/a</td>
<td>❌ non-commercial</td>
</tr>
<tr>
<td>Internet Archive</td>
<td>Varies</td>
<td>Varies</td>
<td>⚠️ verify each</td>
</tr>
</tbody>
</table>
<h2>Common Questions</h2>
<h3>Where can I get free sound effects for games?</h3>
<p>Freesound has the largest library with over 730,000 sounds (licenses vary per sound, filter for CC0), Kenney offers fully CC0 audio packs with no attribution, and the Sonniss GDC bundle gives you professional royalty-free SFX in bulk. For commercial games, prefer CC0 or clearly royalty-free sources and check each file's license.</p>
<h3>Where can I find CC0 game sound effects?</h3>
<p>Three places cover most needs. Kenney's ten audio packs (Interface Sounds, Impact Sounds, RPG Audio, Sci-fi Sounds, Music Jingles and more) are entirely CC0. Freesound has about 381,000 CC0 sounds as of September 2026, reachable by ticking &quot;Creative Commons 0&quot; in the license filter. OpenGameArt's advanced search has a CC0 checkbox for its music and SFX. All three need no attribution, and our <a href="/game-assets/free-footstep-sound-effects">footstep</a>, <a href="/game-assets/free-door-sound-effects">door</a>, <a href="/game-assets/free-water-sound-effects">water</a> and <a href="/game-assets/free-engine-sound-effects">engine</a> sound pages collect CC0 picks from them by category.</p>
<h3>Are free game sound effects safe for commercial use?</h3>
<p>Only if the license says so, and the safe ones are easy to spot. CC0 (Kenney, the CC0 half of Freesound, CC0 items on OpenGameArt) and royalty-free bundles like Sonniss GDC can ship in a paid game with no credit. CC-BY sources (Incompetech, CC-BY sounds on Freesound) are fine with a credit line. Anything CC-BY-NC, the BBC Sound Effects archive, and Jamendo's free downloads are not commercial-safe, and &quot;free to download&quot; on a site never means &quot;free to sell&quot;, so read the license before you ship, not after.</p>
<h3>How do I filter Freesound to CC0 sounds only?</h3>
<p>Run your search on <a href="https://freesound.org">freesound.org</a>, then look at the License section of the filter sidebar on the results page. It lists five options with live counts: &quot;Approved for Free Cultural Works&quot; (CC0 plus CC BY together), &quot;Creative Commons 0&quot;, &quot;Attribution&quot;, &quot;Attribution NonCommercial&quot;, and the legacy &quot;Sampling+&quot;. Tick &quot;Creative Commons 0&quot; and every result needs no credit at all, or tick &quot;Approved for Free Cultural Works&quot; if you're happy to add a credits line for CC BY sounds. Freesound's <a href="https://freesound.org/help/faq/">FAQ</a> describes the Free Cultural Works filter as exactly that: sounds under CC-BY or CC0. The filter applies per query, so re-tick it when you start a new search.</p>
<h3>What is the GDC Game Audio Bundle and is it still free?</h3>
<p>It's Sonniss's yearly giveaway timed to the Game Developers Conference: a collection of professional sound effects donated by commercial libraries, free to download with no account. The <a href="https://gdc.sonniss.com/">2026 bundle</a> is 7.47 GB of WAV files (347 files) and every bundle since 2015 is still available on the <a href="https://sonniss.com/gameaudiogdc">archive page</a>. Per Sonniss, everything is &quot;royalty-free and commercially usable&quot; with no attribution on unlimited projects for life, you just can't repackage the sounds as standalone files or use them for AI training. It's also searchable inside <a href="/assets">Cinevva's asset library</a> next to Freesound.</p>
<h3>Where can I find free music assets for games?</h3>
<p>Pixabay Music is the easiest commercial-safe pick with no attribution. Incompetech has over 2,000 Kevin MacLeod tracks under CC-BY 4.0 with a fixed credit line, Purple Planet is free with a credit and explicitly allows games you sell, and OpenGameArt hosts loops written for games under CC0 and CC-BY. Kenney's Music Jingles pack covers stingers. If you'd rather generate a track that fits, Cinevva's <a href="/tools/music">music tool</a> writes an original song from a prompt, or you can <a href="/create#prompt=Build%20a%20rhythm%20clicker%20game%20with%20upbeat%20music%20and%20satisfying%20sound%20effects">describe a game and have it scored for you</a>.</p>
<h3>What's the best free music for games?</h3>
<p>For zero-attribution music, Pixabay Music is the easiest commercial-safe pick. Incompetech offers over 2,000 tracks under CC-BY if you include the credit line, and OpenGameArt has game-specific loops under CC0. Free Music Archive has huge variety but mixed licenses, so check each track. Avoid Jamendo's free downloads for commercial games, since those are personal-use only.</p>
<h3>Can I use Freesound audio in a commercial game?</h3>
<p>Yes, if the individual sound's license allows it. CC0 sounds are fully commercial-safe with no credit, CC-BY sounds are fine with attribution, and CC-BY-NC sounds are not usable in a game you sell. Freesound's search sidebar filters by license, so tick &quot;Approved for Free Cultural Works&quot; to see only CC0 and CC-BY results and you're clear.</p>
<h3>Do I have to credit Kenney?</h3>
<p>No. All Kenney assets, including every audio pack, are CC0 public domain, so no attribution is required even in commercial games. Kenney explicitly encourages commercial use. A credit or a donation is a nice gesture, not a legal requirement.</p>
<h3>Is Incompetech music still free?</h3>
<p>Yes. In 2026 Kevin MacLeod's catalog of over 2,000 tracks is still free under CC-BY 4.0 as long as you include the full credit line with his name, the site, and the license. If you can't display credits, a no-attribution license starts at $30 for one song.</p>
<h3>Do I have to credit free game audio?</h3>
<p>It depends on the license. CC0, Pixabay-licensed, and Mixkit audio need no credit. CC-BY (like Incompetech), free-tier ZapSplat, and Purple Planet require attribution, usually one line on your credits screen. CC-BY-NC and the BBC RemArc license forbid commercial use entirely. Prefer CC0 to skip attribution management altogether.</p>
<h3>What audio format should web games use?</h3>
<p>OGG Vorbis. It's small at good quality, it loops without gaps, and every major browser supports it now that Safari added it in version 18.4. Keep an MP3 fallback if you need to support older iOS devices, and avoid MP3 for looping music because encoder padding breaks the loop seam.</p>
<h3>Can I use AI to generate game sound and music?</h3>
<p>Yes. Open models like Stable Audio 3.0 (open-weight SFX and music models under the Stability Community License) and ACE-Step 1.5 (MIT) generate audio with commercial-friendly licenses, and ElevenLabs is a strong hosted option with commercial rights on paid plans. Cinevva's free <a href="/tools/sfx">SFX</a> and <a href="/tools/music">music</a> tools generate game audio from a text prompt. Confirm the provider's output-rights terms before shipping anything commercially.</p>
<p><BuildCta
  title="Get music and sound baked into a game automatically"
  desc="The AI scores your game while it builds it."
  prompt="Make a rhythm clicker game with upbeat music and satisfying sound effects" /></p>
<h2>Related</h2>
<ul>
<li><a href="/guides/game-assets-guide">Where to Find Free Game Assets</a>: the full asset guide</li>
<li><a href="/guides/free-3d-model-sites">Best Free 3D Model Sites for Games</a>: the visual side</li>
<li><a href="/guides/game-asset-licenses">Game Asset Licenses Explained</a>: CC0, CC-BY, royalty-free</li>
<li><a href="/guides/frontier-gen-ai-models">Best Open-Source Generative AI Models for Games</a>: AI audio generation</li>
<li><a href="/guides/itch-io-launch-guide">How to Launch a Game on itch.io</a>: shipping with those audio packs</li>
<li><a href="/tutorials/tone-js-game-audio">Tone.js game audio</a>: playing audio in the browser</li>
<li><a href="/game-assets/free-footstep-sound-effects">Free footstep</a>, <a href="/game-assets/free-ui-sound-effects">UI</a>, <a href="/game-assets/free-explosion-sound-effects">explosion</a> and <a href="/game-assets/free-ambient-game-sounds">ambient sounds</a>: the free library, one category at a time</li>
</ul>
<style scoped>
.video-embed { position: relative; width: 100%; max-width: 720px; margin: 1.5rem 0; }
.video-embed iframe { width: 100%; aspect-ratio: 16/9; border-radius: 8px; }
.video-caption { font-size: 0.9rem; color: var(--vp-c-text-2); margin: 0.5rem 0 1.5rem; max-width: 720px; }
</style>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How to Get More Plays on itch.io (2026)]]></title>
            <link>https://app.cinevva.com/guides/get-more-plays-itch-io</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/get-more-plays-itch-io</guid>
            <pubDate>Tue, 23 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[A practical 2026 guide to getting more plays and downloads on itch.io, covering how discovery works, tags, a playable web build, devlogs, game jams, and off-platform traffic.]]></description>
            <content:encoded><![CDATA[<h1>How to Get More Plays on <a href="http://itch.io">itch.io</a> (2026)</h1>
<p><em>Last updated: September 2026.</em></p>
<p>Uploading to <a href="http://itch.io">itch.io</a> is easy. Getting played is the hard part. <a href="http://itch.io">itch.io</a> won't hand you an audience the way a big portal might, so plays come from a strong page, a playable web build, devlogs, jams, and traffic you bring yourself. Here's what actually moves the needle in 2026, grounded in how <a href="http://itch.io">itch.io</a>'s discovery really works.</p>
<div class="video-embed">
<iframe src="https://www.youtube.com/embed/dSLhu2ufSvc" title="How to Get more Views & Downloads on Itch.io — Brani_Dev" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<div class="video-caption">Practical tactics for more views and downloads on itch.io.</div>
<h2>How <a href="http://itch.io">itch.io</a> discovery actually works</h2>
<p>A few facts to ground your effort:</p>
<ul>
<li>The <strong>Popular</strong> sort is an opaque algorithm combining historical and recent activity, with recent weighted more heavily. Confirmed inputs are organic views, downloads, and plays. Faking any of it gets you delisted.</li>
<li><strong>Most Recent</strong> places you once, at first publish; you can't re-trigger it by republishing (itch won't change your publish date).</li>
<li>The <strong>front page is human-curated</strong>, hand-picked by staff, not algorithmic. You can't game your way onto it, but a great page and real traction help your odds.</li>
<li>To be indexed at all, your page must be public, have a cover image, and be playable or downloadable. Empty placeholder pages aren't indexed, and new seller accounts pass a short review queue.</li>
</ul>
<p>The practical takeaway: itch rewards real, front-loaded activity and a complete page. It does not reward tricks.</p>
<h2>Make it playable in the browser</h2>
<p>This is the single most effective on-page move. Upload an HTML5 build (a ZIP with <code>index.html</code>) so people can play instantly instead of downloading. Browser-playable games get far more engagement than download-only ones, because there's no friction. itch's founder has noted the much higher conversion rate from page view to play for browser builds, and developers who compare the two in postmortems report the same thing. If your engine can export to web, do it. If it can't, or you don't have a game yet, you can <a href="/create#prompt=Make%20a%20short%20one-button%20browser%20game%20I%20can%20upload%20to%20itch.io">build a web-native one from a prompt</a> and upload the export.</p>
<h2>Nail the page</h2>
<ul>
<li><strong>Cover image:</strong> required, recommended 630x500. It's the most important graphic on your page, and animated GIF covers are supported and encouraged. Lead with motion that shows the game's hook.</li>
<li><strong>Screenshots and a trailer/GIF:</strong> itch displays video embeds (YouTube, Vimeo) above screenshots, recommended especially for games. Show, don't tell.</li>
<li><strong>Short description:</strong> it appears in listings everywhere, so make it a clear, specific hook.</li>
</ul>
<h2>Tags and metadata</h2>
<p>Use the suggested tags rather than inventing your own, avoid synonyms, and don't tag-stuff, which gets you removed from browse. The project editor caps how many tags you can add on top of the genre, so spend them on the specific terms players actually browse (roguelike, pixel-art, one-button) rather than broad ones. Only check a platform (Windows/Mac/Linux) if you actually have a tested build for it. Misclassifying gets you delisted.</p>
<h2>Use devlogs</h2>
<p>Publishing a devlog pushes to all your followers' feeds and the sitewide devlog feed, reaching beyond your followers. Followers also get notified when you release a new project or put one on sale. So posting devlogs grows followers, and those followers get pinged at your next launch. Treat devlogs as a recurring traffic and audience-building tool, not an afterthought.</p>
<div class="video-embed">
<iframe src="https://www.youtube.com/embed/l9TZl_0Gqe4" title="Why Your itch.io Game Gets 0 Downloads (And How to Fix It) — KiriSoft Games" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<div class="video-caption">Common reasons itch.io games get no downloads, and the fixes.</div>
<h2>Enter game jams (the real discovery engine)</h2>
<p>Jams are the single biggest organic-discovery driver on <a href="http://itch.io">itch.io</a>, with hundreds of thousands of games made for them. A jam gives you a built-in audience, a deadline, and a reciprocity mechanic: if you rate and comment on other entries (and have submitted your own), a link to your game is auto-appended under your comments, pulling plays back to you. Big jams like GMTK draw tens of thousands of participants. Jams won't magically boost the Popular algorithm, but they put real eyes on your game when nothing else will. If you host one, the jam theme editor <a href="http://itch.io">itch.io</a> shipped in <a href="https://itch.io/updates">July 2026</a> (Google Fonts, colour controls, background images, themes you can copy as JSON) means a hosted jam page can look as good as a game page, which matters when you're asking strangers to enter.</p>
<h2>Pricing for plays</h2>
<p>itch's pricing is always pay-what-you-want: a set price is a minimum, and buyers can pay more (about <a href="https://itch.io/docs/creators/pricing">30% of money spent is extra above the minimum</a>, per <a href="http://itch.io">itch.io</a>'s own docs). For maximum plays, free or pay-what-you-want removes all friction while still letting fans tip. Note that HTML5 games can only take payments as donations, because the browser embed doesn't gate play behind a purchase. Avoid perpetual sales, which itch treats as not genuinely on sale and can deindex.</p>
<h2>Bring your own traffic (where most plays come from)</h2>
<p>itch cycles featured games quickly and doesn't sustain discovery like Steam, so external traffic is where the real plays are:</p>
<ul>
<li><strong>Streamers and YouTubers</strong> are the channel with the biggest payoff. A single creator can drive more installs than months of other effort, and they actively hunt itch for free demos.</li>
<li><strong>Short-form video</strong> (TikTok, Reels, Shorts) of actual gameplay clips is a primary indie virality driver now.</li>
<li><strong>Reddit</strong> (r/IndieGaming, r/playmygame, and similar), respecting the roughly 9-to-1 rule of community posts to self-promo.</li>
<li><strong>Discord</strong> for playtesters and retention, and X #screenshotsaturday with GIFs.</li>
</ul>
<p>Two on-platform levers arrived in 2026 too, per the <a href="https://itch.io/updates">itch.io updates feed</a>. The Sale Explorer that launched with the Summer Sale lets players filter site-wide sales by price, tags, and staff picks, so joining a seasonal sale now gets you browsed rather than buried, and the rebuilt Patreon integration grants access by membership tier, which makes <a href="http://itch.io">itch.io</a> a clean home for early builds if you already have supporters. Neither replaces outside traffic, but both are free.</p>
<p>For the broader no-budget playbook, see <a href="/guides/promote-indie-game-no-budget">how to promote an indie game with no budget</a>.</p>
<h2>Common mistakes</h2>
<p>Download-only when a web build is possible, a weak or missing cover, no trailer or GIF, thin descriptions, bad or stuffed tags, publishing then going silent (no devlogs), expecting the algorithm or featuring to do the work, no demo, and faking metrics (which gets you delisted). Fix these first; they're free.</p>
<h2>Common Questions</h2>
<h3>How do I get more plays on <a href="http://itch.io">itch.io</a>?</h3>
<p>Upload a browser-playable HTML5 build (it gets far more engagement than downloads), build a strong page with an animated cover and trailer, use accurate suggested tags, post devlogs to reach followers, enter game jams for built-in discovery, and drive external traffic from streamers, short-form video, and communities. itch rewards real activity and a complete page, not tricks.</p>
<h3>Does <a href="http://itch.io">itch.io</a> promote your game for you?</h3>
<p>Not much. The front page is hand-curated by staff, and the Popular sort cycles quickly based on real recent activity. itch gives you the tools and a baseline audience, but sustained discovery comes from what you do: a playable build, devlogs, jams, and traffic you bring from streamers, video, and communities.</p>
<h3>Do web games get more plays than downloads on <a href="http://itch.io">itch.io</a>?</h3>
<p>Yes, significantly. Browser-playable games remove the friction of downloading, and data shows roughly 3x the engagement of download-only games, with a large share of page views converting to plays. If your engine exports to HTML5, publishing a playable web build is the single best move for more plays.</p>
<h3>Are game jams worth it for getting plays?</h3>
<p>Very. Jams are the biggest organic discovery driver on <a href="http://itch.io">itch.io</a>: they give you a built-in audience and a deadline, and rating other entries auto-links your game back, pulling in plays. They won't boost the algorithm directly, but they put real players on your game when you otherwise have no audience.</p>
<h3>Why does my <a href="http://itch.io">itch.io</a> game have 0 views?</h3>
<p>Almost always because nobody has been sent there yet. <a href="http://itch.io">itch.io</a>'s Most Recent placement happens once and passes in hours, the front page is hand-picked, and the Popular sort needs real activity to notice you, so a new page with no outside links sits at zero. Check the basics first: the page is public and indexed (cover image, playable or downloadable file, accurate tags), then post the link somewhere people already are, a jam, a subreddit that allows it, a Discord you're active in, or a short clip. The first hundred views come from you, not from itch.</p>
<h3>How do I get my game featured on <a href="http://itch.io">itch.io</a>?</h3>
<p>You can't apply, and there's no algorithm to game: the front page and staff picks are curated by hand. What raises your odds is the same list that raises plays. A complete, polished page with an animated cover, a browser-playable build, honest tags, regular devlogs, and real traction from jams and outside traffic. Staff notice games that are already moving. Treat featuring as a bonus that sometimes follows a good launch, never as the plan.</p>
<h3>Does <a href="http://itch.io">itch.io</a> have an algorithm?</h3>
<p>Only for the Popular sort, which weighs recent organic views, downloads, and plays more heavily than older activity. There's no recommendation feed pushing games to strangers the way Steam or TikTok do, and republishing doesn't reset your Most Recent slot. That's why external traffic, devlogs to followers, and jams do most of the work on <a href="http://itch.io">itch.io</a>, and why faking metrics gets you delisted rather than promoted.</p>
<p><BuildCta
  title="Need a game to promote first?"
  desc="Build something short and addictive, then use this playbook on it."
  prompt="Make a short addictive one-button game with a global high score feel" /></p>
<h2>Related</h2>
<ul>
<li><a href="/guides/itch-io-launch-guide">How to Launch Your Game on itch.io</a>: the setup basics</li>
<li><a href="/guides/publish-web-game">Best Places to Publish a Web Game in 2026</a>: <a href="http://itch.io">itch.io</a> vs the portals</li>
<li><a href="/guides/promote-indie-game-no-budget">How to Promote an Indie Game With No Budget</a>: the wider playbook</li>
<li><a href="/guides/game-jams-hackathons">Game Jams and Hackathons</a>: choosing jams to enter</li>
<li><a href="/guides/web-game-monetization">Web Game Monetization: What the Data Actually Says</a>: turning those plays into revenue</li>
<li><a href="/guides/steam-next-fest-strategy">Steam Next Fest Strategy</a>: if you take it to Steam too</li>
<li><a href="/tutorials/ship-web-game-fast">Ship a web game that loads fast</a>: keeping the browser build small enough that people wait for it</li>
</ul>
<style scoped>
.video-embed { position: relative; width: 100%; max-width: 720px; margin: 1.5rem 0; }
.video-embed iframe { width: 100%; aspect-ratio: 16/9; border-radius: 8px; }
.video-caption { font-size: 0.9rem; color: var(--vp-c-text-2); margin: 0.5rem 0 1.5rem; max-width: 720px; }
</style>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How to Make a Game with AI in 2026 (No Coding Required)]]></title>
            <link>https://app.cinevva.com/guides/make-a-game-with-ai</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/make-a-game-with-ai</guid>
            <pubDate>Tue, 23 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[A step-by-step 2026 guide to making a game with AI and no coding, from writing your first prompt to generating assets, iterating, and publishing a playable game.]]></description>
            <content:encoded><![CDATA[<h1>How to Make a Game with AI in 2026 (No Coding Required)</h1>
<p><em>Last updated: September 2026.</em></p>
<p>A few years ago, making a game meant learning an engine, a programming language, and an art pipeline before you had anything playable. In 2026 you can describe a game in plain English and have a working version in minutes. You still make the creative decisions, but the AI handles the boilerplate: movement, collisions, physics, placeholder art, and sound.</p>
<p>This guide walks through the whole process with no coding, from your first prompt to a published game. The examples use a browser-based AI game creator, but the workflow applies to most prompt-to-game tools.</p>
<h2>What you need</h2>
<p>Not much. A browser, an idea, and a tool. You don't need an engine install, a GPU, or any art. If you want to pick a tool first, see our <a href="/guides/ai-game-generators-2026">comparison of AI game generators</a>; if you just want to start, you can <a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=make_game_with_ai">open a creator and type an idea</a> right now.</p>
<h2>Step 1: Start with a clear, small idea</h2>
<p>The most common beginner mistake is prompting for &quot;an open-world RPG with multiplayer.&quot; AI tools build the best results from a small, specific core you can expand later. Name three things:</p>
<ul>
<li><strong>The kind of game.</strong> Platformer, racer, shooter, puzzle, survival, cozy sim.</li>
<li><strong>One thing that makes it yours.</strong> A glow, a twist on the rules, a setting.</li>
<li><strong>A goal.</strong> What the player is trying to do.</li>
</ul>
<p>&quot;A first-person parkour game across floating islands where you race a timer&quot; is a far better starting prompt than &quot;a fun 3D adventure.&quot; The first gives the AI a shape to build, the second makes it guess. You can <a href="/create#prompt=Make%20a%20first%20person%20parkour%20game%20across%20floating%20islands%20where%20you%20race%20a%20timer">try that parkour prompt</a> to see what a specific sentence produces.</p>
<h2>Step 2: Write your first prompt</h2>
<p>Keep it to a sentence or two. You're not writing a spec, you're starting a conversation. A good first prompt names the genre, the goal, and the feel:</p>
<blockquote>
<p>Make a top-down zombie survival game with a flashlight that only lights a narrow cone, limited ammo, and waves that get harder.</p>
</blockquote>
<p>Then let the tool build. You'll get a playable first version, often imperfect, which is exactly what you want, because the real work is iteration. You can <a href="/create#prompt=Make%20a%20top%20down%20zombie%20survival%20game%20with%20a%20flashlight%20that%20only%20lights%20a%20narrow%20cone%20limited%20ammo%20and%20waves%20that%20get%20harder">build that zombie prompt</a> as it stands. If a blank box is intimidating, start from a <a href="/guides/vibe-coding-game-prompts">ready-made prompt</a> and change a word, and if you want the reasoning behind what makes a prompt stick, read <a href="/guides/how-to-write-a-game">how to write a game in Cinevva</a>.</p>
<h2>Step 3: Iterate by talking to it</h2>
<p>This is where games actually get made. Play the first version, find the one thing that bugs you most, and ask for that single change. Small, specific requests beat big vague ones:</p>
<ul>
<li>&quot;Make the player move faster and jump higher.&quot;</li>
<li>&quot;The enemies are too aggressive, slow them down and reduce their health.&quot;</li>
<li>&quot;Add a score counter in the top right and a game-over screen.&quot;</li>
</ul>
<p>Change one thing, play, repeat. If a change makes things worse, ask it to undo or revert. Treat it like directing, not coding: you describe the outcome you want and judge the result.</p>
<h2>Step 4: Generate the assets you need</h2>
<p>Modern AI game tools generate art and audio on demand, so you're not stuck with grey boxes. Depending on the tool you can ask for 3D models, textures, sprites, music, and sound effects, or pull from built-in free asset libraries. Ask for what fits the mood: &quot;give the player a low-poly robot model,&quot; &quot;add upbeat synth music,&quot; &quot;use a desert skybox.&quot; If you want to see the pieces on their own, our <a href="/tools/hunyuan3d#prompt=low%20poly%20robot&amp;character=1">3D generator</a> and <a href="/tools/skybox">skybox generator</a> make the same kinds of assets outside a game. If your tool has a CC0 asset library, that's the safest source for anything you plan to publish. Our <a href="/guides/game-assets-guide">free game assets guide</a> covers where these come from and how the licensing works.</p>
<h2>Step 5: Polish the feel</h2>
<p>The difference between a tech demo and a game is feel. Once the core loop works, spend your iterations on the things players actually notice: responsive controls, clear feedback when something happens, a visible goal, and a win or lose state. Ask for a title screen, a restart button, sound on key actions, and a difficulty curve. These small touches are what make a game feel finished.</p>
<h2>Step 6: Publish and share</h2>
<p>When it's playable, publish it. Browser-based tools give you a shareable link in one click, which is the fastest way to get feedback. Share it with friends, post it where your audience hangs out, and watch where people get stuck or quit. That feedback is your next round of iteration. If you want to go further, our <a href="/guides/itch-io-launch-guide">itch.io launch guide</a> covers distributing a web game to a wider audience.</p>
<h2>Tips that make AI game-making work</h2>
<ul>
<li><strong>Stay small, then grow.</strong> Ship a tiny complete game before adding features. A finished small game beats an unfinished big one.</li>
<li><strong>One change at a time.</strong> Bundled requests confuse the AI and make it hard to tell what worked.</li>
<li><strong>Describe outcomes, not implementation.</strong> Say &quot;the jump feels floaty, make it snappier,&quot; not &quot;set gravity to 20.&quot;</li>
<li><strong>Keep a known-good version.</strong> Before a big change, note that the current state works so you can return to it.</li>
<li><strong>Use AI for the tedious parts.</strong> Let it handle boilerplate and variations so you spend your time on the decisions that make the game yours.</li>
</ul>
<h2>What AI is good at, and what it isn't</h2>
<p>AI is genuinely good at getting you from nothing to a playable prototype fast, generating placeholder and even final assets, and handling the mechanical plumbing of a game. It's weaker at large, systems-heavy designs, fine-grained balancing, and anything that needs a coherent long-term vision, which is still your job. The realistic expectation as of September 2026: AI compresses a weekend of setup into an afternoon, and reliable results cluster around small and mid-size games rather than sprawling ones. The frontier models under these tools keep improving (Anthropic and OpenAI both shipped new flagships in the first week of September 2026, <a href="https://www.anthropic.com/claude-fable-and-mythos-5-1">Claude Fable 5.1</a> and <a href="https://developers.openai.com/api/docs/models/gpt-6-astra">GPT-6 Astra</a>), and each jump shows up in games as fewer broken first builds and better follow-through on multi-step requests, not as a sudden ability to ship a large RPG unassisted.</p>
<h2>Common Questions</h2>
<h3>Can I really make a game with no coding experience?</h3>
<p>Yes. Prompt-to-game tools in 2026 generate the code, art, and logic for you from plain-English descriptions, so you can build and publish a playable game without writing or reading any code. You direct the game by describing what you want and refining the results.</p>
<h3>How long does it take to make a game with AI?</h3>
<p>A simple, playable game can take minutes to an hour. A small but polished game, with art, sound, menus, and a difficulty curve, is more like an afternoon to a weekend of iteration. Larger or more complex games still take longer, because the work shifts from setup to design and refinement.</p>
<h3>What kind of games can AI make?</h3>
<p>AI handles small and casual games best: platformers, runners, arcade shooters, puzzles, racers, survival, and cozy sims. Browser tools can do both 2D and 3D, though 2D tends to be more reliable. Big systems-heavy games like large RPGs or strategy titles are still hard to generate cleanly and need a lot of human direction.</p>
<h3>Do I need to pay to make a game with AI?</h3>
<p>Most tools have a free tier that's enough to build and try a game. You typically pay when you want heavier generation, commercial rights, or export. Our <a href="/guides/ai-game-generators-2026">AI game generator comparison</a> lists the free tiers and prices side by side.</p>
<h3>Which AI is best for making a game?</h3>
<p>It depends on whether you want a game or a codebase. If you want a playable game with no setup, use a purpose-built prompt-to-game tool (Cinevva, Rosebud, Summer Engine, GDevelop AI), because they wrap the model in a game engine, asset generation, and a publish button. If you're comfortable with code, a general coding agent like Cursor, Claude Code, or OpenAI Codex on top of a web framework gives you more control and a real repository. The underlying models change every few months, so pick by workflow, not by which lab's model a tool happens to use this quarter.</p>
<h3>Can I sell a game I made with AI?</h3>
<p>Often yes, but check two things: the tool's commercial terms (some gate commercial use behind a paid plan) and the license on any generated or imported assets. Many platforms also require you to disclose AI-generated content. Stick to CC0 assets and the tool's commercial tier to stay safe.</p>
<h2>Related</h2>
<ul>
<li><a href="/guides/ai-game-generators-2026">Best AI Game Generators in 2026</a>: pick the right tool first</li>
<li><a href="/guides/3d-browser-game-without-coding">How to Make a 3D Browser Game Without Coding</a>: the 3D-specific walkthrough</li>
<li><a href="/guides/vibe-coding-games">Vibe Coding Games: What It Is and How to Start</a>: the mindset behind prompt-driven building</li>
<li><a href="/guides/vibe-coding-game-prompts">AI Game Prompts You Can Build in One Click</a>: starting points</li>
<li><a href="/guides/how-to-write-a-game">How to Write a Game in Cinevva</a>: prompt patterns from real sessions</li>
<li><a href="/guides/game-assets-guide">Where to Find Free Game Assets</a>: art and audio for your game</li>
<li><a href="/guides/itch-io-launch-guide">How to Launch Your Game on itch.io</a>: getting players</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How to Make a Multiplayer Browser Game (2026)]]></title>
            <link>https://app.cinevva.com/guides/multiplayer-browser-game</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/multiplayer-browser-game</guid>
            <pubDate>Tue, 23 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[How to build a multiplayer browser game in 2026, from WebSockets vs WebRTC to the best tools (Colyseus, PartyKit, Playroom), netcode basics, and a beginner stack.]]></description>
            <content:encoded><![CDATA[<h1>How to Make a Multiplayer Browser Game (2026)</h1>
<p><em>Last updated: September 2026.</em></p>
<p>Multiplayer is the feature that makes a small game spread, and in 2026 you can add it to a browser game without running your own data center. The hard part isn't connecting players, it's keeping the game in sync and fair. This guide covers the choices that matter (transport, server model, netcode) and the tools that make it manageable, then gives you a sane starting stack.</p>
<p><strong>The 2026 default for a multiplayer browser game is WebSockets with an authoritative server, using a framework like Colyseus or PartyKit to handle rooms and state sync, and reaching for WebRTC only when you truly need peer-to-peer.</strong></p>
<div class="video-embed">
<iframe src="https://www.youtube.com/embed/s4lcuCTO2K8" title="Multiplayer Game Server Setup with Colyseus & Phaser 3 — ourcade" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<div class="video-caption">ourcade walks through a multiplayer server with Colyseus and Phaser.</div>
<h2>First, scope it honestly</h2>
<p>Multiplayer difficulty scales hard with how fast and competitive your game is.</p>
<ul>
<li><strong>Easy:</strong> turn-based games (cards, board games), small rooms of 2-8, shared cursors, lobbies, chat, casual co-op. Plain WebSockets or a zero-backend tool is enough.</li>
<li><strong>Hard:</strong> fast real-time action (shooters, .io movement), many concurrent players, and anything competitive where cheating matters. These need an authoritative server, prediction, and careful netcode.</li>
</ul>
<p>Start in the easy bucket. A working turn-based or small-room game teaches you the whole pipeline before you take on the hard problems.</p>
<h2>The transport: how data travels</h2>
<ul>
<li><strong>WebSockets</strong> are the practical default. TCP-based, bidirectional, mature, and supported everywhere. The one weakness is head-of-line blocking: a dropped packet stalls everything behind it, which hurts fast action games. For most games, ship WebSockets.</li>
<li><strong>WebRTC</strong> carries UDP-like data channels (no head-of-line blocking), good for fast action or peer-to-peer, but it's much more complex to set up (signaling, STUN/TURN). Reach for it only when you need P2P or have to avoid a relay server.</li>
<li><strong>WebTransport</strong> is the newer option (HTTP/3 + QUIC) with UDP-style datagrams. Browser support crossed the line in 2026: Safari 26.4 shipped it in March, joining Chrome (97+), Edge, and Firefox (114+), which puts it at about 91% of global usage per <a href="https://caniuse.com/webtransport">caniuse</a>. The gap now is on the server side, where game frameworks and hosting still assume WebSockets, so as of September 2026 it's a sound second transport rather than a beginner's only one.</li>
</ul>
<p>Rule of thumb: WebSockets to ship now, WebTransport when your framework supports it and you need lower latency, WebRTC for P2P or media.</p>
<h2>The server model: who decides what happened</h2>
<ul>
<li><strong>Authoritative server:</strong> clients send inputs, the server runs the simulation and broadcasts the result. This is the standard for anything competitive because the server is the natural anti-cheat boundary; you never trust the client.</li>
<li><strong>Peer-to-peer:</strong> cheaper to run, but cheating is hard to prevent and connectivity is fragile. Fine for casual co-op and small trusted lobbies.</li>
</ul>
<p>Even for a small game, an authoritative server keeps your &quot;source of truth&quot; simple. Most of the tools below default to this model.</p>
<h2>Netcode basics (only when you need them)</h2>
<p>For fast real-time games, raw state-syncing feels laggy. The standard fixes, well explained in Gabriel Gambetta's classic series, are:</p>
<ul>
<li><strong>Client-side prediction:</strong> the client applies your input immediately instead of waiting for the server round-trip, so movement feels instant.</li>
<li><strong>Server reconciliation:</strong> when the authoritative state arrives, the client re-applies its pending inputs to correct any drift.</li>
<li><strong>Entity interpolation:</strong> render other players slightly in the past, between known states, to smooth their motion.</li>
<li><strong>Lag compensation:</strong> the server rewinds to where a target was when the shot was fired, so hits resolve fairly.</li>
</ul>
<p>Don't build these up front. Add them only when movement actually feels bad, which won't happen for turn-based or slow games.</p>
<h2>The 2026 tool landscape</h2>
<table>
<thead>
<tr>
<th>Tool</th>
<th>What it's for</th>
<th>Open source</th>
<th>Hosting</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong><a href="http://Socket.IO">Socket.IO</a></strong></td>
<td>WebSocket library; you write the game logic. Great for learning and small rooms.</td>
<td>Yes (MIT)</td>
<td>Self-host</td>
</tr>
<tr>
<td><strong>Colyseus</strong></td>
<td>Authoritative game-server framework: rooms, matchmaking, automatic state sync.</td>
<td>Yes (MIT)</td>
<td>Self-host free; <a href="https://colyseus.io/pricing/">Cloud from $15/mo</a></td>
</tr>
<tr>
<td><strong>Playroom</strong></td>
<td>Zero-backend joinable rooms, presence, casual matchmaking. Fastest path for casual games.</td>
<td>SDK</td>
<td>Managed: free tier (10 unique users a day), <a href="https://docs.joinplayroom.com/billing">Lite $10/mo for 10,000 MAU</a></td>
</tr>
<tr>
<td><strong>PartyKit / PartyServer</strong></td>
<td>Real-time rooms on Cloudflare's edge. PartyKit is now part of Cloudflare, and <a href="https://github.com/cloudflare/partykit">PartyServer</a> is the maintained library on Durable Objects.</td>
<td>Yes</td>
<td>Cloudflare usage-based</td>
</tr>
<tr>
<td><strong>Cloudflare Durable Objects</strong></td>
<td>The lower-level stateful-per-room primitive PartyKit builds on.</td>
<td>Platform</td>
<td>Cloudflare usage-based</td>
</tr>
<tr>
<td><strong><a href="http://geckos.io">geckos.io</a></strong></td>
<td>UDP-like client/server over WebRTC, for fast action games.</td>
<td>Yes</td>
<td>Self-host</td>
</tr>
<tr>
<td><strong>Nakama</strong></td>
<td>Full open-source backend: realtime, matchmaking, leaderboards, chat.</td>
<td>Yes (Apache-2.0)</td>
<td>Self-host; <a href="https://heroiclabs.com/pricing/">Heroic Cloud</a> priced by CPU, no CCU caps</td>
</tr>
<tr>
<td><strong>Photon (Fusion / Quantum)</strong></td>
<td>Mature commercial realtime networking, Unity-centric.</td>
<td>No</td>
<td><a href="https://www.photonengine.com/fusion/pricing">100 CCU free</a> for one game app; 500 CCU $125/mo</td>
</tr>
<tr>
<td><strong>Rivet</strong></td>
<td>Open-source actors and game servers, self-host or cloud. Repositioned toward agent infrastructure in 2026 but still runs game rooms.</td>
<td>Yes (Apache-2.0)</td>
<td>Self-host free; <a href="https://rivet.dev/cloud/">cloud free tier, Hobby $20/mo</a></td>
</tr>
<tr>
<td><strong>Hathora</strong></td>
<td>Was a managed game-server host. Shut down May 5, 2026 after its <a href="https://www.gamedeveloper.com/business/stormgate-rushing-offline-mode-after-losing-server-access-to-an-ai-company">acquisition by Fireworks AI</a>; the domain now points to GameFabric.</td>
<td>No</td>
<td>Gone. Don't start here</td>
</tr>
<tr>
<td><strong>Supabase Realtime</strong></td>
<td>Broadcast + presence over WebSockets for lightweight sync and lobbies.</td>
<td>Yes</td>
<td>Bundled in Supabase plans</td>
</tr>
</tbody>
</table>
<div class="video-embed">
<iframe src="https://www.youtube.com/embed/DbaBeLDU-oY" title="Build a real-time, multiplayer web app — CodeTV" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<div class="video-caption">A real-time multiplayer build using PartyKit on the edge.</div>
<h2>A recommended beginner stack</h2>
<p>For a small real-time browser game in 2026:</p>
<ul>
<li><strong>Transport:</strong> WebSockets (ship-now compatibility).</li>
<li><strong>Server model:</strong> authoritative, even for a small game, so cheating and &quot;source of truth&quot; stay simple.</li>
<li><strong>Framework:</strong> Colyseus. It's MIT, free to self-host, and gives you rooms, matchmaking, and automatic state sync out of the box, with a <a href="https://colyseus.io/pricing/">managed cloud from $15 a month</a> when you'd rather not run servers. If you want zero backend for a casual game, Playroom is the even-faster option (free for tiny projects, <a href="https://docs.joinplayroom.com/billing">$10 a month for 10,000 monthly players</a>); if you're already on Cloudflare, PartyServer or Durable Objects fit naturally. Whatever you pick, keep the game logic separate from the transport so a host shutting down, as Hathora did in May 2026, is a migration and not a rewrite. For the rest of the stack (engine, rendering, hosting), see our <a href="/guides/web-games-stack-2026">web games stack for 2026</a>.</li>
<li><strong>Netcode:</strong> start without prediction. Add Gambetta-style prediction and interpolation only once movement feels laggy.</li>
</ul>
<h2>Common Questions</h2>
<h3>What's the easiest way to make a multiplayer browser game?</h3>
<p>Start with a turn-based or small-room game using WebSockets, via a framework like Colyseus or a zero-backend tool like Playroom. These handle rooms, joining, and state sync for you, so you can ship a working multiplayer game without building netcode or running your own servers. Save fast real-time action for after you've shipped something simpler.</p>
<h3>Should I use WebSockets or WebRTC for my game?</h3>
<p>WebSockets for most games: they're simple, mature, and supported everywhere. Use WebRTC only if you need peer-to-peer connections or the lowest latency for fast action, since it's significantly more complex to set up. WebTransport now works in every major browser as of Safari 26.4 in March 2026, so it's a real third option once your server framework supports it.</p>
<h3>Is WebTransport ready for browser games in 2026?</h3>
<p>In the browser, yes: <a href="https://caniuse.com/webtransport">caniuse</a> lists Chrome 97+, Edge 98+, Firefox 114+, and Safari 26.4+ on both macOS and iOS, about 91% of global usage as of September 2026. On the server it's earlier days, because you need an HTTP/3 stack and most game frameworks, including Colyseus and Playroom, still speak WebSockets by default. The practical move is to ship WebSockets, keep your netcode transport-agnostic, and switch the fast-path (position updates, inputs) to WebTransport datagrams when your framework adds it.</p>
<h3>How much does it cost to host a multiplayer browser game?</h3>
<p>Nothing to start, and tens of dollars a month at small scale. Colyseus and Nakama are free to self-host, <a href="https://colyseus.io/pricing/">Colyseus Cloud starts at $15 a month</a>, <a href="https://docs.joinplayroom.com/billing">Playroom is free for tiny projects and $10 a month for 10,000 monthly players</a>, Photon gives <a href="https://www.photonengine.com/fusion/pricing">100 concurrent users free</a> for one game and charges $125 a month at 500, and Cloudflare Durable Objects bill on usage. Costs climb with concurrent players and bandwidth rather than with downloads, so a turn-based game with a few thousand players a month can genuinely live on a free tier.</p>
<h3>What happened to Hathora?</h3>
<p>Hathora, a popular managed host for authoritative game servers, was <a href="https://www.gamedeveloper.com/business/stormgate-rushing-offline-mode-after-losing-server-access-to-an-ai-company">acquired by Fireworks AI</a> in March 2026 and shut its game hosting down on May 5, 2026, with GameFabric named as the migration partner. If a tutorial you're following deploys to Hathora, swap in Colyseus Cloud, a container host, or Cloudflare. It's also the clearest recent argument for keeping your room logic independent of whoever runs the servers.</p>
<h3>Do I need my own server for multiplayer?</h3>
<p>Not necessarily. Managed tools like Colyseus Cloud, Playroom, PartyKit, and Photon host the realtime part for you. You can also self-host open-source frameworks like Colyseus or Nakama if you want full control. For a small game, a managed service is the fastest path and often free or cheap to start.</p>
<h3>How do I stop cheating in a multiplayer game?</h3>
<p>Use an authoritative server: clients send only their inputs, and the server decides what actually happens, validating everything. Never trust the client with the game's outcome. This is why frameworks like Colyseus, Nakama, and Photon default to a server-authoritative model, especially for anything competitive.</p>
<p><BuildCta
  title="Start with the single-player core"
  desc="Nail the feel against bots before you add netcode."
  prompt="Make an arena shooter where I fight waves of AI bots" /></p>
<h2>Related</h2>
<ul>
<li><a href="/guides/web-game-engines-comparison">Best Web Game Engines for 2026</a>: the engine your multiplayer game runs on</li>
<li><a href="/guides/best-free-game-engines-beginners">Best Free Game Engines for Beginners</a>: where to start</li>
<li><a href="/tutorials/websocket-multiplayer-basics">WebSocket multiplayer basics</a>: a hands-on intro</li>
<li><a href="/guides/web-games-stack-2026">The Web Games Stack for 2026</a>: engine, rendering, and hosting choices around the netcode</li>
<li><a href="/guides/publish-game-discord-activities">How to Publish a Game on Discord Activities</a>: a natural home for a multiplayer web build</li>
<li><a href="/guides/itch-io-launch-guide">How to Launch Your Game on itch.io</a>: publishing your multiplayer game</li>
</ul>
<style scoped>
.video-embed { position: relative; width: 100%; max-width: 720px; margin: 1.5rem 0; }
.video-embed iframe { width: 100%; aspect-ratio: 16/9; border-radius: 8px; }
.video-caption { font-size: 0.9rem; color: var(--vp-c-text-2); margin: 0.5rem 0 1.5rem; max-width: 720px; }
</style>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Phaser vs Defold: Best 2D Web Game Engines Compared (2026)]]></title>
            <link>https://app.cinevva.com/guides/phaser-vs-defold</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/phaser-vs-defold</guid>
            <pubDate>Tue, 23 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Phaser vs Defold in 2026 for 2D web games, compared on build size, load time, language, workflow, and cost, so you can pick the right 2D engine for the browser.]]></description>
            <content:encoded><![CDATA[<h1>Phaser vs Defold: Best 2D Web Game Engines Compared (2026)</h1>
<p><em>Last updated: September 2026.</em></p>
<p>For 2D games in the browser, two engines lead on different strengths: Phaser, the most popular HTML5 framework, and Defold, the engine with the smallest, fastest-loading web builds. They suit different developers: pick Phaser (4.2.1) if you write JavaScript and want the biggest community, pick Defold (1.13.1) if you want the smallest build and an all-in-one editor. Here's the 2026 comparison to help you choose, with versions checked as of September 2026.</p>
<div class="video-embed">
<iframe src="https://www.youtube.com/embed/3nfs6MNTNDo" title="Defold game engine comparison — GameFromScratch" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<div class="video-caption">GameFromScratch puts Defold in a head-to-head engine comparison.</div>
<h2>Quick verdict</h2>
<ul>
<li><strong>Smallest, fastest-loading web builds and a polished all-in-one editor:</strong> Defold.</li>
<li><strong>Biggest community, most tutorials, and a code-first JavaScript framework:</strong> Phaser.</li>
</ul>
<p>Both are free. The real choice is about workflow (visual editor vs code framework), language (Lua vs JavaScript), and how much load-time and community matter to you.</p>
<h2>Comparison</h2>
<table>
<thead>
<tr>
<th></th>
<th>Phaser (4)</th>
<th>Defold</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Type</strong></td>
<td>JS/TS game framework</td>
<td>Full engine + editor</td>
</tr>
<tr>
<td><strong>Language</strong></td>
<td>JavaScript / TypeScript</td>
<td>Lua</td>
</tr>
<tr>
<td><strong>Web tech</strong></td>
<td>WebGL2 / Canvas</td>
<td>WebAssembly + WebGL</td>
</tr>
<tr>
<td><strong>Empty build size</strong></td>
<td>~500 KB (framework)</td>
<td>~1.14 MB (full build)</td>
</tr>
<tr>
<td><strong>Editor</strong></td>
<td>Bring your own (code)</td>
<td>Built-in, all-in-one</td>
</tr>
<tr>
<td><strong>Community</strong></td>
<td>Largest in HTML5 games</td>
<td>Smaller but active</td>
</tr>
<tr>
<td><strong>Publishing</strong></td>
<td>Manual / your own</td>
<td>Built-in (Poki and others)</td>
</tr>
<tr>
<td><strong>License / cost</strong></td>
<td>Free (MIT)</td>
<td>Free, no royalties</td>
</tr>
<tr>
<td><strong>3D</strong></td>
<td>No (2D)</td>
<td>Primarily 2D, adding 3D</td>
</tr>
</tbody>
</table>
<h2>Phaser 4</h2>
<p>Phaser is the most popular HTML5 game framework, and version 4.0 shipped stable in April 2026 (with point releases following quickly: 4.2.1 from July 2026 is current as of September, per the <a href="https://github.com/phaserjs/phaser/releases">Phaser releases</a>). It's a ground-up rewrite of the WebGL2 renderer with a new node-based architecture, while keeping the familiar v3 API. You write JavaScript or TypeScript and get physics, input, audio, scenes, and asset loading out of the box. The framework itself is small (~500 KB), though your final size depends on your assets. The big advantages are the enormous community, the mountain of tutorials and examples, and that you're writing standard web code you fully control. Note that Phaser 4 is a WebGL2 engine, not WebGPU. WebGPU is future groundwork, not a shipping feature.</p>
<h2>Defold</h2>
<p>Defold, originally from King (Candy Crush), is built for tiny, fast-loading web games. Its empty HTML5 build is around 1.14 MB and it uses WebAssembly by default, making it one of the fastest-loading engines in studies of top web games. It ships as a complete package: a built-in editor, scene tools, and one-click publishing to platforms like Poki. The latest stable release is <a href="https://defold.com/2026/08/17/Defold-1-13-1/">1.13.1 (August 2026)</a>, which added first-class light components (ambient, directional, point, and spot) and GPU-instanced morph targets, following 1.13.0 (June 2026), which dropped the legacy asm.js target so web builds are Wasm-only. It's free with no royalties. The trade-offs are a smaller community than Phaser and a learning curve around Lua scripting and Defold's component model. It's primarily a 2D engine, though it's actively adding 3D features.</p>
<h2>How to choose</h2>
<p>If you already know JavaScript, want the biggest pool of tutorials and help, and like assembling your own toolchain, choose Phaser. If you want the smallest, fastest-loading builds, a polished all-in-one editor, and built-in publishing, and you don't mind learning Lua, choose Defold. For load-time-critical mobile web games, Defold has a real edge; for learning and community support, Phaser is hard to beat.</p>
<p>Want the wider field, including PixiJS, Construct, and GDevelop? See our <a href="/guides/best-2d-game-engines-2026">best 2D game engines for 2026</a>.</p>
<h2>Common Questions</h2>
<h3>Is Phaser or Defold better for 2D web games?</h3>
<p>Both are excellent; they suit different developers. Phaser is a code-first JavaScript framework with the largest community and the most learning material. Defold is a full engine with a built-in editor and the smallest, fastest-loading web builds. Choose Phaser for community and JavaScript, Defold for load time and an all-in-one workflow.</p>
<h3>Which has smaller, faster-loading web builds?</h3>
<p>Defold. Its empty HTML5 build is around 1.14 MB and uses WebAssembly, making it one of the fastest-loading engines for web games. Phaser's framework is about 500 KB, but it's a framework rather than a full build, and your real size depends heavily on your own assets. For load-time-sensitive games, Defold has the edge.</p>
<h3>Do Phaser and Defold support WebGPU?</h3>
<p>Not as a shipping feature as of September 2026. Phaser 4's renderer is a ground-up WebGL2 rewrite (node-based, with GPU sprite and tilemap layers that draw over a million sprites), and the Phaser team has described WebGPU as a future renderer target rather than a shipping feature. Defold's HTML5 backend is WebGL, with experimental WebGPU work. For 2D games this rarely matters: WebGL2 runs on every browser your players own, while WebGPU still isn't on Firefox for Linux or Android, and WebGL2 is more than enough for typical 2D rendering. If you want to see what your own browser supports, run our <a href="/tools/webgl-webgpu-checker">WebGL and WebGPU checker</a>, and for the deeper trade-offs see <a href="/guides/webgpu-vs-webgl-games">WebGPU vs WebGL for games</a>.</p>
<h3>What are the best Phaser alternatives?</h3>
<p>It depends on what you want to change. For a lighter renderer with your own game logic on top, PixiJS (v8.20, August 2026) is the standard. For a full engine with an editor and the smallest builds, Defold. For TypeScript-first 2D with more batteries than PixiJS, Excalibur.js. For a visual, no-code path to the same kind of 2D web game, Construct or GDevelop. If you want to leave the browser-only world, Godot does 2D and 3D and still exports to WebGL2. And if the game is 3D, none of these fit and you're into <a href="/guides/web-game-engines-comparison">Three.js, Babylon.js, or PlayCanvas</a> territory instead.</p>
<h3>Are Phaser and Defold free for commercial games?</h3>
<p>Yes. Phaser is free under the MIT license, and Defold is free and open-source with no royalties or revenue thresholds. Neither charges you to ship a commercial game, though Phaser sells a separate optional editor product.</p>
<p><BuildCta
  title="Test your 2D idea before you commit"
  desc="One prompt, one playable draft, zero boilerplate."
  prompt="Make a 2D space shooter with waves of enemies and power-ups" /></p>
<h2>Related</h2>
<ul>
<li><a href="/guides/best-2d-game-engines-2026">Best 2D Game Engines for 2026</a>: the full 2D field</li>
<li><a href="/guides/web-game-engines-comparison">Best Web Game Engines for 2026</a>: 2D and 3D together</li>
<li><a href="/guides/best-free-game-engines-beginners">Best Free Game Engines for Beginners</a>: where to start</li>
<li><a href="/guides/itch-io-launch-guide">How to Launch Your Game on itch.io</a>: publishing a finished 2D game</li>
</ul>
<style scoped>
.video-embed { position: relative; width: 100%; max-width: 720px; margin: 1.5rem 0; }
.video-embed iframe { width: 100%; aspect-ratio: 16/9; border-radius: 8px; }
.video-caption { font-size: 0.9rem; color: var(--vp-c-text-2); margin: 0.5rem 0 1.5rem; max-width: 720px; }
</style>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How to Promote an Indie Game With No Budget (2026)]]></title>
            <link>https://app.cinevva.com/guides/promote-indie-game-no-budget</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/promote-indie-game-no-budget</guid>
            <pubDate>Tue, 23 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[A practical 2026 guide to marketing an indie game with no budget, from wishlists and a Steam page to short-form video, devlogs, communities, and streamer outreach.]]></description>
            <content:encoded><![CDATA[<h1>How to Promote an Indie Game With No Budget (2026)</h1>
<p><em>Last updated: September 2026.</em></p>
<p>You don't need ad money to market a game. You need time, a clear hook, and to start early. The hard truth in 2026 is that discovery, not demand, is the problem: <a href="https://x.com/SteamDB/status/1999420488271937702">over 19,000 games shipped on Steam in 2025</a>, a record, and SteamDB counted almost half of them with fewer than ten reviews. The good news is that the channels that work for indies are mostly free: a Steam page up early, short gameplay clips, devlogs, communities you already belong to, and streamer outreach. Here's how to use them.</p>
<div class="video-embed">
<iframe src="https://www.youtube.com/embed/kpb2Ab8x7Zg" title="Why are wishlists so important to indie devs? (with Chris Zukowski)" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<div class="video-caption">Why wishlists matter, with marketing expert Chris Zukowski.</div>
<h2>Start with the Steam page (if you're on Steam)</h2>
<p>If your game touches Steam, the single most valuable free thing you can do is put up a &quot;Coming Soon&quot; page early. It isn't quite free: Steam's <a href="https://partner.steamgames.com/doc/gettingstarted/appfee">Direct fee</a> is $100 per game as of September 2026, recouped once the game earns $1,000, and the store page has to be live at least two weeks before launch. Pay it as early as you can afford, because the page is where wishlists accumulate. Games that posted it six or more months before launch saw far more sales than those that waited until the last month. Wishlists don't expire, so the page should go up as soon as you have a few screenshots and a short clip.</p>
<p>What wishlists actually do: each wishlister gets notified at launch and on discounts, which turns a backlog into a first-day sales spike. They also drive the &quot;Popular Upcoming&quot; tab in the final week. A rough viable-launch floor is around 7,000 wishlists; that's not a magic number, it just means being a top release that week. Fill out your store page properly too: accurate tags (Steam categorizes by them) and more supported languages both increase how often Steam surfaces you.</p>
<h3>The Next Fest demo loop</h3>
<p>Steam Next Fest is the biggest free wishlist event, but it amplifies an existing audience rather than creating one. The wishlists you gain scale strongly with the wishlists you bring in, so build an audience before the fest, then ride it. A good demo-to-wishlist conversion is around 16-20%. The <a href="https://partner.steamgames.com/doc/marketing/upcoming_events/nextfest/2026october">October 2026 edition</a> runs October 19 to 26, and registration closed August 31, so if you missed it, plan your demo around the next one rather than rushing a broken build into this one. Our <a href="/guides/steam-next-fest-strategy">Steam Next Fest strategy guide</a> covers the prep timeline.</p>
<h2>Make a game that markets itself</h2>
<p>The biggest marketing decision happens before any marketing: your genre and concept. A high-concept game spreads from its first screenshot, and only needs a sentence or two to interest people. If you can't show why your game is interesting in a few seconds of a clip, the market will scroll past it. So lead with a hook: trailers and clips should reach the interesting thing in the first several seconds, and present genre, then hook, then content, rather than a feature list.</p>
<h2>The free channels that work in 2026</h2>
<ul>
<li><strong>Short-form video</strong> (TikTok, Reels, YouTube Shorts) is the free channel with the biggest reach payoff, because the algorithm pushes clips to people who don't follow you, unlike X where organic reach has shrunk. A clip can far outperform a tweet. One caveat to be honest about: organic short-video reach has gotten harder in 2025-2026, so expect to post consistently and treat YouTube Shorts as a stable option that also clicks through well.</li>
<li><strong>Devlogs, trailers, GIFs, capsule art:</strong> repeated exposure builds the familiarity that converts to wishlists, and steady clips double as free testing for which hooks land.</li>
<li><strong>Reddit:</strong> post to relevant subs (r/IndieGaming, r/IndieDev, r/indiegames, r/playmygame, plus niche ones), and respect the roughly 10-to-1 rule, only about one in ten posts should directly promote your game. Spammy self-promo gets you banned.</li>
<li><strong>Discord:</strong> a server keeps interested players warm, gives you playtesters, and builds the core that shows up at launch. If your game runs in a browser, it can also run inside Discord as an Activity, which turns the server into a place people play, not just talk. See <a href="/guides/publish-game-discord-activities">how to publish a game on Discord Activities</a>.</li>
</ul>
<p>Watch the platform rules as well as the algorithms. TikTok tightened its commercial-content and off-platform-link policies in 2026, so a clip that makes people search your game's name outperforms one that says &quot;link in bio,&quot; and most gaming subreddits now gate posts behind karma and account-age thresholds, so an account you've participated with for months is worth far more than a fresh one made for launch week.</p>
<h2>Press and streamers on no budget</h2>
<p>Streamers and YouTubers now drive indie discovery more reliably than traditional press, and a couple of the right creators can outperform all your press outreach combined. They actively hunt for free demos. Targeting beats reach: pick creators whose audience matches your genre and tell them why you chose them.</p>
<p>For press, keep pitches short (most journalists prefer under 200 words), include a hook, genre, press-kit link, trailer, and a key, and personalize it. Put up a one-page press kit with a factsheet, high-res screenshots, a trailer, and logos, every bit of friction you remove raises your odds. Send review copies about two weeks before launch and give streamers keys about a week out. The biggest outreach mistake is going silent after someone shows interest and missing the window.</p>
<div class="video-embed">
<iframe src="https://www.youtube.com/embed/gQBdIGaZROE" title="How to NOT screw up your indie game launch. 30 mistakes in 30 minutes." frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<div class="video-caption">Common indie launch mistakes to avoid.</div>
<h2>Realistic expectations</h2>
<p>The baseline is sobering: the median Steam game grosses only a few hundred dollars, <a href="https://x.com/SteamDB/status/1999420488271937702">almost half of 2025's 19,000-plus releases</a> never reached ten reviews, and revenue is winner-take-all. But that's a discovery problem, not a demand one, indies are now roughly half of Steam's revenue and copies sold. The audience is enormous; your job is to be findable. The number one mistake is building in silence and starting to market in the final week. Total silence is more dangerous than showing an imperfect game.</p>
<p>If your game runs in a browser, publishing it free on portals like Poki and CrazyGames is itself a no-budget marketing move, since those platforms send you players you'd otherwise have to pay to reach. A portal listing puts your game in front of an audience that's already there and hunting for something to play, so you get distribution and traffic without a single ad dollar. See <a href="/guides/publish-web-game">where to publish a web game</a> for the platform trade-offs and <a href="/guides/web-game-monetization">web game monetization</a> for what that reach can actually earn.</p>
<h2>A no-budget timeline</h2>
<ul>
<li><strong>6-12 months out:</strong> Steam &quot;Coming Soon&quot; page up, start posting clips and devlogs, begin building a Discord.</li>
<li><strong>3-6 months out:</strong> consistent short-form video, gather wishlists, line up Next Fest.</li>
<li><strong>4-6 weeks out:</strong> press and creator outreach, finalize trailer and press kit.</li>
<li><strong>Launch week:</strong> coordinate Reddit, social, and press the same morning; give streamers keys a week prior.</li>
</ul>
<h2>Common Questions</h2>
<h3>How do I market an indie game with no money?</h3>
<p>Start early and lean on free channels: put up a Steam page months ahead to collect wishlists, post short-form video clips of your hook, write devlogs, share in relevant Reddit and Discord communities, and pitch streamers and small press. The key is consistency over time and a clear, fast hook, not a marketing budget.</p>
<h3>How many wishlists do I need before launching on Steam?</h3>
<p>There's no magic number, but a rough floor is around 7,000, with 7,000-10,000 giving you a shot at the Popular Upcoming tab. More is better, since wishlists convert to launch-day sales via notifications. The deeper point is to be one of the top releases that week, which mostly comes from starting your page and marketing early.</p>
<h3>What's the best free marketing channel for indie games in 2026?</h3>
<p>Short-form video (TikTok, Reels, YouTube Shorts) of actual gameplay, because the algorithms push clips to non-followers, giving reach without an existing audience. Streamers and YouTubers are also extremely high-leverage. Organic short-video reach has gotten harder than a few years ago, so post consistently rather than expecting one viral hit.</p>
<h3>What's the biggest indie marketing mistake?</h3>
<p>Building in silence and starting to market in the final week. Marketing takes months of lead time to collect wishlists and an audience, so a great game launched cold to zero wishlists, with no trailer and a weak store page, gets buried. Show your game early, even imperfect, and start collecting interest long before launch.</p>
<h3>How do I promote my game on Steam for free?</h3>
<p>Put the Coming Soon page up as soon as you have screenshots and a clip, since wishlists never expire and the page is what every other channel points at. Fill in tags and languages properly, post a demo for the next <a href="/guides/steam-next-fest-strategy">Steam Next Fest</a>, use Steam's own events and announcements to reach existing wishlisters, and join the seasonal and themed fests you qualify for. The only cash involved is the <a href="https://partner.steamgames.com/doc/gettingstarted/appfee">$100 Direct fee</a>, which Steam returns once you've earned $1,000.</p>
<h3>Is TikTok still worth it for indie game marketing in 2026?</h3>
<p>Yes, with adjusted expectations. Short-form video is still the free channel that reaches people who don't follow you, but organic reach is harder than it was in 2023, and TikTok's 2026 policy changes limit how hard you can push people off-platform. So make clips that carry the game's name and hook on their own, post consistently rather than betting on one viral hit, and mirror everything to YouTube Shorts and Reels, where the same clip keeps working and clicks through more reliably.</p>
<h3>How early should I start marketing my indie game?</h3>
<p>Six to twelve months before launch for a Steam release, and the day you have something playable for a web game. The Steam page needs months to collect wishlists, creators and press need a few weeks of lead time, and communities reward accounts that were participating long before they had something to sell. Starting late is the one mistake you can't fix with more effort in launch week.</p>
<p><BuildCta
  title="Your best marketing asset is a link that plays"
  desc="Web games spread because there is nothing to install."
  prompt="Make a shareable mini game with a beat-my-score hook" /></p>
<h2>Related</h2>
<ul>
<li><a href="/guides/steam-next-fest-strategy">Steam Next Fest Strategy</a>: the demo-and-wishlist event in depth</li>
<li><a href="/guides/kickstarter-for-indie-games">Kickstarter for Indie Games</a>: if you go the crowdfunding route</li>
<li><a href="/guides/itch-io-launch-guide">How to Launch Your Game on itch.io</a>: launching on itch</li>
<li><a href="/guides/get-more-plays-itch-io">How to Get More Plays on itch.io</a>: driving web-game traffic</li>
<li><a href="/guides/publish-web-game">Best Places to Publish a Web Game in 2026</a>: where to put a web game</li>
<li><a href="/guides/publish-game-discord-activities">How to Publish a Game on Discord Activities</a>: turning your Discord into a place people play</li>
<li><a href="/guides/web-game-monetization">Web Game Monetization: What the Data Actually Says</a>: what free portal reach can earn</li>
</ul>
<style scoped>
.video-embed { position: relative; width: 100%; max-width: 720px; margin: 1.5rem 0; }
.video-embed iframe { width: 100%; aspect-ratio: 16/9; border-radius: 8px; }
.video-caption { font-size: 0.9rem; color: var(--vp-c-text-2); margin: 0.5rem 0 1.5rem; max-width: 720px; }
</style>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Best Places to Publish a Web Game in 2026]]></title>
            <link>https://app.cinevva.com/guides/publish-web-game</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/publish-web-game</guid>
            <pubDate>Tue, 23 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Where to publish a web game in 2026, comparing itch.io, Newgrounds, CrazyGames, Poki, GameJolt, and more on reach, revenue share, and requirements.]]></description>
            <content:encoded><![CDATA[<h1>Best Places to Publish a Web Game in 2026</h1>
<p><em>Last updated: September 2026.</em></p>
<p>You finished a web game. Now what? Where you publish it shapes how many people play it, whether you earn anything, and how much control you keep. The platforms range from instant-and-free self-publishing to curated portals with millions of players and a tougher bar. The one-line answer for 2026: <a href="http://itch.io">itch.io</a> for freedom and the best split, CrazyGames or Poki for the biggest audience, and your own domain for control. Here's the full rundown, with the trade-offs that actually matter.</p>
<div class="video-embed">
<iframe src="https://www.youtube.com/embed/hyWQHY7EqoE" title="How to make an itch.io game page for your indie game — TheOdie" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<div class="video-caption">Setting up a strong itch.io page, the most flexible place to self-publish a web game.</div>
<h2>The comparison</h2>
<table>
<thead>
<tr>
<th>Platform</th>
<th>Reach</th>
<th>Revenue model</th>
<th>Approval</th>
<th>Best for</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong><a href="http://itch.io">itch.io</a></strong></td>
<td>Large (indie)</td>
<td>You set the cut (default 90% you / 10% itch); paid, donations, free</td>
<td>Instant, no gate</td>
<td>Indie, paid/PWYW, jam games</td>
</tr>
<tr>
<td><strong>Newgrounds</strong></td>
<td>Medium, community</td>
<td>Ad rev-share to creators</td>
<td>Portal voting</td>
<td>Free browser games, art/animation crowd</td>
</tr>
<tr>
<td><strong>CrazyGames</strong></td>
<td>50M+ monthly players</td>
<td>Ad rev-share (% not in public docs)</td>
<td>QA + review</td>
<td>Action/arcade/casual, big audience</td>
</tr>
<tr>
<td><strong>Poki</strong></td>
<td>~100M MAU</td>
<td>Web-exclusive deals: 100% if you bring players / 50% if Poki does. Non-exclusive: flat license fee</td>
<td>Rigorous, playtested</td>
<td>Polished, optimized casual games</td>
</tr>
<tr>
<td><strong>Discord Activities</strong></td>
<td>Discord's servers and DMs</td>
<td>In-app purchases via Discord's Premium Apps (Discord keeps 15% to 30%)</td>
<td>App review for the directory</td>
<td>Social and multiplayer games you play with friends</td>
</tr>
<tr>
<td><strong>GameJolt</strong></td>
<td>Community</td>
<td>Marketplace cut capped at 10%</td>
<td>Instant</td>
<td>Building a fanbase, low-fee sales</td>
</tr>
<tr>
<td><strong>gd.games</strong> (GDevelop)</td>
<td>Community</td>
<td>Session-based ad earnings</td>
<td>Private then public</td>
<td>GDevelop users, free hosting</td>
</tr>
<tr>
<td><strong>GX.games</strong> (Opera)</td>
<td>Opera GX players</td>
<td>Free hosting, no revenue share advertised</td>
<td>GameMaker export</td>
<td>GameMaker users wanting a one-click web home</td>
</tr>
<tr>
<td><strong>Y8</strong></td>
<td>Long-running portal</td>
<td>50% of in-game ad revenue (Y8 Managed Partnership)</td>
<td>Upload + approval</td>
<td>Casual HTML5 games, extra syndication</td>
</tr>
<tr>
<td><strong>Armor Games</strong></td>
<td>Smaller</td>
<td>Upfront sponsorship/licensing fee</td>
<td>Email pitch, curated</td>
<td>Polished games wanting a paycheck</td>
</tr>
<tr>
<td><strong>GameDistribution / GameMonetize</strong></td>
<td>Network reach</td>
<td>Rev-share (33% / 45%+)</td>
<td>Dashboard + review</td>
<td>Passive syndication for casual games</td>
</tr>
</tbody>
</table>
<p>A note on the big two portals: <strong>Poki and CrazyGames</strong> have the biggest audiences but the highest bars and mandatory SDKs. Poki's <a href="https://developers.poki.com/guide/revenue-deal-types">partnership page</a> now spells out two tracks: web-exclusive deals run on revenue share, non-exclusive ones are a one-time flat license fee with no share, and the exact terms are set per game. <strong><a href="http://itch.io">itch.io</a></strong> has the most freedom and the best revenue split but you bring your own traffic. <strong>Kongregate</strong> closed open submissions in 2020, and as of September 2026 its <a href="https://www.kongregate.com/en/pages/submission-checklist">submission checklist</a> still asks you to contact the team for a QA pass rather than upload, so treat it as a pitch, not a self-serve listing. The Y8 and Discord figures come from <a href="https://developer.y8.com/">Y8's developer portal</a> and Discord's <a href="https://support-dev.discord.com/hc/en-us/articles/23810643331735-Premium-Apps-Required-Support-for-Monetizing-Apps">Premium Apps support page</a>, and the GameDistribution share is in its <a href="https://static.gamedistribution.com/terms/developer.html">developer agreement</a> (33% of net revenue, paid once you clear EUR 100).</p>
<h2>Self-publish first: <a href="http://itch.io">itch.io</a></h2>
<p>For most indies, <a href="http://itch.io">itch.io</a> is the default starting point. You upload an HTML5 build (a ZIP with <code>index.html</code>), it embeds in an iframe, and you're live in minutes with no approval gate. You set the revenue split (the default gives you 90%), and you can charge, take donations, or go free. The catch is that itch doesn't bring much sustained traffic on its own. You drive players to it. That's covered in our <a href="/guides/get-more-plays-itch-io">how to get more plays on itch.io</a> guide, and the basics in the <a href="/guides/itch-io-launch-guide">itch.io launch guide</a>.</p>
<h2>The big portals: CrazyGames and Poki</h2>
<p>If you want a built-in audience of tens of millions, the casual portals are where it is, but they're selective.</p>
<ul>
<li><strong>CrazyGames</strong> (<a href="https://docs.crazygames.com/faq/">50M+ monthly players</a> per its developer FAQ) accepts HTML5/WebGL games. A basic listing needs little, but a full launch with monetization requires their SDK and passing QA, including working with ad blockers and landing straight into gameplay. Payouts are monthly once your balance clears €100.</li>
<li><strong>Poki</strong> (<a href="https://developers.poki.com/guide/working-with-poki">100M+ monthly players</a>, 1B+ gameplays a month) is the most rigorous: a multi-stage pipeline with playtesting, judging games on quality, player fit, and technical soundness. Its SDK is mandatory, and on a web-exclusive deal the revenue split hinges on who brings the player (100% when you do, 50% when Poki does). Non-exclusive placements are a flat license fee instead.</li>
</ul>
<p>These suit polished, highly optimized casual games, and going through their process is real work.</p>
<h2>Community platforms: Newgrounds, GameJolt, gd.games</h2>
<ul>
<li><strong>Newgrounds</strong> is community-first, with a portal-voting system and ad revenue sharing. Great for free browser games and the art/animation crowd.</li>
<li><strong>GameJolt</strong> caps its marketplace cut at 10% and is built around following and fanbase-building.</li>
<li><strong>gd.games</strong> gives GDevelop users free hosting with session-based ad earnings and one-click publishing from the editor.</li>
</ul>
<h2>Distribution networks: GameDistribution, GameMonetize</h2>
<p>These syndicate one HTML5 upload across many partner sites for passive reach, in exchange for a bigger cut and a mandatory SDK. GameDistribution takes a larger share (its <a href="https://static.gamedistribution.com/terms/developer.html">developer agreement</a> sets your share at 33% of net revenue, paid within 60 days of the monthly report once you pass EUR 100). GameMonetize offers a higher split and fast, low-threshold payouts. Good for casual, puzzle, and .io games where volume matters more than the split.</p>
<h2>Don't forget self-hosting</h2>
<p>An HTML5 game is just static files, so you can host it free on GitHub Pages, Cloudflare Pages, Netlify, or Vercel, on your own domain, taking no revenue cut and keeping full control of SEO and analytics. The downside is zero built-in audience. A common approach: self-host the canonical version for your own brand and SEO, and also publish on <a href="http://itch.io">itch.io</a> and a portal or two for reach. If your game was built in a creator like Cinevva, you can also share it instantly by link and submit it to the showcase.</p>
<h2>How to choose</h2>
<p>Match the platform to your goal. Want maximum freedom and the best split? <a href="http://itch.io">itch.io</a> plus self-hosting. Want the biggest audience and you've got a polished casual game? Poki or CrazyGames. Want an upfront payment for a finished quality game? Pitch Armor Games. Want passive syndicated reach? A distribution network. Want to play with friends inside a chat app? <a href="/guides/publish-game-discord-activities">Discord Activities</a> take the same web build. And if China is on your map, mini games on WeChat and Douyin are a separate track with their own SDKs and approval, covered in our <a href="/guides/publish-wechat-douyin-mini-games">WeChat and Douyin mini-game guide</a> and the <a href="/guides/china-mini-game-platforms">China mini-game platforms overview</a>. Most indies publish in several places at once: <a href="http://itch.io">itch.io</a> as home base, a portal for reach, and their own link for control.</p>
<h2>Common Questions</h2>
<h3>Where should I publish my HTML5 game?</h3>
<p>Start with <a href="http://itch.io">itch.io</a>: it's instant, free, gives you the best revenue split, and lets you charge or go free. For a bigger audience, submit polished casual games to CrazyGames or Poki (both have selective reviews and mandatory SDKs). Most developers publish in multiple places: <a href="http://itch.io">itch.io</a> plus a portal plus their own self-hosted link.</p>
<h3>Which web game platform pays the most?</h3>
<p>It depends on traffic and model. <a href="http://itch.io">itch.io</a> gives the best split (you keep 90%+ by default) but you bring the audience. Poki and CrazyGames have huge built-in audiences but share ad revenue on their terms. Armor Games pays an upfront sponsorship fee for quality games. There's no single best; high split with low traffic can earn less than a smaller split with millions of players.</p>
<h3>Do I need an SDK to publish a web game?</h3>
<p>On <a href="http://itch.io">itch.io</a>, Newgrounds, and GameJolt, no, you just upload. On the big portals (Poki, CrazyGames) and distribution networks (GameDistribution, GameMonetize), an SDK is required for monetization and full launch. The SDK handles ads and platform features. Factor that integration work in when choosing where to publish.</p>
<h3>Can I publish the same web game on multiple platforms?</h3>
<p>Usually yes, unless you agree to an exclusive deal (Poki's revenue-share track, for example, is tied to web exclusivity, while its non-exclusive track is a flat fee, per its <a href="https://developers.poki.com/guide/revenue-deal-types">partnership page</a>). Self-hosting plus <a href="http://itch.io">itch.io</a> plus a non-exclusive portal is a common combination. Read each platform's terms, since exclusivity and revenue share are often linked.</p>
<h3>What are the best platforms to self-publish a game in 2026?</h3>
<p>For a web game, our ranked short list as of September 2026 is: <a href="/guides/itch-io-launch-guide">itch.io</a> first, because it's instant, free, and lets you set the platform's cut yourself. <a href="/guides/publish-game-crazygames">CrazyGames</a> second for the biggest reachable audience (50M+ monthly players) on an ad revenue share. <a href="/guides/publish-game-poki">Poki</a> third, with a similar audience but a stricter bar and exclusivity attached to its revenue share. <a href="/guides/publish-game-discord-activities">Discord Activities</a> fourth if your game is social, since it reuses the same web build and sells items through Discord. Then Newgrounds for a community that still votes on games, GameDistribution for passive syndication, and for China the <a href="/guides/publish-wechat-douyin-mini-games">WeChat and Douyin mini-game</a> track. If you also want a downloadable release, Steam's <a href="https://partner.steamgames.com/doc/gettingstarted/appfee">Direct fee</a> is $100 per game, recouped once the game earns $1,000, which makes it the obvious add-on rather than a replacement for a web launch.</p>
<p><BuildCta
  title="Need a game to publish?"
  desc="Build one in the browser and share it with a single link."
  prompt="Make a simple arcade game I can publish and share with a link" /></p>
<h2>Related</h2>
<ul>
<li><a href="/guides/publish-game-poki">How to Get Your Game on Poki</a>: the submission funnel and revenue split, in depth</li>
<li><a href="/guides/publish-game-crazygames">CrazyGames Developer Guide</a>: the portal, the SDK, and the payouts, in depth</li>
<li><a href="/guides/publish-game-discord-activities">How to Publish a Game on Discord Activities</a>: shipping a web game inside Discord</li>
<li><a href="/guides/publish-wechat-douyin-mini-games">Publish WeChat and Douyin Mini Games</a>: the China mini-game track</li>
<li><a href="/guides/china-mini-game-platforms">China Mini-Game Platforms</a>: WeChat, Douyin, and the rest compared</li>
<li><a href="/guides/web-game-monetization">Web Game Monetization: What the Data Actually Says</a>: what each platform pays, sourced</li>
<li><a href="/guides/itch-io-launch-guide">How to Launch Your Game on itch.io</a>: the step-by-step</li>
<li><a href="/guides/get-more-plays-itch-io">How to Get More Plays on itch.io</a>: driving traffic once you're live</li>
<li><a href="/guides/promote-indie-game-no-budget">How to Promote an Indie Game With No Budget</a>: marketing on $0</li>
<li><a href="/guides/steam-next-fest-strategy">Steam Next Fest Strategy</a>: if you also go to Steam</li>
<li><a href="/guides/web-game-engines-comparison">Best Web Game Engines for 2026</a>: building the game first</li>
</ul>
<style scoped>
.video-embed { position: relative; width: 100%; max-width: 720px; margin: 1.5rem 0; }
.video-embed iframe { width: 100%; aspect-ratio: 16/9; border-radius: 8px; }
.video-caption { font-size: 0.9rem; color: var(--vp-c-text-2); margin: 0.5rem 0 1.5rem; max-width: 720px; }
</style>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Sketchfab vs Poly Haven vs Kenney: Free 3D Assets Compared (2026)]]></title>
            <link>https://app.cinevva.com/guides/sketchfab-polyhaven-kenney</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/sketchfab-polyhaven-kenney</guid>
            <pubDate>Tue, 23 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Sketchfab vs Poly Haven vs Kenney compared for free game assets in 2026, on license, style, variety, formats, and which to use for which kind of game.]]></description>
            <content:encoded><![CDATA[<h1>Sketchfab vs Poly Haven vs Kenney: Free 3D Assets Compared (2026)</h1>
<p><em>Last updated: September 2026.</em></p>
<p>Three names come up constantly when you're after free 3D assets: Sketchfab, Poly Haven, and Kenney. They're not really competitors, they're good at different things. Sketchfab is a millions-strong mixed-license library you filter per model, Poly Haven is 2,300-plus photorealistic models, textures, and HDRIs that are all CC0, and Kenney is more than 60,000 stylized, game-ready assets that are all CC0 too. Here's how they compare in 2026, including Sketchfab's August 2026 change of owner, and when to reach for each.</p>
<div class="video-embed">
<iframe src="https://www.youtube.com/embed/8aGqyS7IQVA" title="Top Websites for Free 3D Models" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<div class="video-caption">A roundup of free 3D model sources, including the three compared here.</div>
<h2>At a glance</h2>
<table>
<thead>
<tr>
<th></th>
<th>Sketchfab</th>
<th>Poly Haven</th>
<th>Kenney</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Best for</strong></td>
<td>Variety, complex/detailed models</td>
<td>Photorealistic models, textures, HDRIs</td>
<td>Game-ready, stylized, consistent style</td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>Mixed (check each)</td>
<td>CC0 (all)</td>
<td>CC0 (all)</td>
</tr>
<tr>
<td><strong>Attribution</strong></td>
<td>Depends on model</td>
<td>None</td>
<td>None</td>
</tr>
<tr>
<td><strong>Catalog</strong></td>
<td>Millions</td>
<td>2,300+ (520+ models, 850+ textures, 990+ HDRIs)</td>
<td>60,000+ across 200+ packs</td>
</tr>
<tr>
<td><strong>Style</strong></td>
<td>Everything</td>
<td>Realistic</td>
<td>Cohesive low-poly / clean</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>glTF, FBX, OBJ</td>
<td>glTF, Blend, FBX</td>
<td>GLB, PNG, WAV, more</td>
</tr>
<tr>
<td><strong>Direct download / API</strong></td>
<td>Login required</td>
<td>Yes, no-key API</td>
<td>Yes (packs)</td>
</tr>
</tbody>
</table>
<h2>Kenney: cohesive and game-ready</h2>
<p>Kenney is the fastest way to a coherent-looking game. More than 60,000 assets (Kenney's own count on the <a href="https://kenney.itch.io/kenney-game-assets">All-in-1 bundle</a>), all CC0 (no attribution, commercial OK, per the <a href="https://kenney.nl/support">Kenney support page</a>), in consistent styles you can mix and match across packs, all optimized for games. The trade-off is range: it's stylized and clean rather than photorealistic, and you won't find one specific hyper-detailed prop. Use Kenney when you want your whole game to look like it belongs together, fast, with zero licensing thought.</p>
<h2>Poly Haven: photorealistic and CC0</h2>
<p>Poly Haven is the realism specialist: PBR-textured 3D models, high-resolution textures, and HDRIs for lighting, all CC0, with multiple resolutions and a no-key API for direct downloads. Over 2,300 assets and growing as of September 2026: the <a href="https://api.polyhaven.com/assets?t=hdris">public API</a> lists 521 models, 856 texture sets, and 993 HDRIs. The catalog is smaller and more focused (props, environment pieces, materials, lighting) rather than a sprawling marketplace. Use Poly Haven when you want realistic materials, environment dressing, and proper HDRI lighting without any attribution, and start with our <a href="/game-assets/free-hdri-skies">free HDRI skies</a> page if lighting is what you're after.</p>
<h2>Sketchfab: variety, with a license to check</h2>
<p>Sketchfab is the giant: millions of models, a 3D preview before download, and an enormous range of styles and subjects. The catch is that licenses vary per model, so you must filter for downloadable plus CC0 or CC-BY and verify each one. Two 2026 caveats. Sketchfab's store moved to Epic's Fab, and only CC-BY and Fab Standard content could migrate, so CC0 and the other Creative Commons models stayed on Sketchfab. Then on August 10, 2026 Epic <a href="https://www.epicgames.com/site/news/kitbash-acquires-artstation-and-sketchfab">sold Sketchfab and ArtStation to KitBash</a>, the KitBash3D and Greyscalegorilla company, which says there are no immediate changes to how creators access or use either site. As of September 2026 the free downloads and the download API still work (we checked the API this month), and Epic's earlier plan to remove free licensing from Sketchfab hasn't happened. Treat it as a source whose future is being decided by a new owner, and grab what you need. Use Sketchfab when you need a specific or unusual model the others don't have, and you're willing to check the license.</p>
<h2>Which should you use?</h2>
<ul>
<li><strong>Whole-game cohesion, fast, no attribution:</strong> Kenney.</li>
<li><strong>Realistic props, materials, and lighting, CC0:</strong> Poly Haven.</li>
<li><strong>A specific or unusual model, widest selection:</strong> Sketchfab (check the license).</li>
</ul>
<p>In practice, many developers use all three: Kenney for the base set and UI, Poly Haven for realistic textures and HDRIs, and Sketchfab for the one-off hero asset. Mixing realistic Poly Haven materials onto stylized Kenney models can clash, so decide your art direction first, then pick sources that match it.</p>
<h2>Beyond the big three</h2>
<p>These aren't your only options. Quaternius is another superb CC0 source for stylized low-poly, AmbientCG specializes in CC0 textures, and Poly Pizza hosts the archived Google Poly catalog. Whichever source you pull from, it's worth opening the file in a <a href="/tools/glb-viewer">browser model inspector</a> first to see the real triangle count, materials, and texture sizes you're committing to. You can also skip searching entirely and generate what you need: our <a href="/guides/ai-3d-model-generators">best AI 3D model generators</a> guide covers the text-to-3D and image-to-3D tools and what each one lets you ship commercially, and Cinevva's own <a href="/tools/hunyuan3d#prompt=a%20weathered%20wooden%20rowing%20boat">3D Model Generator</a> turns a prompt into a GLB in about a minute. For the full picture, see our <a href="/guides/free-3d-model-sites">free 3D model sites</a> and <a href="/guides/game-assets-guide">free game assets</a> guides.</p>
<h2>Common Questions</h2>
<h3>Is Sketchfab, Poly Haven, or Kenney best for free 3D models?</h3>
<p>They're best at different things. Kenney is best for cohesive, game-ready stylized assets, all CC0. Poly Haven is best for photorealistic models, textures, and HDRIs, all CC0. Sketchfab is best for variety and specific or detailed models, but its licenses vary so you must check each one. Many developers use all three together.</p>
<h3>Are Poly Haven and Kenney really free for commercial games?</h3>
<p>Yes. Both are entirely CC0, meaning every asset is public domain: free for commercial use, modifiable, with no attribution required. That makes them the two lowest-risk sources of the three. Sketchfab, by contrast, has mixed per-model licenses you must verify before commercial use.</p>
<h3>Do I have to credit assets from these sites?</h3>
<p>Not for Kenney or Poly Haven, since everything is CC0. For Sketchfab it depends on the individual model's license: CC0 needs no credit, CC-BY requires attribution, and some models can't be used commercially at all. Always check the license on each Sketchfab model before shipping.</p>
<h3>Can I mix assets from all three in one game?</h3>
<p>Technically yes, and the licenses allow it, but watch your art direction. Kenney's stylized look and Poly Haven's photorealistic materials can clash if combined carelessly. Decide on a visual style first, then pull matching assets, using Sketchfab for specific pieces the CC0 sources lack.</p>
<h3>Who owns Sketchfab now, and do free downloads still work?</h3>
<p>KitBash, the company behind KitBash3D and Greyscalegorilla, bought Sketchfab and ArtStation from Epic Games on August 10, 2026. KitBash has said there are no immediate changes to how creators access or use the sites, and as of September 2026 Sketchfab's free Creative Commons downloads and its download API both still work. Epic's 2024 plan to phase free licensing off Sketchfab hasn't been carried out, but nobody has promised the free library stays forever either, so download what you need.</p>
<h3>How many assets do Poly Haven and Kenney have?</h3>
<p>As of September 2026 Poly Haven's public API lists 2,370 assets: 521 models, 856 PBR texture sets, and 993 HDRIs, every one CC0. Kenney's All-in-1 bundle listing counts more than 60,000 individual assets across 200-plus packs, spanning 3D models, sprites, UI, and audio, also all CC0. Sketchfab doesn't publish a live total, but the library runs to millions of models, of which only the downloadable CC0 and CC-BY subset matters for a game.</p>
<p><BuildCta
  title="Get Kenney-style props placed into a game for you"
  desc="Cinevva bakes thousands of Kenney and Quaternius CC0 props right into its editor."
  prompt="Build a low poly city block with parks, cars, and places to explore" /></p>
<h2>Related</h2>
<ul>
<li><a href="/guides/free-3d-model-sites">Best Free 3D Model Sites for Games</a>: the wider field</li>
<li><a href="/guides/game-assets-guide">Where to Find Free Game Assets</a>: 20+ sources, all types</li>
<li><a href="/guides/ai-asset-generators-games">Best AI Asset Generators for Games</a>: generate instead</li>
<li><a href="/guides/game-asset-licenses">Game Asset Licenses Explained</a>: CC0, CC-BY, and the rest</li>
<li><a href="/guides/free-sound-effects-music">Free Sound Effects and Music for Games</a>: the audio side</li>
<li><a href="/game-assets/free-hdri-skies">Free HDRI skies</a> and <a href="/game-assets/free-3d-character-models">free 3D character models</a>: the Poly Haven and Kenney picks, one category at a time</li>
</ul>
<style scoped>
.video-embed { position: relative; width: 100%; max-width: 720px; margin: 1.5rem 0; }
.video-embed iframe { width: 100%; aspect-ratio: 16/9; border-radius: 8px; }
.video-caption { font-size: 0.9rem; color: var(--vp-c-text-2); margin: 0.5rem 0 1.5rem; max-width: 720px; }
</style>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Unity WebGL vs Godot vs PlayCanvas for Web 3D (2026)]]></title>
            <link>https://app.cinevva.com/guides/unity-godot-playcanvas-web</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/unity-godot-playcanvas-web</guid>
            <pubDate>Tue, 23 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Unity WebGL vs Godot web export vs PlayCanvas in 2026, compared on build size, load time, WebGPU, workflow, and cost, to pick the right 3D engine for the browser.]]></description>
            <content:encoded><![CDATA[<h1>Unity WebGL vs Godot vs PlayCanvas for Web 3D (2026)</h1>
<p><em>Last updated: July 2026.</em></p>
<p>If you want a 3D game that runs in the browser, three engines come up most: Unity, Godot, and PlayCanvas. They take very different routes to the web. Unity is a desktop powerhouse that exports to WebGL, Godot is a free open-source all-rounder, and PlayCanvas is built for the web from the ground up. Here's how they compare in 2026 for browser 3D specifically.</p>
<div class="video-embed">
<iframe src="https://www.youtube.com/embed/MiejI68zyCk" title="PlayCanvas - The Best 3D Game Engine for Web? — GameFromScratch" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<div class="video-caption">GameFromScratch on PlayCanvas as a web-first 3D engine.</div>
<h2>Quick verdict</h2>
<ul>
<li><strong>Web-first 3D, smallest builds, best WebGPU:</strong> PlayCanvas.</li>
<li><strong>Free, open-source, both 2D and 3D, one codebase for web and native:</strong> Godot.</li>
<li><strong>You already have a Unity project, or need console and high-end native too:</strong> Unity, accepting a larger web download.</li>
</ul>
<h2>Comparison</h2>
<table>
<thead>
<tr>
<th></th>
<th>Unity (WebGL)</th>
<th>Godot (4.7)</th>
<th>PlayCanvas</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Web target</strong></td>
<td>WebGL2 export</td>
<td>WebGL2 + Wasm (wasm64 in 4.7)</td>
<td>WebGL2 + WebGPU</td>
</tr>
<tr>
<td><strong>Empty build size</strong></td>
<td>~8 MB+</td>
<td>~9 MB gzipped</td>
<td>~1-2 MB</td>
</tr>
<tr>
<td><strong>Load time</strong></td>
<td>Slowest of the three</td>
<td>Moderate</td>
<td>Fastest</td>
</tr>
<tr>
<td><strong>WebGPU</strong></td>
<td>Experimental</td>
<td>Not supported on web</td>
<td>Most mature</td>
</tr>
<tr>
<td><strong>2D / 3D</strong></td>
<td>Both</td>
<td>Both (strong 2D + 3D)</td>
<td>3D-first</td>
</tr>
<tr>
<td><strong>Editor</strong></td>
<td>Desktop</td>
<td>Desktop (lightweight)</td>
<td>Cloud, collaborative</td>
</tr>
<tr>
<td><strong>Language</strong></td>
<td>C# (compiles to WebAssembly for web export)</td>
<td>GDScript (C# can't export to web)</td>
<td>JavaScript / TypeScript</td>
</tr>
<tr>
<td><strong>Cost</strong></td>
<td>Free under $200K rev; Pro $2,310/seat/yr</td>
<td>Free (MIT)</td>
<td>Free tier; cloud editor paid</td>
</tr>
</tbody>
</table>
<h2>Unity (WebGL)</h2>
<p>Unity exports playable WebGL builds, and its ecosystem (Asset Store, tooling, docs) is unmatched. The catch for web specifically: empty builds start around 8 MB, load times trail web-native engines, and mobile browser memory can be tight. WebGPU exists but is experimental and off by default; WebGL2 is the real target. A practical gotcha is that Unity is the heaviest option to put in a browser, so it shines when web is a secondary target for a game that also ships to desktop, mobile, or console. Unity also replaced its Muse AI tool with Unity AI (open beta, 2026) if you want in-editor AI help.</p>
<h2>Godot (4.7)</h2>
<p>Godot is free and open-source under the MIT license with no revenue caps or seat fees, and it handles both 2D and 3D well. Version 4.7 (June 2026) ships WebAssembly SIMD by default and added a wasm64 export option that lifts the old 4 GB memory ceiling. Web rendering is still WebGL 2.0 only through the Compatibility renderer, since Godot doesn't support WebGPU yet. Two web caveats remain: C# projects can't export to the web (GDScript only), and SharedArrayBuffer threading needs specific COOP/COEP server headers, which can trip up some hosts. For an indie who wants one engine across web and native without licensing worries, Godot is the strong free pick.</p>
<h2>PlayCanvas</h2>
<p>PlayCanvas was designed for the web from day one. Its runtime is tiny (~1-2 MB), it loads fastest of the three, and it has the most production-ready WebGPU renderer of any web engine, including compute-based 3D Gaussian splat rendering as of v2.20 (June 2026). The editor is cloud-based and collaborative, which suits teams but won't fit everyone's workflow. It's 3D-first and less suited to complex 2D. If download size and web performance are your priorities, PlayCanvas is purpose-built for exactly that.</p>
<h2>How to choose</h2>
<p>Pick by your real constraint. If you need the smallest, fastest-loading 3D web build and good WebGPU, choose PlayCanvas. If you want a free, open engine that does 2D and 3D and also exports to desktop and mobile from one codebase, choose Godot. If your game already lives in Unity or genuinely needs Unity's high-end rendering and console export, ship the WebGL build and accept the larger download.</p>
<p>If you'd rather skip the engine entirely and describe a 3D web game to an AI, that's a different path, covered in <a href="/guides/3d-browser-game-without-coding">how to make a 3D browser game without coding</a>.</p>
<h2>Common Questions</h2>
<h3>What is the best engine for 3D browser games?</h3>
<p>PlayCanvas is the strongest web-first pick in 2026: tiny runtime, fastest load, and the most mature WebGPU renderer. Godot is the best free, open-source option and also exports to native. Unity is best only if your game already uses it or needs its high-end features, since its web builds are the largest. The best choice depends on build size, whether you need native export, and your budget.</p>
<h3>Can Unity and Godot export C# games to the web?</h3>
<p>This is a common gotcha: Godot cannot export C# projects to the web at all (GDScript only). Unity's web export uses C#, but it compiles to WebGL via Wasm, and the resulting builds are large (~8 MB+ empty). PlayCanvas uses JavaScript or TypeScript natively, which is part of why its web builds are so small.</p>
<h3>Which loads fastest in the browser?</h3>
<p>PlayCanvas, by a wide margin, thanks to its ~1-2 MB runtime built specifically for the web. Godot's empty builds are around 9 MB gzipped, and Unity's start around 8 MB and up. For web games, total download size strongly affects how many players actually wait for it to load, so it's a real selection factor, not a detail.</p>
<h3>Do these engines support WebGPU?</h3>
<p>PlayCanvas has the most mature WebGPU renderer. Godot's web export is still WebGL2 only, with no WebGPU support yet. Unity keeps WebGPU experimental, defaulting to WebGL2. For a deeper look at the trade-off, see our <a href="/guides/webgpu-vs-webgl-games">WebGPU vs WebGL guide</a>.</p>
<p><BuildCta
  title="Compare engines later, play your idea now"
  desc="A playable prototype makes the engine choice obvious."
  prompt="Make a browser FPS with low poly graphics" /></p>
<h2>Related</h2>
<ul>
<li><a href="/guides/web-game-engines-comparison">Best Web Game Engines for 2026</a> — the full field of 11 engines</li>
<li><a href="/guides/webgpu-vs-webgl-games">WebGPU vs WebGL for Games</a> — the rendering API trade-off</li>
<li><a href="/guides/playcanvas-vs-threejs">PlayCanvas vs Three.js</a> — engine vs library for web 3D</li>
<li><a href="/guides/godot-vs-unity-web-games">Godot vs Unity for Web Games</a> — the two big full engines head to head</li>
</ul>
<style scoped>
.video-embed { position: relative; width: 100%; max-width: 720px; margin: 1.5rem 0; }
.video-embed iframe { width: 100%; aspect-ratio: 16/9; border-radius: 8px; }
.video-caption { font-size: 0.9rem; color: var(--vp-c-text-2); margin: 0.5rem 0 1.5rem; max-width: 720px; }
</style>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Vibe Coding Games: What It Is and How to Start (2026)]]></title>
            <link>https://app.cinevva.com/guides/vibe-coding-games</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/vibe-coding-games</guid>
            <pubDate>Tue, 23 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[What vibe coding means, where the term came from, and how to vibe-code a game in 2026, with the workflow, the tools, the real success stories, and the pitfalls to avoid.]]></description>
            <content:encoded><![CDATA[<h1>Vibe Coding Games: What It Is and How to Start (2026)</h1>
<p><em>Last updated: September 2026.</em></p>
<p>&quot;Vibe coding&quot; went from a tweet to the Collins Dictionary Word of the Year in under a year. For games, it's one of the most fun ways to build right now: you describe what you want, the AI writes it, and you steer by feel instead of by syntax. Here's what the term actually means, how to vibe code a game step by step, what vibe coding game development looks like in practice as of September 2026, and where it works and where it bites.</p>
<h2>Where the term came from</h2>
<p>The phrase comes from Andrej Karpathy, a co-founding member of OpenAI, in a February 2025 post. He described &quot;a new kind of coding where you fully give in to the vibes, embrace exponentials, and forget that the code even exists,&quot; possible because AI coding models had gotten good enough that you could &quot;just see stuff, say stuff, run stuff, and copy-paste stuff, and it mostly works.&quot; He framed it for throwaway weekend projects, which is worth remembering.</p>
<p>The developer Simon Willison sharpened the definition: true vibe coding means building software with an LLM without reviewing the code it writes. If you read, test, and understand every line, you're using AI as a typing assistant, which is something different. By late 2025 the term had spread far enough that Collins named it Word of the Year.</p>
<p>For games, this maps cleanly: you describe a game, the AI builds it, you play it and ask for changes, and you mostly don't look at the code. That's vibe-coding a game.</p>
<h2>Why games are a great fit for it</h2>
<p>Games are visual and immediately testable, which is exactly the loop vibe coding rewards. You can see in two seconds whether the jump feels right or the enemy is too fast, so the &quot;say stuff, run stuff&quot; cycle is tight and satisfying. And the famous proof point is a game: in early 2025 the indie developer Pieter Levels vibe-coded a browser 3D flight simulator in a few hours using an AI code editor and Three.js, with no game-dev background, and it became a viral hit. (His revenue figures are self-reported, so take the dollar amounts with a grain of salt, but the build itself is real and well-documented.)</p>
<h2>Two ways to vibe-code a game</h2>
<p>There are two flavors, depending on how much you want to touch.</p>
<p><strong>General AI coding tools.</strong> Cursor, Claude Code, OpenAI Codex, and GitHub Copilot let you build a game the way Karpathy described: prompt an AI coding agent, usually with a web framework like Three.js, and iterate. All four run as agents now, editing many files and running your code, and the models under them turned over again in 2026: Anthropic's <a href="https://www.anthropic.com/claude-fable-and-mythos-5-1">Claude Fable 5.1, Opus 5, and Sonnet 5</a>, OpenAI's <a href="https://developers.openai.com/api/docs/models/gpt-6-astra">GPT-6 Astra</a>, and Google's Gemini 3.8 Flash (GA September 2, 2026 per the <a href="https://ai.google.dev/gemini-api/docs/changelog">Gemini API changelog</a>) are the current names as of September 2026. You don't have to read the code, but the project is a real codebase you can take anywhere. This is the most flexible route and the most powerful, with the most rope to hang yourself.</p>
<p><strong>Game-specific prompt-to-game tools.</strong> Cinevva, Rosebud, Summer, SEELE, Replit, and Nilo wrap the whole loop into a purpose-built environment. You describe a game, it builds a playable one, and you refine by chatting, with assets generated for you. This is the easiest on-ramp and the fastest to a shareable result. Our <a href="/guides/ai-game-generators-2026">AI game generator comparison</a> breaks down which is which.</p>
<h2>How to vibe-code a game, step by step</h2>
<ol>
<li><strong>Pick a small idea.</strong> Vibe coding shines on weekend-size scope. Name a genre, one twist, and a goal.</li>
<li><strong>Write a one-sentence prompt.</strong> &quot;Make a neon snake game that speeds up as you grow.&quot; Let the tool build a first version (<a href="/create#prompt=Make%20a%20neon%20snake%20game%20that%20speeds%20up%20as%20you%20grow">build that exact prompt</a> if you want to follow along). You can <a href="/guides/vibe-coding-game-prompts">try a one-click prompt</a> to skip the blank page.</li>
<li><strong>Play, then ask for one change.</strong> &quot;Make it faster,&quot; &quot;add a score,&quot; &quot;the controls feel sticky, make them snappier.&quot; Change, play, repeat.</li>
<li><strong>Generate assets by asking.</strong> &quot;Give it a low-poly look,&quot; &quot;add upbeat music,&quot; &quot;use a desert skybox.&quot;</li>
<li><strong>Publish the link.</strong> Browser tools share in one click. Get it in front of people and let their reactions drive the next round.</li>
</ol>
<p>You can <a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_coding_games">start vibe-coding a 3D game free in your browser</a> right now if you want to learn by doing.</p>
<h2>The pitfalls (and how to dodge them)</h2>
<p>Vibe coding is powerful, but the honest picture from 2026 has real warning signs:</p>
<ul>
<li><strong>&quot;Almost right, but not quite.&quot;</strong> Two-thirds of developers cite this as their top AI frustration. The fix for games is small, specific requests and a willingness to revert when a change makes things worse.</li>
<li><strong>Security and quality debt.</strong> Studies in 2025 found a large share of AI-generated code samples introduced security flaws, and that duplicated, un-refactored code is rising. For a throwaway game this rarely matters. For anything that handles user data or money, review the code or have someone who can.</li>
<li><strong>It works until it doesn't.</strong> In one widely-reported incident, an AI coding agent deleted a production database during a code freeze. The lesson: keep backups, separate experiments from anything important, and don't point a vibe-coding agent at systems you can't afford to lose.</li>
</ul>
<p>Karpathy himself later called the original post &quot;a throwaway tweet&quot; and prefers more careful language for serious work. The takeaway isn't that vibe coding is bad, it's that it's brilliant for prototypes and small games and risky as your only method for things that need to be correct.</p>
<h2>Is vibe coding &quot;real&quot; game development?</h2>
<p>It's a real and useful way to build, especially for prototypes, jams, and small games, and it's how a lot of people are getting into games for the first time. It's not a replacement for understanding what you're building when the stakes are high. The most productive stance in 2026 is to vibe-code to explore and prototype fast, then slow down and understand the parts that have to be reliable. For most browser games, that line sits comfortably in your favor.</p>
<h2>Common Questions</h2>
<h3>What does vibe coding mean?</h3>
<p>Vibe coding is building software by describing what you want to an AI and letting it write the code, without reviewing the code yourself. The term was coined by Andrej Karpathy in February 2025 and named Collins Word of the Year in 2025. For games it means describing a game in plain language and refining it by chatting, instead of writing code.</p>
<h3>How do I start vibe coding a game?</h3>
<p>Pick a small idea, describe it in one sentence to a prompt-to-game tool or an AI code editor, play the first version, and ask for one change at a time. Browser-based AI game creators are the easiest starting point because they build a playable game and let you share it instantly with no setup.</p>
<h3>Is vibe coding good for making games?</h3>
<p>Yes, especially for prototypes and small or casual games, where the fast describe-play-refine loop is a great fit. It's weaker for large, complex, or correctness-critical projects, where unreviewed AI code can introduce bugs and security issues. Use it to move fast, and review the code for anything that has to be reliable.</p>
<h3>What tools do people use to vibe-code games?</h3>
<p>Two kinds. General AI coding tools like Cursor, Claude Code, OpenAI Codex, and GitHub Copilot (often with Three.js for the web), and game-specific prompt-to-game tools like Cinevva, Rosebud, Summer, SEELE, Replit, and Nilo. The game-specific tools are the easier on-ramp, and the coding tools are more flexible.</p>
<h3>How do I vibe code a game from scratch?</h3>
<p>Open a prompt-to-game tool or an AI coding agent, type one sentence that names the genre, one twist, and the goal, and let it build. Play what comes back, then ask for a single change at a time: faster movement, a score counter, a restart button. Add art and sound by describing them, not by hunting for files. When it feels like a game, publish the link. That's the entire method, and it works because games show you instantly whether the last change helped.</p>
<h3>What is vibe coding game development?</h3>
<p>Vibe coding game development is making a game by describing it to an AI and steering the result by playing it, instead of writing and reading the code yourself. It fits games unusually well because every change is testable in seconds, so the describe-play-adjust loop stays tight. It's the standard way beginners make their first games in 2026 and a fast prototyping mode for experienced developers, and it's a poor fit only for large or correctness-critical systems.</p>
<h3>Which AI models are best for vibe coding games in 2026?</h3>
<p>As of September 2026 the coding agents run on Anthropic's Claude Fable 5.1, Opus 5, and Sonnet 5, OpenAI's GPT-6 Astra, and Google's Gemini 3.8 Flash, and all of them handle a browser game well. The model matters less than the wrapper: a prompt-to-game tool that runs your game and feeds errors back to the model will beat a raw chat window on a stronger model. Pick the tool that fits your goal, then let it pick the model.</p>
<h2>Related</h2>
<ul>
<li><a href="/guides/ai-game-generators-2026">Best AI Game Generators in 2026</a>: the tools, compared</li>
<li><a href="/guides/make-a-game-with-ai">How to Make a Game with AI (No Coding)</a>: the step-by-step workflow</li>
<li><a href="/guides/3d-browser-game-without-coding">How to Make a 3D Browser Game Without Coding</a>: the 3D path</li>
<li><a href="/guides/vibe-coding-game-prompts">AI Game Prompts You Can Build in One Click</a>: prompts to start from</li>
<li><a href="/guides/how-to-write-a-game">How to Write a Game in Cinevva</a>: prompt patterns from a week of real sessions</li>
<li><a href="/guides/web-game-engines-comparison">Best Web Game Engines for 2026</a>: for building the traditional way</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[WebGPU vs WebGL for Games (2026)]]></title>
            <link>https://app.cinevva.com/guides/webgpu-vs-webgl-games</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/webgpu-vs-webgl-games</guid>
            <pubDate>Tue, 23 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[WebGPU vs WebGL for browser games in 2026 - what changed, where each one wins, browser support after Safari 26, and which engines use which.]]></description>
            <content:encoded><![CDATA[<h1>WebGPU vs WebGL for Games (2026)</h1>
<p><em>Last updated: September 2026.</em></p>
<p>For over a decade, WebGL was the only way to put real graphics in a browser. WebGPU is its successor, and 2026 is the year it actually became usable everywhere. If you're building a web game and wondering which to target, here's the honest comparison: what changed, where each wins, and what your engine already uses.</p>
<div class="video-embed">
<iframe src="https://www.youtube.com/embed/grj7uYdCna0" title="WebGL and WebGPU Updates at 3D on the Web 2025 — The Khronos Group" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<div class="video-caption">The Khronos Group on the state of WebGL and WebGPU, including compute shaders and the WebGPU renderers in Three.js and Babylon.js.</div>
<h2>The short version</h2>
<p>WebGL vs WebGPU comes down to reach against power. WebGL is a graphics API based on OpenGL ES, built for drawing. WebGPU is a modern API modeled on Vulkan, Metal, and Direct3D 12, built for both drawing and general GPU compute. WebGPU is faster for heavy scenes, unlocks compute shaders (particles, simulation, culling on the GPU), and has a cleaner API. WebGL is older, simpler, and supported on essentially every device that exists.</p>
<p>Not sure what your own browser supports? Run the <a href="/tools/webgl-webgpu-checker">WebGL test and WebGPU checker</a>. It takes a second, runs locally, and shows the GPU, the API each browser actually exposes, and the limits that matter for games.</p>
<h2>What changed in 2026</h2>
<p>The headline: WebGPU is finally cross-browser. Safari 26 (September 2025) shipped WebGPU across macOS, iPadOS, iOS, and visionOS, closing the last major holdout. Before that, &quot;just use WebGL because Safari and iOS don't support WebGPU&quot; was correct advice. It isn't anymore. Chrome and Firefox already had it, so as of 2026 WebGPU runs on all the major browsers.</p>
<p>That doesn't mean WebGPU is the default everywhere. In most engines it's still opt-in or experimental (more on that below), and WebGL2 remains the safe baseline. But the browser-support wall that was blocking WebGPU adoption is gone.</p>
<h2>Head to head</h2>
<table>
<thead>
<tr>
<th></th>
<th>WebGL (2.0)</th>
<th>WebGPU</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Based on</strong></td>
<td>OpenGL ES 3.0</td>
<td>Vulkan / Metal / D3D12</td>
</tr>
<tr>
<td><strong>Released</strong></td>
<td>2017 (WebGL 1: 2011)</td>
<td>2023, broad browser support 2025-2026</td>
</tr>
<tr>
<td><strong>Compute shaders</strong></td>
<td>No</td>
<td>Yes</td>
</tr>
<tr>
<td><strong>CPU overhead</strong></td>
<td>Higher (per-draw-call cost)</td>
<td>Lower (command buffers, less driver chatter)</td>
</tr>
<tr>
<td><strong>Best at</strong></td>
<td>Compatibility, simple-to-mid scenes</td>
<td>Heavy scenes, many objects, GPU compute</td>
</tr>
<tr>
<td><strong>Browser support</strong></td>
<td>Universal</td>
<td>Chrome, Firefox, Safari 26+, all major mobile</td>
</tr>
<tr>
<td><strong>Shading language</strong></td>
<td>GLSL</td>
<td>WGSL</td>
</tr>
<tr>
<td><strong>API ergonomics</strong></td>
<td>Older, more global state</td>
<td>Modern, explicit, more verbose</td>
</tr>
</tbody>
</table>
<h2>When WebGPU wins</h2>
<ul>
<li><strong>Lots of objects or draw calls.</strong> WebGPU's lower CPU overhead and features like multi-draw mean it holds frame rate where WebGL starts to choke on draw-call count.</li>
<li><strong>GPU compute.</strong> Particle systems, physics, culling, procedural generation, and 3D Gaussian splatting can run on the GPU via compute shaders. WebGL simply can't do this.</li>
<li><strong>Future-proofing.</strong> WebGPU is where the platform is heading; new engine features increasingly land there first.</li>
</ul>
<h2>When WebGL is still the right call</h2>
<ul>
<li><strong>Maximum reach on old or low-end devices.</strong> WebGL2 runs on hardware and browser versions that may not have a working WebGPU path yet.</li>
<li><strong>Simple 2D and light 3D.</strong> If your game isn't pushing the GPU, WebGL is plenty and avoids any edge cases in newer drivers.</li>
<li><strong>You want the absolute safest baseline today.</strong> Shipping WebGL2 with no fallback logic is still the lowest-risk option for a broad audience.</li>
</ul>
<p>The pragmatic 2026 answer for most games: build on an engine that supports both and uses WebGPU where available with an automatic WebGL2 fallback. You get the speed where it exists and the compatibility where it doesn't, without writing two renderers.</p>
<h2>What your engine already uses</h2>
<p>From our <a href="/guides/web-game-engines-comparison">web game engines comparison</a>, here's where the major web engines stand on WebGPU in 2026:</p>
<ul>
<li><strong>PlayCanvas</strong> has the most production-ready WebGPU renderer of the web engines, including compute-based Gaussian splat rendering.</li>
<li><strong>Three.js</strong> ships a zero-config WebGPU renderer (<code>three/webgpu</code>) with automatic WebGL2 fallback, though the default export is still WebGL.</li>
<li><strong>Babylon.js</strong> supports WebGPU (opt into <code>WebGPUEngine</code>); version 8 halved the WebGPU build size, and Babylon.js 9.0 (March 2026) pushed further with clustered lighting on both backends and volumetric lighting built on WebGPU compute shaders.</li>
<li><strong>Godot</strong> doesn't support WebGPU yet. Web export in 4.7 is still WebGL2 only, though wasm64 builds now lift the old 4 GB memory ceiling.</li>
<li><strong>Cocos Creator</strong> has experimental WebGPU via its new render pipeline.</li>
<li><strong>Unity</strong> keeps WebGPU experimental and WebGL2 as the default web target.</li>
<li><strong>Phaser 4</strong> is a WebGL2 rewrite with no WebGPU yet; <strong>PixiJS</strong> supports WebGPU but defaults to WebGL.</li>
</ul>
<p>So in practice, the engine usually makes the WebGPU-or-WebGL decision for you, and the good ones fall back automatically.</p>
<h2>Browser support snapshot (2026)</h2>
<table>
<thead>
<tr>
<th>Feature</th>
<th>Chrome</th>
<th>Firefox</th>
<th>Safari</th>
<th>Mobile</th>
</tr>
</thead>
<tbody>
<tr>
<td>WebGL 2.0</td>
<td>✅</td>
<td>✅</td>
<td>✅</td>
<td>✅</td>
</tr>
<tr>
<td>WebGPU</td>
<td>✅</td>
<td>✅</td>
<td>✅ Safari 26+</td>
<td>✅ iOS/iPadOS 26+</td>
</tr>
</tbody>
</table>
<p>Always test on Safari/iOS if you target a broad audience, and keep a WebGL2 fallback for the long tail of older devices.</p>
<h2>Common Questions</h2>
<h3>Is WebGPU better than WebGL for games?</h3>
<p>For demanding games, yes: WebGPU has lower CPU overhead, handles more objects, and adds compute shaders for effects WebGL can't do. For simple 2D or light 3D, WebGL2 is still plenty and has wider support on old devices. The best approach in 2026 is an engine that uses WebGPU where available and falls back to WebGL2 automatically.</p>
<h3>Does WebGPU work on Safari and iOS in 2026?</h3>
<p>Yes. Safari 26, released September 2025, added WebGPU on macOS, iPadOS, iOS, and visionOS. That closed the last major gap, so WebGPU now works across Chrome, Firefox, and Safari, including on mobile. Older devices and browser versions may still lack it, so keep a WebGL2 fallback.</p>
<h3>Should I learn WebGPU or WebGL first?</h3>
<p>If you're using a game engine, you usually don't write either directly, the engine handles it. If you're writing graphics code by hand, WebGPU is the more future-proof API to learn, but WebGL has more tutorials and examples today. Many developers still start with WebGL or a library like Three.js, which now offers a WebGPU renderer when you're ready.</p>
<h3>Will WebGPU replace WebGL?</h3>
<p>Eventually, most new development will target WebGPU, but WebGL won't disappear soon. It remains the universal baseline for old hardware and is deeply embedded in existing tools and content. Expect a long overlap where engines support both and choose at runtime.</p>
<p><BuildCta
  title="Test your GPU with something playable"
  desc="One prompt gets you a game that pushes real pixels in your browser."
  prompt="Make a particle-heavy space shooter with lots of explosions" /></p>
<h2>Related</h2>
<ul>
<li><a href="/guides/web-game-engines-comparison">Best Web Game Engines for 2026</a> — the full field, with WebGPU status per engine</li>
<li><a href="/guides/web-games-stack-2026">Web Games Tech Stack in 2026</a> — WebGL, WebGPU, and Wasm at the API level</li>
<li><a href="/guides/unity-godot-playcanvas-web">Unity WebGL vs Godot vs PlayCanvas</a> — the three big 3D web engines</li>
<li><a href="/guides/playcanvas-vs-threejs">PlayCanvas vs Three.js</a> — engine vs library for web 3D</li>
</ul>
<style scoped>
.video-embed { position: relative; width: 100%; max-width: 720px; margin: 1.5rem 0; }
.video-embed iframe { width: 100%; aspect-ratio: 16/9; border-radius: 8px; }
.video-caption { font-size: 0.9rem; color: var(--vp-c-text-2); margin: 0.5rem 0 1.5rem; max-width: 720px; }
</style>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[100 AI Game Prompt Ideas (2026) You Can Build in One Click]]></title>
            <link>https://app.cinevva.com/guides/vibe-coding-game-prompts</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/vibe-coding-game-prompts</guid>
            <pubDate>Sat, 20 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[100 AI game prompt ideas for 2026, sorted by genre. Click any prompt and Cinevva builds a playable 3D game in your browser, free. Steal them, tweak them, or write your own.]]></description>
            <content:encoded><![CDATA[<h1>100 AI Game Prompt Ideas (2026) You Can Build in One Click</h1>
<p><em>Last updated: September 2026.</em></p>
<p>Vibe coding is the fastest way to make a game right now. You describe what you want in plain English and the AI builds it. No engine to install, no code to write, no asset store to dig through. The hardest part is often just thinking of an idea, so here are 100 of them.</p>
<p>Click any prompt below and Cinevva opens with that idea typed in and starts building a playable 3D game you can edit and share. They all run in your browser and they're all free to try. Steal them, change a word, or use them as a springboard for your own. New to this? Read <a href="/guides/vibe-coding-games">what vibe coding is</a> or the full <a href="/guides/make-a-game-with-ai">how to make a game with AI</a> walkthrough.</p>
<p>Before picking a model, <a href="/arena">play the Arena comparisons</a> and review their <a href="/arena#compare-model-results-and-build-costs">build costs and successful runs</a>. The same brief makes differences easier to judge than unrelated demos.</p>
<h2>12 favorites to start</h2>
<div class="prompt-grid">
<div class="prompt-card">
<strong>Neon snake, but faster</strong>
<p>A classic with a glow and a difficulty curve that bites.</p>
<a class="prompt-go" href="/create?utm_source=blog&utm_medium=content&utm_campaign=vibe_prompt_pack#prompt=Make%20a%20neon%20snake%20game%20that%20speeds%20up%20as%20you%20grow">Build it free →</a>
</div>
<div class="prompt-card">
<strong>Desert kart racer</strong>
<p>Low-poly track, drift boosts, and a lap timer to beat.</p>
<a class="prompt-go" href="/create?utm_source=blog&utm_medium=content&utm_campaign=vibe_prompt_pack#prompt=Build%20a%20low%20poly%20kart%20racer%20on%20a%20desert%20track%20with%20drift%20boosts">Build it free →</a>
</div>
<div class="prompt-card">
<strong>Floating-island parkour</strong>
<p>First person, jump across islands without falling.</p>
<a class="prompt-go" href="/create?utm_source=blog&utm_medium=content&utm_campaign=vibe_prompt_pack#prompt=Make%20a%20first%20person%20parkour%20game%20across%20floating%20islands">Build it free →</a>
</div>
<div class="prompt-card">
<strong>Slime tower defense</strong>
<p>Place turrets, hold the line against waves of slimes.</p>
<a class="prompt-go" href="/create?utm_source=blog&utm_medium=content&utm_campaign=vibe_prompt_pack#prompt=Build%20a%20tower%20defense%20where%20I%20place%20turrets%20to%20stop%20waves%20of%20slimes">Build it free →</a>
</div>
<div class="prompt-card">
<strong>Cozy sunset fishing</strong>
<p>A quiet lake, a line in the water, nothing to rush.</p>
<a class="prompt-go" href="/create?utm_source=blog&utm_medium=content&utm_campaign=vibe_prompt_pack#prompt=Make%20a%20cozy%20fishing%20game%20on%20a%20quiet%20lake%20at%20sunset">Build it free →</a>
</div>
<div class="prompt-card">
<strong>Flashlight zombie survival</strong>
<p>Top down, limited ammo, and a beam that only sees so far.</p>
<a class="prompt-go" href="/create?utm_source=blog&utm_medium=content&utm_campaign=vibe_prompt_pack#prompt=Build%20a%20top%20down%20zombie%20survival%20with%20a%20flashlight%20and%20limited%20ammo">Build it free →</a>
</div>
<div class="prompt-card">
<strong>Block physics sandbox</strong>
<p>Stack them high, then knock the whole thing down.</p>
<a class="prompt-go" href="/create?utm_source=blog&utm_medium=content&utm_campaign=vibe_prompt_pack#prompt=Make%20a%20physics%20sandbox%20where%20I%20stack%20blocks%20and%20knock%20them%20down">Build it free →</a>
</div>
<div class="prompt-card">
<strong>Rhythm runner</strong>
<p>Jump in time with the beat or lose your streak.</p>
<a class="prompt-go" href="/create?utm_source=blog&utm_medium=content&utm_campaign=vibe_prompt_pack#prompt=Build%20a%20rhythm%20runner%20where%20I%20jump%20in%20time%20with%20the%20music">Build it free →</a>
</div>
<div class="prompt-card">
<strong>Asteroid dogfight</strong>
<p>Space, homing missiles, and rocks that don't move out of the way.</p>
<a class="prompt-go" href="/create?utm_source=blog&utm_medium=content&utm_campaign=vibe_prompt_pack#prompt=Make%20a%20space%20dogfight%20with%20asteroids%20and%20homing%20missiles">Build it free →</a>
</div>
<div class="prompt-card">
<strong>Star-collecting platformer</strong>
<p>Grab the stars, open the door, find the next room.</p>
<a class="prompt-go" href="/create?utm_source=blog&utm_medium=content&utm_campaign=vibe_prompt_pack#prompt=Build%20a%203D%20platformer%20collecting%20stars%20to%20open%20the%20next%20door">Build it free →</a>
</div>
<div class="prompt-card">
<strong>Wacky mini golf</strong>
<p>Ramps, moving walls, and a par you'll argue with.</p>
<a class="prompt-go" href="/create?utm_source=blog&utm_medium=content&utm_campaign=vibe_prompt_pack#prompt=Make%20a%20golf%20game%20with%20wacky%20ramps%20and%20moving%20obstacles">Build it free →</a>
</div>
<div class="prompt-card">
<strong>Gem-heist stealth</strong>
<p>Sneak past the guards, grab the gem, don't get spotted.</p>
<a class="prompt-go" href="/create?utm_source=blog&utm_medium=content&utm_campaign=vibe_prompt_pack#prompt=Build%20a%20stealth%20game%20sneaking%20past%20guards%20to%20steal%20the%20gem">Build it free →</a>
</div>
</div>
<h2>More prompt ideas by genre</h2>
<p>Every line below is clickable. Pick one and it starts building.</p>
<h3>Platformers &amp; runners</h3>
<ul>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Make%20a%203D%20platformer%20collecting%20coins%20across%20moving%20platforms">3D platformer collecting coins across moving platforms</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Build%20an%20endless%20runner%20dodging%20obstacles%20that%20speeds%20up%20over%20time">Endless runner dodging obstacles that speeds up over time</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Make%20a%20wall%20jumping%20ninja%20platformer%20in%20a%20neon%20city">Wall-jumping ninja platformer in a neon city</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Build%20a%20double%20jump%20platformer%20where%20the%20floor%20is%20lava">Double-jump platformer where the floor is lava</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Make%20an%20ice%20physics%20platformer%20where%20everything%20is%20slippery">Ice-physics platformer where everything is slippery</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Build%20a%20speedrun%20platformer%20with%20a%20countdown%20timer%20per%20level">Speedrun platformer with a countdown timer per level</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Make%20a%20gravity%20flip%20platformer%20where%20you%20walk%20on%20the%20ceiling">Gravity-flip platformer where you walk on the ceiling</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Build%20an%20auto%20runner%20where%20I%20only%20control%20jumping%20and%20sliding">Auto-runner where I only control jumping and sliding</a></li>
</ul>
<h3>Racing &amp; driving</h3>
<ul>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Make%20a%20futuristic%20hover%20pod%20race%20on%20a%20glowing%20track">Futuristic hover-pod race on a glowing track</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Build%20an%20off%20road%20rally%20through%20muddy%20hills%20and%20jumps">Off-road rally through muddy hills and jumps</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Make%20a%20time%20trial%20drift%20game%20scoring%20points%20for%20long%20drifts">Time-trial drift game scoring points for long drifts</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Build%20a%20top%20down%20racer%20with%20power%20ups%20and%20oil%20slicks">Top-down racer with power-ups and oil slicks</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Make%20a%20downhill%20bike%20ride%20dodging%20trees%20and%20rocks">Downhill bike ride dodging trees and rocks</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Build%20a%20boat%20race%20through%20a%20stormy%20sea%20with%20big%20waves">Boat race through a stormy sea with big waves</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Make%20a%20delivery%20driving%20game%20beating%20the%20clock%20through%20traffic">Delivery driving game beating the clock through traffic</a></li>
</ul>
<h3>Shooters &amp; action</h3>
<ul>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Build%20a%20wave%20shooter%20defending%20a%20base%20from%20robots">Wave shooter defending a base from robots</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Make%20a%20first%20person%20arena%20shooter%20with%20jump%20pads%20and%20power%20weapons">First-person arena shooter with jump pads and power weapons</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Build%20a%20twin%20stick%20shooter%20clearing%20rooms%20of%20enemies">Twin-stick shooter clearing rooms of enemies</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Make%20a%20bullet%20hell%20game%20dodging%20waves%20of%20projectiles">Bullet-hell game dodging waves of projectiles</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Build%20a%20tank%20battle%20in%20a%20destructible%20arena">Tank battle in a destructible arena</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Make%20a%20sword%20fighting%20game%20blocking%20and%20countering%20attacks">Sword-fighting game blocking and countering attacks</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Build%20an%20archery%20defense%20holding%20a%20gate%20against%20raiders">Archery defense holding a gate against raiders</a></li>
</ul>
<h3>Puzzle &amp; logic</h3>
<ul>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Make%20a%20block%20sliding%20puzzle%20to%20clear%20a%20path%20to%20the%20exit">Block-sliding puzzle to clear a path to the exit</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Build%20a%20color%20matching%20puzzle%20that%20clears%20connected%20groups">Color-matching puzzle that clears connected groups</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Make%20a%20portal%20puzzle%20where%20I%20place%20two%20doors%20to%20cross%20gaps">Portal puzzle where I place two doors to cross gaps</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Build%20a%20light%20and%20mirror%20puzzle%20aiming%20a%20beam%20at%20a%20target">Light-and-mirror puzzle aiming a beam at a target</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Make%20a%20maze%20game%20where%20the%20walls%20shift%20every%20few%20seconds">Maze game where the walls shift every few seconds</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Build%20a%20pipe%20connecting%20puzzle%20to%20route%20water%20to%20a%20tank">Pipe-connecting puzzle to route water to a tank</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Make%20a%20memory%20game%20flipping%20tiles%20to%20find%20matching%20pairs">Memory game flipping tiles to find matching pairs</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Build%20a%20crate%20pushing%20puzzle%20placing%20boxes%20onto%20targets">Sokoban-style game pushing crates onto targets</a></li>
</ul>
<h3>Survival &amp; horror</h3>
<ul>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Make%20an%20island%20survival%20gathering%20wood%20and%20food%20to%20last%20the%20night">Island survival gathering wood and food to last the night</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Build%20a%20horror%20game%20escaping%20a%20dark%20maze%20while%20something%20follows">Horror game escaping a dark maze while something follows</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Make%20a%20bunker%20survival%20rationing%20supplies%20through%20waves%20of%20night">Bunker survival rationing supplies through waves of night</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Build%20an%20underwater%20survival%20managing%20oxygen%20while%20exploring%20a%20reef">Underwater survival managing oxygen while exploring a reef</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Make%20a%20hide%20and%20seek%20horror%20in%20an%20abandoned%20house">Hide-and-seek horror in an abandoned house</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Build%20a%20winter%20survival%20keeping%20a%20fire%20lit%20against%20the%20cold">Winter survival keeping a fire lit against the cold</a></li>
</ul>
<h3>RPG &amp; adventure</h3>
<ul>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Make%20a%20top%20down%20dungeon%20crawler%20fighting%20monsters%20for%20loot">Top-down dungeon crawler fighting monsters for loot</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Build%20an%20open%20field%20adventure%20collecting%20herbs%20and%20crafting%20potions">Open-field adventure collecting herbs and crafting potions</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Make%20a%20quest%20game%20talking%20to%20villagers%20to%20find%20a%20lost%20relic">Quest game talking to villagers to find a lost relic</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Build%20a%20roguelike%20where%20each%20run%20scrambles%20the%20dungeon%20layout">Roguelike where each run scrambles the dungeon layout</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Make%20a%20treasure%20hunt%20adventure%20following%20a%20map%20across%20an%20island">Treasure-hunt adventure following a map across an island</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Build%20a%20boss%20rush%20game%20fighting%20a%20series%20of%20giant%20creatures">Boss-rush game fighting a series of giant creatures</a></li>
</ul>
<h3>Sports &amp; arcade</h3>
<ul>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Make%20an%20arcade%20basketball%20game%20shooting%20hoops%20against%20the%20clock">Arcade basketball game shooting hoops against the clock</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Build%20a%20bowling%20game%20with%20trick%20lanes%20and%20bumpers">Bowling game with trick lanes and bumpers</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Make%20a%20penalty%20shootout%20soccer%20game%20aiming%20past%20a%20keeper">Penalty-shootout soccer game aiming past a keeper</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Build%20a%20skateboard%20game%20chaining%20tricks%20for%20combos">Skateboard game chaining tricks for combos</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Make%20a%20home%20run%20derby%20baseball%20game%20timing%20the%20swing">Home-run derby baseball game timing the swing</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Build%20a%20table%20tennis%20game%20rallying%20against%20a%20tricky%20opponent">Table tennis game rallying against a tricky opponent</a></li>
</ul>
<h3>Cozy &amp; casual</h3>
<ul>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Make%20a%20cozy%20farm%20game%20planting%20and%20harvesting%20crops">Cozy farm game planting and harvesting crops</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Build%20a%20cafe%20game%20serving%20drinks%20to%20a%20line%20of%20customers">Café game serving drinks to a line of customers</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Make%20a%20garden%20game%20arranging%20plants%20and%20decorations">Garden game arranging plants and decorations</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Build%20a%20pet%20care%20game%20feeding%20and%20playing%20with%20a%20creature">Pet-care game feeding and playing with a creature</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Make%20a%20cozy%20cooking%20game%20following%20recipes%20to%20plate%20a%20dish">Cozy cooking game following recipes to plate a dish</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Build%20a%20relaxing%20bird%20watching%20game%20spotting%20species%20in%20a%20forest">Relaxing bird-watching game spotting species in a forest</a></li>
</ul>
<h3>Sandbox &amp; physics</h3>
<ul>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Make%20a%20marble%20run%20where%20I%20build%20ramps%20to%20reach%20the%20goal">Marble run where I build ramps to reach the goal</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Build%20a%20demolition%20game%20knocking%20down%20towers%20with%20a%20wrecking%20ball">Demolition game knocking down towers with a wrecking ball</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Make%20a%20bridge%20builder%20where%20my%20bridge%20has%20to%20hold%20a%20truck">Bridge-builder where my bridge has to hold a truck</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Build%20a%20ragdoll%20launch%20game%20flinging%20a%20character%20for%20distance">Ragdoll launch game flinging a character for distance</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Make%20a%20cannon%20game%20blasting%20targets%20with%20bouncing%20balls">Cannon game blasting targets with bouncing balls</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Build%20a%20domino%20toppling%20sandbox%20setting%20off%20a%20chain%20reaction">Domino-toppling sandbox setting off a chain reaction</a></li>
</ul>
<h3>Sci-fi &amp; space</h3>
<ul>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Make%20a%20spaceship%20landing%20game%20touching%20down%20gently%20on%20low%20fuel">Spaceship landing game touching down gently on low fuel</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Build%20an%20asteroid%20mining%20game%20collecting%20ore%20and%20dodging%20rocks">Asteroid-mining game collecting ore and dodging rocks</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Make%20a%20zero%20gravity%20station%20where%20I%20float%20between%20handholds">Zero-gravity station where I float between handholds</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Build%20an%20alien%20planet%20explorer%20scanning%20strange%20creatures">Alien-planet explorer scanning strange creatures</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Make%20a%20wormhole%20runner%20steering%20through%20a%20tunnel%20of%20light">Wormhole runner steering through a tunnel of light</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Build%20a%20rover%20game%20driving%20across%20a%20crater%20filled%20moon">Rover game driving across a crater-filled moon</a></li>
</ul>
<h3>Strategy &amp; tower defense</h3>
<ul>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Make%20a%20tower%20defense%20where%20towers%20can%20be%20upgraded%20between%20waves">Tower defense where towers can be upgraded between waves</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Build%20a%20base%20builder%20placing%20walls%20and%20turrets%20before%20a%20raid">Base-builder placing walls and turrets before a raid</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Make%20a%20resource%20game%20balancing%20food%20wood%20and%20gold%20to%20grow%20a%20town">Resource game balancing food, wood, and gold to grow a town</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Build%20a%20maze%20tower%20defense%20where%20I%20shape%20the%20path%20enemies%20take">Maze tower defense where I shape the path enemies take</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Make%20a%20lane%20defense%20sending%20units%20to%20push%20toward%20the%20enemy%20base">Lane defense sending units to push toward the enemy base</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Build%20an%20auto%20battler%20arranging%20a%20team%20that%20fights%20on%20its%20own">Auto-battler arranging a team that fights on its own</a></li>
</ul>
<h3>Flying &amp; flight</h3>
<ul>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Make%20a%20flight%20sim%20gliding%20through%20canyons%20and%20arches">Flight sim gliding through canyons and arches</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Build%20a%20hot%20air%20balloon%20game%20drifting%20between%20rings%20in%20the%20sky">Hot-air balloon game drifting between rings in the sky</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Make%20a%20wingsuit%20dive%20threading%20through%20narrow%20gaps">Wingsuit dive threading through narrow gaps</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Build%20a%20paper%20airplane%20game%20catching%20wind%20currents%20for%20distance">Paper-airplane game catching wind currents for distance</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Make%20a%20dragon%20flight%20game%20swooping%20to%20grab%20coins%20midair">Dragon-flight game swooping to grab coins midair</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Build%20a%20helicopter%20rescue%20lifting%20survivors%20off%20rooftops">Helicopter rescue lifting survivors off rooftops</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Make%20a%20jetpack%20game%20burning%20fuel%20to%20climb%20past%20obstacles">Jetpack game burning fuel to climb past obstacles</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Build%20a%20bird%20flocking%20game%20leading%20a%20flock%20through%20gates">Bird-flocking game leading a flock through gates</a></li>
</ul>
<h3>Quirky &amp; experimental</h3>
<ul>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Make%20a%20game%20where%20you%20play%20as%20a%20rolling%20ball%20growing%20bigger%20by%20absorbing%20objects">Game where you play as a rolling ball growing bigger by absorbing objects</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Build%20a%20game%20where%20gravity%20points%20wherever%20I%20click">Game where gravity points wherever I click</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Make%20a%20game%20played%20entirely%20in%20one%20rotating%20room">Game played entirely in one rotating room</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Build%20a%20game%20where%20the%20screen%20shrinks%20as%20time%20runs%20out">Game where the screen shrinks as time runs out</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Make%20a%20game%20where%20you%20control%20two%20characters%20at%20once">Game where you control two characters at once</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Build%20a%20game%20where%20painting%20the%20floor%20is%20how%20you%20score">Game where painting the floor is how you score</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Make%20a%20game%20where%20the%20world%20is%20made%20of%20stacked%20cubes%20you%20can%20remove">Game where the world is made of stacked cubes you can remove</a></li>
<li><a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack#prompt=Build%20a%20game%20where%20you%20grow%20a%20tower%20as%20tall%20as%20possible%20before%20it%20topples">Game where you grow a tower as tall as possible before it topples</a></li>
</ul>
<h2>How to write your own</h2>
<p>The prompts above are short on purpose. You don't need to spell out every rule. Name the kind of game, one thing that makes it yours, and a goal, and the AI fills in the rest. Then tell it what to change once it's running. The models behind these builders moved a long way in 2026 (Anthropic's <a href="https://www.anthropic.com/claude-fable-and-mythos-5-1">Claude Fable 5.1 and Opus 5</a> and OpenAI's <a href="https://developers.openai.com/api/docs/models/gpt-6-astra">GPT-6 Astra</a> both shipped in the first days of September), so as of September 2026 a one-line prompt lands closer to what you pictured than it did a year ago, and the payoff has shifted to your second and third messages. For more on the workflow, see <a href="/guides/make-a-game-with-ai">how to make a game with AI</a>, and for the anatomy of a prompt that sticks, <a href="/guides/how-to-write-a-game">how to write a game in Cinevva</a>.</p>
<p>Want a blank canvas instead? <a href="/create?utm_source=blog&amp;utm_medium=content&amp;utm_campaign=vibe_prompt_pack">Open the creator</a> and type your own idea.</p>
<h2>Common Questions</h2>
<h3>How do I write a good AI game prompt?</h3>
<p>Keep it to a sentence and name three things: the genre, one detail that makes it yours, and a clear goal. &quot;A first-person parkour game across floating islands where you race a timer&quot; works far better than &quot;a fun 3D game,&quot; because it gives the AI a concrete shape to build. Refine the result by asking for one change at a time.</p>
<h3>Are these AI game prompts free to use?</h3>
<p>Yes. Every prompt on this page is free to build in your browser, and you can edit the result and share a link to your game. Free generation has limits, and commercial use of a finished game depends on the plan and the assets used, so check the terms before selling anything.</p>
<h3>Can AI build a 3D game from one of these prompts?</h3>
<p>Yes. Each prompt here is designed to produce a playable 3D game in the browser. The first version is a starting point you refine by chatting, asking for new mechanics, art, sound, and difficulty tuning until it feels right.</p>
<h3>What makes a good AI game prompt?</h3>
<p>A good AI game prompt is specific about the experience and silent about the implementation. It names a genre the AI already understands, adds one concrete twist (a flashlight cone, slippery ice, a shrinking screen), and states what the player is trying to do. It leaves out engine details, file names, and feature lists, because those confuse the first build. Every prompt on this page follows that shape, which is why they're one sentence each.</p>
<h3>Can I use these prompts in other AI game makers?</h3>
<p>Yes. The prompts are plain English with no Cinevva-specific syntax, so they work as starting points in Rosebud, Summer Engine, GDevelop's AI agent, or a coding agent like Cursor or Claude Code. What changes is the output: 2D tools will interpret &quot;3D platformer&quot; as a side-scroller, and engine-based tools will hand you a project rather than a link. Our <a href="/guides/ai-game-generators-2026">AI game generator comparison</a> explains which is which.</p>
<h3>How long does an AI-generated game take to build?</h3>
<p>The first playable version of a one-line prompt usually arrives in a few minutes, because the AI is writing the whole game from scratch. Each follow-up change after that comes back in seconds to a minute. Getting from that first build to something you'd proudly share, with sound, a title screen, and tuned difficulty, is typically an hour to an afternoon of back-and-forth, not days.</p>
<h3>Where can I find more game prompt ideas?</h3>
<p>Start with the 100 on this page, then remix: swap the setting, the camera angle, or the goal of any prompt and you have a new game idea. If you'd rather learn the method than copy a list, <a href="/guides/make-a-game-with-ai">how to make a game with AI</a> walks through turning a vague idea into a buildable prompt, and the <a href="/guides/vibe-coding-games">vibe coding guide</a> covers the iterate-by-chatting loop that follows.</p>
<h2>Related</h2>
<ul>
<li><a href="/guides/make-a-game-with-ai">How to Make a Game with AI (No Coding)</a>: the full workflow</li>
<li><a href="/guides/vibe-coding-games">Vibe Coding Games: What It Is and How to Start</a>: the approach explained</li>
<li><a href="/guides/ai-game-generators-2026">Best AI Game Generators in 2026</a>: the tools, compared</li>
<li><a href="/guides/3d-browser-game-without-coding">How to Make a 3D Browser Game Without Coding</a>: the 3D path in depth</li>
<li><a href="/guides/how-to-write-a-game">How to Write a Game in Cinevva</a>: what separates a prompt that becomes a game from one that gets abandoned</li>
</ul>
<style scoped>
.prompt-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
  gap: 16px;
  margin: 24px 0;
}
.prompt-card {
  border: 1px solid var(--vp-c-divider);
  border-radius: 12px;
  padding: 18px;
  display: flex;
  flex-direction: column;
  gap: 6px;
  background: var(--vp-c-bg-soft);
}
.prompt-card strong { font-size: 1.05rem; }
.prompt-card p { margin: 0; color: var(--vp-c-text-2); font-size: 0.9rem; flex: 1; }
.prompt-go {
  margin-top: 10px;
  font-weight: 600;
  color: var(--vp-c-brand-1);
  text-decoration: none;
}
.prompt-go:hover { text-decoration: underline; }
</style>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Best Open-Source Game Engines for 2026]]></title>
            <link>https://app.cinevva.com/guides/open-source-game-engines-2026</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/open-source-game-engines-2026</guid>
            <pubDate>Thu, 18 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[A complete list of the best open-source game engines for 2026 - Godot, Phaser, PixiJS, Defold, Bevy, Three.js, Babylon.js, and more, with licenses, languages, web export, and a pick for each use case.]]></description>
            <content:encoded><![CDATA[<h1>Best Open-Source Game Engines for 2026</h1>
<figure style="margin:1.5rem 0">
<img src="https://cdn.cinevva.com/guides/open-source-game-engines-hero.jpg?v=2" alt="Best open-source game engines for 2026" style="width:100%;border-radius:10px">
</figure>
<p>Open-source game engines give you something proprietary ones can't: a license that won't change after you've shipped. No per-seat fees, no revenue thresholds, no surprise pricing. You can read the source, fork it, and keep building even if the original team walks away. After the <a href="/news/2024-09-12-unity-runtime-fee-cancelled">Unity Runtime Fee episode</a>, that stability is exactly why a lot of teams moved to open source in the first place.</p>
<p>This is the complete list of open-source game engines worth using in 2026, grouped by what they're for. The short version: Godot for an all-round 2D and 3D engine, Phaser for 2D web, Three.js or Babylon.js for web 3D, Bevy if you write Rust, and Defold if the build has to be tiny. Every version and license below was checked as of September 2026. If you specifically need a web build, we've flagged which ones export to the browser, and you can go deeper in our <a href="/guides/web-game-engines-comparison">best web game engines comparison</a>.</p>
<h2>Quick comparison</h2>
<table>
<thead>
<tr>
<th>Engine</th>
<th>License</th>
<th>Language</th>
<th>2D / 3D</th>
<th>Web export</th>
<th>Best for</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="/guides/godot-vs-unity-web-games"><strong>Godot</strong></a></td>
<td>MIT</td>
<td>GDScript, C#</td>
<td>Both</td>
<td>Yes (GDScript)</td>
<td>The all-round free engine</td>
</tr>
<tr>
<td><strong>Phaser</strong></td>
<td>MIT</td>
<td>JavaScript</td>
<td>2D</td>
<td>Yes</td>
<td>2D web games</td>
</tr>
<tr>
<td><strong>PixiJS</strong></td>
<td>MIT</td>
<td>JavaScript</td>
<td>2D</td>
<td>Yes</td>
<td>Custom 2D rendering</td>
</tr>
<tr>
<td><strong>Three.js</strong></td>
<td>MIT</td>
<td>JS / TS</td>
<td>3D</td>
<td>Yes</td>
<td>Web 3D, max control</td>
</tr>
<tr>
<td><strong>Babylon.js</strong></td>
<td>Apache 2.0</td>
<td>JS / TS</td>
<td>3D</td>
<td>Yes</td>
<td>Full-featured web 3D</td>
</tr>
<tr>
<td><strong>Defold</strong></td>
<td>Free, source-available</td>
<td>Lua</td>
<td>2D / light 3D</td>
<td>Yes</td>
<td>Smallest web builds</td>
</tr>
<tr>
<td><strong>Excalibur.js</strong></td>
<td>BSD</td>
<td>TypeScript</td>
<td>2D</td>
<td>Yes</td>
<td>TypeScript 2D games</td>
</tr>
<tr>
<td><strong>Bevy</strong></td>
<td>MIT / Apache 2.0</td>
<td>Rust</td>
<td>Both</td>
<td>Yes (Wasm)</td>
<td>Rust, data-driven design</td>
</tr>
<tr>
<td><strong>LÖVE</strong></td>
<td>zlib</td>
<td>Lua</td>
<td>2D</td>
<td>Limited</td>
<td>Quick 2D prototypes</td>
</tr>
<tr>
<td><strong>Cocos Creator / COCOS 4</strong></td>
<td>MIT (fully open since Jan 2026)</td>
<td>TypeScript</td>
<td>Both</td>
<td>Yes</td>
<td>Mini-games, Asian market</td>
</tr>
<tr>
<td><strong>O3DE</strong></td>
<td>Apache 2.0</td>
<td>C++, Lua</td>
<td>3D</td>
<td>No</td>
<td>Large-scale 3D, AAA scope</td>
</tr>
</tbody>
</table>
<p>There's no single &quot;best&quot; open-source engine. The right one depends on 2D vs 3D, your language, and whether you're targeting the web.</p>
<h2>What changed in 2026</h2>
<p>A few things moved this year that are worth knowing before you pick. COCOS went fully open: on January 4, 2026 the company <a href="https://www.prnewswire.com/news-releases/cocos-4-is-here-fully-open-source-302652264.html">announced COCOS 4 under the plain MIT license</a>, dropping the commercial clauses from the Cocos Creator era, and the <a href="https://github.com/cocos/cocos4">cocos4 repository</a> is tagged v4.0.0 with the editor split out into CLI tools. Fenris Creations (formerly CCP Games) published the components of Carbon, the engine behind EVE Online, on GitHub under MIT and other permissive licenses in 2026, as a set of libraries (core, resources, IO, math, pathfinding, and more) rather than a turnkey game engine, see the <a href="https://github.com/carbonengine">carbonengine organization</a>. Just before the year started, Facepunch open-sourced the C# layer of <a href="https://github.com/Facepunch/sbox-public">s&amp;box</a> under MIT in November 2025, though it still sits on Valve's closed Source 2, so it's not a fully open stack. On the release side: Godot shipped 4.7 in June (4.7.2 in August, 4.8 in dev snapshots), Bevy shipped <a href="https://bevy.org/news/">0.19 in June</a>, Phaser 4 landed in April, Babylon.js 9 in March, O3DE cut its <a href="https://github.com/o3de/o3de/releases">26.05 release</a> in May, Defold 1.13.1 added light components in August, and the MIT-licensed C# engine <a href="https://github.com/stride3d/stride/releases">Stride</a> is working through 4.4 betas. Nothing changed for the worse: no engine on this list moved to a more restrictive license in 2026.</p>
<h2>Full 2D and 3D engines</h2>
<h3>Godot</h3>
<p>Godot is the engine most people mean when they say &quot;open-source game engine.&quot; It's MIT licensed, does both 2D and 3D, and has no fees or revenue caps of any kind. It ships small web builds (around 5 MB Brotli or 9 MB gzipped) and, since 4.3, can export single-threaded for clean iOS and Safari support. The current stable is 4.7.2 (August 2026) with 4.8 in development. The one web caveat is that C# projects can't export to the browser yet, only GDScript, and that's still true as of September 2026 per the <a href="https://docs.godotengine.org/en/stable/tutorials/export/exporting_for_web.html">web export docs</a>. For most teams leaving a proprietary engine, Godot is the closest all-round replacement. See <a href="/guides/godot-vs-unity-web-games">Godot vs Unity for web games</a> for the head to head.</p>
<h3>Cocos Creator</h3>
<p>Cocos Creator pairs a free editor with an open-source (MIT) runtime. It handles 2D and 3D, supports WebGL, WebGPU, and Wasm, and is especially strong for mini-game platforms like WeChat and TikTok where build size is critical. Builds land around 2 to 4 MB. Cocos Creator 3.8.8 (December 2025) is the last of the 3.x line, and since January 2026 the successor, COCOS 4, is fully MIT licensed with the engine and editor separated, so the old commercial clauses are gone. If you're weighing it against a web-first option, see <a href="/guides/cocos-alternatives">Cocos alternatives</a>.</p>
<h2>3D libraries and engines for the web</h2>
<h3>Three.js</h3>
<p>Three.js is the most widely used 3D library on the web, MIT licensed, with a core around 150 KB. The current release is r185 (July 2026), and its WebGPU renderer falls back to WebGL2 automatically. It's a rendering library rather than a full engine, so you add your own game systems or a framework on top. That's the trade-off: maximum control and the smallest footprint, in exchange for writing more yourself. It's the foundation we built <a href="/engine">Cinevva Engine</a> on, layering the game systems back so you don't start from an empty canvas.</p>
<h3>Babylon.js</h3>
<p>Babylon.js is a full open-source 3D engine (Apache 2.0) with built-in physics, animation, a scene inspector, and strong WebGPU and WGSL support. Babylon.js 9 shipped in March 2026 and is at 9.25 as of September 2026, per the <a href="https://github.com/BabylonJS/Babylon.js/releases">releases page</a>. Compared to Three.js it gives you more out of the box at a larger size. See <a href="/guides/threejs-vs-babylonjs">Three.js vs Babylon.js</a> for which fits your project.</p>
<h2>2D frameworks</h2>
<h3>Phaser</h3>
<p>Phaser is the most popular open-source HTML5 game framework, MIT licensed, with the biggest 2D web community and ecosystem. Builds are around 500 KB. If your game is 2D and you write JavaScript, it's hard to beat.</p>
<h3>PixiJS</h3>
<p>PixiJS is a fast 2D WebGL renderer (MIT), around 200 KB. Like Three.js for 3D, it's a renderer rather than a full engine, so you bring your own game logic. Pick it when you want custom 2D rendering and a tiny footprint.</p>
<h3>Excalibur.js</h3>
<p>Excalibur.js is a friendly, BSD-licensed 2D engine written in TypeScript, around 300 KB, with more built-in game features than a bare renderer. A good fit if you want types and a gentle on-ramp.</p>
<h3>LÖVE (Love2D)</h3>
<p>LÖVE is a long-running, zlib-licensed 2D framework scripted in Lua. It's beloved for fast prototyping and game jams on desktop. Web export exists through love.js but is limited, so treat LÖVE as a desktop-first tool.</p>
<h2>Rust, C++, and large-scale engines</h2>
<h3>Bevy</h3>
<p>Bevy is a modern, data-driven engine written in Rust, dual-licensed MIT and Apache 2.0. Its entity-component-system architecture is a big draw, and it compiles to WebAssembly for browser builds. It's younger than the others and moves fast, so expect breaking changes between versions, but it has strong momentum in 2026: <a href="https://bevy.org/news/">Bevy 0.19</a> shipped in June 2026 with a 0.19.1 patch in August.</p>
<h3>Open 3D Engine (O3DE)</h3>
<p>O3DE is a Linux Foundation project (Apache 2.0) aimed at large-scale, high-fidelity 3D, backed by AWS and others. It's a serious, heavyweight engine for teams with AAA ambitions and the resources to match. The 26.05 release (May 2026) is current. It doesn't target the browser.</p>
<h2>How to choose</h2>
<ul>
<li><strong>Want one free engine for almost anything?</strong> Godot.</li>
<li><strong>Building a 2D web game?</strong> Phaser, or PixiJS/Excalibur.js for custom rendering.</li>
<li><strong>Building web 3D?</strong> Three.js for control and size, Babylon.js for batteries included.</li>
<li><strong>Smallest possible web build?</strong> Defold.</li>
<li><strong>Targeting mini-game platforms?</strong> Cocos Creator.</li>
<li><strong>Love Rust and ECS?</strong> Bevy.</li>
<li><strong>Large-scale, high-fidelity 3D?</strong> O3DE.</li>
</ul>
<p>If the web is your target, every engine above except O3DE and (mostly) LÖVE can ship a browser build. For the full breakdown on web specifically, see the <a href="/guides/web-game-engines-comparison">web game engines comparison</a> and our guide to <a href="/guides/unity-alternatives-web-games">Unity alternatives for web games</a>.</p>
<h2>Common Questions</h2>
<h3>What is the best open-source game engine in 2026?</h3>
<p>For most people it's Godot: MIT licensed, free with no revenue caps, and capable in both 2D and 3D with a clean web export. For 2D web specifically, Phaser is the most popular open-source pick, and for web 3D it's Three.js (a library) or Babylon.js (a full engine). The best choice depends on dimensions, language, and platform.</p>
<h3>Is Godot really free, with no catch?</h3>
<p>Yes. Godot is released under the MIT license, which means no fees, no royalties, no revenue thresholds, and no seats, ever. You can use it for commercial games and even modify the engine itself. The project is funded by donations and sponsorships, not by charging developers.</p>
<h3>Are open-source game engines good enough for commercial games?</h3>
<p>Yes. Plenty of commercially successful games ship on open-source engines, and open source means there's no revenue cap to worry about. The trade-offs are usually a smaller built-in asset marketplace and, for some engines, fewer turnkey features than a large proprietary engine. For web games in particular, open-source engines often produce smaller, faster builds.</p>
<h3>Is Unity or Unreal open source?</h3>
<p>No. Unity is closed-source and subscription-based. Unreal Engine is source-available (you can read and modify the code with an account) but it's not open source and uses a royalty model above a revenue threshold. If you specifically want an open-source engine, Godot is the closest equivalent to Unity, and our <a href="/guides/unity-alternatives-web-games">Unity alternatives guide</a> covers the rest.</p>
<h3>Which open-source game engines are new or newly open-sourced in 2026?</h3>
<p>The big license news of 2026 is COCOS 4, fully MIT licensed since January 2026 with the commercial clauses removed. Fenris Creations also published EVE Online's Carbon engine components under MIT on GitHub, and Facepunch's s&amp;box C# layer went MIT in late 2025 (its Source 2 base stays closed). No established engine changed to a more restrictive license this year. See the &quot;What changed in 2026&quot; section above for versions.</p>
<h3>What is the best open-source 3D game engine?</h3>
<p>Godot for a full 3D engine with an editor, and it's the one most teams pick. For 3D in the browser specifically, Babylon.js is the most complete open-source engine and Three.js is the most-used library, both with WebGPU renderers and WebGL2 fallback. Bevy is the pick if you want Rust and an ECS, and O3DE if you need AAA-scale tooling and don't need a web build. If you want to see what open-source web 3D can do before you commit, <a href="/engine">Cinevva Engine</a> is built on Three.js.</p>
<h3>Which open-source engine can target WebGL so players can play in the browser?</h3>
<p>Almost all of them. Godot exports to WebGL 2.0 (use GDScript and single-threaded export), Phaser, PixiJS, Excalibur.js, Three.js, and Babylon.js are web-native, Defold ships Wasm plus WebGL builds around 1.14 MB, Bevy compiles to WebAssembly, and Cocos Creator exports to WebGL and WebGPU. The exceptions are O3DE (no browser target) and LÖVE (third-party love.js only). Run our <a href="/tools/webgl-webgpu-checker">WebGL and WebGPU checker</a> to see what your players' browsers support.</p>
<h3>Is there a full list of open-source game engines for 2026?</h3>
<p>The quick comparison table at the top of this page is our list: Godot, Phaser, PixiJS, Three.js, Babylon.js, Defold, Excalibur.js, Bevy, LÖVE, COCOS 4, and O3DE, plus Stride, Carbon, and s&amp;box in the &quot;What changed in 2026&quot; section. Each entry links to its license and current version so you can verify before you commit.</p>
<h3>Which open-source game engine is best for the web?</h3>
<p>Godot for an all-round 2D/3D engine, Phaser for 2D, and Three.js or Babylon.js for 3D. Defold ships the smallest web builds of any full engine. All of them are free and open source. Our <a href="/guides/web-game-engines-comparison">web game engines comparison</a> ranks them on build size, load time, and browser support.</p>
<p><BuildCta
  title="Free engines are great. Free and zero-setup is faster"
  desc="Try the idea first, adopt the engine when you outgrow it."
  prompt="Make a retro dungeon crawler with torches and skeletons" /></p>
<h2>Related</h2>
<ul>
<li><a href="/guides/web-game-engines-comparison">Best Web Game Engines for 2026 (Compared)</a>: ranked on build size, load time, and cost</li>
<li><a href="/guides/unity-alternatives-web-games">Unity Alternatives for Web Games</a>: open-source options for teams leaving Unity</li>
<li><a href="/guides/godot-vs-unity-web-games">Godot vs Unity for Web Games</a>: the closest open-source replacement, head to head</li>
<li><a href="/guides/best-2d-game-engines-2026">Best 2D Game Engines for 2026</a>: if your game is 2D</li>
<li><a href="/guides/threejs-vs-babylonjs">Three.js vs Babylon.js</a>: the two big open-source web 3D libraries</li>
<li><a href="/engine">Cinevva Engine</a>: our open-source, web-first engine built on Three.js</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Unity Alternatives for Web Games (2026)]]></title>
            <link>https://app.cinevva.com/guides/unity-alternatives-web-games</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/unity-alternatives-web-games</guid>
            <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[The best Unity alternatives for browser games in 2026 - Godot, PlayCanvas, Three.js, Defold, Cocos, Phaser, and more, compared on web export, build size, language, and cost, with a pick for why you're leaving Unity.]]></description>
            <content:encoded><![CDATA[<h1>Unity Alternatives for Web Games (2026)</h1>
<figure style="margin:1.5rem 0">
<img src="https://cdn.cinevva.com/guides/unity-alternatives-web-hero.jpg?v=2" alt="Unity alternatives for web games in 2026" style="width:100%;border-radius:10px">
</figure>
<p>Unity can export to the web, but its WebGL builds are heavy, its pricing has whiplashed developers since 2023, and for a browser-first game it's rarely the lightest path. If you're looking for a Unity alternative specifically for web games, this guide covers the engines that actually ship small, fast browser builds in 2026, and which one to pick based on why you're leaving Unity. The short list: Godot as the all-round replacement, PlayCanvas or Babylon.js for browser-first 3D, Three.js for control, Defold or Phaser for 2D, and Construct or GDevelop if you'd rather not code. Versions and prices below are checked as of September 2026.</p>
<p>If you want the whole field side by side, start with our <a href="/guides/web-game-engines-comparison">best web game engines for 2026 comparison</a>. This page is for the specific case of replacing Unity for the web.</p>
<h2>Why developers look for Unity alternatives</h2>
<p>A few reasons come up again and again:</p>
<ul>
<li><strong>Pricing trust.</strong> The <a href="/news/2024-09-12-unity-runtime-fee-cancelled">Unity Runtime Fee</a> was cancelled in September 2024 and hasn't returned, but it taught a lot of teams to plan around the question &quot;what if the terms change again?&quot; Unity Personal stays free under $200K in revenue or funding and Pro is $2,310 per seat per year after a 5% increase in January 2026, per <a href="https://unity.com/pricing">Unity's pricing page</a>. An engine whose license can't be repriced removes that risk.</li>
<li><strong>Web build size.</strong> Unity's empty WebGL builds start around 8 to 11 MB. Web-native engines ship in the 1 to 5 MB range, which players feel directly in load time. To be fair to Unity, its web target is improving: Unity 6.6 (August 2026) made WebGPU a <a href="https://discussions.unity.com/t/webgpu-out-of-experimental-in-unity-6-6/1734694">fully supported graphics API for web builds</a> and lifted the Wasm memory ceiling to 16 GB, but it didn't make the builds smaller.</li>
<li><strong>Mobile browser support.</strong> Unity WebGL on phones has historically been fragile. Lighter engines built for the web behave better on mobile Safari and Chrome.</li>
<li><strong>Open source.</strong> Some teams want a codebase they can read, fork, and depend on without a vendor.</li>
</ul>
<p>The good news: for web, the alternatives are strong, and several are free forever.</p>
<h2>Quick comparison</h2>
<table>
<thead>
<tr>
<th>Alternative</th>
<th>Type</th>
<th>Web tech</th>
<th>Build size (empty)</th>
<th>Language</th>
<th>Cost</th>
<th>Best for</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="/guides/godot-vs-unity-web-games"><strong>Godot</strong></a></td>
<td>Full 2D/3D engine</td>
<td>WebGL2 + Wasm</td>
<td>~5 MB Brotli, ~9 MB gzipped</td>
<td>GDScript (C# not on web yet)</td>
<td>Free (MIT)</td>
<td>The closest all-round Unity replacement</td>
</tr>
<tr>
<td><strong>PlayCanvas</strong></td>
<td>Web-first 3D engine</td>
<td>WebGL2 + WebGPU</td>
<td>~1-2 MB</td>
<td>JavaScript / TypeScript</td>
<td>Engine MIT, editor free for public projects, $15/mo Personal</td>
<td>Browser-first 3D with a cloud editor</td>
</tr>
<tr>
<td><strong>Babylon.js</strong></td>
<td>Web-first 3D engine</td>
<td>WebGL2 + WebGPU</td>
<td>~1-2 MB</td>
<td>JavaScript / TypeScript</td>
<td>Free (Apache 2.0)</td>
<td>A complete free engine for people leaving Unity</td>
</tr>
<tr>
<td><strong>Three.js / Cinevva</strong></td>
<td>3D library / engine</td>
<td>WebGL2 + WebGPU</td>
<td>~150 KB core</td>
<td>JavaScript / TypeScript</td>
<td>Free (MIT)</td>
<td>Maximum control, smallest footprint</td>
</tr>
<tr>
<td><strong>Defold</strong></td>
<td>Web-first 2D/3D</td>
<td>WebGL + Wasm</td>
<td>~1.14 MB</td>
<td>Lua</td>
<td>Free</td>
<td>Smallest, fastest-loading web games</td>
</tr>
<tr>
<td><strong>Cocos Creator</strong></td>
<td>Full 2D/3D engine</td>
<td>WebGL + WebGPU + Wasm</td>
<td>~2-4 MB</td>
<td>TypeScript</td>
<td>Free (MIT, fully open since COCOS 4)</td>
<td>Mini-games and the Asian web market</td>
</tr>
<tr>
<td><strong>Phaser</strong></td>
<td>2D framework</td>
<td>WebGL/Canvas</td>
<td>~500 KB</td>
<td>JavaScript</td>
<td>Free (MIT)</td>
<td>2D web games, biggest HTML5 community</td>
</tr>
<tr>
<td><strong>Construct / GDevelop</strong></td>
<td>Visual 2D</td>
<td>WebGL</td>
<td>~1-3 MB</td>
<td>No-code</td>
<td>Subscription / free tier</td>
<td>Leaving Unity without writing code</td>
</tr>
</tbody>
</table>
<p>There's no single &quot;Unity replacement.&quot; The right pick depends on whether you need 3D, whether you write code, and why Unity wasn't working for you.</p>
<h2>Godot: the closest all-round replacement</h2>
<p>Godot is the alternative most ex-Unity developers land on. It's a full 2D and 3D engine, free under the MIT license with no seats, royalties, or revenue caps, and its web export is solid. Build size is around 5 MB with Brotli or 9 MB gzipped, smaller than Unity's by default. The current stable is Godot 4.7.2 (August 2026), with 4.8 in dev snapshots. Since Godot 4.3 you can export single-threaded web builds that drop the SharedArrayBuffer requirement, which also fixed the old iOS and Safari playback problems.</p>
<p>The one catch for web: Godot's C# (.NET) projects can't export to the browser yet, only GDScript does. If you're moving a C# codebase, that matters. We cover the trade-offs in detail in <a href="/guides/godot-vs-unity-web-games">Godot vs Unity for web games</a>.</p>
<p>Pick Godot if you want the most Unity-like all-round engine, free forever, with a clean 2D and 3D web path.</p>
<h2>PlayCanvas: web-first 3D with an editor</h2>
<p>PlayCanvas was built for the browser from day one. Its runtime is roughly 1 to 2 MB, it supports both WebGL2 and WebGPU, and it has a collaborative cloud editor that feels familiar if you liked Unity's scene workflow. Games are scripted in JavaScript or TypeScript. The engine is MIT licensed and at <a href="https://github.com/playcanvas/engine/releases">v2.22.0 as of September 2026</a>. The hosted editor is free for public projects, with a Personal plan at $15 a month and an Organization plan at $50 per seat a month for private work, per <a href="https://playcanvas.com/plans">PlayCanvas plans</a>. It's a strong choice when you need real-time 3D in the browser and want a visual editor rather than a code-only library.</p>
<p>Pick PlayCanvas if you want Unity-style 3D scene editing but a tiny web build.</p>
<h2>Babylon.js: a complete free engine that's web-native</h2>
<p>Babylon.js is the pick if you're leaving Unity but still want a full engine rather than a bare rendering library. It's free and open-source (Apache 2.0), developed and backed by a team at Microsoft, and it runs in the browser from the ground up. You get Havok physics built in, a scene inspector, animation tools, and a free web-based editor, so the batteries-included feel that pulled people to Unity is there without the seats or revenue caps. Babylon.js 9.0 (March 2026, at 9.25 as of September 2026 per the <a href="https://github.com/BabylonJS/Babylon.js/releases">releases page</a>) also ships among the most advanced WebGPU support of any web engine, including clustered lighting and compute-based volumetric lighting, so going web-first doesn't cost you rendering fidelity. You script in JavaScript or TypeScript.</p>
<p>Pick Babylon.js if you want a complete, free, web-native 3D engine with a Unity-like feature set and modern WebGPU rendering.</p>
<h2>Three.js and Cinevva: maximum control, smallest footprint</h2>
<p>If you want the lightest possible web build and full control over rendering, <a href="/guides/playcanvas-vs-threejs">Three.js</a> is the standard. The core library is around 150 KB and it powers a huge share of 3D on the web. The current release is r185 (July 2026), and its WebGPU renderer falls back to WebGL2 on its own. It's a rendering library rather than a full engine, so you bring your own game systems or a framework on top.</p>
<p>That's exactly why we built <a href="/engine">Cinevva Engine</a> on Three.js: open-source, web-first, with the game systems layered on so you don't start from an empty canvas. One codebase ships to the browser, mobile, desktop, Steam, and Discord. No seats, no install fees, no terms that can change after you've built your game, which is the thing the Runtime Fee episode made people care about.</p>
<p>Pick Three.js or Cinevva if you want web-native 3D, open source, and the smallest footprint, and you're comfortable in JavaScript or TypeScript.</p>
<h2>Defold: the smallest, fastest 2D web builds</h2>
<p>Defold ships the smallest web builds of any full engine, around 1.14 MB, and loads fast. It does 2D and lighter 3D, scripts in Lua, and is free with no revenue thresholds. Defold 1.13.1 (August 2026) added first-class light components, so the 3D side keeps filling in. If your Unity game is 2D and load time is the priority, Defold is hard to beat on the web.</p>
<p>Pick Defold for casual and mobile web games where every kilobyte counts.</p>
<h2>Cocos Creator: mini-games and the Asian market</h2>
<p>Cocos Creator is a full 2D and 3D engine with WebGL, WebGPU, and Wasm support, builds in the 2 to 4 MB range, and scripts in TypeScript. It's especially strong for mini-game platforms (WeChat, TikTok, Taobao) where Unity's size is a non-starter. It's free, and since January 2026 COCOS 4 is fully MIT licensed with the old commercial clauses removed. See <a href="/guides/cocos-alternatives">Cocos alternatives</a> if you're weighing it against the web-first engines.</p>
<p>Pick Cocos Creator for mini-games or if you're targeting the Asian web ecosystem.</p>
<h2>Phaser: the 2D web standard</h2>
<p>If your game is 2D and you write JavaScript, Phaser is the most popular HTML5 game framework, with the largest community and ecosystem. Builds are around 500 KB. It's free under the MIT license. For 2D web games it's often a better fit than Unity ever was. See <a href="/guides/best-2d-game-engines-2026">best 2D game engines for 2026</a> for how it compares to Defold, Construct, and GDevelop.</p>
<p>Pick Phaser for 2D web games when you want code, community, and a small build.</p>
<h2>Construct and GDevelop: leaving Unity without code</h2>
<p>If part of why Unity frustrated you was the amount of code and setup, the visual engines are a real alternative. <a href="/guides/construct-vs-gdevelop">Construct and GDevelop</a> both build 2D games with no programming and export clean web builds. GDevelop has a free tier and is open-source-friendly; Construct is subscription-based with a polished editor.</p>
<p>Pick one of these if you want to build web games visually with little or no code.</p>
<h2>How to choose, by reason for leaving Unity</h2>
<ul>
<li><strong>Left over pricing or trust?</strong> Go open source: Godot, Defold, Phaser, Three.js, or Cinevva. None can be repriced out from under you.</li>
<li><strong>Need 3D in the browser?</strong> PlayCanvas or Babylon.js (full engines with editors) or Three.js and Cinevva (for control and the smallest size).</li>
<li><strong>Building 2D?</strong> Defold for the smallest builds, Phaser for the biggest community.</li>
<li><strong>Don't want to code?</strong> Construct or GDevelop.</li>
<li><strong>Targeting mini-game platforms?</strong> Cocos Creator.</li>
</ul>
<p>Whatever you pick, the web rewards small builds and fast loads. Once you've chosen, see <a href="/tutorials/ship-web-game-fast">ship a web game that loads fast</a>.</p>
<h2>Common Questions</h2>
<h3>What is the best Unity alternative for web games?</h3>
<p>For most teams it's Godot: a free, open-source, full 2D and 3D engine with smaller web builds than Unity and a clean single-threaded export path for iOS and Safari. If you specifically need browser-first 3D, PlayCanvas or Three.js are lighter still. The best pick depends on whether you need 3D and whether you write code.</p>
<h3>Is there a free alternative to Unity?</h3>
<p>Yes, several. Godot, Defold, Phaser, PixiJS, Excalibur.js, and Three.js are all free and open-source with no revenue caps or seat fees. Cocos Creator and GDevelop also have free options. For web games specifically, these free engines often ship smaller, faster builds than Unity.</p>
<h3>Why switch from Unity for web games?</h3>
<p>The common reasons are build size (Unity's empty WebGL builds start around 8 to 11 MB versus 1 to 5 MB for web-native engines), mobile browser reliability, pricing trust after the 2023 Runtime Fee episode, and a preference for open source. If web is your main target, a web-first engine usually gives a better result.</p>
<h3>Can I replace Unity with an open-source engine?</h3>
<p>Yes. Godot is the closest open-source equivalent for general 2D and 3D, and it's MIT licensed with no fees. For web-native 3D, Three.js (and engines built on it like Cinevva) are open source too. The main migration cost is rebuilding in a new language, since each engine has its own scripting.</p>
<h3>What is the best open-source alternative to Unity?</h3>
<p>Godot. It's the only open-source engine that matches Unity's shape (one editor, 2D and 3D, scenes and nodes, a scripting language, exports to desktop, mobile, and web), and it's MIT licensed with no fees. If you want to keep writing C#, Godot supports it everywhere except the web and iOS, and the MIT-licensed <a href="https://github.com/stride3d/stride">Stride</a> is a pure C# engine for desktop. For web-native open source, Babylon.js (Apache 2.0) is the most complete engine and Three.js (MIT) the most-used library. Our <a href="/guides/open-source-game-engines-2026">open-source game engines guide</a> covers the full list.</p>
<h3>What are the alternatives to Unity for WebXR?</h3>
<p>Babylon.js has the most complete WebXR support of the web engines, with controllers, hand tracking, teleportation, and AR features built in, and Three.js has a mature WebXR layer that most web VR demos use. PlayCanvas supports WebXR too, including the XR manipulation features extended in its 2.21 release. Godot exposes WebXR through its <a href="https://docs.godotengine.org/en/stable/classes/class_webxrinterface.html">WebXRInterface</a> in web exports. Unity has no official WebXR export, so if browser-based VR or AR is the goal, a web-native engine is the practical choice. Whichever you pick, WebGPU rendering in WebXR is new, so check your headset browser with our <a href="/tools/webgl-webgpu-checker">WebGL and WebGPU checker</a>.</p>
<h3>Which Unity alternatives are free?</h3>
<p>Godot, Defold, Phaser, PixiJS, Excalibur.js, Three.js, Babylon.js, Bevy, and COCOS 4 are free with no revenue caps or seat fees. PlayCanvas's engine is MIT and its editor is free for public projects ($15 a month for private ones). GDevelop's engine is free and MIT licensed, and Construct has a free edition capped at 50 events. Compare that with Unity Personal, which is free only under $200K in revenue or funding. The <a href="/guides/best-free-game-engines-beginners">best free game engines for beginners</a> guide has a table of exactly what each &quot;free&quot; means.</p>
<h3>Is there a browser-based alternative to Unity with no install?</h3>
<p>Yes, several. PlayCanvas runs its whole editor in the browser, Construct and GDevelop both run in a tab, and Babylon.js has a free web-based editor and playground. If you want to skip the editor entirely, <a href="/create#prompt=Make%20a%20third%20person%20platformer%20that%20loads%20instantly%20in%20the%20browser">describe a game and play it in the browser</a> with Cinevva, then export or keep iterating. All of these produce a web build by default, which is the point if you're leaving Unity for the browser.</p>
<h3>Which Unity alternative has the smallest web build?</h3>
<p>Among full engines, Defold is the smallest at about 1.14 MB. Three.js as a library is even smaller, with a core around 150 KB, though you add your own game code. Godot lands around 5 MB with Brotli or 9 MB gzipped, still well under Unity's 8 MB-plus starting point.</p>
<p><BuildCta
  title="The most radical Unity alternative: no engine at all"
  desc="Describe your game and play it in the browser in about a minute."
  prompt="Make a third person platformer that loads instantly in the browser" /></p>
<h2>Related</h2>
<ul>
<li><a href="/guides/web-game-engines-comparison">Best Web Game Engines for 2026 (Compared)</a>: the full field, ranked</li>
<li><a href="/guides/open-source-game-engines-2026">Best Open-Source Game Engines for 2026</a>: the free, fork-it-yourself options in one place</li>
<li><a href="/guides/godot-vs-unity-web-games">Godot vs Unity for Web Games</a>: the closest alternative, head to head</li>
<li><a href="/news/2024-09-12-unity-runtime-fee-cancelled">Unity Runtime Fee Cancelled: the official story</a>: why pricing trust became a deciding factor</li>
<li><a href="/guides/best-2d-game-engines-2026">Best 2D Game Engines for 2026</a>: if your game is 2D</li>
<li><a href="/guides/playcanvas-vs-threejs">PlayCanvas vs Three.js</a>: engine versus library for web 3D</li>
<li><a href="/engine">Cinevva Engine</a>: our open-source, web-first engine built on Three.js</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Best 2D Game Engines for 2026 (Compared)]]></title>
            <link>https://app.cinevva.com/guides/best-2d-game-engines-2026</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/best-2d-game-engines-2026</guid>
            <pubDate>Sun, 07 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[The best 2D game engines for 2026 - Godot, GameMaker, Construct, Defold, Phaser, GDevelop, Unity, and LÖVE, compared by price, web export, build size, and who each one is for.]]></description>
            <content:encoded><![CDATA[<h1>Best 2D Game Engines for 2026 (Compared)</h1>
<figure style="margin:1.5rem 0">
<img src="https://cdn.cinevva.com/guides/best-2d-game-engines-2026-hero.jpg?v=2" alt="Best 2D game engines for 2026: Godot, GameMaker, Construct, Defold, Phaser" style="width:100%;border-radius:10px">
</figure>
<p>2D is alive and well in 2026, and you've got more good engines than ever. If you only read one line: Godot is the best 2D game engine for most people, Construct or GDevelop if you don't want to code, Defold if you need the smallest web build, and Phaser if you already write JavaScript. The right one depends on whether you code or not, whether you're shipping to the web, and how small you need the build. Here's how the main options compare, and who each one is for, with every version and price checked as of September 2026.</p>
<p>If you're weighing 3D or full cross-platform engines too, see the broader <a href="/guides/web-game-engines-comparison">web game engines comparison</a>.</p>
<style>
.video-embed {
  position: relative;
  width: 100%;
  max-width: 720px;
  margin: 1.5rem 0;
}
.video-embed iframe {
  width: 100%;
  aspect-ratio: 16/9;
  border-radius: 8px;
}
.video-caption {
  font-size: 0.9rem;
  color: var(--vp-c-text-2);
  margin-top: 0.5rem;
  margin-bottom: 1.5rem;
}
</style>
<h2>Quick Reference</h2>
<table>
<thead>
<tr>
<th>Engine</th>
<th>Price</th>
<th>Web export</th>
<th>Best for</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="https://godotengine.org/"><strong>Godot</strong></a></td>
<td>Free (MIT)</td>
<td>Good (WebGL2, GDScript)</td>
<td>Best all-round and open-source pick</td>
</tr>
<tr>
<td><a href="https://gamemaker.io/"><strong>GameMaker</strong></a></td>
<td>Free non-commercial, $99.99 one-time Pro</td>
<td>HTML5 included</td>
<td>Commercial 2D, fast shipping</td>
</tr>
<tr>
<td><a href="https://www.construct.net/"><strong>Construct</strong></a></td>
<td>Free edition, $129.99/yr Personal</td>
<td>Excellent (HTML5-native)</td>
<td>Beginners and no-code, web-first</td>
</tr>
<tr>
<td><a href="https://defold.com/"><strong>Defold</strong></a></td>
<td>Free</td>
<td>Excellent (&lt;2 MB gzip)</td>
<td>Smallest, fastest-loading web builds</td>
</tr>
<tr>
<td><a href="https://phaser.io/"><strong>Phaser</strong></a></td>
<td>Free (MIT)</td>
<td>Native (it's a JS framework)</td>
<td>Code-first web games</td>
</tr>
<tr>
<td><a href="https://gdevelop.io/"><strong>GDevelop</strong></a></td>
<td>Free, optional paid cloud tiers</td>
<td>Yes (HTML5)</td>
<td>Free no-code</td>
</tr>
<tr>
<td><a href="https://unity.com/"><strong>Unity</strong></a></td>
<td>Personal free under $200K; Pro $2,310/yr</td>
<td>Yes (WebGL2)</td>
<td>Big ecosystem, cross-platform reach</td>
</tr>
<tr>
<td><a href="https://love2d.org/"><strong>LÖVE</strong></a></td>
<td>Free (open-source)</td>
<td>Via love.js (third-party)</td>
<td>Minimalist Lua prototyping</td>
</tr>
</tbody>
</table>
<div class="video-embed">
<iframe src="https://www.youtube.com/embed/a_TDD1QhYGg" title="Unity vs Godot vs Defold! Game Engine Comparison" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<div class="video-caption">Asatte Games compares three of the engines below head to head.</div>
<h2>The Engines</h2>
<h3>Godot</h3>
<p>The open-source favorite, and a genuinely excellent 2D engine. Godot 4.7 (June 2026, at 4.7.2 since August 2026 with 4.8 in development, per the <a href="https://godotengine.org/blog/">Godot blog</a>) has a dedicated 2D renderer, a lightweight editor, and beginner-friendly GDScript. It's free under the MIT license with no royalties. Web export is solid on WebGL2, with the caveat that only GDScript exports to the browser, not C#. If you want one free tool that does great 2D and decent 3D, this is the default pick.</p>
<p><strong>Best for:</strong> all-round 2D, open-source projects, pixel art.</p>
<h3>GameMaker</h3>
<p>The engine behind hits like Undertale and a long line of commercial 2D games. It uses GML, its own fast scripting language, and ships HTML5 export even on the free tier. Pricing changed to a friendly model: free for non-commercial use and a one-time $99.99 Professional license for commercial work, instead of a subscription. Only console export still needs the Enterprise subscription, per <a href="https://gamemaker.io/en/get">GameMaker's pricing page</a> as of September 2026.</p>
<p><strong>Best for:</strong> commercial 2D where you want to ship fast, pixel art.</p>
<h3>Construct</h3>
<p>A browser-based, no-code engine built around an event system. You build games visually with no programming, and because it's HTML5-native, web export is excellent. Pricing is subscription-based. As of September 2026 the Personal plan is $129.99 a year or $15.99 a month, per <a href="https://www.construct.net/en/make-games/buy-construct">Construct's pricing page</a>, and the free edition caps you at 50 events and 2 layers, which is enough to learn on but not to ship anything big.</p>
<p><strong>Best for:</strong> beginners, no-code creators, and web-first 2D.</p>
<h3>Defold</h3>
<p>A free engine from former King developers that produces astonishingly small web builds, often under 2 MB gzipped. That makes it ideal for casual web games and mini-game platforms where load time is everything. It uses Lua and is source-available under the Defold License. Defold 1.13.1 (August 2026) added first-class light components (ambient, directional, point, and spot) on top of the morph targets from 1.13.0, so its 3D side keeps growing, per the <a href="https://defold.com/2026/08/17/Defold-1-13-1/">1.13.1 release notes</a>.</p>
<p><strong>Best for:</strong> the smallest, fastest-loading web games.</p>
<h3>Phaser</h3>
<p>The most popular HTML5 game framework, and a code-first one. Phaser 4 (released April 2026, at 4.2.1 since July 2026 per the <a href="https://github.com/phaserjs/phaser/releases">Phaser releases</a>) brought a new WebGL2 renderer rebuilt from the ground up. It's WebGL2, not WebGPU, and that's fine for 2D. It's free and open-source, you write JavaScript or TypeScript, and because it's a web framework there's no &quot;export&quot; step, your game already runs in the browser.</p>
<p><strong>Best for:</strong> developers who want a code-first, web-native 2D framework.</p>
<h3>GDevelop</h3>
<p>Open-source and no-code, GDevelop is one of the most beginner-friendly engines around. The engine is free and MIT licensed, with optional Silver, Gold, and Pro tiers that pay for cloud builds and online services (the <a href="https://forum.gdevelop.io/t/gdevelop-premium-subscription-prices-will-increase-this-monday/74132">GDevelop team raised those prices 20% in January 2026</a>), and it exports HTML5 builds for free. Releases land almost weekly, with 5.6.281 out in late August 2026. A good middle ground if you want no-code but also want open-source.</p>
<p><strong>Best for:</strong> free no-code 2D.</p>
<h3>Unity</h3>
<p>Unity's 2D toolset is mature, and the ecosystem and asset store are unmatched. It's overkill for a small 2D game, but if you want cross-platform reach or plan to grow into 3D, it earns its place. Personal is free under $200K revenue or funding, Pro is $2,310 a year per seat, per <a href="https://unity.com/pricing">Unity's pricing page</a> as of September 2026. Unity 6.6 (August 2026) is the current release, and since Unity 6.5 deprecated the Built-in Render Pipeline, start new 2D projects on URP's 2D Renderer. Unlike Godot, Unity's C# does export to the web.</p>
<p><strong>Best for:</strong> teams that want the ecosystem or cross-platform reach.</p>
<h3>LÖVE (Love2D)</h3>
<p>A minimalist Lua framework, not a full editor. You write code, it runs. LÖVE 11.5 is still the current stable release as of September 2026, with 12.0 in development (the <a href="https://github.com/love2d/love/milestone/1">12.0 milestone</a> is nearly complete but unreleased). Web export exists through the third-party love.js, but it isn't first-class. Reach for LÖVE if you love writing code and want almost no abstraction between you and the game loop.</p>
<p><strong>Best for:</strong> code-focused hobbyists and lightweight prototypes.</p>
<div class="video-embed">
<iframe src="https://www.youtube.com/embed/ZiBsbBGT9L4" title="Unreal vs Unity vs Godot, which one is better in 2026?" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<div class="video-caption">InspirationTuts puts the big engines side by side for 2026.</div>
<h2>How to Choose</h2>
<ul>
<li><strong>You don't want to code:</strong> Construct or GDevelop. Construct if you're shipping to web, GDevelop if you want open-source.</li>
<li><strong>You want the smallest, fastest web build:</strong> Defold.</li>
<li><strong>You write code and target the web:</strong> Phaser.</li>
<li><strong>You want one free engine for everything:</strong> Godot.</li>
<li><strong>You're shipping a commercial 2D game:</strong> GameMaker or Unity.</li>
<li><strong>You need the biggest ecosystem or plan to add 3D:</strong> Unity.</li>
</ul>
<p>Whichever you pick, you'll need art and audio. See <a href="/guides/game-assets-guide">where to find free game assets</a> for sources you can drop straight in.</p>
<h2>Common Questions</h2>
<h3>What is the best 2D game engine in 2026?</h3>
<p>For most people, Godot is the best all-round 2D engine: free, open-source, with a first-class 2D renderer. If you don't want to code, Construct (web-first) or GDevelop (open-source) are better. For commercial 2D, GameMaker and Unity are proven. The &quot;best&quot; one depends on whether you code and where you're shipping.</p>
<h3>Which 2D game engine is best for beginners?</h3>
<p>Construct and GDevelop are the most beginner-friendly because they're no-code, you build with visual event systems instead of programming. GDevelop is free and open-source, Construct is subscription-based but has the smoothest web export. If you want to learn to code along the way, Godot with GDScript is the gentlest of the code-based engines.</p>
<h3>What is the best free 2D game engine?</h3>
<p>Godot is the strongest free, open-source 2D engine with no fees or royalties. GDevelop is the best free no-code option, Defold is free with the smallest web builds, and Phaser is a free open-source framework if you code. GameMaker is free for non-commercial use, then a one-time $99.99 license for commercial projects.</p>
<h3>What is the best game engine for 2D games?</h3>
<p>Godot, for most people. Its dedicated 2D renderer, MIT license, and GDScript make it the best all-round game engine for 2D games in 2026, whether you're doing pixel art or vector-style 2D. If you'd rather not code, Construct or GDevelop are the best 2D game engines with visual events. If you're shipping a commercial 2D game and want a proven pipeline, GameMaker is the specialist pick.</p>
<h3>Which engine should I use to make a 2D game?</h3>
<p>Match it to how you work. Coders who want one free tool: Godot. Web developers: Phaser. No-code creators: GDevelop (free) or Construct (polished, subscription). Load time above all: Defold. If you're still not sure, try the idea first with no engine at all, for example by <a href="/create#prompt=Make%20a%20neon%202D%20side-scrolling%20runner%20with%20coins%20and%20a%20high%20score">describing a 2D runner and playing it in the browser</a>, then pick the engine once you know what the game is.</p>
<h3>What is a 2D game development engine, and do I need one?</h3>
<p>A 2D game development engine bundles the parts every 2D game needs: a sprite renderer, a scene or level editor, input, audio, physics, and an export pipeline. You don't strictly need one (see <a href="/tutorials/canvas-2d-game-loop">building a game loop on Canvas 2D</a>), but an engine saves months and gives you tested export paths to web, desktop, and mobile. For a first 2D game, Godot or GDevelop are the fastest way to a finished, shippable result.</p>
<h3>Which 2D engine makes the smallest web games?</h3>
<p>Defold produces the smallest web builds, frequently under 2 MB gzipped, which is why it's popular for casual and mini-game platforms where load time decides whether players stick around. Phaser and Godot are also reasonable, but Defold leads on raw footprint.</p>
<p><BuildCta
  title="Not sure which 2D engine to pick? Skip the decision"
  desc="Describe a 2D game and play it in about a minute, no engine install needed."
  prompt="Make a neon 2D side-scrolling runner with coins and a high score" /></p>
<h2>Related</h2>
<ul>
<li><a href="/guides/vibe-coding-game-prompts">100 AI Game Prompt Ideas You Can Build in One Click</a>: steal an idea and have it playable in about a minute</li>
<li><a href="/guides/web-game-engines-comparison">Best Web Game Engines for 2026 (Compared)</a>: 2D and 3D, the full field</li>
<li><a href="/guides/godot-vs-unity-web-games">Godot vs Unity for Web Games</a>: the two big engines head to head</li>
<li><a href="/guides/construct-vs-gdevelop">Construct vs GDevelop</a>: the two no-code 2D engines compared</li>
<li><a href="/guides/game-assets-guide">Where to Find Free Game Assets</a>: art and audio for your 2D game</li>
<li><a href="/tutorials/canvas-2d-game-loop">Canvas 2D game loop</a>: build a 2D game with no engine at all</li>
<li><a href="/engine">Cinevva Engine</a>: our open-source, web-first engine</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Construct vs GDevelop: Best No-Code 2D Engine (2026)]]></title>
            <link>https://app.cinevva.com/guides/construct-vs-gdevelop</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/construct-vs-gdevelop</guid>
            <pubDate>Sun, 07 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Construct vs GDevelop in 2026 - two no-code 2D game engines compared on price, web export, 3D support, scripting, multiplayer, and open-source, with a pick for each kind of creator.]]></description>
            <content:encoded><![CDATA[<h1>Construct vs GDevelop: Best No-Code 2D Engine (2026)</h1>
<figure style="margin:1.5rem 0">
<img src="https://cdn.cinevva.com/guides/construct-vs-gdevelop-hero.jpg?v=2" alt="Construct vs GDevelop, no-code 2D game engines in 2026" style="width:100%;border-radius:10px">
</figure>
<p>If you want to make a game without writing code, these two lead the pack. Both build games with visual event logic instead of programming, and both export to the web. The big split is philosophy and price: Construct is a polished subscription product ($129.99 a year for Personal), GDevelop is free and open source with optional paid cloud services. If you want one line: GDevelop for free, open-source, and stronger 3D, Construct for the most polished 2D event workflow and built-in multiplayer. Here's how they compare in 2026, with pricing and 3D status checked as of September 2026.</p>
<p>For the wider field including code-based engines, see the <a href="/guides/web-game-engines-comparison">web game engines comparison</a> and <a href="/guides/best-2d-game-engines-2026">best 2D game engines for 2026</a>.</p>
<style>
.video-embed {
  position: relative;
  width: 100%;
  max-width: 720px;
  margin: 1.5rem 0;
}
.video-embed iframe {
  width: 100%;
  aspect-ratio: 16/9;
  border-radius: 8px;
}
.video-caption {
  font-size: 0.9rem;
  color: var(--vp-c-text-2);
  margin-top: 0.5rem;
  margin-bottom: 1.5rem;
}
</style>
<h2>Quick Verdict</h2>
<table>
<thead>
<tr>
<th></th>
<th>Construct</th>
<th>GDevelop</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Model</strong></td>
<td>Proprietary, subscription</td>
<td>Free, open-source (MIT)</td>
</tr>
<tr>
<td><strong>Logic</strong></td>
<td>Event sheets</td>
<td>Event system</td>
</tr>
<tr>
<td><strong>Price</strong></td>
<td>Free edition, Personal $129.99/yr</td>
<td>Free, optional paid cloud tiers</td>
</tr>
<tr>
<td><strong>Web export</strong></td>
<td>Excellent (HTML5-native)</td>
<td>Yes (HTML5)</td>
</tr>
<tr>
<td><strong>3D</strong></td>
<td>Growing (3D editor in r487, 3D lighting in beta, 2D-first)</td>
<td>Full real-time 3D editor (5.6)</td>
</tr>
<tr>
<td><strong>Scripting</strong></td>
<td>JavaScript and TypeScript</td>
<td>Events + JavaScript</td>
</tr>
<tr>
<td><strong>Best for</strong></td>
<td>Polished workflow, built-in multiplayer</td>
<td>Free, open-source, newer 3D</td>
</tr>
</tbody>
</table>
<h2>No-Code, Two Ways</h2>
<p>Both engines let you build a game by stacking visual conditions and actions, no programming required. Construct uses &quot;event sheets,&quot; a clean, spreadsheet-like flow that's widely praised for how fast you can prototype in it. GDevelop uses a similar event system and is just as approachable for beginners.</p>
<p>The difference that matters most: <strong>Construct is a paid, closed-source product; GDevelop is free and open source under the MIT license.</strong> If open source or zero cost is a priority, that alone may decide it.</p>
<div class="video-embed">
<iframe src="https://www.youtube.com/embed/MDlP01bwczo" title="Why I Switched From Construct 3 To GDevelop" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<div class="video-caption">One creator's take on moving from Construct to GDevelop.</div>
<h2>Pricing</h2>
<p>Construct 3 runs on a subscription. There's a free edition capped at 50 events and 2 layers, and as of September 2026 the Personal plan is $129.99 a year or $15.99 a month, with Education ($32.99 per seat a year), Startup Business ($168.99 per seat a year), and Business ($468.99 per seat a year) tiers above that, per <a href="https://www.construct.net/en/make-games/buy-construct">Construct's pricing page</a>. That's up from the $99 a year Personal plan we reported in July. You're paying for a polished, actively developed product.</p>
<p>GDevelop's engine is free and open source. Optional Silver, Gold, and Pro tiers add cloud projects, more daily desktop and mobile builds, AI credits, and bigger multiplayer lobbies, but you can build and export web games fully for free. The free plan gives you 3 cloud projects, one desktop or Android publish a day, one leaderboard per game, and 4-player lobbies, per <a href="https://gdevelop.io/pricing">GDevelop's pricing page</a>. The team <a href="https://forum.gdevelop.io/t/gdevelop-premium-subscription-prices-will-increase-this-monday/74132">raised Silver, Gold, and Pro prices by 20% on January 12, 2026</a>, and the page now loads live regional prices, so check it for your currency.</p>
<p>For a hobbyist or anyone cost-sensitive, GDevelop's free tier is hard to argue with. For a studio that wants a refined commercial tool, Construct's subscription is reasonable.</p>
<h2>3D, Scripting, and Multiplayer</h2>
<p><strong>3D:</strong> GDevelop pulled ahead here. Its 5.6 release (December 2025) shipped a full real-time 3D editor with Jolt-based physics, shadows, animated models, 3D particles, and ready-made character and vehicle behaviors, and later 5.6 updates added 3D point and spot lights. Construct is catching up: the r487 stable release (May 2026) added a 3D editor mode with gizmos and a 3D bullet behavior on top of its 3D camera and glTF model support, and the beta channel followed in August 2026 with <a href="https://www.construct.net/en/make-games/releases/beta/r498">3D lighting in r498</a>, the biggest visual update Construct has shipped in a while. It's a real step forward, but it's still layered on a fundamentally 2D engine. GDevelop, meanwhile, keeps shipping near-weekly 5.6 releases (5.6.281 in late August 2026) with 3D physics and editor refinements.</p>
<p><strong>Scripting:</strong> when you outgrow events, both let you drop into code. Construct supports JavaScript and TypeScript alongside event sheets. GDevelop supports JavaScript through its events and extensions. Both keep the no-code path primary.</p>
<p><strong>Multiplayer:</strong> Construct ships a built-in Multiplayer object over WebRTC data channels for peer-to-peer games. GDevelop has built-in lobby-based multiplayer through its online services, with the free plan capped at 4 players per lobby and paid plans raising the limit.</p>
<div class="video-embed">
<iframe src="https://www.youtube.com/embed/Jjsfk-vzlWQ" title="Construct 3 Is Officially Going 3D" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<div class="video-caption">FoozleCC on Construct's move into 3D.</div>
<h2>When to Pick Which</h2>
<p>Pick <strong>GDevelop</strong> if you want free and open source, cross-platform export, and the more capable real-time 3D editor. It's the better fit for hobbyists, students, and anyone who wants to own their tooling.</p>
<p>Pick <strong>Construct</strong> if you want the most polished event-sheet workflow, mature and reliable HTML5 export, and built-in WebRTC multiplayer, and you don't mind a subscription for a refined commercial product.</p>
<p>Either way, you'll need art and audio. See <a href="/guides/game-assets-guide">where to find free game assets</a> for sources you can use right away.</p>
<h2>Common Questions</h2>
<h3>Is Construct or GDevelop better for beginners?</h3>
<p>Both are designed for beginners and use visual event logic with no coding required. GDevelop wins on cost (it's free and open source) and now has a stronger 3D editor. Construct wins on workflow polish and built-in multiplayer. If budget matters, start with GDevelop. If you want the most refined 2D event workflow, try Construct's free edition first.</p>
<h3>Is GDevelop really free?</h3>
<p>Yes. The GDevelop engine is free and open source under the MIT license, and you can build and export HTML5 games at no cost. Optional Silver, Gold, and Pro tiers add cloud projects, extra daily builds, and online services, but they're not required to make and ship a web game.</p>
<h3>Can Construct and GDevelop make 3D games?</h3>
<p>Both have 3D, but GDevelop is further along. GDevelop 5.6 (December 2025) added a full real-time 3D editor with physics, shadows, and animated models. Construct added its own 3D editor mode in r487 (May 2026) alongside its 3D camera and glTF model support, but it remains primarily a 2D engine. For 3D-leaning projects, GDevelop is still the stronger no-code option.</p>
<h3>GDevelop pricing in 2026: what does it cost?</h3>
<p>The engine costs nothing: GDevelop is MIT licensed and you can build and export HTML5 games for free, forever. The paid part is the optional cloud services. Free gives you 3 cloud projects, one desktop or Android publish a day, one leaderboard per game, and 4-player lobbies. Silver, Gold, and Pro raise those limits (Gold adds iOS publishing, Pro removes the caps) and went up 20% on January 12, 2026. <a href="https://gdevelop.io/pricing">GDevelop's pricing page</a> shows live prices in your currency, with a discount for paying yearly.</p>
<h3>GDevelop vs Buildbox: which no-code engine?</h3>
<p>GDevelop, for most people. It's free and open source, exports to web, mobile, and desktop without a fee, and its 3D editor has grown fast. Buildbox is a proprietary, subscription-based no-code tool that's best known for quick mobile hyper-casual games and templates, so you're paying monthly and building inside its constraints. If you want to own your tooling and ship to the web, GDevelop wins. If you want the fastest path to a templated mobile game and don't mind the subscription, Buildbox is the specialist.</p>
<h3>Construct 3 vs GDevelop for a beginner making web games?</h3>
<p>Both are good first engines and both run in a browser tab. Start with GDevelop if budget matters: it's free, the web export is unlimited, and gd.games hosts your game with a share link. Start with Construct if you value the most polished event-sheet workflow and don't mind that the free edition is capped at 50 events, so shipping anything real means the $129.99 a year Personal plan. Either way, finish a tiny game first. If you'd rather skip engines entirely for the first prototype, <a href="/create#prompt=Make%20a%20top-down%20maze%20chase%20where%20a%20ghost%20hunts%20me%20and%20I%20collect%20keys">describe a game and play it in the browser</a>, then bring the idea to whichever engine you pick.</p>
<h3>Do Construct and GDevelop export to the web?</h3>
<p>Yes, both export HTML5 games that run in the browser. Construct is HTML5-native with mature, reliable web export. GDevelop exports unlimited HTML5 builds, including locally for free. Both are solid choices for browser games.</p>
<p><BuildCta
  title="No-code is great. No-engine is faster"
  desc="Describe the game instead of wiring event sheets."
  prompt="Make a top-down maze chase where a ghost hunts me and I collect keys" /></p>
<h2>Related</h2>
<ul>
<li><a href="/guides/best-2d-game-engines-2026">Best 2D Game Engines for 2026</a>: the full 2D field, code and no-code</li>
<li><a href="/guides/web-game-engines-comparison">Best Web Game Engines for 2026 (Compared)</a>: 2D and 3D</li>
<li><a href="/guides/game-assets-guide">Where to Find Free Game Assets</a>: art and audio for your game</li>
<li><a href="/guides/itch-io-launch-guide">How to Launch Your Game on itch.io</a>: getting your game in front of players</li>
<li><a href="/engine">Cinevva</a>: make games with AI-powered tools, web-first</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Godot vs Unity for Web Games (2026)]]></title>
            <link>https://app.cinevva.com/guides/godot-vs-unity-web-games</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/godot-vs-unity-web-games</guid>
            <pubDate>Sun, 07 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Godot vs Unity for browser games in 2026 - build size, WebGL2 vs WebGPU, the C# web-export limit, iOS support, and pricing, with a clear pick for each kind of web game.]]></description>
            <content:encoded><![CDATA[<h1>Godot vs Unity for Web Games (2026)</h1>
<figure style="margin:1.5rem 0">
<img src="https://cdn.cinevva.com/guides/godot-vs-unity-web-hero.jpg?v=2" alt="Godot vs Unity for web games in 2026" style="width:100%;border-radius:10px">
</figure>
<p>Both Godot and Unity can ship a game to the browser. Short version: Godot (4.7.2, free, MIT) is the cleaner pick for small 2D and lighter 3D web games in GDScript, and Unity (6.6) wins when you need C# in the browser, heavier 3D, or WebGPU compute. They get there very differently, and for web specifically the gap between them is sharper than the general &quot;Godot vs Unity&quot; debate suggests. This guide compares them on the things that actually decide a web build: download size, rendering, language support, mobile browsers, and cost.</p>
<p>If you want the wider picture across every browser engine, start with our <a href="/guides/web-game-engines-comparison">web game engines comparison</a>. This page zooms in on the two big full-engine options.</p>
<style>
.video-embed {
  position: relative;
  width: 100%;
  max-width: 720px;
  margin: 1.5rem 0;
}
.video-embed iframe {
  width: 100%;
  aspect-ratio: 16/9;
  border-radius: 8px;
}
.video-caption {
  font-size: 0.9rem;
  color: var(--vp-c-text-2);
  margin-top: 0.5rem;
  margin-bottom: 1.5rem;
}
</style>
<div class="video-embed">
<iframe src="https://www.youtube.com/embed/84Prr0SOMvk" title="Unity or Godot in 2025 - Which Game Engine is Right for You?" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<div class="video-caption">Gamefromscratch walks through where each engine fits. The short version for web is below.</div>
<h2>Quick Verdict</h2>
<table>
<thead>
<tr>
<th></th>
<th>Godot</th>
<th>Unity</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Web build size (empty)</strong></td>
<td>~5 MB Brotli, ~9 MB gzipped</td>
<td>~7.7 MB 2D, ~10.7 MB 3D, ~2 MB stripped (Brotli)</td>
</tr>
<tr>
<td><strong>Web language</strong></td>
<td>GDScript only (C# can't export to web yet)</td>
<td>C# (works on web)</td>
</tr>
<tr>
<td><strong>Web rendering</strong></td>
<td>WebGL2 (Compatibility renderer)</td>
<td>WebGL2, plus WebGPU (fully supported since Unity 6.6, opt-in)</td>
</tr>
<tr>
<td><strong>iOS/Safari</strong></td>
<td>Good with single-threaded export (4.3+)</td>
<td>Mobile web from Unity 6</td>
</tr>
<tr>
<td><strong>Cost</strong></td>
<td>Free, MIT, no fees ever</td>
<td>Personal free under $200K; Pro $2,310/yr/seat</td>
</tr>
<tr>
<td><strong>Best for</strong></td>
<td>Free, small 2D and lighter 3D web games</td>
<td>Heavier 3D, C# teams, big asset ecosystem</td>
</tr>
</tbody>
</table>
<p>The single biggest deciding factor: <strong>if your game is written in C#, Unity can ship it to the web and Godot still cannot.</strong> Everything else flows from there.</p>
<h2>Build Size and Load Time</h2>
<p>Download size is the first thing a web player feels. Godot's web export ships the engine as a WebAssembly binary that compresses to roughly 5 MB with Brotli, or about 9 MB gzipped. The size comes from the prebuilt template carrying the full engine (3D renderer, audio, networking) because it can't know which features your game uses.</p>
<p>Unity's empty web builds, measured on Unity 6 with Brotli, land around 7.7 MB for a 2D built-in pipeline project and 10.7 MB for a 3D URP template. An aggressively stripped minimal build can get down near 2 MB. So a carefully trimmed Unity 2D build can approach Godot's footprint, but Godot's default is smaller with less effort.</p>
<p>For both engines, your assets usually dwarf the engine binary anyway. Compress textures and audio, stream what you can, and the engine choice matters less than your asset budget.</p>
<h2>The C# Limitation (Read This Before You Choose)</h2>
<p>This is the one that catches teams out. As of September 2026, <strong>Godot projects written in C# (.NET) cannot officially export to the web.</strong> The <a href="https://docs.godotengine.org/en/stable/tutorials/export/exporting_for_web.html">official web export docs</a> still say so for 4.7, and none of the 4.8 dev snapshots so far include it. GDScript exports fine. A working C# web prototype was demonstrated at GodotCon Boston in May 2025 by statically linking Mono, but it shipped a large payload and the team would not commit to a release timeline.</p>
<p>Unity, by contrast, compiles C# to WebAssembly and has shipped C# to the browser for years. So if you have an existing C# codebase, or your team only knows C#, Unity is the practical choice for web. If you're starting fresh and happy in GDScript, Godot's web path is clean.</p>
<h2>Rendering: WebGL2 vs WebGPU</h2>
<p>Godot's web export targets WebGL2 through its Compatibility renderer. Its broader WebGPU work isn't production-ready for web export yet. Godot 4.7 (June 2026, now at 4.7.2 as of August 2026, with 4.8 in dev snapshots) ships WebAssembly SIMD by default and added a wasm64 export option, which helps web performance without code changes.</p>
<p>Unity's WebGPU backend started as an experiment in Unity 6 and left experimental status in Unity 6.6 (August 2026): it's now a <a href="https://discussions.unity.com/t/webgpu-out-of-experimental-in-unity-6-6/1734694">fully supported graphics API for web builds</a>, covered by standard Unity support, exposing compute shaders, GPU Resident Drawing, and VFX Graph in the browser. It's still off by default, and a new Graphics Device Filtering setting lets you allow or deny WebGPU per device and fall back to WebGL2 automatically. WebGPU isn't on every browser yet (see our <a href="/guides/web-games-stack-2026">web games tech stack guide</a> for current support), so keep WebGL2 as the baseline. Unity 6 raised the WebAssembly heap to 4 GB and added Wasm SIMD and native exceptions, and the <a href="https://unity.com/releases/editor/whats-new/6000.6.0f1">6.6 release</a> lifts that to 16 GB with Wasm64 and adds per-scene progressive asset loading. One more rendering note: Unity 6.5 (June 2026) deprecated the Built-in Render Pipeline (supported through Unity 6.7 LTS, per <a href="https://unity.com/topics/render-pipelines-strategy-for-2026">Unity's render pipeline strategy</a>), so a new web project should start on URP.</p>
<p>If you need compute shaders or heavier 3D in the browser today, Unity's WebGPU path is well ahead, and as of 6.6 it's no longer a gamble. For 2D and lighter 3D on WebGL2, both are fine.</p>
<h2>Threading, iOS, and Hosting Headaches</h2>
<p>Godot 4 originally required SharedArrayBuffer, which browsers only expose when the page is cross-origin isolated (the COOP and COEP headers). That's a hosting headache, and on <a href="http://itch.io">itch.io</a> it only works in Chrome. Since Godot 4.3 you can export single-threaded builds that drop the requirement entirely, and that change also fixed the long-standing iOS and Safari playback problems. For a web-first Godot game, single-threaded export is usually the safer default.</p>
<p>Unity's web builds use WebAssembly too, with mobile web support starting at Unity 6. If you're targeting broad mobile browsers, test on real devices early in both engines, because that's where web builds break first.</p>
<div class="video-embed">
<iframe src="https://www.youtube.com/embed/WB7v-ezqcJM" title="I Made The Same Game in Unity and Godot, Which Engine is Better?" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<div class="video-caption">Thomas Grové builds the same game in both engines, a useful gut-check on day-to-day workflow.</div>
<h2>Pricing</h2>
<p>Godot is free under the MIT license. No seats, no royalties, no revenue cap, no fees, ever.</p>
<p>Unity reverted to seat-based subscriptions after canceling the Runtime Fee in September 2024 (it hasn't returned). Unity Personal stays free up to $200K in revenue or funding, and the &quot;Made with Unity&quot; splash became optional on Unity 6. Unity Pro is $2,310 per seat per year (or $210 a month) after the 5% increase to paid tiers took effect on January 12, 2026, per <a href="https://unity.com/pricing">Unity's pricing page</a> as of September 2026. For a solo dev or small team under the cap, both engines are effectively free to ship with.</p>
<h2>When to Pick Which</h2>
<p>Pick <strong>Godot</strong> for web when you want a free, small-footprint 2D or lighter-3D browser game, smooth iOS and Safari support through single-threaded export, and you're comfortable writing GDScript.</p>
<p>Pick <strong>Unity</strong> for web when you need heavier 3D or compute shaders via WebGPU (production-supported since 6.6), you want the larger asset ecosystem, or you're a C# team, and you can accept larger builds.</p>
<p>Either way, your build still has to load fast and run on a phone. See <a href="/tutorials/ship-web-game-fast">ship a web game that loads fast</a> once you've picked.</p>
<h2>Common Questions</h2>
<h3>Can Godot export C# games to the web?</h3>
<p>Not officially, as of September 2026. Godot's web export works for GDScript, but C# (.NET) projects cannot export to the browser yet. A prototype was shown at GodotCon Boston in May 2025, but there's no committed release date. If you need C# on the web, Unity is currently the only one of the two that ships it.</p>
<h3>Is Godot or Unity smaller for web builds?</h3>
<p>Godot's empty web build is around 5 MB compressed with Brotli. Unity 6 empty builds run about 7.7 MB for 2D and 10.7 MB for 3D, though an aggressively stripped Unity build can reach roughly 2 MB. Godot is smaller by default, but a tuned Unity 2D build can get close. Your own assets usually matter more than the engine binary.</p>
<h3>Does Unity support WebGPU in the browser?</h3>
<p>Yes. Unity 6 introduced WebGPU as an experimental backend, and Unity 6.6 (August 2026) made it a fully supported graphics API for web builds, with compute shaders and modern GPU features and WebGL2 as the fallback. It's still off by default, so enable it in Player Settings, use Graphics Device Filtering to control which devices get it, and keep WebGL2 as your baseline for browsers that don't have WebGPU yet.</p>
<h3>Godot C# web export in 2026: what's the status?</h3>
<p>Still unavailable in an official release as of September 2026. Godot 4.7.2's docs say C# projects cannot export to the web, the 4.8 dev snapshots (four so far, through August 2026) don't list it, and the only working paths are community builds that statically link Mono with large payloads and caveats. If C# in the browser is a hard requirement, use Unity for web today or write the web version in GDScript.</p>
<h3>Godot vs Unity for mobile games in 2026?</h3>
<p>For mobile web (games played in Safari or Chrome on a phone), Godot's single-threaded export gives you a smaller download and fewer iOS headaches, while Unity's mobile web support (Unity 6 and later) is better than it was but still heavier. For native mobile apps, both are strong: Unity has the deeper store integration, ad SDKs, and profiling tools, and Godot is free with no revenue cap and exports to iOS and Android from GDScript (C# exports to Android but, like web, not to iOS). Small teams under $200K revenue pay nothing either way.</p>
<h3>Can you use Unity assets in Godot?</h3>
<p>Often yes, for the raw content. Models (FBX, glTF, OBJ), textures, audio, and fonts import into Godot like any other files once you extract them from the .unitypackage. What doesn't carry over is anything Unity-specific: C# MonoBehaviour scripts, prefabs, materials, animator controllers, and shaders all need rebuilding. Check the license too: the <a href="https://unity.com/legal/as-terms">Unity Asset Store EULA</a> doesn't limit standard assets to Unity projects, but some assets carry separate &quot;Restricted Asset&quot; terms, so read the terms that ship with the asset before you move it.</p>
<h3>Why is Godot better than Unity?</h3>
<p>It isn't better for everyone, but for web games specifically Godot wins on the things that matter most: a smaller default web build, an MIT license with no seats or revenue caps, no history of pricing surprises, clean iOS and Safari support through single-threaded export, and a lighter editor that opens in seconds. Unity is better when you need C# in the browser, WebGPU compute (supported since 6.6), the Asset Store, or console and mobile publishing muscle. Pick by your game, not by the debate.</p>
<h3>Which is better for browser games, Godot or Unity?</h3>
<p>For free, lightweight 2D or lighter 3D games with good iOS support, Godot is the cleaner web path, as long as you use GDScript. For heavier 3D, compute shaders, the bigger ecosystem, or an existing C# codebase, Unity wins on web. The C# question usually decides it.</p>
<p><BuildCta
  title="Prototype in the browser before you pick a side"
  desc="Test your idea as a playable web game first, then commit to an engine."
  prompt="Make a third person coin collector on floating islands" /></p>
<h2>Related</h2>
<ul>
<li><a href="/guides/vibe-coding-game-prompts">100 AI Game Prompt Ideas You Can Build in One Click</a>: steal an idea and have it playable in about a minute</li>
<li><a href="/guides/web-game-engines-comparison">Best Web Game Engines for 2026 (Compared)</a>: the full field, beyond these two</li>
<li><a href="/guides/unity-alternatives-web-games">Unity Alternatives for Web Games</a>: every web-capable option, picked by why you're leaving Unity</li>
<li><a href="/guides/best-2d-game-engines-2026">Best 2D Game Engines for 2026</a>: if your game is 2D, start here</li>
<li><a href="/guides/web-games-stack-2026">Web Games Tech Stack in 2026</a>: WebGL, WebGPU, and Wasm explained</li>
<li><a href="/tutorials/ship-web-game-fast">Ship a web game that loads fast</a>: build-size and load-time tactics</li>
<li><a href="/engine">Cinevva Engine</a>: our open-source, web-first engine built on Three.js</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[PlayCanvas vs Three.js: Web 3D Compared (2026)]]></title>
            <link>https://app.cinevva.com/guides/playcanvas-vs-threejs</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/playcanvas-vs-threejs</guid>
            <pubDate>Sun, 07 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[PlayCanvas vs Three.js for 3D on the web - full engine with a visual editor versus a rendering library, plus WebGPU support, built-in systems, pricing, and when to pick each.]]></description>
            <content:encoded><![CDATA[<h1>PlayCanvas vs Three.js: Web 3D Compared (2026)</h1>
<figure style="margin:1.5rem 0">
<img src="https://cdn.cinevva.com/guides/playcanvas-vs-threejs-hero.jpg?v=2" alt="PlayCanvas vs Three.js for web 3D in 2026" style="width:100%;border-radius:10px">
</figure>
<p>People line these two up as rivals, but they're not the same kind of tool. PlayCanvas is a full game engine with a visual editor. Three.js is a rendering library you build on with code. Picking between them is really a question of how much you want handed to you versus how much you want to control. Here's the breakdown for web 3D in 2026.</p>
<p>For the wider field, see our <a href="/guides/web-game-engines-comparison">web game engines comparison</a>.</p>
<style>
.video-embed {
  position: relative;
  width: 100%;
  max-width: 720px;
  margin: 1.5rem 0;
}
.video-embed iframe {
  width: 100%;
  aspect-ratio: 16/9;
  border-radius: 8px;
}
.video-caption {
  font-size: 0.9rem;
  color: var(--vp-c-text-2);
  margin-top: 0.5rem;
  margin-bottom: 1.5rem;
}
</style>
<h2>Quick Verdict</h2>
<table>
<thead>
<tr>
<th></th>
<th>PlayCanvas</th>
<th>Three.js</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>What it is</strong></td>
<td>Full engine + cloud editor</td>
<td>Rendering library (no editor)</td>
</tr>
<tr>
<td><strong>Workflow</strong></td>
<td>Visual editor, real-time collaboration</td>
<td>Code-only</td>
</tr>
<tr>
<td><strong>Rendering</strong></td>
<td>WebGL2 + WebGPU</td>
<td>WebGL2 + WebGPU (WebGPURenderer)</td>
</tr>
<tr>
<td><strong>Built-in systems</strong></td>
<td>ECS, physics, animation, audio, input</td>
<td>Renderer only, you add the rest</td>
</tr>
<tr>
<td><strong>License/cost</strong></td>
<td>Engine MIT; editor free to $50/seat/mo</td>
<td>MIT, free</td>
</tr>
<tr>
<td><strong>Best for</strong></td>
<td>Teams wanting a turnkey engine + editor</td>
<td>Custom, code-first, maximum control</td>
</tr>
</tbody>
</table>
<h2>Engine vs Library</h2>
<p>This is the whole story in one line. <strong>PlayCanvas gives you a game engine</strong>: an entity-component system, physics, animation, audio, input, and an asset pipeline, all wired together, plus a browser-based editor where a team can build a scene together in real time (think collaborative editing, like a design tool for 3D).</p>
<p><strong>Three.js gives you a renderer.</strong> Scene graph, cameras, lights, materials, and a fast WebGL/WebGPU renderer. No editor, no physics, no game loop opinions. You add physics with something like Rapier or cannon-es, structure your own game logic, and build whatever tooling you need. That's freedom and also more work.</p>
<p>So the real question isn't &quot;which is better,&quot; it's &quot;do I want an engine or a renderer?&quot;</p>
<div class="video-embed">
<iframe src="https://www.youtube.com/embed/-0envvPmj5k" title="PlayCanvas Game Engine Open Sourced" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<div class="video-caption">Gamefromscratch on PlayCanvas going open source.</div>
<h2>Rendering and WebGPU</h2>
<p>Both are modern on the GPU front. PlayCanvas runs a dual WebGL2 and WebGPU backend. Its v2.0 release (August 2024) dropped WebGL1 entirely, and recent engine builds added a compute-based WebGPU path for 3D Gaussian splats. Three.js shipped a production-ready WebGPURenderer around r171 (September 2025) with near zero-config setup and an automatic WebGL2 fallback, plus TSL (Three.js Shading Language) so you can author shaders once and target both backends.</p>
<p>For most projects in 2026 either will render beautifully. WebGPU is the upgrade path on both, with WebGL2 as the safe baseline. See our <a href="/guides/web-games-stack-2026">web games tech stack guide</a> for current browser support.</p>
<div class="video-embed">
<iframe src="https://www.youtube.com/embed/7we9mqIOKyw" title="Embracing WebGPU and WebXR With Three.js - Mr.doob, JSNation 2024" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<div class="video-caption">Three.js creator Mr.doob on where WebGPU and WebXR are taking the library.</div>
<h2>Workflow, Licensing, and Cost</h2>
<p>PlayCanvas's editor is its headline feature: a hosted, collaborative scene editor with an asset pipeline. The engine is open source under MIT, and the editor frontend was open-sourced in 2025 too. The hosted editor has tiers, a free plan, a Personal plan around $15 a month, and an Organization plan around $50 per seat a month, mostly differing on storage and private project limits.</p>
<p>Three.js is MIT and free, full stop. There's no editor to pay for because there's no editor. Your &quot;cost&quot; is the engineering time to build the structure PlayCanvas hands you.</p>
<h2>When to Pick Which</h2>
<p>Pick <strong>PlayCanvas</strong> when you want a complete engine and a visual editor out of the box, your team needs to collaborate on scenes, and you'd rather configure than build from scratch. It's especially strong for product configurators, interactive 3D, and teams shipping quickly.</p>
<p>Pick <strong>Three.js</strong> when you want full control over rendering and architecture, you're comfortable assembling your own stack, or you're building something bespoke where an engine's opinions would get in the way. It's also the larger ecosystem and the most in-demand web-3D skill. We built <a href="/engine">Cinevva Engine</a> on Three.js for exactly that reason: web-first, open, and no ceiling on what we can customize.</p>
<h2>Common Questions</h2>
<h3>Is PlayCanvas or Three.js better for web games?</h3>
<p>Neither is strictly better, they're different tools. PlayCanvas is a full engine with a visual editor, so it's faster to ship a structured game or interactive app, especially for a team. Three.js is a rendering library that gives you total control but expects you to build the game systems yourself. Choose PlayCanvas for turnkey, Three.js for custom.</p>
<h3>Is Three.js a game engine?</h3>
<p>No. Three.js is a 3D rendering library. It handles the scene graph, cameras, lights, materials, and rendering through WebGL2 or WebGPU, but it has no built-in physics, audio, input, or game loop. You add those with other libraries (like Rapier for physics) or build them yourself. PlayCanvas, by contrast, is a full engine.</p>
<h3>Do PlayCanvas and Three.js support WebGPU?</h3>
<p>Yes, both do in 2026. PlayCanvas runs a dual WebGL2/WebGPU backend. Three.js has a production-ready WebGPURenderer (stable since around r171) with an automatic WebGL2 fallback and TSL for cross-target shaders. Ship WebGL2 as your baseline and treat WebGPU as the performance upgrade.</p>
<h3>Is PlayCanvas free?</h3>
<p>The PlayCanvas engine is free and open source under the MIT license, and the editor frontend was open-sourced in 2025. The hosted cloud editor has a free tier plus paid plans (around $15/month Personal and $50/seat/month Organization) that mainly add storage and private projects. Three.js is entirely free with no editor to pay for.</p>
<p><BuildCta
  title="Want the 3D result without the engine tour?"
  desc="Describe the scene and get something playable, not a boilerplate project."
  prompt="Make a 3D marble race track with loops and a timer" /></p>
<h2>Related</h2>
<ul>
<li><a href="/guides/web-game-engines-comparison">Best Web Game Engines for 2026 (Compared)</a> — the full field</li>
<li><a href="/guides/threejs-vs-babylonjs">Three.js vs Babylon.js</a> — if you've narrowed it to web-3D libraries</li>
<li><a href="/guides/godot-vs-unity-web-games">Godot vs Unity for Web Games</a> — full engines instead of libraries</li>
<li><a href="/guides/web-games-stack-2026">Web Games Tech Stack in 2026</a> — WebGL, WebGPU, and Wasm</li>
<li><a href="/engine">Cinevva Engine</a> — our open-source engine built on Three.js</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Three.js vs Babylon.js: Which Web 3D Library (2026)]]></title>
            <link>https://app.cinevva.com/guides/threejs-vs-babylonjs</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/threejs-vs-babylonjs</guid>
            <pubDate>Sun, 07 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Three.js vs Babylon.js in 2026 - minimal renderer versus full engine, WebGPU and WGSL support, built-in tools, bundle size, TypeScript, and when to pick each for web 3D.]]></description>
            <content:encoded><![CDATA[<h1>Three.js vs Babylon.js: Which Web 3D Library (2026)</h1>
<figure style="margin:1.5rem 0">
<img src="https://cdn.cinevva.com/guides/threejs-vs-babylonjs-hero.jpg?v=2" alt="Three.js vs Babylon.js for web 3D in 2026" style="width:100%;border-radius:10px">
</figure>
<p>These are the two heavyweights of web 3D, and the choice between them comes down to philosophy. Three.js is a lean renderer you extend. Babylon.js is a full engine with the tools already in the box. Both are excellent, both are free, both do WebGPU in 2026. Here's how to pick.</p>
<p>For 2D engines or full game engines instead, see the <a href="/guides/web-game-engines-comparison">web game engines comparison</a>.</p>
<style>
.video-embed {
  position: relative;
  width: 100%;
  max-width: 720px;
  margin: 1.5rem 0;
}
.video-embed iframe {
  width: 100%;
  aspect-ratio: 16/9;
  border-radius: 8px;
}
.video-caption {
  font-size: 0.9rem;
  color: var(--vp-c-text-2);
  margin-top: 0.5rem;
  margin-bottom: 1.5rem;
}
</style>
<h2>Quick Verdict</h2>
<table>
<thead>
<tr>
<th></th>
<th>Three.js</th>
<th>Babylon.js</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Style</strong></td>
<td>Minimal renderer/library</td>
<td>Full engine/framework</td>
</tr>
<tr>
<td><strong>Language</strong></td>
<td>JavaScript (with type defs)</td>
<td>TypeScript-first</td>
</tr>
<tr>
<td><strong>Built-in tools</strong></td>
<td>Renderer; add-ons for the rest</td>
<td>Physics, GUI, Inspector, Playground, NME</td>
</tr>
<tr>
<td><strong>WebGPU</strong></td>
<td>WebGPURenderer + TSL</td>
<td>GLSL + WGSL core (8.0)</td>
</tr>
<tr>
<td><strong>Bundle</strong></td>
<td>Smaller, tree-shakeable core</td>
<td>Larger but modular</td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>MIT</td>
<td>Apache 2.0</td>
</tr>
<tr>
<td><strong>Best for</strong></td>
<td>Custom, lightweight, biggest ecosystem</td>
<td>Batteries-included with strong tooling</td>
</tr>
</tbody>
</table>
<h2>Library vs Framework</h2>
<p>Three.js keeps a small core and leaves the rest to you and the community. You get a great renderer, scene graph, and materials, then reach for add-ons when you need physics, post-processing, or controls. It's the most popular web-3D library and has the largest ecosystem, which means more examples, more tutorials, and more hiring pool.</p>
<p>Babylon.js is a fuller engine, backed by Microsoft. It ships physics, a GUI system, animation, a built-in Inspector for debugging scenes, an online Playground for sharing code, and a Node Material Editor for building shaders visually. If you want tooling and structure provided rather than assembled, Babylon hands you more on day one.</p>
<div class="video-embed">
<iframe src="https://www.youtube.com/embed/kKaomUggipQ" title="Introducing Babylon.js 8.0" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<div class="video-caption">The official Babylon.js 8.0 showcase gives a sense of how much ships in the box.</div>
<h2>WebGPU in 2026</h2>
<p>Both are serious about WebGPU now. Babylon.js 8.0 (March 2025) made all core engine shaders ship in both GLSL and WGSL, which removed a multi-megabyte conversion layer and made the engine roughly half the size when targeting WebGPU. Babylon.js 9.0 (March 2026) pushed further with clustered lighting, volumetric lighting via compute shaders, a frame graph, and area lights.</p>
<p>Three.js has its production-ready WebGPURenderer with automatic WebGL2 fallback, and TSL lets you write shaders once for both backends. Recent releases keep refining it.</p>
<p>Net: WebGPU is solid in both. Babylon leans into compute-shader-driven features; Three.js keeps its renderer lean and flexible.</p>
<h2>TypeScript, Bundle Size, and Ecosystem</h2>
<p>Babylon.js is TypeScript-first, written almost entirely in TS, which many teams prefer for large codebases. Three.js is JavaScript with separate type definitions that work well but aren't the source of truth.</p>
<p>On size, Three.js has the smaller, more tree-shakeable core, so a minimal scene ships less code. Babylon is larger but modular through scoped packages, and its WGSL-native path narrowed the WebGPU gap.</p>
<p>Ecosystem goes to Three.js on raw size and community output. Tooling-in-the-box goes to Babylon.</p>
<div class="video-embed">
<iframe src="https://www.youtube.com/embed/6k5ZK3SV3ko" title="Moving Three.js from WebGL to WebGPU - Mr.doob, JSConf JP 2024" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<div class="video-caption">Three.js creator Mr.doob on the move to WebGPU.</div>
<h2>When to Pick Which</h2>
<p>Pick <strong>Three.js</strong> when you want a lightweight, flexible renderer, the biggest ecosystem, and freedom to architect things your way. It's the default for custom web-3D work and the most transferable skill.</p>
<p>Pick <strong>Babylon.js</strong> when you want a full engine with strong built-in tooling (Inspector, Playground, Node Material Editor), TypeScript-first development, and corporate-backed stability, and you're happy trading a bit of bundle size for batteries included.</p>
<p>Both are great picks. We chose Three.js for <a href="/engine">Cinevva Engine</a> because we wanted a lean, web-first foundation we could shape ourselves.</p>
<h2>Common Questions</h2>
<h3>Is Three.js or Babylon.js better?</h3>
<p>Both are excellent and free. Three.js is a minimal renderer with the largest ecosystem, best when you want flexibility and to build your own structure. Babylon.js is a fuller engine with built-in physics, GUI, an Inspector, and a Playground, best when you want tooling provided and TypeScript-first development. It's a philosophy choice, not a quality gap.</p>
<h3>Do Three.js and Babylon.js support WebGPU?</h3>
<p>Yes, both support WebGPU in 2026. Three.js has a production-ready WebGPURenderer with WebGL2 fallback and TSL for cross-target shaders. Babylon.js 8.0 made its core shaders WGSL-native (cutting bundle size on WebGPU), and 9.0 added compute-shader features like volumetric lighting. Ship WebGL2 as the baseline and use WebGPU where it's available.</p>
<h3>Is Babylon.js a game engine and Three.js not?</h3>
<p>Roughly, yes. Babylon.js is a full engine: it includes physics, a GUI system, animation, an Inspector, and editor-style tooling. Three.js is a rendering library focused on drawing 3D, so you add physics, controls, and game systems through other packages or your own code. That's the core difference between them.</p>
<h3>Which is smaller, Three.js or Babylon.js?</h3>
<p>Three.js has the smaller, more tree-shakeable core, so a minimal scene ships less JavaScript. Babylon.js is larger overall but modular through scoped packages, and its WGSL-native shaders in 8.0 roughly halved its size when targeting WebGPU. For the tightest bundle, Three.js still wins.</p>
<p><BuildCta
  title="Get the 3D game without writing the renderer"
  desc="Both libraries are under Cinevva's hood, you just describe the game."
  prompt="Make a 3D endless runner in the browser" /></p>
<h2>Related</h2>
<ul>
<li><a href="/guides/playcanvas-vs-threejs">PlayCanvas vs Three.js</a> — add a visual editor to the comparison</li>
<li><a href="/guides/web-game-engines-comparison">Best Web Game Engines for 2026 (Compared)</a> — the full field</li>
<li><a href="/guides/web-games-stack-2026">Web Games Tech Stack in 2026</a> — WebGL, WebGPU, and Wasm</li>
<li><a href="/guides/threejs-usdc-tech-report">Three.js + USDC in the Browser</a> — loading USD 3D assets in Three.js</li>
<li><a href="/engine">Cinevva Engine</a> — our open-source engine built on Three.js</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Giving Players the Power to Sculpt the World]]></title>
            <link>https://app.cinevva.com/guides/player-world-sculpting</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/player-world-sculpting</guid>
            <pubDate>Sun, 05 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[How to turn terrain brushes into toys. TNT that carves caves, seeds that grow forests, rain that erodes cliffs. Game design patterns for making world sculpting fun for casual players in a shared multiplayer world.]]></description>
            <content:encoded><![CDATA[<style>
.video-embed {
  position: relative;
  width: 100%;
  max-width: 720px;
  margin: 1.5rem 0;
}
.video-embed iframe {
  width: 100%;
  aspect-ratio: 16/9;
  border-radius: 8px;
}
.game-caption {
  font-size: 0.9rem;
  color: var(--vp-c-text-2);
  margin-top: 0.5rem;
  font-style: italic;
}
</style>
<h1>Giving Players the Power to Sculpt the World</h1>
<img src="https://cdn.cinevva.com/guides/player-world-sculpting-hero.jpg?v=2" alt="Player surrounded by terrain-sculpting tools: dynamite, hoe, watering can, seeds, pickaxe, rain cloud, and a terraform beacon, reshaping a colorful 3D landscape" style="width:100%;border-radius:8px;margin:1.5rem 0" />
<p>Nobody opens a game and thinks &quot;I want to apply a smooth falloff function with Hermite interpolation to a signed distance field.&quot; They think &quot;I want to dig a cave&quot; or &quot;I want to build a mountain&quot; or &quot;I want to make a river.&quot;</p>
<p>The technical side of terrain sculpting (marching cubes, SDF brushes, transvoxel seams) is covered in our <a href="/guides/terrain-sculpting-brushes">companion research guide</a>. This guide is about the other half of the problem: how to put sculpting power into casual players' hands and make it feel like play, not like a 3D modeling tool.</p>
<h2>The Metaphor Problem</h2>
<p>Every shipped game that lets players reshape terrain has solved the same design problem: raw sculpting parameters (radius, strength, falloff, operation type) are meaningless to most players. The solution is always the same: wrap the brush in a metaphor the player already understands.</p>
<h3>Minecraft: The Block as Universal Metaphor</h3>
<div class="video-embed">
  <iframe src="https://www.youtube.com/embed/MmB9b5njVbA" title="Official Minecraft Trailer" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
  <p class="game-caption">Official Minecraft Trailer (Mojang). The block-based world where TNT, pickaxes, and shovels double as terrain editors.</p>
</div>
<p>Minecraft's genius is that terrain editing is just inventory management. You break a block. You get a block. You place a block. The &quot;brush&quot; is a single voxel, the &quot;falloff&quot; is binary (affected or not), and the &quot;operation&quot; is add or remove.</p>
<p>TNT scales this up. You craft it from gunpowder and sand (materials you already collected while playing), place it like any other block, light it with flint and steel, and it carves a sphere out of the terrain. The blast radius is 4-7 blocks. Blast resistance varies by material: dirt and sand disintegrate, stone partially survives, obsidian is immune. Water nullifies block destruction but not entity damage.</p>
<p>The player never thinks about blast radius as a parameter. They think &quot;TNT is strong, obsidian is tough, water is a shield.&quot; The terrain editing system is fully expressed through materials and items the player already knows.</p>
<h3>Valheim: The Farmer's Toolkit</h3>
<div class="video-embed">
  <iframe src="https://www.youtube.com/embed/zmIS9B3w7bw" title="How to Level and Shape Terrain in Valheim" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
  <p class="game-caption">A clear walkthrough of Valheim's hoe, cultivator, and pickaxe terrain-shaping vocabulary, including the "stand-where-you-want-the-ground" leveling trick.</p>
</div>
<p>Valheim takes a different approach. Instead of blocks, it gives players tools from pre-industrial farming:</p>
<p><strong>The Hoe</strong> (5 wood + 2 stone, available in the first 10 minutes) has four modes: Level Ground (flattens to your standing height), Raise Ground (adds dirt, costs 2 stone per use), Path (removes grass), and Pave (lays cobblestone). The leveling mechanic is brilliant: you stand where you want the ground to be, and the hoe makes everything around you match that height. No numeric input. Your feet are the reference.</p>
<p><strong>The Cultivator</strong> (5 bronze + 5 core wood, requires smelting) does planting: till soil, plant seeds, grow grass, and regrow vegetation. It doesn't shape terrain but it dresses it. After you flatten a hillside with the hoe, you cultivate it and plant a forest. The terrain tells a story: someone was here, they worked this land.</p>
<p><strong>The Pickaxe</strong> handles the destructive side. It digs into terrain, the inverse of the hoe's raise. The three tools together (pickaxe digs, hoe raises/flattens, cultivator plants) form a complete vocabulary that maps to real-world farming actions.</p>
<p>The cost model matters. Raising ground costs stone. You feel the weight of each edit. You don't terraform a mountain for free. The resource cost makes sculpting a decision, not a checkbox.</p>
<h3>Animal Crossing: Earned Terraforming</h3>
<div class="video-embed">
  <iframe src="https://www.youtube.com/embed/q9wHV8XmLfs" title="How to Unlock Terraforming in Animal Crossing: New Horizons" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
  <p class="game-caption">GameXplain walks through how the Island Designer app unlocks, plus the cliff and waterscape permits that gate each new sculpting tool behind earned currency.</p>
</div>
<p>Animal Crossing: New Horizons gates terraforming behind a 3-star island rating. You need to build a campsite, invite villagers, construct housing plots, and develop your island for days (real-world days, not game-hours) before Tom Nook hands you the Island Designer app. By the time you unlock terraforming, you understand the island. You know where the rivers are, which cliffs block your favorite views, and what you want to change.</p>
<p>The tools themselves use a permit system. Paths are free. Waterscaping (creating rivers, ponds, waterfalls) costs 6,000 Nook Miles. Cliff Construction costs another 6,000. Additional path types cost 2,000 each. You're spending currency you earned through gameplay to expand your creative toolkit.</p>
<p>The editing is tile-based. One square at a time. No radius slider. No strength parameter. You push one tile of cliff up or dig one tile of river out. The constraint makes it approachable: the worst mistake you can make takes one button press to undo. The design encourages planning (the community built Happy Island Designer, a browser tool for pre-planning layouts) and incremental refinement over time.</p>
<p>Cliffs can go up to 3 levels. Rivers must connect to the ocean. Certain landmarks (airport, resident services) are immovable. These constraints aren't limitations. They're design. They prevent the &quot;blank canvas paralysis&quot; that kills casual engagement in freeform editors.</p>
<h3>No Man's Sky: The Multi-Tool</h3>
<div class="video-embed">
  <iframe src="https://www.youtube.com/embed/mnxMzm3_Ykw?start=942" title="No Man's Sky: Building into Terrain (Beeblebum)" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
  <p class="game-caption">The Terrain Manipulator section of Beeblebum's base building guide (jumps to 15:42), showing the four sphere-based modes and the "regenerate" limit.</p>
</div>
<p>No Man's Sky puts terrain manipulation on a gun. The Terrain Manipulator is a multi-tool upgrade with four modes: Mine (removes terrain in a sphere), Create (adds terrain in sphere or cube shapes), Restore (reverts to the original generated state), and Flatten (levels large areas).</p>
<p>The metaphor is a sci-fi device that fits in your hand. You point and shoot to edit the world. T and R keys change the sphere size between three presets (small, medium, large). There's no numeric radius. Three sizes. That's the whole UI.</p>
<p>The tool is introduced in the first mission. By the time you start exploring, you already know how to carve a cave or flatten a landing pad. The create mode lets you choose terrain types (rock, dirt, etc.), which maps to the splat-map texture blending under the hood.</p>
<p>Energy drain keeps sculpting in check. In Normal mode it's generous. In Survival mode, every edit costs meaningful resources. The same tool at two difficulty levels serves both casual sculptors and resource-conscious survivalists.</p>
<h3>Astroneer: The Vacuum Gun</h3>
<div class="video-embed">
  <iframe src="https://www.youtube.com/embed/0KXQZG7riEs" title="ASTRONEER - Release Trailer" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
  <p class="game-caption">Official Astroneer release trailer (System Era). The Terrain Tool sucks soil up and blows it back out, turning sculpting and resource gathering into the same gesture.</p>
</div>
<p>Astroneer takes the simplest possible metaphor: a vacuum cleaner for dirt. Point at terrain, hold the trigger, and it sucks up soil. Point at empty space and it blows soil back out. The terrain deforms in real time around your cursor.</p>
<p>Augments modify the behavior: the Alignment Mod makes surfaces flat relative to the planet's curve. The Boost Mod increases speed. The Wide Mod increases the area of effect. The Inhibitor Mod lets you collect resources without deforming terrain at all.</p>
<p>The genius is that terrain is simultaneously a resource. The soil you vacuum up fills canisters. The soil in canisters can be processed into materials at a Soil Centrifuge. Sculpting the world and gathering resources are the same action. You don't dig because you want a cave. You dig because you need soil to make compound. The cave is a side effect that becomes useful later.</p>
<h3>Deep Rock Galactic: Mining as Teamwork</h3>
<div class="video-embed">
  <iframe src="https://www.youtube.com/embed/t9VsWTLJkVY" title="The Driller Masterclass - Deep Rock Academy" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
  <p class="game-caption">Deep Rock Academy's Driller Masterclass. The forearm drills carve tunnels mid-combat, blurring the line between weapon and terrain tool.</p>
</div>
<p>Deep Rock Galactic maps terrain destruction to class roles. The Driller has power drills mounted on their forearms that chew through rock at 2m wide by 2.2m tall by 1m deep per second. The drills overheat after sustained use (5.5 seconds to red, 8 seconds cooldown) and run on limited fuel. Every dwarf has a pickaxe for precision work.</p>
<p>The Driller's job is to make the path. Carve a tunnel from point A to point B through solid rock. The team follows. The terrain editing serves the mission objective (reach the extraction pod) rather than being a creative tool. But the side effect is that every cave system the team plays through is uniquely shaped by their decisions. No two runs look the same.</p>
<p>The co-op structure makes sculpting social. The Driller doesn't dig alone. The Scout lights up the cave with flares. The Engineer places platforms on walls the Driller exposed. The Gunner defends the tunnel entrance. The terrain editing is one verb in a shared sentence.</p>
<h3>Teardown: Destruction as Puzzle</h3>
<div class="video-embed">
  <iframe src="https://www.youtube.com/embed/mdqJEvia4mQ" title="Teardown - Gameplay Overview Trailer" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
  <p class="game-caption">Official Teardown gameplay overview (Tuxedo Labs / PlayStation). Every tool maps to a physical metaphor, and the voxel physics make consequences immediate and obvious.</p>
</div>
<p>Teardown wraps terrain destruction in heist planning. You have unlimited time to prepare: smash walls, drive vehicles through buildings, place explosives, build ramps. Then the alarm triggers and you have 60 seconds to hit every objective and escape.</p>
<p>Every tool has a physical identity. The sledgehammer breaks things up close. The blowtorch cuts steel. Explosives blow out walls. The fire extinguisher clears fire. Vehicles crash through structures. The player doesn't &quot;edit terrain&quot; in the abstract. They swing a hammer at a wall and the wall breaks.</p>
<p>The physics make it feel real. Structures collapse when support is removed. Fire spreads. Smoke fills rooms. Debris falls. The feedback loop is immediate and physical: hit something, watch it break, see the consequences cascade. Casual players understand this because they've swung a hammer in real life (or wanted to).</p>
<h3>Eco: Consequences as Game Design</h3>
<p>Eco is the rare game where terrain editing has permanent, shared consequences. Cut too many trees and air quality drops. Mine too aggressively and you pollute the water table. Overhunt and species go extinct. The ecosystem is fully simulated.</p>
<p>Players can propose and vote on laws: &quot;No logging within 200m of the river&quot; or &quot;Mining tax of 10 gold per cubic meter.&quot; The governance system makes terrain editing a political act. You can't just dig wherever you want. The community might stop you.</p>
<p>This is the extreme end of gamification: the sculpting system itself becomes the core game loop. The terrain is the shared resource that every player action affects. Sculpting isn't a creative tool. It's the central tension of the game.</p>
<h2>Design Patterns for Cinevva</h2>
<p>These games suggest a toolkit of patterns we can use. Not all at once. In layers, starting with the most accessible and building toward the most complex.</p>
<h3>Pattern 1: Object-Based Sculpting (The TNT Pattern)</h3>
<p>Don't give players a brush. Give them objects that happen to reshape terrain when used.</p>
<p><strong>TNT / Dynamite:</strong> Player crafts or finds an explosive. Places it in the world. Lights the fuse (or throws it). A sphere of terrain gets subtracted. The radius depends on the explosive type. Small firecracker: 2m radius. Standard dynamite: 5m. Mega bomb (rare drop): 15m. The player is blowing things up, not &quot;editing terrain.&quot;</p>
<p><strong>Pickaxe / Shovel / Drill:</strong> Handheld tools with different characteristics. The pickaxe chips away at rock (small radius, fast, works on hard materials). The shovel scoops dirt (medium radius, fast on soft ground, useless on rock). The drill bores tunnels (narrow and deep, leaves smooth cylindrical holes). Each tool maps to a different SDF brush operation under the hood, but the player experiences them as distinct physical objects with distinct feedback.</p>
<p><strong>Bucket / Watering Can:</strong> Pour water on terrain and it flows downhill, eroding a channel. The erosion brush follows the terrain gradient automatically. The player doesn't aim a brush. They pour water and watch the river form. Under the hood it's a smooth-lower operation biased by the terrain slope.</p>
<p><strong>Seeds / Saplings:</strong> Plant them and terrain grows. A seed packet placed on flat ground sprouts into a small hill over time (over several seconds, with an animation). A tree sapling placed on bare rock generates a mound of soil around its base. &quot;Growing&quot; terrain is just the raise brush with a nature skin.</p>
<p><strong>Terraform Beacon:</strong> Place a beacon and it slowly flattens everything within its radius to a target height over time. Good for building sites. The player places the object and walks away. The flatten brush runs automatically at low intensity until the ground matches the beacon height.</p>
<h3>Pattern 2: Tool Progression (The Stardew Pattern)</h3>
<p>Start players with weak tools that do small edits. Upgrade through gameplay.</p>
<p><strong>Tier 1 (Free, immediate):</strong> Bare hands. Can pat down small bumps (micro-smooth, 0.5m radius). Can scoop up a handful of dirt (micro-lower, 0.3m radius). Negligible impact. Teaches the system exists.</p>
<p><strong>Tier 2 (Crafted from basic materials):</strong> Stone shovel, wooden pickaxe. Usable for small edits. Flatten a campsite. Dig a shallow trench. 1-2m radius. This is where most casual players live.</p>
<p><strong>Tier 3 (Requires exploration or trading):</strong> Metal tools. Larger radius (3-5m). New operations unlocked: raise terrain with the hoe, carve smooth curves with the chisel.</p>
<p><strong>Tier 4 (Endgame / rare drops):</strong> Power tools, explosives, terraform devices. 10-20m radius. Cave boring. Mountain building. These are spectacle tools that reward long-term players.</p>
<p>The upgrade path doubles as a tutorial. Each tier introduces one new concept. By the time you reach Tier 4, you've internalized the vocabulary of terrain editing through incremental exposure, not a tutorial screen.</p>
<h3>Pattern 3: Contextual Tools (The Valheim Pattern)</h3>
<p>Match the tool to what the player is trying to do, not what the terrain needs.</p>
<p><strong>Building mode:</strong> When the player is in building mode (placing walls, floors, roofs), the terrain auto-flattens under foundations. They don't need a separate flatten tool. The building system handles it. This is how Valheim's building works: place a floor, and the ground adjusts.</p>
<p><strong>Farming mode:</strong> When planting crops, the cultivator tills the soil (changes the surface material) and levels small bumps. The player is farming, not terraforming. The terrain editing is a side effect of the agricultural action.</p>
<p><strong>Mining mode:</strong> When harvesting resources from terrain (ore veins, clay deposits, mineral nodes), the extraction leaves a hole. The terrain editing is a side effect of resource gathering. Astroneer does this perfectly: vacuum up soil, get resources, leave a cave.</p>
<p><strong>Combat mode:</strong> Explosions from weapons create craters. Fire burns away vegetation. Acid dissolves rock. Terrain damage is a side effect of combat. Deep Rock Galactic's drills work this way: they're a weapon and a terrain tool simultaneously.</p>
<h3>Pattern 4: Social Sculpting (The Eco Pattern)</h3>
<p>In a shared world, every edit is a social act. Design for that.</p>
<p><strong>Visible authorship:</strong> When a player sculpts terrain, leave a subtle indicator of who did it. A faint glow. A player-colored tint on the edited surface. A small flag. Other players can see that someone was here and changed the landscape.</p>
<p><strong>Collaborative projects:</strong> Terrain edits within a claimed area accumulate toward a shared goal. &quot;Dig a river from the mountain to the lake.&quot; Progress bar visible to everyone in the area. When complete, the river fills with water. The sculpting was a group activity with a shared reward.</p>
<p><strong>Approval zones:</strong> In protected areas, terrain edits require approval from the landowner or a vote from nearby players. This prevents griefing without disabling sculpting. The edit is previewed as a ghost (transparent, outlined) until approved.</p>
<p><strong>Undo by consensus:</strong> Any player can propose reverting a terrain edit. If enough nearby players agree, the edit fades away over a few seconds. The restore mode from No Man's Sky, but social.</p>
<h3>Pattern 5: Natural Forces (The Erosion Pattern)</h3>
<p>Instead of direct brush strokes, let players trigger natural processes.</p>
<p><strong>Rain summoner:</strong> Place a cloud above a hill and it rains. The rain erodes the hillside over time, cutting channels and softening edges. The player controls where the rain falls and how long it lasts. The erosion shader does the sculpting.</p>
<p><strong>Earthquake device:</strong> Triggers a local earthquake that cracks the ground, creates fissures, and lowers the terrain in the affected area. The player chooses where. The physics simulation determines how.</p>
<p><strong>Lava flow:</strong> Release lava from a point and it flows downhill, filling valleys and hardening into rock. New terrain created by a natural metaphor. Under the hood it's the raise brush following the terrain gradient with a rock material.</p>
<p><strong>Wind sculptor:</strong> A fan or blowing device that pushes soft terrain (sand, dirt) in the wind direction. Over time, it creates dunes and smooth slopes. The smooth brush with a directional bias.</p>
<p><strong>Freeze / Thaw:</strong> Freeze water in a river to create an ice bridge. Thaw a frozen hillside to trigger a mudslide. Temperature as a terrain editing parameter, expressed through weather items.</p>
<h3>Pattern 6: Discovery and Surprise (The Infinite Craft Pattern)</h3>
<p>Reward experimentation.</p>
<p><strong>Combination effects:</strong> TNT near water creates a hot spring (crater + water fill + steam particles). Seeds planted in TNT craters grow faster (the crater has &quot;fertile soil&quot;). A frozen river that gets dynamited reveals a cave underneath.</p>
<p><strong>Hidden materials:</strong> Digging deep enough reveals different terrain layers: topsoil, clay, stone, crystal, lava. Each layer has different properties and looks. Players who dig deeper see things nobody else has seen.</p>
<p><strong>Fossils and artifacts:</strong> Random terrain edits occasionally unearth buried objects: fossils, ancient artifacts, treasure chests, rare seeds. The act of sculpting becomes an exploration mechanic. You don't just dig for the cave. You dig because you might find something.</p>
<p><strong>Terrain memory:</strong> Edited terrain remembers what happened to it. An area that was blown up by TNT has scorch marks and charred edges. An area that was grown with seeds has richer soil color. An area that was eroded by rain has smooth, water-worn textures. The terrain tells its own history.</p>
<h2>The Brush-to-Metaphor Mapping</h2>
<p>Every metaphor the player interacts with maps to a technical brush operation from our <a href="/guides/terrain-sculpting-brushes">sculpting pipeline</a>. Here's the translation table:</p>
<p><strong>Pickaxe / Shovel</strong> maps to the <strong>lower brush</strong> (subtract from heightmap or SDF) with small radius, high strength, sharp falloff. The tool animation triggers the same <code>Chunk.applyBrush()</code> call.</p>
<p><strong>TNT / Explosives</strong> map to the <strong>lower brush</strong> with large radius, maximum strength, sphere falloff. A single explosive event applies one brush stroke centered on the detonation point. Blast resistance per material type maps to a strength multiplier on the brush.</p>
<p><strong>Hoe / Flattener</strong> maps to the <strong>flatten brush</strong> with medium radius, smooth falloff. The target height is sampled from the player's foot position when the tool is activated, exactly like Valheim.</p>
<p><strong>Seeds / Growth</strong> maps to the <strong>raise brush</strong> with small radius, smooth falloff, applied over several frames (animated growth). Each frame applies a small increment. The animation sells the metaphor while the brush handles the geometry.</p>
<p><strong>Watering Can / Rain</strong> maps to the <strong>smooth brush</strong> with directional bias. The bias follows the terrain slope gradient from <code>ChunkManager.getNormal()</code>. Points below the brush center get lowered more than points above it, creating natural erosion channels.</p>
<p><strong>Terraform Beacon</strong> maps to the <strong>flatten brush</strong> applied at low strength every frame until convergence. The beacon's world-space position sets the target height. The radius is the beacon's area of effect.</p>
<p><strong>Drill</strong> maps to the <strong>lower brush</strong> projected along a ray direction instead of a sphere. The ray cast from the player's aim direction determines the brush center at each depth step, creating a cylindrical tunnel.</p>
<h2>Progression and Economy</h2>
<h3>What Players Earn</h3>
<p><strong>Tool unlocks:</strong> Start with hands. Craft basic tools from common materials. Discover recipes for advanced tools through exploration, trading, or quest completion.</p>
<p><strong>Capacity upgrades:</strong> Bigger explosives. Wider hoes. Faster drills. The brush radius and strength increase with tier. Upgrading your shovel from wood to iron doubles the radius.</p>
<p><strong>Material types:</strong> New terrain materials unlock as players explore biomes. You can only &quot;create&quot; terrain types you've encountered. Visit a desert to unlock sand creation. Visit a volcano to unlock basite. The create mode from No Man's Sky, gated by exploration.</p>
<p><strong>Recipes:</strong> Combination effects are discovered, not given. Plant a seed in a TNT crater and discover &quot;Fertile Blast.&quot; Pour water on lava terrain and discover &quot;Obsidian Formation.&quot; Each discovery is cataloged and shareable.</p>
<h3>What It Costs</h3>
<p><strong>Resources:</strong> Every terrain edit consumes materials. Raising terrain costs dirt/stone/sand (the material being placed). Lowering terrain yields materials (which go to your inventory). Flattening redistributes. The resource flow keeps the economy connected to the terrain system.</p>
<p><strong>Energy / Durability:</strong> Tools have durability or energy limits. The pickaxe breaks after N uses. The terraform beacon runs on fuel. This prevents infinite editing and creates natural session boundaries. Players take breaks to resupply.</p>
<p><strong>Time:</strong> Some operations are instant (pickaxe swing). Others are slow (beacon flattening, seed growing, rain erosion). Slow operations reward patience and discourage spam. They also look better: watching a seed sprout into a hill is more satisfying than clicking a &quot;raise&quot; button.</p>
<h3>What Others See</h3>
<p><strong>Edit footprint:</strong> Every terrain modification has a visual signature. TNT craters have dark, cracked edges. Hoe-flattened areas have a smooth, worked-earth texture. Grown terrain has rich, organic coloring. Rain-eroded channels have watermarks. Players can read the history of the landscape.</p>
<p><strong>Creator tags:</strong> Hover over edited terrain to see who changed it and when. &quot;Sculpted by @PlayerName, 2 hours ago.&quot; This creates pride of authorship and social accountability.</p>
<p><strong>Before/After:</strong> A &quot;time lapse&quot; view that shows the terrain at any point in its edit history. Scrub a timeline slider to see the landscape transform. This is possible because the CSG edit tree from Phase 3 of the <a href="/guides/terrain-sculpting-brushes">technical guide</a> stores every operation in order.</p>
<h2>What We Build First</h2>
<p>Phase 1 of the <a href="/guides/terrain-sculpting-brushes#practical-architecture-for-sculpting">technical architecture</a> works with heightmap sculpting on the existing WebGL renderer. The casual tools we can ship on top of that:</p>
<ol>
<li><strong>Shovel</strong> (lower brush, small radius). The most basic tool. Click terrain, dig a hole. Yields dirt resources.</li>
<li><strong>Hoe</strong> (flatten brush, medium radius). Stand where you want the ground, use the hoe, terrain levels to your feet.</li>
<li><strong>TNT</strong> (lower brush, large radius, one-shot). Craft from materials, place, ignite, watch the boom. Yields rubble.</li>
<li><strong>Seeds</strong> (raise brush, animated over frames). Plant on flat ground, watch terrain rise into a small hill, vegetation appears on top.</li>
<li><strong>Watering Can</strong> (smooth brush with slope bias). Pour on slopes to erode them. Creates natural-looking channels.</li>
</ol>
<p>Five tools. Five distinct metaphors. One underlying brush system. Each tool is a different configuration of <code>(radius, strength, falloff, operation, animation)</code> wrapped in an item the player crafts, equips, and uses through the same interaction model as the existing <code>PlacementTool</code>.</p>
<p><BuildCta
  title="Let players build: try a sandbox now"
  desc="The fastest way to feel why world-editing hooks players."
  prompt="Make a sandbox island where I can place and stack blocks" /></p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[3D Brush Techniques and In-Game World Sculpting]]></title>
            <link>https://app.cinevva.com/guides/terrain-sculpting-brushes</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/terrain-sculpting-brushes</guid>
            <pubDate>Sun, 05 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[From heightmap displacement to SDF CSG trees. How terrain sculpting brushes actually work, what marching cubes and surface nets do under the hood, and how to let players reshape a shared world in real time.]]></description>
            <content:encoded><![CDATA[<style>
.video-embed {
  position: relative;
  width: 100%;
  max-width: 720px;
  margin: 1.5rem 0;
}
.video-embed iframe {
  width: 100%;
  aspect-ratio: 16/9;
  border-radius: 8px;
}
.game-caption {
  font-size: 0.9rem;
  color: var(--vp-c-text-2);
  margin-top: 0.5rem;
  font-style: italic;
}
.img-embed {
  width: 100%;
  max-width: 720px;
  margin: 1.5rem 0;
}
.img-embed img {
  width: 100%;
  border-radius: 8px;
  display: block;
}
</style>
<h1>3D Brush Techniques and In-Game World Sculpting</h1>
<p>We want players to sculpt the world. Not place prefabs on a grid. Not toggle blocks on and off. Actually reshape the terrain: carve rivers, raise mountains, smooth cliffsides, dig caves. The kind of thing that ZBrush and Blender's sculpt mode do for artists, but running at 60fps inside a multiplayer browser game.</p>
<p>That's a hard engineering problem that spans data representation, mesh extraction, GPU compute, brush mathematics, and network synchronization. This guide documents everything we found.</p>
<h2>The Two Worlds of Terrain Representation</h2>
<p>Every sculpting system starts with a choice about how terrain data is stored. That choice determines what kinds of edits are possible, how fast they run, and how much memory they cost.</p>
<h3>Heightmaps</h3>
<p>A heightmap stores one height value per grid point. You can think of it as a grayscale image where brightness equals elevation. Our current <code>world/client</code> terrain works exactly this way: <code>noise.ts</code> generates height via FBM value noise, and each <code>Chunk</code> stores a <code>Float32Array</code> heightmap that gets projected onto a <code>PlaneGeometry</code>.</p>
<p>Heightmaps are fast. Sampling is a single array lookup with bilinear interpolation. LOD is trivial because you just reduce the grid resolution. Splat-based texture blending maps directly onto the UV grid. Physics collisions reduce to a height query.</p>
<p>The limitation is topology. A heightmap can only represent one height per (x, z) coordinate. No caves. No overhangs. No arches. No tunnels. If a player sculpts a cliff that folds back on itself, a heightmap can't store it. For terrain that's mostly rolling hills and mountains, this is fine. For freeform sculpting where players can dig into the ground, it's a dead end.</p>
<h3>Volumetric (3D Scalar Fields)</h3>
<p>The alternative is storing a value at every point in 3D space. If the value is negative inside solid material and positive outside (or vice versa), you have a Signed Distance Field (SDF). If the value is just a density (above some threshold is solid, below is empty), you have a density field.</p>
<p>Volumetric representations handle any topology. Caves, overhangs, floating islands, tunnels through mountains. The tradeoff is memory and complexity. A 256^3 grid with 32-bit floats costs 64 MB. A 512^3 grid costs 512 MB. And that's for a single chunk. You need sparse data structures (octrees, brick maps) to make this practical.</p>
<p>The mesh extraction step is also nontrivial. You can't just set vertex Y positions and be done. You need an algorithm that reads the scalar field and produces a triangle mesh that approximates the surface where the field crosses zero.</p>
<h2>Mesh Extraction: Marching Cubes, Surface Nets, and Dual Contouring</h2>
<h3>Marching Cubes</h3>
<p>Marching Cubes is the oldest and most widely implemented isosurface extraction algorithm. Published by Lorensen and Cline in 1987, it works by examining every cube in the voxel grid where each corner has a scalar value. If some corners are inside the surface (negative) and some are outside (positive), a triangle mesh patch gets placed inside that cube.</p>
<p>Each cube has 8 corners, each either inside or outside, producing 256 possible configurations (2^8). These reduce to 15 unique cases via symmetry. A lookup table maps each case to a set of triangles. Edge intersection points are found by linear interpolation along the edges where the sign changes.</p>
<p><strong>Recent GPU implementations</strong> have made Marching Cubes fast enough for real-time sculpting. A 2025 implementation on UE5 assigns each GPU thread to one cube, processing thousands simultaneously. The key insight is that each cube's triangulation is independent of its neighbors, making the algorithm embarrassingly parallel.</p>
<p><strong>MCHex</strong> (arxiv 2511.02064, 2025) extends Marching Cubes to adaptive hexahedral mesh generation with guaranteed positive Jacobian values, improving boundary approximation for simulation meshes.</p>
<p><strong>rupMC</strong> achieves dozens of times faster performance than serial implementations and 4x faster than parallel DMC variants using CPU/GPU heterogeneous architectures.</p>
<p>The main limitation: Marching Cubes struggles with sharp features. A 90-degree edge gets rounded into a smooth curve. For terrain sculpting this is usually acceptable (natural terrain is mostly smooth), but for architectural features it's a problem.</p>
<h3>Surface Nets</h3>
<p>Surface Nets is a newer family of algorithms that produces smoother meshes from discrete scalar fields. Instead of placing vertices on cube edges (like Marching Cubes), Surface Nets places one vertex per cube that contains the surface, then connects adjacent vertices to form quads.</p>
<p>The result is naturally smoother. A 2024 paper (arxiv 2401.14906) demonstrated a high-performance parallel Surface Nets implementation that runs one to two orders of magnitude faster than sequential algorithms. The <code>fast-surface-nets</code> Rust crate generates roughly 20 million triangles per second on a single 2.5 GHz core using small lookup tables and SIMD acceleration.</p>
<p><code>bevy-sculpter</code> (v0.18.0, January 2026) uses Surface Nets as its primary meshing strategy. The crate provides SDF-based volumetric sculpting with four brush types: hard CSG (instant add/remove), smooth continuous (for held input), blur (surface smoothing), and flatten (set to target height). It also includes SDF redistancing via the Fast Sweeping Method to restore proper signed distance field properties after edits.</p>
<p>Surface Nets are a good middle ground between Marching Cubes (simple, fast, but produces aliased meshes on binary data) and Dual Contouring (feature-preserving but complex).</p>
<h3>Dual Contouring</h3>
<p>Dual Contouring preserves sharp features that Marching Cubes and Surface Nets can't. It does this by using not just the sign of the field at each corner, but also the gradient (normal) at edge intersections. A QEF (Quadratic Error Function) minimization places the vertex inside each cell at the position that best satisfies all the edge intersection constraints.</p>
<p>The result: sharp edges and corners are preserved in the extracted mesh. A cube with perpendicular faces stays a cube.</p>
<p>The tradeoff is complexity. The QEF solve has inter-cell dependencies that make GPU parallelization hard. It can produce non-manifold meshes (edges shared by more than two polygons). And the implementation is more involved than Marching Cubes, though Johannes Jendersie notes that a working Dual Contouring implementation is about 200 lines of code versus 500+ for a robust Marching Cubes.</p>
<p><strong>Cubical Marching Squares (CMS)</strong> has been proposed as a middle ground: intercell-independent (GPU-friendly) while still offering some feature preservation.</p>
<h3>Which to Use</h3>
<p>For player-facing terrain sculpting in a browser:</p>
<p><strong>Surface Nets</strong> is the strongest candidate. It produces smooth meshes (natural-looking terrain) without the aliasing artifacts of Marching Cubes on binary data. It's fast enough for real-time re-meshing. And it's simpler to implement than Dual Contouring.</p>
<p><strong>Marching Cubes</strong> remains a solid choice when GPU parallelism is the priority (every cube is independent) or when you need the widest library support. The WebGPU SDF Editor by Reinder Nijhoff (January 2026) implements both Marching Cubes and Surface Nets in its extraction pipeline, running entirely on the GPU.</p>
<p><strong>Dual Contouring</strong> is best reserved for cases where architectural precision matters more than performance. Not ideal for real-time terrain sculpting in a browser context.</p>
<h2>The Transvoxel Algorithm: Solving LOD Stitching</h2>
<p>When voxel terrain is meshed at different resolutions (LOD0 near the player, LOD2 far away), cracks form at the boundaries. For heightmaps this is a simple problem: interpolate edge vertices to match the lower-resolution neighbor. Our current <code>chunk.ts</code> does exactly this in <code>stitchEdge()</code>.</p>
<p>For volumetric terrain, the problem is much harder. A cave mouth at LOD0 might produce 30 triangles on the boundary. The same region at LOD1 might produce 8 triangles with a completely different topology. There's no simple way to linearly interpolate between them.</p>
<p>Eric Lengyel's Transvoxel Algorithm (2009) solves this with &quot;transition cells.&quot; At the boundary between two LOD levels, the algorithm considers 9 high-resolution samples (instead of 8 cube corners), producing 512 possible configurations that fall into 73 equivalence classes. Each class maps to a predefined triangle pattern that perfectly fills the gap between the two resolutions.</p>
<p>The algorithm operates on local voxel data, so retriangulating a modified region is fast. This is critical for real-time sculpting: when a player edits terrain near an LOD boundary, only the transition cells need to be rebuilt.</p>
<p>A Rust implementation exists as the <code>transvoxel</code> crate. The original lookup tables are available at <a href="http://transvoxel.org">transvoxel.org</a>.</p>
<h2>Brush Mathematics</h2>
<p>A sculpting brush is a function that modifies scalar field values within a radius around a target point. The mathematics are surprisingly similar across all implementations, from Blender to Unreal Engine to runtime game systems.</p>
<h3>Falloff Functions</h3>
<p>The brush falloff determines how the edit strength decreases from the center to the edge. Blender 5.1 defines these standard profiles:</p>
<p><strong>Smooth:</strong> <code>f(d) = 3d^2 - 2d^3</code> (Hermite interpolation, same smoothstep as our noise.ts)</p>
<p><strong>Sphere:</strong> Strong at center with steep falloff near border. Approximated as <code>f(d) = sqrt(1 - d^2)</code>.</p>
<p><strong>Sharp:</strong> <code>f(d) = (1 - d)^n</code> with n &gt; 2. Creates a fine point.</p>
<p><strong>Linear:</strong> <code>f(d) = 1 - d</code> where d is normalized distance from center (0 at center, 1 at edge).</p>
<p><strong>Constant:</strong> <code>f(d) = 1</code> for <code>d &lt; 1</code>, hard cutoff at the brush boundary.</p>
<p><strong>Inverse Square:</strong> Hybrid between smooth and sphere for a natural &quot;clay-like&quot; feel.</p>
<p>In all cases, <code>d = distance_to_center / brush_radius</code>, clamped to [0, 1]. The falloff value multiplies the brush strength to produce the actual field modification at each point.</p>
<h3>Falloff Space</h3>
<p>Blender distinguishes between <strong>sphere falloff</strong> (distance computed in 3D world space) and <strong>projected falloff</strong> (distance computed in 2D screen space). Projected falloff means that two points that appear close on screen affect each other equally, even if they're at very different depths in world space. For terrain sculpting, 3D world space falloff is usually more intuitive.</p>
<h3>Core Brush Operations</h3>
<p><strong>Raise/Lower (Displacement):</strong> Add or subtract from the scalar field within the brush radius, weighted by falloff. For heightmaps: <code>height[i] += strength * falloff(d)</code>. For SDFs: <code>sdf[i] -= strength * falloff(d)</code> (subtracting makes material more solid, raising the surface).</p>
<p><strong>Smooth (Laplacian):</strong> Replace each value with the average of its neighbors, weighted by falloff. This erases detail and reduces noise. The Laplacian filter samples a small kernel (3x3 for heightmaps, 3x3x3 for volumes) and blends toward the mean. HC (Humphrey's Classes) smoothing is a variant that preserves volume better than raw Laplacian.</p>
<p><strong>Flatten:</strong> Set the field value to a target height (or distance in SDF space), blended by falloff. The target is usually sampled at the brush center when the stroke begins, then held constant. This creates flat plateaus.</p>
<p><strong>Pinch/Inflate:</strong> Move vertices toward or away from the surface normal. In SDF space, this is equivalent to displacing along the gradient direction.</p>
<p><strong>Grab:</strong> Translate a region of the field, as if you were pulling clay. The displacement vector is the mouse delta projected into world space, applied to field values within the radius.</p>
<p><strong>Noise:</strong> Add procedural noise to the field within the brush radius. Useful for roughening smooth surfaces.</p>
<p><strong>Stamp:</strong> Apply a 2D grayscale image as displacement, projecting it onto the surface under the cursor. Unreal Engine's Landscape tool supports this for terrain brushes.</p>
<h3>Adaptive Tessellation</h3>
<p><code>sculpt-3D</code> (React + Three.js browser sculpting) implements adaptive tessellation: as the brush moves across the mesh, triangles near the brush center are subdivided to provide more vertices for deformation. This prevents the &quot;low-poly stretch&quot; problem where a coarse mesh gets distorted by sculpting. The subdivision uses symmetric splitting for uniform triangle quality.</p>
<p>For volumetric systems, adaptive tessellation isn't needed in the same way because the mesh is regenerated from the field. Instead, you can locally increase the voxel resolution near edits (adaptive octrees) for the same effect.</p>
<h2>SDF Sculpting: The Dreams Approach</h2>
<p>Media Molecule's Dreams (PS4, 2020) is the most ambitious in-game sculpting system ever shipped. Alex Evans presented the technical approach at SIGGRAPH 2015.</p>
<h3>Representation</h3>
<p>Dreams stores geometry as a compound SDF function in 83^3 fp16 volume texture blocks. Each sculpt is a list of 1 to 100,000 &quot;edits,&quot; where each edit is a CSG operation (add, subtract, color) with a primitive shape (sphere, cube, cylinder, cone, ellipsoid, torus, etc.) and a blend mode.</p>
<p>Blend modes use soft-max and soft-min functions. A &quot;soft&quot; blend produces rounded transitions between primitives (like clay pushed together). A &quot;hard&quot; blend produces crisp boolean cuts. The blend radius is user-controllable.</p>
<h3>Rendering</h3>
<p>Dreams doesn't extract a triangle mesh. Instead, it renders directly from the SDF using a custom point-cloud renderer (&quot;flecks&quot;). Each fleck is a tiny disc oriented along the surface normal. The SDF is sampled to find surfaces, and flecks are distributed across them. This avoids the mesh extraction bottleneck entirely but requires a custom renderer.</p>
<p>For a Three.js/WebGL world, this approach isn't directly applicable. We'd need to extract meshes. But the CSG edit list concept is highly relevant for undo/redo and network synchronization.</p>
<h2>Mike Turitzin's Dynamic SDF Engine (2026)</h2>
<p>A game engine currently in development by Mike Turitzin uses dynamic SDFs as the core representation. The engine supports:</p>
<p><strong>Detailed modifications during gameplay:</strong> Adding and removing matter smoothly or with sharp edges. Non-destructive changes like moving holes or creating temporary tunnels that disappear behind the player.</p>
<p><strong>Brick maps and brick atlases</strong> for sparse caching. Instead of storing the entire SDF field in a dense 3D grid, the field is divided into &quot;bricks&quot; (small 3D tiles). Only bricks that contain the surface boundary are allocated. This dramatically reduces memory for scenes with mostly empty or solid space.</p>
<p><strong>Geometry clipmaps</strong> (Losasso &amp; Hoppe, SIGGRAPH 2004) for LOD. Nested regular grids at increasing resolution surround the camera position. The innermost grid has the finest resolution; outer grids are progressively coarser. This provides dramatic memory reduction while supporting vast spaces. Clipmaps update incrementally as the camera moves, making them efficient for streaming open worlds.</p>
<p><strong>Physics and collision</strong> work directly against the SDF. Sphere-tracing (ray marching with the SDF distance as the step size) provides efficient raycasting. Collision detection uses the SDF gradient as the surface normal and the distance value as the penetration depth.</p>
<h2>Teardown: Voxel Destruction at Scale</h2>
<p>Teardown (Voxagon) represents the other end of the spectrum: every object in the world is a voxel volume that can be destroyed piece by piece.</p>
<h3>Architecture</h3>
<p>Objects are stored as voxel grids on regular spacing. The engine doesn't use Marching Cubes or SDFs for rendering. Instead, it ray-traces voxels directly using a modified DDA (Digital Differential Analyzer) algorithm in fragment shaders, built on OpenGL 3.3. Mipmaps form a dense octree structure for accelerating empty space traversal during ray intersection.</p>
<p>For each object, the engine rasterizes its oriented bounding box (OBB) and traces a ray through it to find voxel intersections. Only backfaces of the OBB are rendered, allowing the camera to clip into the bounding volume.</p>
<h3>Destruction Synchronization (Multiplayer)</h3>
<p>Teardown's March 2026 multiplayer update uses a semi-deterministic approach. Structural destruction (cutting holes, changing ownership, reconnecting joints) is handled via fixed-point integer math on a reliable network stream. All clients execute the same deterministic commands and arrive at the same world state. Non-structural changes (debris, particles) use unreliable state synchronization.</p>
<p>This is an important insight for our multiplayer world: terrain edits must be deterministic. If Player A sculpts a mountain, all clients must produce the same mesh from the same field data. The edit commands (brush position, radius, strength, operation type) should be the authoritative data, not the resulting mesh.</p>
<h2>ALICE-SDF: Compression and CSG Trees</h2>
<p>ALICE-SDF (Adaptive Lightweight Implicit Compression Engine, v1.3.0 March 2026) provides a Rust implementation of SDF-based spatial data with 10-1000x compression versus polygon meshes. It supports:</p>
<p><strong>126 building blocks:</strong> 72 primitives, 24 operations, 7 transforms, and 23 modifiers. Smooth blending operations (union, subtraction, intersection), chamfer and stairs blends for hard-edge bevels and stepped CSG transitions.</p>
<p><strong>CSG tree diff/patch</strong> for undo/redo and network synchronization. This is the key feature for multiplayer sculpting: instead of sending the entire field state, you send the structural diff between two CSG trees. The client applies the patch to reconstruct the new state. This is far more bandwidth-efficient than delta-compressing raw voxel data.</p>
<p><strong>CSG tree optimization</strong> including identity transform removal, nested transform merging, and modifier demotion. This keeps the tree compact as edits accumulate.</p>
<p><strong>Mesh generation</strong> via both Marching Cubes and Dual Contouring. Physics collision detection works directly against the SDF.</p>
<p><strong>WebAssembly support</strong> enables browser integration. The engine is written in Rust with WASM bindings, making it a realistic option for a Three.js application.</p>
<h2>WebGPU Compute for Terrain</h2>
<p>WebGPU is now available across all major browsers as of late 2025. Chrome 113+, Edge 113+, Firefox 141+, and Safari 26+ all ship with it enabled. This opens up compute shader pipelines that were previously GPU-only.</p>
<h3>Performance</h3>
<p>WebGPU compute shaders generate terrain roughly 100x faster than CPU methods through massive parallelization. The GPU executes thousands of calculations simultaneously, and terrain generation is almost entirely parallel (each vertex/voxel is independent).</p>
<p>Work is organized into three tiers: Dispatch Level (workload distribution across the GPU), Workgroup Level (shared memory within a processing unit), and Thread Level (individual calculations). WGSL (WebGPU Shading Language) is the shader language.</p>
<h3>Real-Time Terrain Sculpting Pipeline</h3>
<p>A WebGPU sculpting pipeline would look like this:</p>
<ol>
<li>
<p><strong>Brush application</strong> (compute shader): Update the scalar field values within the brush radius. Each thread handles one voxel. Reads the brush parameters (position, radius, strength, falloff type, operation) from a uniform buffer and applies the modification.</p>
</li>
<li>
<p><strong>Mesh extraction</strong> (compute shader): Run Surface Nets or Marching Cubes on the modified region. The WebGPU SDF Editor by Nijhoff implements this as a multi-stage pipeline: space partitioning across 16,384 cells, octree-based cell splitting, then surface extraction.</p>
</li>
<li>
<p><strong>Vertex buffer update</strong> (GPU-side): Write the extracted vertices directly into a render buffer without roundtripping through CPU memory.</p>
</li>
<li>
<p><strong>Normal computation</strong> (compute shader): Calculate vertex normals from the mesh or from the SDF gradient.</p>
</li>
<li>
<p><strong>Render</strong> (standard pipeline): Draw the mesh with standard PBR materials.</p>
</li>
</ol>
<p>Steps 1-4 can all run on the GPU without any data returning to JavaScript. The CPU only needs to send the brush parameters each frame.</p>
<h3>The WebGPU SDF Editor</h3>
<p>Reinder Nijhoff's WebGPU SDF Editor (January 2026) demonstrates this approach running in Chrome. It supports six primitives (cone, cylinder, capsule, torus, box, sphere), three blend operations (union, subtraction, intersection) with configurable smooth blending, and hierarchical scene graphs. Each primitive occupies 112 bytes in a single GPU buffer.</p>
<p>The rendering pipeline uses 1,024 shadow maps for ambient occlusion and temporal anti-aliasing. This runs at interactive framerates on high-end GPUs.</p>
<h2>Heightmap Sculpting: The Simpler Path</h2>
<p>If cave and overhang support isn't required, heightmap sculpting avoids the entire volumetric pipeline. This is how most shipped games handle terrain editing.</p>
<h3>Runtime Implementation Pattern</h3>
<p>Unity Runtime Terrain (JohannHotzel, January 2026) demonstrates the standard pattern:</p>
<ol>
<li><strong>Raycast</strong> from the camera through the mouse position to find the terrain hit point.</li>
<li><strong>Map the hit point</strong> to heightmap coordinates.</li>
<li><strong>Apply the brush</strong> to nearby heightmap values, weighted by falloff.</li>
<li><strong>Update the mesh</strong> by setting vertex Y positions from the modified heightmap.</li>
<li><strong>Rebuild the physics collider</strong> to match the new mesh.</li>
</ol>
<p>For our Three.js terrain, steps 1-4 map directly onto the existing architecture. The <code>Chunk</code> class already stores heightmaps and builds meshes from them. Adding sculpting would mean:</p>
<ul>
<li>A raycasting system against chunk meshes (Three.js <code>Raycaster</code>)</li>
<li>Brush application functions that modify <code>chunk.heightmap</code> values</li>
<li>Mesh vertex updates (set Y positions, recalculate normals)</li>
<li>Splat map recalculation for the affected region (so texture blending reflects the new slope/height)</li>
<li>Network broadcast of the edit (brush position, radius, strength, operation) to other clients via the existing WebSocket protocol</li>
</ul>
<h3>The Clipmap Approach</h3>
<p>Landow.dev describes a &quot;wandering clipmap&quot; for heightmap terrain: a single mesh with variable subdivision density that follows the player. Instead of chunking the heightmap into separate meshes with different LOD levels (what we do now), the clipmap is a continuous mesh that's dense near the camera and coarse at the edges.</p>
<p>This eliminates LOD stitching entirely. The mesh simply has more triangles where you need them and fewer where you don't. The tradeoff is that sculpting requires updating a single large mesh rather than individual chunks, which can be expensive for large edits.</p>
<h3>Non-Destructive SDF Heightmaps</h3>
<p>Landow.dev also describes a technique where the heightmap itself is generated from an SDF composition. Shape instances (spheres, boxes, noise functions) are composed in a compute shader using CSG operations, and the output is sampled as a heightmap. This provides non-destructive editing (you can move or delete any shape instance at any time) while keeping the simplicity of heightmap rendering.</p>
<p>This is a compelling hybrid: the data representation is volumetric (SDF CSG tree), but the rendering path is a standard heightmap mesh. You get undo/redo and network-friendly edit operations from the SDF side, and simple rendering and physics from the heightmap side. The limitation remains: no caves or overhangs.</p>
<h2>Sparse Voxel Octrees for Large Worlds</h2>
<p>Dense 3D grids don't scale. A world that's 1 km on each side at 0.5m resolution would need 8 billion voxels. Sparse Voxel Octrees (SVOs) solve this by recursively subdividing space and only allocating storage for octants that contain the surface boundary.</p>
<p>An SVO naturally provides hierarchical LOD: the tree depth at any point determines the effective resolution. Near the player, the tree is fully expanded (maximum detail). Far away, it's truncated at a coarser level.</p>
<p>For rendering, SVOs can be ray-traced directly (no mesh extraction needed). A GPU ray marcher intersects rays with axis-aligned boxes at each tree level, skipping empty subtrees entirely. This eliminates overdraw problems of chunk-based rendering and avoids greedy meshing artifacts.</p>
<p>The Vulkan-based SVO builder by AdamYuan demonstrates significant performance: 19ms build time for Crytek Sponza at 2^10 resolution on a GTX 1660 Ti.</p>
<p>For sculpting, SVO modification is efficient: only the leaf nodes within the brush radius need to be updated, and the tree structure handles varying resolution naturally. Adding detail where the player sculpts (splitting nodes to higher resolution) and removing detail where they smooth (merging nodes to lower resolution) falls out of the data structure.</p>
<p>The challenge for browser deployment is that WebGL doesn't support compute shaders, and while WebGPU does, the SVO construction and traversal algorithms are complex to implement in WGSL.</p>
<h2>Network Synchronization for Multiplayer Sculpting</h2>
<p>Our world already has multiplayer via Cloudflare Durable Objects (<code>world-chunk-do.ts</code>). Adding sculpting means synchronizing terrain modifications across all connected clients.</p>
<h3>Delta Compression</h3>
<p>Sending raw voxel data is expensive. A 2024 study from Oulu University achieved 2-8x payload improvement by combining delta-encoding with DEFLATE compression, packing voxel updates to less than one byte per voxel. The SDEC codec demonstrates bit-packed delta encoding producing 259-byte average packets versus 1114 bytes with generic serialization.</p>
<h3>Operation-Based Sync (Recommended)</h3>
<p>Instead of synchronizing field state, synchronize operations. Each sculpting action becomes a message:</p>
<pre><code class="language-typescript">interface TerrainEditMsg {
  t: MsgType.TerrainEdit
  brush: {
    position: [number, number, number]
    radius: number
    strength: number
    falloff: 'smooth' | 'linear' | 'sharp' | 'constant'
    operation: 'raise' | 'lower' | 'smooth' | 'flatten' | 'noise'
    targetHeight?: number
  }
}
</code></pre>
<p>The server broadcasts this to all clients, and each client applies the same deterministic brush operation to its local terrain data. This is the same approach Teardown uses for structural destruction: deterministic commands on a reliable stream.</p>
<p>ALICE-SDF's CSG tree diff/patch takes this further: instead of individual brush strokes, the diff represents the structural change to the entire CSG tree. This enables efficient undo/redo across the network (send the inverse patch) and late-joining clients can reconstruct the full world state by replaying the operation log.</p>
<h3>Priority and Throttling</h3>
<p>Terrain edits near connected players should be high-priority (immediate broadcast). Edits far from any player can be batched and sent at lower frequency. Enshrouded's voxel networking uses this pattern: 60Hz updates for player-proximate terrain, 10Hz for background regions.</p>
<p>ZSTD compression on the wire reduces packet sizes by up to 60% for terrain update messages.</p>
<h2>Collaborative Sculpting: Concurrent Edits</h2>
<p>When multiple players sculpt the same region simultaneously, you need conflict resolution. <code>cSculpt</code> (CNR Visual Computing Lab, 2016) solved this with a multiresolution merge algorithm. Each edit is represented at multiple scales, and concurrent overlapping edits are merged by blending their multiresolution representations.</p>
<p>For our purposes, a simpler approach works: last-write-wins with server ordering. The Durable Object timestamps each edit and broadcasts them in order. All clients apply edits in the same sequence. Since brush strokes are small, localized, and additive/subtractive, the visual result of slightly reordered concurrent edits is usually indistinguishable from the &quot;correct&quot; order.</p>
<h2>INST-Sculpt: Neural SDF Editing (Research Frontier)</h2>
<p>INST-Sculpt (arxiv 2502.02891, February 2025) enables stroke-based editing of neural SDFs. Users draw strokes on the surface, and the system deforms the underlying neural field along tubular neighborhoods around the stroke path. Custom brush profiles (configurable cross-sections) control the shape of the deformation.</p>
<p>This is interesting for AI-generated terrain: if the base world is represented as a neural SDF (a small neural network that maps 3D coordinates to signed distance), sculpting modifies the network weights rather than explicit voxel data. The representation is extremely compact (a few MB for an entire world) but evaluation is more expensive than a lookup table.</p>
<p>This is research-stage technology. The inference cost of neural SDFs on consumer hardware is too high for real-time game use today. But it's worth watching, especially as WebGPU shader capabilities improve and model inference gets faster.</p>
<h2>World Creator 2026.3: Commercial Terrain State of the Art</h2>
<p>World Creator (BiteTheBytes, March 2026) represents the commercial state of the art for terrain authoring tools. Version 2026.3 added GPU-based terrain generation with automatic terrain adaptation (terrain conforms to placed objects), camera-focused object distribution for LOD optimization, and real-world elevation data import (GeoTIFF, HGT, DTED).</p>
<p>Since then, World Creator 2026.4 (April 28, 2026) added mathematical expressions in numerical fields, terrain normal blending to seat hero objects into the surface, full decal support, and VRAM scaling that adjusts the maximum object count to available GPU memory. BiteTheBytes also shipped a free Community Edition that's feature-complete but export-disabled, effectively an unlimited trial.</p>
<p>Their approach uses GPU compute for all terrain operations: erosion simulation, river carving, texture painting. The brush tools are GPU-accelerated with real-time viewport feedback. This matches the WebGPU compute pipeline described above, running on desktop GPUs.</p>
<h2>What We've Already Built: 24 Spikes and a Production World</h2>
<p>The <code>world/spikes/</code> directory contains 24 self-contained prototypes. These aren't toy demos. They're a progressive R&amp;D pipeline where each spike solved a specific problem, benchmarked it against a target, and informed the next one. The sculpting system builds on all of them, not just the later volumetric ones.</p>
<h3>The Production Heightmap Terrain (<code>world/client/</code>)</h3>
<p>The live world uses a chunked heightmap system in Three.js WebGL:</p>
<ul>
<li><code>noise.ts</code> generates terrain height via FBM value noise (5 octaves for hills, 4 for ridges, 3 for micro-detail) with a deterministic <code>terrainHeight(wx, wz)</code> function</li>
<li><code>chunk.ts</code> builds <code>PlaneGeometry</code> meshes from <code>Float32Array</code> heightmaps with 3 LOD levels (32/8/4 segments per 64-unit chunk), and places instanced trees/billboards with seeded random placement and per-object colliders</li>
<li><code>chunk-manager.ts</code> streams chunks in rings around the player (radius 1 at LOD0, radius 3 at LOD1, radius 6 at LOD2) with edge stitching via linear interpolation in <code>stitchEdge()</code>, and provides <code>getHeight()</code>, <code>getNormal()</code>, and <code>resolveCollisions()</code> for the physics layer</li>
<li><code>terrain-material.ts</code> does 4-layer splat-based texture blending (grass/rock/sand/dirt) via <code>MeshStandardMaterial.onBeforeCompile</code> with slope and height-driven weights, plus per-layer normal map blending</li>
<li><code>character-controller.ts</code> samples terrain height every frame for gravity, grounding, and slope rejection (max slope cos 50 degrees). Sculpting must feed modified heights into this system instantly or the player falls through edited terrain</li>
<li><code>placement.ts</code> already has a <code>Raycaster</code> hitting chunk meshes for the object placement tool. The brush tool should follow this exact pattern rather than building raycasting from scratch</li>
<li><code>protocol.ts</code> defines MessagePack-encoded messages for multiplayer sync via <code>world-chunk-do.ts</code> Durable Object, which currently handles <code>PlayerState</code>, <code>PlaceObject</code>, <code>RemoveObject</code>, and <code>Snapshot</code> messages. Terrain edits will need a new message type</li>
<li><code>world-chunk-do.ts</code> (Cloudflare Worker) persists placed objects to Durable Object storage and broadcasts to connected players at 50ms intervals. It has no concept of terrain modifications yet</li>
</ul>
<h3>Spikes 01-11: The Foundation Layer</h3>
<p>These spikes validated the core systems that sculpting will depend on. Skipping them means missing constraints the sculpting system must respect.</p>
<p><strong>Spike 01 (Terrain + Instancing):</strong> The first terrain prototype in Three.js. Established the PlaneGeometry + heightmap pattern and instanced object placement that <code>chunk.ts</code> still uses.</p>
<p><strong>Spike 02 (Rapier Physics Worker):</strong> Rapier 3D running in a Web Worker with a <code>ColliderDesc.heightfield()</code> collider. Built a kinematic character controller with autostep, slope limits, and snap-to-ground. This spike proved that physics can run off the main thread against a heightfield. If we sculpt the terrain, the physics heightfield must be rebuilt or replaced with a trimesh collider for MC chunks.</p>
<p><strong>Spike 05 (LLM Behaviors):</strong> Not directly terrain-related but established the JSON behavior schema for game objects. Relevant because sculpted terrain features could trigger behaviors (e.g., a carved river spawns water effects).</p>
<p><strong>Spike 06 (Chunk Streaming):</strong> First chunk load/swap system with dynamic loading as the player moves. Established the pattern that <code>chunk-manager.ts</code> uses: colored regions that load and unload. Sculpting must preserve edit state when chunks are unloaded and reloaded.</p>
<p><strong>Spike 07 (GPU Vegetation from Density Maps):</strong> Instanced grass and trees placed via density maps that sample terrain height and slope. Sculpting invalidates vegetation placement: if the terrain height changes, trees may end up floating or buried. The density map must be regenerated for edited chunks.</p>
<p><strong>Spike 08 (Terrain Material Shader Cost):</strong> Benchmarked triplanar projection, normal maps, and 4-layer blending. Measured exact ms cost of each feature. Found that triplanar + normals + 4 layers stays within budget at 45+ FPS. This budget matters for sculpted terrain: if we add a 5th layer for &quot;edited soil&quot; or change the blending for carved surfaces, we know exactly how much headroom exists.</p>
<p><strong>Spike 09 (CSM Shadows Budget):</strong> Cascaded shadow maps with 3 cascades at 1024^2 resolution. Measured shadow cost at ~1.5ms. Sculpted terrain changes shadow maps, but the cost is constant regardless of terrain shape.</p>
<p><strong>Spike 10 (Geometry Clipmaps + Geomorphing):</strong> Nested clipmap rings with geomorphing between LOD levels to eliminate pop-in. The constant triangle count means predictable GPU cost. Geomorphing matters for sculpting: when the player sculpts near an LOD boundary, the morph between LOD levels must reflect the edit. If the edit only exists in the high-res ring, the geomorph target is wrong.</p>
<p><strong>Spike 11 (Heightmap Chunk Streaming):</strong> More advanced chunk streaming with a visual grid showing loaded/loading/unloaded states per LOD level. Established the streaming budget: max chunks loaded per frame, prioritization of chunks that need LOD upgrades. Sculpting adds a new priority signal: chunks the player is actively editing should never be unloaded.</p>
<h3>Spikes 12-14: WebGPU + Three.js Integration</h3>
<p><strong>Spike 12 (WebGPU Marching Cubes):</strong> The first volumetric spike. Four 64^3 SDF chunks with animated sphere caves, running entirely on the GPU. Uses raw WebGPU: compute pipelines for SDF evaluation, MC extraction with the Twinklebear case table (256 configurations, 16 entries each), atomic vertex counter, and indirect draw. Performance target was &lt;4ms per chunk, &lt;12ms for all 4. This validated that GPU MC is fast enough for real-time re-meshing in the browser. Every subsequent volumetric spike reuses the MC case table and WGSL shaders defined here.</p>
<p><strong>Spike 13 (Reset Baseline from Spike 12):</strong> Ported Spike 12's raw WebGPU draw path to run inside Three.js's <code>WebGPURenderer</code>, accessing the backend's <code>device</code> directly. The render pipeline still uses raw WebGPU (<code>drawIndirect</code> with struct Vertex vec4+vec4). This proved that custom compute and Three.js scene rendering can coexist on the same GPU device.</p>
<p><strong>Spike 14 (Three.js WebGPU Incremental Hardening):</strong> Replaced the raw render pipeline with Three.js <code>StorageBufferAttribute</code> for positions and normals. MC compute writes directly into these GPU-resident buffers. The <code>drawIndirect</code> buffer controls how many vertices Three.js draws. This is the pattern all subsequent spikes use: compute stays as raw WebGPU, rendering goes through Three.js scene graph. The Three.js version across these spikes progressed from 0.170.0 to 0.172.0 as the WebGPU backend stabilized.</p>
<h3>Spike 15-17: Transvoxel LOD Stitching</h3>
<p><strong>Spike 15 (Transvoxel Seam Scaffold):</strong> Added the three-zone architecture: MC chunk (volumetric center), transition strip (seam between MC boundary and heightmap), and terrain ring (surrounding heightmap). All three share a material pass. The transition strip is a placeholder mesh at this stage, not real Transvoxel cells.</p>
<p><strong>Spike 16 (Transvoxel +X Face with Shared Heightmap):</strong> Two critical breakthroughs in one spike. First, replaced the flat terrain plane in the SDF with a shared Perlin heightmap: a 257x257 Float32Array uploaded to the GPU as a storage buffer, sampled via bilinear interpolation in the SDF compute shader. The MC surface and the heightmap mesh now agree on the same ground truth. Second, implemented real Transvoxel transition cells for the +X face by fetching Eric Lengyel's reference data tables from GitHub (<code>transitionCellClass</code>, <code>transitionVertexData</code>, <code>transitionCellData</code>) and the npm <code>transvoxel-data</code> package. The CPU evaluates 9-sample transition cells (512 configurations, 73 equivalence classes), places vertices by interpolating SDF values at grid points, and handles winding inversion for mirrored cases.</p>
<p><strong>Spike 17 (Dual MC 1x/2x LOD):</strong> Two MC chunks side by side at different resolutions. High-res: 62 cells with cell_scale=1.0. Low-res: 31 cells with cell_scale=2.0. The MC shader gained <code>cell_scale</code> and <code>grid_points</code> uniforms. Introduced <code>transition_shrink</code>: the low-res chunk's face-0 boundary vertices are pulled inward by 15% of cell_scale, creating a thin gap that Transvoxel transition cells fill without z-fighting. This is the LOD model the production system needs: close chunks at full resolution, far chunks at half resolution, Transvoxel at every boundary.</p>
<h3>Spikes 18-21: Transvoxel Corner Cases and GPU Acceleration</h3>
<p>These four spikes each solved a specific failure case in the Transvoxel implementation. Grouping them obscures the distinct problems.</p>
<p><strong>Spike 18 (Heightmap 2:1 Seam):</strong> Applied Transvoxel to a pure heightmap boundary where one side is twice the resolution of the other. No MC involved. The seam between a 62-cell and 31-cell heightmap chunk is generated from Transvoxel transition tables with 15% low-face shrink. This validated that Transvoxel works for the heightmap-only case, not just MC.</p>
<p><strong>Spike 19 (64/32/32/16 Corner Grid):</strong> The hardest stitching case: four chunks of different resolutions meeting at a corner point (64, 32, 32, and 16 cells). The seam system must generate transition cells along four edges (A-B, A-C, B-D, C-D) with correct winding for each direction. This spike proved that the Transvoxel tables handle the multi-resolution corner without custom-case logic.</p>
<p><strong>Spike 20 (GPU Transvoxel Corner):</strong> Moved the Transvoxel transition cell generation to the GPU for the 64/32/32/16 corner layout. The CPU was a bottleneck when regenerating transition cells every frame for animated terrain. GPU compute generates the seam vertices in the same pass as the MC extraction.</p>
<p><strong>Spike 21 (GPU MC + Transvoxel Corner):</strong> Combined full GPU MC extraction with GPU Transvoxel seam generation in a single compute dispatch sequence. Both MC chunks and all four seams are generated on the GPU, with vertex counts managed via atomic counters and drawn with <code>drawIndirect</code>. This is the complete GPU pipeline for multi-resolution volumetric terrain with seamless LOD transitions.</p>
<h3>Spikes 22-24: The Hybrid Architecture</h3>
<p><strong>Spike 22 (Hybrid MC/Heightmap Policy):</strong> The key architecture spike. Chunks are heightmaps by default. When the animated deformation sphere intersects a chunk's AABB, that chunk switches to MC mode. The rest stay as static heightmap meshes. Layout: 64, 32/32, and 16-cell chunks at different resolutions. Transvoxel seams handle every boundary, including MC-to-heightmap transitions. The spike tracks MC chunk count vs HM chunk count and vertex overflow per frame.</p>
<p><strong>Spike 23 (Policy-Driven Chunk Modes):</strong> Loaded as a patch on top of Spike 22. Added camera-distance hysteresis (chunks don't flicker between modes when the camera is near a threshold) and an edit mask (chunks that have been deformed stay in MC mode even if the deformation source moves away). This is the &quot;sticky edit&quot; behavior sculpting needs: once a player carves a cave, that chunk stays volumetric forever.</p>
<p><strong>Spike 24 (Policy + Clipmap Rings):</strong> The most advanced spike. Combines the near-field policy system from Spike 23 with far-field geometry clipmap rings from Spike 10. Upgraded to Three.js 0.183.1. Near-field uses HM/MC hybrid with Transvoxel seams at 64/32/16 resolution. Far-field uses static-center clipmap rings that follow the camera. This is the complete terrain rendering architecture: chunked volumetric sculpting where needed, cheap clipmap terrain everywhere else.</p>
<h3>Why Marching Cubes, Not Surface Nets</h3>
<p>The external research section of this guide suggests Surface Nets as the strongest candidate for browser terrain sculpting. But every spike in the pipeline uses Marching Cubes. That's not an accident.</p>
<p>MC's defining advantage is embarrassing parallelism: each cube is completely independent. The WGSL compute shaders in Spikes 12-24 dispatch one thread per cube with zero inter-cell communication. Atomic counters handle vertex allocation. This maps perfectly to GPU workgroups.</p>
<p>Surface Nets places one vertex per surface-containing cell, then connects neighbors. That neighbor connectivity is an inter-cell dependency. The <code>fast-surface-nets</code> crate handles it on the CPU with careful iteration order. On the GPU, it requires either a two-pass approach (find vertices, then connect) or shared memory within workgroups. Both are possible in WebGPU but add complexity.</p>
<p>The practical recommendation: stay with Marching Cubes for the sculpting pipeline. It's proven in our codebase, the WGSL shaders exist and are benchmarked, and the Transvoxel seam system is built around MC's edge-based vertex placement. Surface Nets is worth revisiting if MC's aliasing on binary data becomes a visible problem, but for SDF terrain where values are smooth gradients, MC produces clean results.</p>
<h2>Practical Architecture for Sculpting</h2>
<p>The spike sequence solved the rendering pipeline. What remains is the brush system, cascading side effects through the game systems, and multiplayer synchronization. Here's the plan, building on every spike.</p>
<h3>Phase 1: Heightmap Sculpting (Minimal Change, Maximum Reach)</h3>
<p>Add brush tools that modify chunk heightmaps in the production <code>world/client/</code> code. This works within the existing WebGL renderer and doesn't require WebGPU.</p>
<p><strong>Brush input:</strong> Follow the <code>PlacementTool</code> pattern in <code>placement.ts</code>. It already has a <code>Raycaster</code> hitting <code>chunkManager.getChunkMeshes()</code> and tracking a ghost mesh at the hit point. A <code>TerrainBrushTool</code> would do the same raycast but modify the chunk heightmap instead of placing an object. The <code>World.onMouseDown</code> handler already dispatches based on tool state.</p>
<p><strong>Chunk modification (<code>Chunk.applyBrush</code>):</strong> Map the brush world position to heightmap grid coordinates. For each grid point within the brush radius, compute the falloff-weighted displacement and add/subtract from the heightmap value. Then update the mesh: set vertex Y positions from the modified heightmap, recompute normals via central differencing (the same <code>terrainHeight(wx +/- eps, wz)</code> pattern already used in <code>chunk.ts</code> line 155-158), and regenerate the splat map via <code>createSplatMap()</code> in <code>terrain-material.ts</code> for the affected region so slope-driven texture blending updates.</p>
<p><strong>Character controller:</strong> <code>CharacterController.update()</code> calls <code>getHeight()</code> every frame for grounding. <code>ChunkManager.getHeight()</code> delegates to <code>Chunk.sampleHeight()</code>, which reads from the chunk's <code>heightmap</code> Float32Array. Since we're modifying that array directly, the character controller picks up the change on the next frame with zero additional wiring.</p>
<p><strong>Object invalidation:</strong> Tree instances in <code>chunk.ts</code> are placed by sampling <code>terrainHeight()</code> at spawn time. After sculpting, trees in the affected area may be at the wrong height. Phase 1 can defer this (trees float slightly on small edits). Phase 2 needs a <code>chunk.invalidateObjects()</code> that re-samples heights and rebuilds the instance matrices. Same for the colliders used in <code>resolveCollisions()</code>.</p>
<p><strong>Rapier physics (if integrated):</strong> Spike 02 proved heightfield colliders work. If Rapier is active, the heightfield collider must be rebuilt or patched for the modified chunk. Rapier's <code>ColliderDesc.heightfield()</code> takes a flat Float32Array, so it's a straight replacement.</p>
<p><strong>Network sync:</strong> Add <code>MsgType.TerrainEdit = 10</code> to <code>protocol.ts</code>:</p>
<pre><code class="language-typescript">interface TerrainEditMsg {
  t: MsgType.TerrainEdit
  cx: number
  cz: number
  brush: {
    wx: number
    wz: number
    radius: number
    strength: number
    falloff: number
    operation: number
  }
}
</code></pre>
<p>The <code>WorldChunkDO</code> broadcasts this to all clients and appends it to a per-chunk edit log stored in Durable Object storage. Late-joining clients receive the edit log in the <code>Snapshot</code> message and replay it to reconstruct the terrain state. All clients apply the same deterministic brush function, so they converge on the same heightmap.</p>
<p><strong>Chunk unload/reload:</strong> Spike 06 and Spike 11 established the streaming pattern. When a chunk is unloaded and later reloaded, the edit log for that chunk must be replayed against the base procedural heightmap. The edit log is stored server-side (Durable Object) and included in the Snapshot message.</p>
<h3>Phase 2: Volumetric Sculpting with the Spike 22-24 Architecture</h3>
<p>Port the Spike 24 pipeline into the production world. When a player sculpts below the surface (carving a cave, digging a tunnel), the affected chunk transitions from heightmap mode to MC mode.</p>
<p><strong>WebGPU renderer migration:</strong> Spikes 13-14 proved that Three.js's <code>WebGPURenderer</code> can host custom compute alongside the scene graph. The production world moves from <code>WebGLRenderer</code> to <code>WebGPURenderer</code> with <code>StorageBufferAttribute</code> for MC chunks. Fallback to the Phase 1 heightmap-only path when WebGPU is unavailable.</p>
<p><strong>Per-chunk SDF allocation:</strong> Follow Spike 22's hybrid pattern. Each chunk starts as a heightmap. On the first volumetric brush stroke, allocate a 64^3 Float32Array, initialize it by sampling the heightmap (the SDF value at each point is <code>world.y - heightmap_value</code>), and switch to MC rendering. The policy system from Spike 23 ensures the chunk stays in MC mode permanently (the &quot;sticky edit&quot; behavior from the edit mask).</p>
<p><strong>Shared heightmap in the SDF shader:</strong> Spike 16's <code>height_at()</code> function. Upload the chunk's heightmap to a GPU storage buffer. The SDF compute shader evaluates <code>max(height_sdf, edit_sdf)</code> where <code>height_sdf = world.y - height_at(world.xz)</code> and <code>edit_sdf</code> contains the brush modifications. MC and heightmap chunks agree on ground truth at their boundaries.</p>
<p><strong>Transvoxel seams:</strong> The full stack from Spikes 15-21. MC-to-heightmap boundaries use transition cells with the shrink gap. MC-to-MC boundaries at different resolutions use Spike 17's dual-LOD pattern. The corner case from Spike 19 handles 4-way intersections. Spike 21's GPU compute generates all seam geometry in the same dispatch.</p>
<p><strong>Clipmap far-field:</strong> Spike 24's clipmap rings for terrain outside the sculpting range. Sculpting never touches these rings; they sample the base procedural heightmap.</p>
<p><strong>Geomorphing:</strong> Spike 10's geomorphing eliminates pop-in at LOD transitions. For edited chunks, the geomorph target must include the edit. If a chunk is MC at LOD0 and its LOD1 neighbor is a heightmap, the geomorph blends between the two representations. This requires sampling the edit log even at lower LODs.</p>
<p><strong>Material budget:</strong> Spike 08 benchmarked 4-layer triplanar + normals at 45+ FPS. MC chunks need the same material. The splat map can be generated from the SDF gradient (steep = rock, flat = grass) instead of the heightmap slope. This stays within the 4-layer budget.</p>
<p><strong>Vegetation invalidation:</strong> Spike 07's density-map vegetation depends on terrain height and slope. When a chunk transitions to MC mode, tree instances must be regenerated by sampling the SDF surface. Trees on overhangs or inside caves must be culled. The instanced mesh matrices from <code>chunk.ts</code> are rebuilt from the new surface.</p>
<h3>Phase 3: CSG Edit Trees for Undo/Redo and Network Sync</h3>
<p>Replace raw SDF mutation with a CSG operation tree. Each brush stroke appends a primitive (sphere, capsule, box) with an operation (add, subtract, smooth blend). The SDF is recomputed from the tree.</p>
<p><strong>Benefits:</strong></p>
<ul>
<li>Non-destructive: any edit can be removed from the tree to undo it</li>
<li>Network-efficient: broadcast the CSG operation, not the raw field values</li>
<li>Deterministic: all clients build the same SDF from the same operation sequence</li>
<li>ALICE-SDF's CSG tree diff/patch provides bandwidth-efficient synchronization and undo/redo across the network</li>
</ul>
<p><strong>Durable Object storage:</strong> The edit tree per chunk replaces the flat edit log from Phase 1. The <code>WorldChunkDO</code> stores the CSG tree structure, not raw heightmap deltas. <code>Snapshot</code> messages include the tree, and late-joining clients evaluate it to produce the local SDF.</p>
<h3>Phase 4: Collaborative Sculpting</h3>
<p>Add concurrent edit support with server-ordered operation replay. The Durable Object timestamps each edit and broadcasts in order. Late-joining clients receive the operation log and reconstruct the world state. The existing <code>Snapshot</code> message type extends to include terrain edit history per chunk.</p>
<p>Since brush strokes are small, localized, and additive/subtractive, the visual result of slightly reordered concurrent edits is usually indistinguishable from the &quot;correct&quot; order. Last-write-wins with server ordering is sufficient. The Durable Object's <code>tick()</code> function (currently running at 50ms intervals for player state) adds terrain edit broadcasts to the same loop.</p>
<h2>Key References</h2>
<p><strong>Algorithms:</strong></p>
<ul>
<li>Lorensen &amp; Cline, &quot;Marching Cubes&quot; (1987)</li>
<li>Eric Lengyel, &quot;Transvoxel Algorithm&quot; (2009), <a href="http://transvoxel.org">transvoxel.org</a></li>
<li>Losasso &amp; Hoppe, &quot;Geometry Clipmaps&quot; (SIGGRAPH 2004)</li>
<li>&quot;A High-Performance SurfaceNets Discrete Isocontouring Algorithm&quot; (arxiv 2401.14906, 2024)</li>
<li>MCHex (arxiv 2511.02064, 2025)</li>
</ul>
<p><strong>Implementations:</strong></p>
<ul>
<li>bevy-sculpter v0.18.0 (Rust, Surface Nets + SDF brushes)</li>
<li>fast-surface-nets (Rust, 20M tri/sec)</li>
<li>ALICE-SDF v1.3.0 (Rust + WASM, CSG tree diff/patch)</li>
<li>WebGPU SDF Editor (Nijhoff, January 2026)</li>
<li>SculptingPro (Unity runtime sculpting API)</li>
<li>TerraBrush (Godot terrain sculpting GDExtension)</li>
</ul>
<p><strong>Games:</strong></p>
<ul>
<li>Dreams (Media Molecule, SDF + point cloud rendering, SIGGRAPH 2015)</li>
<li>Teardown (Voxagon, voxel DDA ray tracing, deterministic multiplayer destruction)</li>
<li>Mike Turitzin's SDF engine (brick maps + geometry clipmaps, January 2026)</li>
</ul>
<p><strong>Network:</strong></p>
<ul>
<li>&quot;Optimizing payload size for voxel state synchronization&quot; (Oulu, 2024)</li>
<li>Teardown multiplayer (semi-deterministic destruction sync, March 2026)</li>
<li>cSculpt (collaborative mesh sculpting with multiresolution merge)</li>
</ul>
<p><BuildCta
  title="Sculpt less, play sooner"
  desc="Get a terrain-driven game without touching a brush."
  prompt="Make a game set in a hand-sculpted canyon with a river" /></p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Best AI Video Models with Reference Image Support (2026)]]></title>
            <link>https://app.cinevva.com/guides/long-reference-video-models</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/long-reference-video-models</guid>
            <pubDate>Sat, 28 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[The AI video generation models that produce long, consistent video from reference images in 2026 - native long-form generators, reference-and-extend workflows, and open-source options you can self-host.]]></description>
            <content:encoded><![CDATA[<style>
.video-embed {
  position: relative;
  width: 100%;
  max-width: 720px;
  margin: 1.5rem 0;
}
.video-embed iframe {
  width: 100%;
  aspect-ratio: 16/9;
  border-radius: 8px;
}
.video-caption {
  font-size: 0.9rem;
  color: var(--vp-c-text-2);
  margin-top: 0.5rem;
  margin-bottom: 1.5rem;
  max-width: 720px;
}
</style>
<h1>Best AI Video Models with Reference Image Support (2026)</h1>
<p><em>Last updated: September 2026.</em></p>
<p>Generating a 10-second clip is easy now. Every major model does it. The real question is: can you generate 5 or 10 minutes of coherent video where a character looks the same in minute one and minute eight? Where the scene holds together across hundreds of frames?</p>
<p>That's the hard problem. And it's where things are shifting fast. This guide covers every model we've found that either generates long video natively or supports the workflows needed to build long-form content with consistent characters through reference images. We split them into three tiers: models that generate minutes-long video directly, models with strong reference image support that you extend through continuation, and open-source options you can run yourself.</p>
<h2>Tier 1: Native Long-Form Generation (Minutes+)</h2>
<p>These models generate video measured in minutes, not seconds. They're built from the ground up for temporal consistency over long sequences.</p>
<h3>LongCat Video</h3>
<p>Meituan released LongCat Video in late 2025. It's a 13.6 billion parameter diffusion transformer and it's the first model that can reliably generate coherent video up to 15 minutes long.</p>
<p>The model supports text-to-video, image-to-video, and video continuation in a unified pipeline. In I2V mode, the input image becomes the literal first frame of the video. It's not a loose character reference you can place in any scene. The model animates forward from that starting frame while using &quot;Cross-Chunk Latent Stitching&quot; to keep referencing the original image throughout generation, preventing color drift and maintaining visual consistency over long sequences. An updated 2026 variant adds audio-driven avatar generation with lip-sync for 5+ minute talking head videos.</p>
<p>Under the hood, LongCat uses a coarse-to-fine generation approach with Block Sparse Attention to handle the massive sequence lengths. RLHF tuning improves motion quality. On the VBench 2.0 benchmark it ranks third overall, behind Google Veo 3 and Shengshu's Vidu Q1.</p>
<p><strong>Availability:</strong> Open source under MIT license. Available through <a href="http://fal.ai">fal.ai</a> API at $0.04 per generated second ($36 for a 15-minute video at 720p). Also available through LongCat's own platform with credit-based pricing.</p>
<table>
<thead>
<tr>
<th>Spec</th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td>Max duration</td>
<td>~15 minutes</td>
</tr>
<tr>
<td>Resolution</td>
<td>720p at 30fps</td>
</tr>
<tr>
<td>Parameters</td>
<td>13.6B</td>
</tr>
<tr>
<td>Reference images</td>
<td>First-frame only (I2V mode, not character reference)</td>
</tr>
<tr>
<td>License</td>
<td>MIT</td>
</tr>
<tr>
<td>API cost</td>
<td>~$0.04/second (<a href="http://fal.ai">fal.ai</a>)</td>
</tr>
</tbody>
</table>
<h3>Seaweed APT2</h3>
<p>ByteDance's Seaweed APT2 takes a different approach. Instead of generating a complete video upfront, it produces frames autoregressively at 24fps with just 0.16 seconds latency per frame on a single H100. The result is stable video up to 5 minutes with temporal consistency that holds.</p>
<p>The technical trick is Autoregressive Adversarial Post-Training (AAPT), which converts a pretrained bidirectional video diffusion model into a unidirectional autoregressive generator. Single network forward evaluation per frame. That's what makes real-time generation possible.</p>
<p>What makes this model interesting beyond raw length is interactivity. You can control the camera, animate characters through pose detection, and manipulate scenes while the video renders. Think of it less as &quot;generate a video&quot; and more as &quot;steer a video in real time.&quot;</p>
<p><strong>Availability:</strong> Research phase only. Not publicly available yet. The 7B base model (Seaweed-7B) has a published paper but the APT2 weights haven't been released.</p>
<table>
<thead>
<tr>
<th>Spec</th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td>Max duration</td>
<td>~5 minutes</td>
</tr>
<tr>
<td>Resolution</td>
<td>736x416 (single GPU), up to 720p (8 GPUs)</td>
</tr>
<tr>
<td>Parameters</td>
<td>8B</td>
</tr>
<tr>
<td>Reference images</td>
<td>Via I2V and interactive pose control</td>
</tr>
<tr>
<td>License</td>
<td>Not released</td>
</tr>
<tr>
<td>Status</td>
<td>Research preview</td>
</tr>
</tbody>
</table>
<h3>Helios</h3>
<p>Helios comes from Peking University, built on top of Wan 2.1. It's a 14B parameter model that generates minute-scale video at 19.5 FPS on a single H100. The key innovation is how it handles long-video drifting. Instead of using conventional anti-drifting techniques like self-forcing or keyframe sampling, Helios simulates drifting during training so the model learns to correct for it.</p>
<p>It natively supports text-to-video, image-to-video, and video-to-video tasks. The I2V mode accepts reference images to seed the generation.</p>
<p><strong>Availability:</strong> Fully open source under Apache 2.0. Released March 2026. Code and weights on GitHub (PKU-YuanGroup/Helios). Integrated into Diffusers, SGLang, and vLLM-Omni. Gradio demo on HuggingFace Spaces.</p>
<table>
<thead>
<tr>
<th>Spec</th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td>Max duration</td>
<td>Minute-scale (no fixed cap)</td>
</tr>
<tr>
<td>Resolution</td>
<td>720p</td>
</tr>
<tr>
<td>Parameters</td>
<td>14B</td>
</tr>
<tr>
<td>Reference images</td>
<td>Yes (I2V mode)</td>
</tr>
<tr>
<td>License</td>
<td>Apache 2.0</td>
</tr>
<tr>
<td>Hardware</td>
<td>Single H100 for real-time</td>
</tr>
</tbody>
</table>
<h3>SkyReels V2 / V3</h3>
<div class="video-embed">
<iframe src="https://www.youtube.com/embed/NJcRyQu30yM" title="SkyReels AI: Infinite-Length Video Generation" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<div class="video-caption">SkyReels V3 accepts 1-4 reference images and generates unlimited-length video with multi-shot switching and audio-guided avatar synthesis.</div>
<p>Skywork's SkyReels line aims for infinite-length video. V2 uses an AutoRegressive Diffusion-Forcing architecture that generates video without a fixed duration cap. V3, released January 2026, unifies reference image-to-video, video-to-video extension, and audio-guided avatar generation in a single model.</p>
<p>V3 accepts 1 to 4 reference images and preserves subject identity across the generated video. The video-to-video mode enables seamless single-shot continuation and multi-shot switching with cinematographic transitions.</p>
<p>Skywork announced SkyReels V4 on February 25, 2026, a dual-stream model that generates video and audio together at up to 1080p/32fps and accepts text, images, video clips, masks, and audio as conditioning inputs. One correction to our July write-up: V4 has not been open-sourced. As of September 2026 the <a href="https://github.com/orgs/SkyworkAI/repositories">SkyworkAI GitHub organization</a> has repos for V1 through V3 and Matrix-Game, and no V4 weights or public API, so V3 remains the open reference-to-video ceiling from Skywork.</p>
<p><strong>Availability:</strong> Fully open source. Models from 1.3B to 14B parameters. Available at 540p and 720p. Code and weights on GitHub and HuggingFace.</p>
<table>
<thead>
<tr>
<th>Spec</th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td>Max duration</td>
<td>Unlimited (autoregressive)</td>
</tr>
<tr>
<td>Resolution</td>
<td>540p, 720p</td>
</tr>
<tr>
<td>Parameters</td>
<td>1.3B, 5B, 14B</td>
</tr>
<tr>
<td>Reference images</td>
<td>1-4 images (V3)</td>
</tr>
<tr>
<td>License</td>
<td>Open source</td>
</tr>
<tr>
<td>Hardware</td>
<td>Minimum RTX 4090, recommended 4-8x A100</td>
</tr>
</tbody>
</table>
<h2>Tier 2: Short Clips with Strong Reference + Extension</h2>
<p>These models generate 8-60 second clips but offer strong reference image support and video extension features. For long-form content, you chain clips together using the model's continuation or extension endpoints. Character consistency comes from reference images that persist across generations.</p>
<p>This is the practical workflow most creators use today for content longer than a minute. The quality per-clip is often higher than the native long-form models.</p>
<h3>Kling 3.0 Omni (Kuaishou)</h3>
<div class="video-embed">
<iframe src="https://www.youtube.com/embed/gn3YTrStUn8" title="Introducing Kling 3.0: AI Video Generation" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<div class="video-caption">Kling 3.0 Omni combines character elements, style references, and multi-shot storyboarding in a single call with native 4K 60fps output.</div>
<p>Kling has the most complete reference image system of any video model. It separates reference inputs into three distinct categories, each serving a different purpose:</p>
<p><strong>Reference Images</strong> (<code>image_urls</code>): Up to 4 images for style and appearance guidance. You tag them in your prompt as <code>@Image1</code>, <code>@Image2</code>, etc. These influence the overall look, scene style, and environment without being the first frame.</p>
<p><strong>Elements</strong> (<code>elements</code>): Dedicated character/object inputs. Each element takes a <code>frontal_image_url</code> (clear front-facing photo) plus optional <code>reference_image_urls</code> (additional angles). You reference them as <code>@Element1</code>, <code>@Element2</code> in your prompt. The model extracts the character's identity and places them in any scene you describe. This is the key feature for adventure-movie-style content: upload a character photo, then describe them walking through a forest, fighting a dragon, whatever you want.</p>
<p><strong>Start/End Frames</strong> (<code>start_image_url</code>, <code>end_image_url</code>): Pin specific images as the first or last frame. These are literal frames, not style guides.</p>
<p>The total across all three categories is up to 7 reference inputs (drops to 4 when also using a reference video). A single prompt like <code>&quot;@Element1 and @Element2 are having dinner at this table on @Image1&quot;</code> can combine characters with scene references.</p>
<p>For long-form content, Kling offers two paths. Multi-shot mode generates up to 6 scenes in a single call, each with its own prompt and duration (3-15s each). Character elements persist across all shots automatically. The extend API continues from where a completed video left off, reaching roughly 3 minutes through chained extensions. The V2V editing mode takes existing video (3-10 seconds) and transforms it using element references and a text prompt, preserving camera motion and character staging from the source while restyling characters and environments based on your references. This makes Kling particularly useful for enhancing pre-existing footage, including low-fidelity 3D renders.</p>
<p>Kling 3.0 Omni unifies text-to-video, image-to-video, reference-to-video, and video editing in a single model with native audio generation and lip-sync. In June 2026 Kuaishou added Kling 3.0 Turbo, a faster and cheaper variant with audio bundled at 720p and 1080p, and upgraded Omni's editing pipeline to accept and output 4K video. No Kling 3.5 or 4.0 has shipped as of September 2026, so 3.0 Omni is still the current video model.</p>
<p><strong>Availability:</strong> Commercial API through Kuaishou, <a href="http://fal.ai">fal.ai</a>, and Replicate, with per-second pricing that varies by resolution and variant. Web interface at <a href="http://klingai.com">klingai.com</a>.</p>
<table>
<thead>
<tr>
<th>Spec</th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td>Native clip length</td>
<td>3-15 seconds</td>
</tr>
<tr>
<td>Extended length</td>
<td>~3 minutes (via chained extensions)</td>
</tr>
<tr>
<td>Resolution</td>
<td>720p, 1080p (4K in Omni editing)</td>
</tr>
<tr>
<td>Reference images</td>
<td>Up to 4 (<code>@Image</code> style refs)</td>
</tr>
<tr>
<td>Elements</td>
<td>Up to 4 (<code>@Element</code> character refs with frontal + angles)</td>
</tr>
<tr>
<td>Total references</td>
<td>Up to 7 combined (4 with video ref)</td>
</tr>
<tr>
<td>Multi-shot</td>
<td>Yes (up to 6 shots in storyboard)</td>
</tr>
<tr>
<td>Audio</td>
<td>Native synchronized audio + lip-sync</td>
</tr>
<tr>
<td>Video editing</td>
<td>Yes (text-guided editing of existing video)</td>
</tr>
<tr>
<td>API</td>
<td>Kuaishou, <a href="http://fal.ai">fal.ai</a>, Replicate</td>
</tr>
</tbody>
</table>
<h3>Kling image to video with multiple reference images</h3>
<p>This is the question we get asked most about Kling, so here's the short version of how multi-image reference works in the current model, taken from Kling's own <a href="https://kling.ai/quickstart/klingai-video-3-omni-model-user-guide">VIDEO 3.0 Omni guide</a>. Standard image-to-video takes one picture and animates it as the first frame. Multi-image reference is a different mode: you upload several images, tag them in the prompt, and the model composes a new shot from them. Without a reference video in the request you can attach up to 7 images and elements combined, and with a reference video that drops to 4. A single character element can itself be built from up to 4 photos from different angles, or from a 3 to 8 second single-character video clip, and you can bind a 5 to 30 second voice recording to it so the character keeps the same voice across shots. In the prompt you refer to them as <code>@Image1</code> for a style or scene reference and <code>@Element1</code> (or the name you gave the element) for a locked character or object, so a prompt like &quot;@Grace walks through @Image1 at dusk&quot; puts a consistent character into a scene you supplied. Output runs up to 15 seconds at 720p or 1080p with native audio, and the same element library carries into Kling's multi-shot storyboard, which is how you keep one character across a six-shot sequence. If you only need consistent stills rather than video, Kling IMAGE 3.0 accepts up to 10 reference images per its <a href="https://kling.ai/quickstart/klingai-image-3-model-user-guide">image guide</a>, and a common workflow is to lock the character there first, then feed those stills in as elements.</p>
<h3>Grok Imagine (xAI)</h3>
<div class="video-embed">
<iframe src="https://www.youtube.com/embed/DMXA0qGf-1s" title="Grok Imagine: Video Extension and Reference Demo" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<div class="video-caption">Grok Imagine separates reference mode from first-frame mode, letting you tag up to 7 images as character or object references in your prompt.</div>
<p>xAI launched Grok Imagine's Reference-to-Video mode in early 2026 with support for 1-7 reference images. The documentation explicitly distinguishes this from image-to-video: &quot;Unlike image-to-video where the source image becomes the starting frame, reference images influence what appears in the video without locking in the first frame.&quot;</p>
<p>You tag images in your prompt as <code>&lt;IMAGE_1&gt;</code>, <code>&lt;IMAGE_2&gt;</code>, etc. A prompt like <code>&quot;the model from &lt;IMAGE_1&gt; walks onto the runway wearing the shirt from &lt;IMAGE_2&gt;&quot;</code> combines a person reference with a clothing reference. The model handles virtual try-on, product placement, and character-consistent storytelling across scenes.</p>
<p>One constraint: you can't combine reference images with image-to-video in the same request. It's either first-frame mode or reference mode, not both.</p>
<p>Grok Imagine also has a video extension endpoint that adds new footage to the end of an existing video. The <code>duration</code> parameter controls only the new portion. You can chain extensions to build longer content.</p>
<p>xAI released Grok Imagine 1.5 as an API preview on June 3, 2026, then moved it to general availability as <code>grok-imagine-video-1.5</code> on June 16, with a Fast variant rolling out to the consumer apps. It's an image-to-video model that animates a single still into cinematic motion with camera moves, atmosphere, physics, and natively generated synchronized audio in the same inference pass. It supports multi-shot sequencing to chain consistent scenes, generates a 6-second 720p clip in about 25 seconds, and sat third on the Artificial Analysis image-to-video arena at launch. As of September 2026 xAI's <a href="https://docs.x.ai/developers/models">models page</a> lists Grok Imagine Video 1.5 at $0.08 per second and the original Grok Imagine Video at $0.05 per second. xAI's newer Grok Imagine Image 2.0 (listed in its <a href="https://docs.x.ai/developers/release-notes">release notes</a>) is a still-image model, useful for locking a character before you animate it, but not a new video model.</p>
<p><strong>Availability:</strong> xAI API (launched January 2026), <a href="http://fal.ai">fal.ai</a>, and Replicate. Python SDK, JavaScript/AI SDK, and REST API. $0.05/sec at 720p with audio. Also available to X Premium subscribers.</p>
<table>
<thead>
<tr>
<th>Spec</th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td>Native clip length</td>
<td>1-15 seconds</td>
</tr>
<tr>
<td>Extended length</td>
<td>Chain-able via extension API</td>
</tr>
<tr>
<td>Resolution</td>
<td>480p, 720p</td>
</tr>
<tr>
<td>Reference images</td>
<td>1-7 (true reference, not first-frame)</td>
</tr>
<tr>
<td>Prompt tags</td>
<td><code>&lt;IMAGE_1&gt;</code>, <code>&lt;IMAGE_2&gt;</code>, etc.</td>
</tr>
<tr>
<td>Audio</td>
<td>Yes (720p)</td>
</tr>
<tr>
<td>Video editing</td>
<td>Yes (text-guided)</td>
</tr>
<tr>
<td>API</td>
<td>xAI API, <a href="http://fal.ai">fal.ai</a>, Replicate</td>
</tr>
<tr>
<td>API cost</td>
<td>$0.05/second (Video), $0.08/second (Video 1.5)</td>
</tr>
</tbody>
</table>
<h3>Seedance 2.0 (ByteDance)</h3>
<div class="video-embed">
<iframe src="https://www.youtube.com/embed/W_lxyDFDZt4" title="Seedance 2.0: The New Best AI Video Generator" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<div class="video-caption">Seedance 2.0 accepts up to 12 multimodal inputs simultaneously and generates video with native audio sync and phoneme-level lip-sync in 8+ languages.</div>
<p>ByteDance's Seedance 2.0 accepts the most reference inputs of any model: up to 12 files simultaneously, including up to 9 images, 3 videos, and 3 audio files. The model supports native audio-video generation with phoneme-level lip-sync in 8+ languages.</p>
<p>Individual images can be up to 30MB each. Reference videos must be 2-15 seconds. The model uses the references for character appearance, scene styling, and motion guidance.</p>
<p>The next jump has now shipped. ByteDance announced Seedance 2.5 at its Volcano Engine FORCE conference on June 23, 2026 and released it on July 31, 2026. Per the <a href="https://seed.bytedance.com/en/blog/one-take-creation-flexible-referencing-introducing-seedance-2-5">Seed team's announcement</a>, it generates a single native clip of up to 30 seconds with multi-round extensions, accepts up to 30 images, 10 video clips, and 10 audio clips as references in one pass (50 files, up from 12), and adds timestamp-level editing so you can change one moment of a clip without regenerating it. It reached Jimeng and Doubao first, then the BytePlus ModelArk enterprise API, and third parties picked it up fast: Runway's API added Seedance 2.5 on August 7, 2026 with 4 to 30 second durations and up to 30 reference images, per the <a href="https://docs.dev.runwayml.com/api-details/api_changelog/">Runway changelog</a>. For the narrative workflow in this guide, a 30-second single take with 50 references removes a lot of the clip-stitching described below.</p>
<p><strong>Availability:</strong> ByteDance official API (via Volcengine, launched February 2026) and third-party API providers. Output at 480p-720p via API, up to 2K cinema resolution through the platform.</p>
<table>
<thead>
<tr>
<th>Spec</th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td>Native clip length</td>
<td>4-15 seconds</td>
</tr>
<tr>
<td>Resolution</td>
<td>Up to 2K (cinema)</td>
</tr>
<tr>
<td>Reference images</td>
<td>Up to 9 images + 3 videos + 3 audio (12 total)</td>
</tr>
<tr>
<td>Seedance 2.5 clip length</td>
<td>Up to 30 seconds native, with extensions</td>
</tr>
<tr>
<td>Seedance 2.5 references</td>
<td>Up to 30 images + 10 videos + 10 audio (50 total)</td>
</tr>
<tr>
<td>Audio</td>
<td>Native with lip-sync (8+ languages)</td>
</tr>
<tr>
<td>API</td>
<td>ByteDance/Volcengine, BytePlus ModelArk (2.5), Runway API (2.5), third-party providers</td>
</tr>
</tbody>
</table>
<h3>Runway Gen-4.5</h3>
<p>Runway Gen-4.5 launched at the top of the Artificial Analysis Text-to-Video leaderboard with 1,247 ELO, ahead of Veo 3 and Sora 2 Pro at the time. By September 2026 the arena had reshuffled (Gemini Omni Flash and Alibaba's Wan 3.0 share the top spot, with Gen-4.5 outside the top ten), but Gen-4.5 remains a strong model for cinematic quality and controllable action, and Runway hasn't shipped a Gen-5. The model generates 2-10 second clips for text-to-video and supports character-consistent long-form video up to one minute through multi-shot sequencing.</p>
<p>Image-to-video was added in early 2026 and supports reference images for all aspect ratios. Runway's other 2026 moves were about editing and routing rather than a new base model: Aleph 2.0 (June 2, 2026) edits an existing 2 to 30 second video from a text prompt plus up to 5 keyframe images pinned at timestamps, Gen-3 Alpha Turbo and the original Gen-4 Aleph were retired from the API on July 30, 2026, and the API now also serves third-party models including Gemini Omni Flash and Seedance 2.5, all per the <a href="https://docs.dev.runwayml.com/api-details/api_changelog/">Runway changelog</a>. The model integrates neural radiance fields and Gaussian splatting within the diffusion architecture, giving it 3D geometric understanding rather than pixel-level prediction alone. This means better object permanence and physically plausible motion.</p>
<p><strong>Availability:</strong> Commercial API and web interface. SDKs for Node and Python. Also available on Replicate.</p>
<table>
<thead>
<tr>
<th>Spec</th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td>Native clip length</td>
<td>2-10 seconds</td>
</tr>
<tr>
<td>Long-form mode</td>
<td>Up to ~1 minute</td>
</tr>
<tr>
<td>Resolution</td>
<td>Up to 1080p</td>
</tr>
<tr>
<td>Reference images</td>
<td>0-1 per generation</td>
</tr>
<tr>
<td>Audio</td>
<td>Native audio generation</td>
</tr>
<tr>
<td>Multi-shot</td>
<td>Yes</td>
</tr>
<tr>
<td>API</td>
<td>Yes (Runway, Replicate)</td>
</tr>
</tbody>
</table>
<h3>Google Veo 3.1</h3>
<p>Google's Veo 3.1 generates 4, 6, or 8 second clips natively. The &quot;Extend Video&quot; feature (currently in preview) chains clips to reach approximately 1-2.5 minutes, though coherence can drift on longer sequences.</p>
<p>The &quot;Ingredients to Video&quot; feature accepts up to 3 reference images as input. You can provide characters to animate, backgrounds, and material textures. When you use reference images, the model sticks closer to your visual references and makes fewer random alterations. One limitation: reference image mode only works with the 8-second duration option.</p>
<p>As of January 2026, Veo 3.1 added vertical video (9:16) for reference-based generation and 4K upscaling on Vertex AI. Google followed with Veo 3.1 Lite on March 31, 2026 as its cheapest video model, retired Veo 2.0 and 3.0 on June 30, 2026, and has not announced a Veo 4 as of September 2026, per the <a href="https://ai.google.dev/gemini-api/docs/changelog">Gemini API changelog</a>. Its newer video work is going into Gemini Omni Flash below.</p>
<p><strong>Availability:</strong> Google Vertex AI API, Gemini API, and Google Flow. Requires Google Cloud account.</p>
<table>
<thead>
<tr>
<th>Spec</th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td>Native clip length</td>
<td>4, 6, or 8 seconds</td>
</tr>
<tr>
<td>Extended length</td>
<td>~1-2.5 minutes</td>
</tr>
<tr>
<td>Resolution</td>
<td>Up to 4K (with upscaling)</td>
</tr>
<tr>
<td>Reference images</td>
<td>Up to 3 (&quot;Ingredients to Video&quot;)</td>
</tr>
<tr>
<td>Audio</td>
<td>Synchronized dialogue and music</td>
</tr>
<tr>
<td>API</td>
<td>Vertex AI, Gemini API</td>
</tr>
</tbody>
</table>
<h3>Google Gemini Omni Flash</h3>
<p>Google announced the Gemini Omni family at I/O in May 2026 and shipped Gemini Omni Flash as its first model. It quickly took the top spot on the Artificial Analysis arena, ahead of Veo 3.1. The pitch is conversational video: you generate a 10-second clip from text, images, or video, then edit it through follow-up instructions that build on each other. Change the lighting, swap an outfit, adjust the camera, all without regenerating from scratch.</p>
<p>For reference support, Omni Flash accepts images and short video clips as style, motion, and effect references, with audio references planned. Character consistency holds across conversational edits, though Google's own docs note it can slip during scene changes and camera pans, so review character-heavy output before you ship it.</p>
<p><strong>Availability:</strong> The API (<code>gemini-omni-flash-preview</code>) opened in public preview on June 30, 2026 through Google AI Studio and the Gemini API at roughly $0.10 per second of output, and <code>gemini-omni-1.1-flash</code> reached general availability on August 27, 2026 with video extension, interpolation, and resolution controls, per the <a href="https://ai.google.dev/gemini-api/docs/changelog">Gemini API changelog</a>. Every clip carries a SynthID watermark. Consumer access runs through the Gemini app, Google Flow, and YouTube Shorts, and Runway's API also routes to it.</p>
<table>
<thead>
<tr>
<th>Spec</th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td>Native clip length</td>
<td>10 seconds (longer durations planned)</td>
</tr>
<tr>
<td>Resolution</td>
<td>720p</td>
</tr>
<tr>
<td>Reference inputs</td>
<td>Images + short video clips (audio planned)</td>
</tr>
<tr>
<td>Editing</td>
<td>Conversational, iterative</td>
</tr>
<tr>
<td>Audio</td>
<td>Native</td>
</tr>
<tr>
<td>API</td>
<td>Gemini API (GA as gemini-omni-1.1-flash), ~$0.10/sec</td>
</tr>
</tbody>
</table>
<h3>OpenAI Sora 2 / Sora 2 Pro</h3>
<blockquote>
<p><strong>Being discontinued (2026):</strong> OpenAI is winding Sora down. The consumer Sora app closed on April 26, 2026, and the Sora 2 API sunsets on September 24, 2026, with no announced successor, per OpenAI's <a href="https://developers.openai.com/api/docs/deprecations">deprecations page</a>. The capabilities below are still notable, but do not build a new pipeline on Sora. Use Kling, Grok Imagine, or an open model instead.</p>
</blockquote>
<p>Sora 2 Pro generates clips up to 20 seconds. The Characters API uses a different approach from Kling or Grok: instead of uploading static images, you create a <code>character_id</code> by pointing the API at a video clip (with a 1-3 second timestamp range). Sora analyzes the video frames to extract facial structure, body proportions, clothing style, and other identifying features. That <code>character_id</code> persists indefinitely and can be reused across unlimited future generations.</p>
<p>You can reference up to 2 uploaded characters per generation. As of March 2026, character references work for objects and animals too, not just people. Video extension uses the full initial clip as context for continuation.</p>
<p>The character system requires video input (not static images) to create characters. If you only have photos, you'd need to generate a short video first, then extract the character from that.</p>
<p><strong>Availability:</strong> OpenAI API with Batch API support for production workflows.</p>
<table>
<thead>
<tr>
<th>Spec</th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td>Native clip length</td>
<td>Up to 20 seconds</td>
</tr>
<tr>
<td>Resolution</td>
<td>Up to 1920x1080</td>
</tr>
<tr>
<td>Character references</td>
<td>Up to 2 per generation (persistent <code>character_id</code>)</td>
</tr>
<tr>
<td>Character input</td>
<td>Video clip (1-3s timestamp range), not static images</td>
</tr>
<tr>
<td>Audio</td>
<td>Synchronized</td>
</tr>
<tr>
<td>Extension</td>
<td>Yes (full clip as context)</td>
</tr>
<tr>
<td>API</td>
<td>OpenAI API + Batch API</td>
</tr>
</tbody>
</table>
<h3>MiniMax Hailuo 02</h3>
<p>Hailuo 02 ranked #2 globally on the Artificial Analysis benchmark at launch, beating Veo 3. It generates 10-second clips at native 1080p with some of the best physics simulation in the field. The model handles extreme motion like gymnastics and acrobatics without breaking apart.</p>
<p>It supports image-to-video generation with strong character consistency through facial recognition and body tracking. The Noise-aware Compute Redistribution architecture dynamically allocates compute based on scene complexity.</p>
<p>MiniMax has since moved past Hailuo 02 with the Hailuo 2.3 family (Standard, Pro, Fast, Fast Pro), which improves physical action, stylization, and character micro-expressions. It outputs 1080p at 6 seconds or 768p at 10 seconds and is available through the MiniMax platform and <a href="http://fal.ai">fal.ai</a>.</p>
<p><strong>Availability:</strong> Commercial API. Available through MiniMax platform, <a href="http://fal.ai">fal.ai</a>, and Replicate. $0.28 per video.</p>
<table>
<thead>
<tr>
<th>Spec</th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td>Native clip length</td>
<td>Up to 10 seconds</td>
</tr>
<tr>
<td>Resolution</td>
<td>1080p native</td>
</tr>
<tr>
<td>Reference images</td>
<td>Yes (I2V mode)</td>
</tr>
<tr>
<td>Audio</td>
<td>Not native</td>
</tr>
<tr>
<td>Physics</td>
<td>Best-in-class simulation</td>
</tr>
<tr>
<td>API</td>
<td>MiniMax, <a href="http://fal.ai">fal.ai</a>, Replicate</td>
</tr>
</tbody>
</table>
<h3>MiniMax H3 (Hailuo 3.0)</h3>
<p>MiniMax replaced the Hailuo 2.x line with MiniMax H3 on July 31, 2026, and it changes Hailuo's place in this guide. Where Hailuo 02 was a first-frame model, H3 is an omni-modal one: a single transformer reads text, images, video, and audio together and returns a 4 to 15 second clip at up to 2K with native stereo audio, per <a href="https://www.minimax.io/blog/minimax-h3">MiniMax's announcement</a>. Its reference mode (Ref2VA) accepts up to 9 reference images, 3 reference video clips, and 3 audio clips, capped at 12 files, which puts it in the same true-reference class as Kling and Seedance 2.0, and a first-and-last-frame mode (FL2VA) covers the classic keyframe workflow. On the Artificial Analysis text-to-video arena the H3 and H3 Max entries sit just behind Omni Flash and Wan 3.0 as of September 2026.</p>
<p>The bigger news for self-hosters is that MiniMax released the 33B base weights in August 2026 on <a href="https://huggingface.co/MiniMaxAI/MiniMax-H3">Hugging Face</a>, with both FL2VA and Ref2VA checkpoints. The licence is the MiniMax H3 Community License, and the model card asks users in the USA, EU, UK, and South Korea to submit an application form before use, so it's open with a regional asterisk rather than Apache-style open.</p>
<p><strong>Availability:</strong> MiniMax API and platform, <a href="http://fal.ai">fal.ai</a> and other hosts, plus downloadable weights.</p>
<table>
<thead>
<tr>
<th>Spec</th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td>Native clip length</td>
<td>4-15 seconds</td>
</tr>
<tr>
<td>Resolution</td>
<td>Up to 2K (768p default short side)</td>
</tr>
<tr>
<td>Reference images</td>
<td>Up to 9 images + 3 videos + 3 audio (12 total, Ref2VA)</td>
</tr>
<tr>
<td>Keyframes</td>
<td>First and/or last frame (FL2VA)</td>
</tr>
<tr>
<td>Audio</td>
<td>Native stereo, 32 kHz</td>
</tr>
<tr>
<td>Open weights</td>
<td>Yes, 33B, MiniMax H3 Community License (application for USA/EU/UK/KR)</td>
</tr>
<tr>
<td>API</td>
<td>MiniMax, <a href="http://fal.ai">fal.ai</a></td>
</tr>
</tbody>
</table>
<h3>Luma Ray3.2</h3>
<p>Luma's Ray2 has been superseded by the Ray3 family. Ray3 (September 2025) added Character Reference for identity lock and a Modify video-to-video mode, and Ray3.2 (June 9, 2026) added frame-level control with up to 16 keyframes per clip, a Reframe feature, and clips up to 20 seconds, plus the first public API for the Ray3 line. Output is native 1080p with 4K available via Hi-Fi upscale. Image-to-video accepts reference images as start or end keyframes.</p>
<p><strong>Availability:</strong> Luma API and web interface.</p>
<table>
<thead>
<tr>
<th>Spec</th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td>Native clip length</td>
<td>Up to 20 seconds (Ray3.2)</td>
</tr>
<tr>
<td>Reference type</td>
<td>Start/end keyframes + Character Reference (identity)</td>
</tr>
<tr>
<td>Resolution</td>
<td>1080p native, 4K via upscale</td>
</tr>
<tr>
<td>Reference images</td>
<td>Yes (keyframes + character ref)</td>
</tr>
<tr>
<td>API</td>
<td>Luma API</td>
</tr>
</tbody>
</table>
<h3>Pika 2.5</h3>
<p>Pika takes a keyframe-based approach with Pikaframes. Upload 2-5 keyframes (reference images at key moments) and the model generates smooth transitions between them. Total duration reaches 20-25 seconds.</p>
<p>Pikascenes accepts up to 10 reference images and combines them into a single video. The model uses image recognition to figure out each reference's role (character, background, prop) automatically.</p>
<p><strong>Availability:</strong> Pika web platform and API. Subscription plans from free to Pro.</p>
<table>
<thead>
<tr>
<th>Spec</th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td>Native clip length</td>
<td>5-10 seconds</td>
</tr>
<tr>
<td>Pikaframes length</td>
<td>20-25 seconds</td>
</tr>
<tr>
<td>Resolution</td>
<td>Up to 1080p</td>
</tr>
<tr>
<td>Reference images</td>
<td>Up to 10 (Pikascenes), 2-5 keyframes (Pikaframes)</td>
</tr>
<tr>
<td>API</td>
<td>Yes</td>
</tr>
</tbody>
</table>
<h3>Vidu Q3 (ShengShu)</h3>
<p>Vidu deserves a section it didn't have in earlier versions of this guide, because its Q3 line has become one of the strongest subject-reference systems available. ShengShu released Vidu Q3 earlier in 2026 with native audio and clips up to 16 seconds, and on April 13, 2026 added Q3 Reference-to-Video, per its <a href="https://www.prnewswire.com/news-releases/shengshu-launches-vidu-q3-reference-to-video-with-expanded-visual-and-audio-capabilities-302740489.html">launch announcement</a>. The reference mode combines subjects, environments, costumes, props, and visual styles in one request. Per the <a href="https://platform.vidu.com/docs/reference-to-video">Vidu API docs</a>, the <code>reference2video</code> endpoint takes up to 7 reference images, you tag them in the prompt as <code>@1</code>, <code>@2</code>, and so on (&quot;@1 and @2 are cooking together&quot;), durations run 3 to 16 seconds on <code>viduq3</code>, resolution goes to 1080p, and audio generation is a flag. It also does intelligent camera switching inside a single clip, which is unusual and useful for dialogue scenes. ShengShu says Q3 topped the first Reference-to-Video leaderboard from SuperCLUE, and Vidu was already the model that pushed Veo on VBench 2.0 back when we first wrote this guide.</p>
<p><strong>Availability:</strong> Vidu web app and API (<code>viduq3</code>, <code>viduq3-turbo</code>), plus Alibaba Cloud Model Studio and third-party hosts.</p>
<table>
<thead>
<tr>
<th>Spec</th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td>Native clip length</td>
<td>3-16 seconds</td>
</tr>
<tr>
<td>Resolution</td>
<td>Up to 1080p</td>
</tr>
<tr>
<td>Reference images</td>
<td>Up to 7 (<code>@1</code>, <code>@2</code> tags)</td>
</tr>
<tr>
<td>Reference types</td>
<td>Subjects, environments, props, costumes, styles</td>
</tr>
<tr>
<td>Audio</td>
<td>Native (sound effects, dialogue, music)</td>
</tr>
<tr>
<td>API</td>
<td>Vidu API, Alibaba Cloud Model Studio</td>
</tr>
</tbody>
</table>
<h2>Tier 3: Open-Source Models for Self-Hosted Workflows</h2>
<p>These models generate shorter clips but they're fully open. You can run them on your own hardware, fine-tune them, and build custom extension pipelines without API dependencies.</p>
<h3>Wan 2.1 (Alibaba)</h3>
<p>Wan 2.1 is the foundation several other models build on (including Helios). The Wan-VAE architecture encodes and decodes 1080p video of any length while preserving temporal information. The model comes in I2V variants at 480p and 720p, plus a First-Last-Frame-to-Video model that generates video between two reference images.</p>
<p>Wan-Edit allows style and content transfer using reference images while maintaining specific structures or character poses. Wan 2.2 (July 2025) is the newer open release, a Mixture-of-Experts model with a 5B variant that runs on a single RTX 4090, still under Apache 2.0. One important caveat for self-hosters: Wan went closed at 2.5. The newer Wan 2.5, 2.6, 2.7, and now Wan 3.0 added synced audio and higher resolution but are API-only with no public weights, so 2.2 is still the open ceiling. Wan 3.0 arrived in August 2026 on Alibaba Cloud Model Studio and, per its <a href="https://www.alibabacloud.com/help/en/model-studio/wan3-0-video-prime">model page</a>, generates up to 30 seconds in one take at 480p, 720p, or 1080p from text, image, video, and audio references, and it shares the top of the Artificial Analysis text-to-video arena with Gemini Omni Flash as of September 2026. It's a hosted product, not a download. Ignore the SEO pages claiming Wan 2.7 or 3.0 weights are downloadable. The official GitHub org and <a href="https://huggingface.co/Wan-AI">Hugging Face account</a> top out at 2.2 (the newest uploads are Wan2.2-Animate refreshes).</p>
<table>
<thead>
<tr>
<th>Spec</th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td>Parameters</td>
<td>1.3B, 5B, 14B (2.1); 5B + 14B MoE (2.2)</td>
</tr>
<tr>
<td>I2V modes</td>
<td>I2V-480P, I2V-720P, FLF2V-720P</td>
</tr>
<tr>
<td>Open ceiling</td>
<td>Wan 2.2 (2.5 through 3.0 are API-only)</td>
</tr>
<tr>
<td>License</td>
<td>Apache 2.0</td>
</tr>
<tr>
<td>Hardware</td>
<td>8GB+ VRAM (smaller variants)</td>
</tr>
<tr>
<td>Platforms</td>
<td>Diffusers, ComfyUI</td>
</tr>
</tbody>
</table>
<h3>HunyuanVideo (Tencent)</h3>
<p>Tencent's 13B parameter model was the open-source video generation leader through most of 2025. HunyuanVideo-I2V uses a token replace technique with a pre-trained MLLM to incorporate reference image information. HunyuanVideo-1.5, released November 2025, improved efficiency. HunyuanCustom enables multimodal-driven customized video generation.</p>
<table>
<thead>
<tr>
<th>Spec</th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td>Parameters</td>
<td>13B</td>
</tr>
<tr>
<td>I2V</td>
<td>Yes (token replace technique)</td>
</tr>
<tr>
<td>License</td>
<td>Open source</td>
</tr>
<tr>
<td>Hardware</td>
<td>60GB+ VRAM (720p)</td>
</tr>
<tr>
<td>Variants</td>
<td>Base, I2V, 1.5, Avatar, Custom</td>
</tr>
</tbody>
</table>
<h3>LTX-2 (Lightricks)</h3>
<p>Lightricks open-sourced LTX-2 in January 2026 with full weights, inference code, and training code. It's a DiT-based model that generates video and synchronized audio together in one pass, at native 4K and up to 50fps, with clips up to 20 seconds. Image-to-video and multi-keyframe conditioning are built in, so you can pin reference stills at points along the clip the way you would with Pikaframes.</p>
<p>The license is the catch, or isn't, depending on your size. LTX-2 is free for research and for commercial use under $10M in annual revenue. Above that you need a commercial license, so it's open weights rather than open source in the strict sense. LTX-2.3 was a 22B parameter update with better audio and prompt adherence, and <a href="https://huggingface.co/Lightricks/LTX-2.5">LTX-2.5</a>, the current checkpoint as of September 2026, keeps the 22B size and adds native multishot generation that holds one character and look across several connected shots, a diffusion video decoder in place of plain VAE reconstruction, and a Gemma 4 12B text encoder for long prompts, still under the LTX-2.x Community License with the same $10M revenue line. Weights are on Hugging Face with distilled variants, LoRA adapters, and ComfyUI and Diffusers integrations, and hosted APIs run on the LTX platform, <a href="http://fal.ai">fal.ai</a>, and Replicate.</p>
<table>
<thead>
<tr>
<th>Spec</th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td>Parameters</td>
<td>22B (LTX-2.3 and LTX-2.5)</td>
</tr>
<tr>
<td>Max clip</td>
<td>~20 seconds</td>
</tr>
<tr>
<td>Resolution</td>
<td>Native 4K at up to 50fps</td>
</tr>
<tr>
<td>Audio</td>
<td>Native synchronized</td>
</tr>
<tr>
<td>I2V</td>
<td>Yes (image + multi-keyframe conditioning)</td>
</tr>
<tr>
<td>License</td>
<td>LTX-2 Community License (free under $10M ARR)</td>
</tr>
<tr>
<td>Hardware</td>
<td>Distilled and FP8 variants for consumer GPUs</td>
</tr>
</tbody>
</table>
<h3>CogVideoX (Tsinghua/Zhipu AI)</h3>
<p>CogVideoX uses a 3D causal VAE that reduces sequence length and prevents flickering. The adaptive LayerNorm transformer improves text-video alignment. Available in 2B (Apache 2.0) and 5B (research license) variants with native Diffusers integration.</p>
<p>Clips are 6-10 seconds at 720x480. Short, but the quality-to-compute ratio is good and it runs on a 12GB GPU.</p>
<table>
<thead>
<tr>
<th>Spec</th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td>Parameters</td>
<td>2B, 5B</td>
</tr>
<tr>
<td>I2V</td>
<td>Yes (CogVideoXImageToVideoPipeline)</td>
</tr>
<tr>
<td>Resolution</td>
<td>720x480 at 8fps</td>
</tr>
<tr>
<td>License</td>
<td>Apache 2.0 (2B), Research (5B)</td>
</tr>
<tr>
<td>Hardware</td>
<td>12GB VRAM</td>
</tr>
</tbody>
</table>
<h2>First-Frame vs. True Reference: The Key Distinction</h2>
<p>Not all &quot;reference image&quot; support is the same. Understanding the difference is critical for choosing the right model.</p>
<p><strong>First-frame models</strong> (LongCat, Helios, Hailuo, Luma Ray2, HunyuanVideo) treat your image as the literal opening frame. The model animates forward from that exact visual. You can't upload a character headshot and describe them in a different scene. The image is the scene.</p>
<p><strong>True reference models</strong> (Kling, Grok Imagine, Seedance, Vidu Q3, MiniMax H3, SkyReels V3) extract identity from your image and place that character/object into any scene you describe. Upload a photo of a person, then prompt &quot;that person walks through a forest at sunset.&quot; The character appears in a completely new environment while maintaining their identity. This is what you need for multi-scene narrative content like an adventure movie.</p>
<p><strong>Character ID models</strong> (Sora 2 Pro) extract identity from video clips rather than static images. You create a persistent character ID once and reuse it across unlimited future generations.</p>
<p><strong>Style/ingredient models</strong> (Veo 3.1) use reference images to influence visual style, textures, and overall look rather than extracting specific character identities. Good for maintaining visual consistency across a project, less precise for individual character control.</p>
<h2>The Real Workflow for 10-Minute Videos</h2>
<p>Here's the honest take on where things stand in mid-2026. No single model reliably generates 10 minutes of consistent, high-quality video in one shot. LongCat Video gets closest with claims of 15 minutes, but quality and coherence vary significantly at those lengths. Helios and SkyReels V2 generate &quot;minute-scale&quot; and &quot;infinite-length&quot; video respectively, but the outputs need careful prompting and often multiple attempts.</p>
<p>The workflow that actually works for most creators building 5-15 minute videos combines multiple approaches:</p>
<p><strong>For talking head / avatar content:</strong> LongCat Video's 2026 audio-driven mode or SkyReels V3's avatar generation can produce 5+ minutes of a consistent talking character. This is the closest thing to &quot;press a button, get long video.&quot;</p>
<p><strong>For narrative content with multiple scenes (adventure movie style):</strong> Use Kling 3.0, Grok Imagine, or Seedance 2.0 with true character reference images. Generate individual shots of 10-15 seconds each. Use the same @Element or <code>&lt;IMAGE&gt;</code> references across every generation to maintain character identity. Chain shots together using multi-shot mode (Kling supports 6 shots per call) or the extend API. Kling is the most battle-tested for this workflow. Grok Imagine's explicit separation between &quot;reference mode&quot; and &quot;first-frame mode&quot; makes it a strong alternative. Seedance 2.5 now accepts the most reference inputs (50 files) and generates 30-second takes, which cuts the number of stitches roughly in half, and Vidu Q3 (7 references with <code>@</code> tags) and MiniMax H3 (12 files) are credible newer options.</p>
<p><strong>For character consistency across many clips:</strong> Sora 2 Pro's persistent <code>character_id</code> system is the cleanest approach for very long projects. Extract the character once from a short video, then generate dozens of clips referencing that ID. The character identity doesn't degrade over time because it's stored as a persistent embedding, not re-interpreted from an image each time.</p>
<p><strong>For style-transferred content:</strong> Lucy Restyle on <a href="http://fal.ai">fal.ai</a> processes existing video up to 30 minutes, applying AI style transformations while preserving motion. If you have source footage, this sidesteps the generation length problem entirely. $0.01 per second of source video.</p>
<p><strong>For open-source pipelines:</strong> Build on Wan 2.2 or Helios with a video continuation loop, or on MiniMax H3's Ref2VA checkpoint if its community licence works for your region, since it's the first open model with a 9-image reference mode. Generate a clip, use the last frame as the start frame for the next clip, repeat. ComfyUI workflows automate this. Consistency degrades over many iterations but it's free and controllable.</p>
<p>The core challenge remains: even with true reference image support, character drift compounds across dozens of clips. Facial features, hair, clothing, and skin tone gradually shift. The workarounds (high-quality reference photos, consistent prompting, shot batching) are necessary. But models like Kling and Grok Imagine that separate character identity from scene composition make this dramatically easier than the first-frame-only models.</p>
<h2>The 3D Scaffold Approach: Render Low, Transform High</h2>
<p>There's a workflow gaining traction that sidesteps most long-form generation problems entirely. Instead of asking an AI model to generate 10 minutes of video from scratch, you render a low-fidelity 3D cutscene with correct camera work, character blocking, and timing, then run it through a video-to-video model with reference images and an enhancement prompt. The 3D engine handles structure. The AI handles aesthetics.</p>
<p>This works because V2V transformation is a narrower problem than full generation. The model doesn't need to invent camera motion, character placement, or scene composition. It just needs to make existing footage look photorealistic while following your visual references. That's far more tractable, and it scales to any length your 3D engine can render.</p>
<h3>Why This Works</h3>
<p>Your 3D engine gives you everything AI video models still struggle with: precise camera control, exact character placement across the frame, correct physics interactions, and consistent timing across minutes of footage. Dolly zooms, tracking shots, characters entering and exiting frame on cue, all trivial in a 3D engine, all unreliable in text-prompted generation. The V2V model's only job is transforming materials, lighting, and textures into photorealistic output while preserving the geometry and motion you already defined.</p>
<p>Character consistency gets easier too. Instead of fighting identity drift across 50 separate AI generations, you're showing the model the same 3D character in every frame. The reference images tell the model what that character should look like in the final output. That's a simpler problem than generating a consistent character from scratch each time.</p>
<p>And length is no longer a constraint. Lucy Restyle handles 30 minutes in a single call. Wan 2.1 in ComfyUI can process any length in chunks. You're not fighting the &quot;how do I generate 10 minutes&quot; problem at all because the footage already exists.</p>
<h3>RealMaster (Meta / Tel Aviv University)</h3>
<p>RealMaster is a research system built specifically for this workflow. Published March 2026 by Meta Reality Labs and Tel Aviv University, it transforms rendered 3D video into photorealistic video while maintaining full geometric alignment with the source.</p>
<p>The method extracts edge maps from the 3D render to preserve structure and motion, then applies a video diffusion model (built on the VACE/Wan architecture) to transform everything else into photorealistic output. A lightweight IC-LoRA adapter distills the pipeline into a single inference pass that doesn't need anchor frames and handles objects appearing mid-sequence.</p>
<p>Tested on GTA-V and CARLA simulator sequences, RealMaster significantly outperforms general-purpose video editing baselines. It can also layer weather effects through the text prompt (&quot;Make it rain&quot;, &quot;Make it snow&quot;) on top of the realism transformation. The model generalizes across simulators without retraining. Weights trained on GTA-V data work on CARLA output with no additional tuning.</p>
<p><strong>Availability:</strong> Research only. No public weights or API yet.</p>
<table>
<thead>
<tr>
<th>Spec</th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td>Input</td>
<td>Rendered 3D video (any engine)</td>
</tr>
<tr>
<td>Output</td>
<td>Photorealistic video preserving geometry and motion</td>
</tr>
<tr>
<td>Architecture</td>
<td>IC-LoRA on VACE/Wan video diffusion backbone</td>
</tr>
<tr>
<td>Conditioning</td>
<td>Edge maps from source render</td>
</tr>
<tr>
<td>Tested on</td>
<td>GTA-V, CARLA simulator</td>
</tr>
<tr>
<td>License</td>
<td>Not released (research paper only)</td>
</tr>
</tbody>
</table>
<h3>Production V2V Tools Available Today</h3>
<p><strong>Kling 3.0 V2V with Element References</strong> is the most complete production option. The Edit Video and Reference V2V endpoints on <a href="http://fal.ai">fal.ai</a> accept 3-10 second source video clips alongside element references (<code>@Element1</code>, <code>@Element2</code> with frontal and multi-angle photos) and an enhancement prompt. The model analyzes motion trajectories and camera patterns in the source, then regenerates the footage with your specified character appearances and visual style while preserving the original staging and camera work. Up to 7 reference inputs. Output at 1080p. Process your cutscene in 10-15 second chunks with the same element references across all chunks to maintain character consistency.</p>
<p><strong>Lucy Restyle 2</strong> handles up to 30 minutes of source video in a single API call at $0.01 per second of input. It accepts a text prompt and an optional reference image for style guidance. No per-character element references like Kling, but for overall cinematic style transfer of a full-length 3D render it's the simplest and cheapest path. Feed it your complete render and a prompt describing the target look. Output at 720p with temporal consistency across thousands of frames.</p>
<p><strong>Wan 2.1 VACE in ComfyUI</strong> is the open-source route. The 14B VACE model does reference-driven V2V: input a source video plus a style reference image, output a restyled version that preserves structure and motion. Edge map conditioning improves structural fidelity. You can build a processing loop that handles any length in chunks with consistent style references. Free, runs locally on your own hardware.</p>
<p><strong>Grok Imagine V2V</strong> accepts source video plus 1-7 reference images in reference mode. $0.05 per second at 720p. The explicit separation between reference mode and first-frame mode means your references guide character appearance without overriding the source video's structure.</p>
<h3>What Your 3D Render Needs</h3>
<p>The render quality floor matters. A bare wireframe won't give the V2V model enough to work with. But you don't need production-quality materials or lighting either.</p>
<p><strong>Correct proportions and geometry.</strong> Character models need roughly correct body proportions and facial structure for the reference images to map properly. Basic humanoid geometry with correct proportions is enough. A stick figure won't produce a recognizable character.</p>
<p><strong>Basic lighting direction.</strong> A single directional light establishing the scene's overall illumination helps the model understand the intended mood. The AI will enhance and add detail, but it needs to know whether the scene is bright daylight or dark interior.</p>
<p><strong>Smooth camera motion.</strong> Stable, deliberate camera moves translate well. Erratic or extremely fast motion can confuse V2V models. Keep your virtual camera behaving like a real camera would.</p>
<p><strong>Flat shading over wireframe.</strong> Simple flat-shaded or low-poly geometry gives better results than wireframes or untextured models. Even basic solid colors on surfaces help the model understand material boundaries.</p>
<h3>Cost and Scale</h3>
<p>Processing a 10-minute cutscene through different tools:</p>
<table>
<thead>
<tr>
<th>Tool</th>
<th>Max Input Length</th>
<th>Cost for 10 min</th>
<th>Resolution</th>
<th>Reference Images</th>
</tr>
</thead>
<tbody>
<tr>
<td>Kling O3 V2V</td>
<td>10s clips</td>
<td>~$50-67</td>
<td>1080p</td>
<td>Up to 7 (elements + style)</td>
</tr>
<tr>
<td>Lucy Restyle 2</td>
<td>30 minutes</td>
<td>$6</td>
<td>720p</td>
<td>1 (style only)</td>
</tr>
<tr>
<td>Grok Imagine V2V</td>
<td>10s clips</td>
<td>~$30</td>
<td>720p</td>
<td>1-7</td>
</tr>
<tr>
<td>Wan 2.1 VACE</td>
<td>Any (chunked)</td>
<td>Free (local GPU)</td>
<td>720p</td>
<td>1 per chunk</td>
</tr>
</tbody>
</table>
<p>These figures are our estimates from vendor list prices when we first ran the comparison in mid-2026 and vendors reprice often, so treat them as relative ranking rather than a quote. Lucy Restyle is the cheapest for full-length processing. Kling is the most precise for character-specific enhancement with element references. Wan 2.1 is free if you have the hardware (needs about 60GB VRAM for the 14B model at 720p, or 8GB for the 1.3B variant at lower quality).</p>
<h2>Comparison Table</h2>
<table>
<thead>
<tr>
<th>Model</th>
<th>Max Native Duration</th>
<th>Extended Duration</th>
<th>Reference Type</th>
<th>Max Refs</th>
<th>Resolution</th>
<th>API Available</th>
<th>Open Source</th>
</tr>
</thead>
<tbody>
<tr>
<td>LongCat Video</td>
<td>~15 min</td>
<td>N/A</td>
<td>First-frame only</td>
<td>1</td>
<td>720p/30fps</td>
<td>Yes (<a href="http://fal.ai">fal.ai</a>)</td>
<td>Yes (MIT)</td>
</tr>
<tr>
<td>Seaweed APT2</td>
<td>~5 min</td>
<td>N/A</td>
<td>I2V + pose</td>
<td>1</td>
<td>720p</td>
<td>No</td>
<td>No</td>
</tr>
<tr>
<td>Helios</td>
<td>Minute-scale</td>
<td>N/A</td>
<td>First-frame (I2V)</td>
<td>1</td>
<td>720p</td>
<td>HF Spaces</td>
<td>Yes (Apache 2.0)</td>
</tr>
<tr>
<td>SkyReels V3</td>
<td>Unlimited</td>
<td>N/A</td>
<td>True reference</td>
<td>1-4</td>
<td>720p</td>
<td>No</td>
<td>Yes</td>
</tr>
<tr>
<td><strong>Kling 3.0</strong></td>
<td>15s</td>
<td>~3 min</td>
<td><strong>Elements + style refs</strong></td>
<td><strong>7</strong></td>
<td>1080p</td>
<td>Yes</td>
<td>No</td>
</tr>
<tr>
<td><strong>Grok Imagine</strong></td>
<td>15s</td>
<td>Chain-able</td>
<td><strong>True reference</strong></td>
<td><strong>7</strong></td>
<td>720p</td>
<td>Yes</td>
<td>No</td>
</tr>
<tr>
<td><strong>Seedance 2.0</strong></td>
<td>15s</td>
<td>N/A</td>
<td><strong>Multi-modal refs</strong></td>
<td><strong>12</strong></td>
<td>2K</td>
<td>Yes</td>
<td>No</td>
</tr>
<tr>
<td><strong>Seedance 2.5</strong></td>
<td>30s</td>
<td>Multi-round extend</td>
<td><strong>Multi-modal refs</strong></td>
<td><strong>50</strong></td>
<td>2K</td>
<td>Yes (BytePlus, Runway)</td>
<td>No</td>
</tr>
<tr>
<td><strong>Vidu Q3</strong></td>
<td>16s</td>
<td>N/A</td>
<td><strong>True reference</strong></td>
<td><strong>7</strong></td>
<td>1080p</td>
<td>Yes</td>
<td>No</td>
</tr>
<tr>
<td><strong>MiniMax H3</strong></td>
<td>15s</td>
<td>N/A</td>
<td><strong>Multi-modal refs</strong></td>
<td><strong>12</strong></td>
<td>2K</td>
<td>Yes</td>
<td>Yes (community licence)</td>
</tr>
<tr>
<td>Runway Gen-4.5</td>
<td>10s</td>
<td>~1 min</td>
<td>I2V (0-1)</td>
<td>1</td>
<td>1080p</td>
<td>Yes</td>
<td>No</td>
</tr>
<tr>
<td>Veo 3.1</td>
<td>8s</td>
<td>~2.5 min</td>
<td>Ingredients (style)</td>
<td>3</td>
<td>4K</td>
<td>Yes</td>
<td>No</td>
</tr>
<tr>
<td>Gemini Omni Flash</td>
<td>10s</td>
<td>Conversational edits + extension (1.1)</td>
<td>Multimodal refs</td>
<td>Images + video</td>
<td>720p</td>
<td>Yes (GA)</td>
<td>No</td>
</tr>
<tr>
<td>Sora 2 Pro ⚠️ discontinuing</td>
<td>20s</td>
<td>Chain-able</td>
<td>Character ID (video)</td>
<td>2</td>
<td>1080p</td>
<td>API sunsets Sep 2026</td>
<td>No</td>
</tr>
<tr>
<td>Hailuo 02</td>
<td>10s</td>
<td>N/A</td>
<td>I2V (first-frame)</td>
<td>1</td>
<td>1080p</td>
<td>Yes</td>
<td>No</td>
</tr>
<tr>
<td>Luma Ray3.2</td>
<td>20s</td>
<td>N/A</td>
<td>Keyframes + character ref</td>
<td>16 keyframes</td>
<td>1080p (4K upscale)</td>
<td>Yes</td>
<td>No</td>
</tr>
<tr>
<td>Pika 2.5</td>
<td>10s</td>
<td>25s</td>
<td>Pikascenes</td>
<td>10</td>
<td>1080p</td>
<td>Yes</td>
<td>No</td>
</tr>
<tr>
<td>Wan 2.1 / 2.2</td>
<td>Short clips</td>
<td>Via continuation</td>
<td>I2V / FLF2V</td>
<td>1-2</td>
<td>720p</td>
<td>Via <a href="http://fal.ai">fal.ai</a></td>
<td>Yes (Apache 2.0)</td>
</tr>
<tr>
<td>Wan 3.0</td>
<td>30s</td>
<td>N/A</td>
<td>Multi-modal refs</td>
<td>Images, video, audio</td>
<td>1080p</td>
<td>Yes (Alibaba Cloud)</td>
<td>No</td>
</tr>
<tr>
<td>HunyuanVideo</td>
<td>Short clips</td>
<td>Via continuation</td>
<td>I2V (first-frame)</td>
<td>1</td>
<td>720p</td>
<td>Via <a href="http://fal.ai">fal.ai</a></td>
<td>Yes</td>
</tr>
<tr>
<td>LTX-2.3</td>
<td>20s</td>
<td>Via continuation</td>
<td>I2V + keyframes</td>
<td>Multi-keyframe</td>
<td>4K</td>
<td>Yes (LTX, <a href="http://fal.ai">fal.ai</a>)</td>
<td>Weights (ARR-capped)</td>
</tr>
<tr>
<td>CogVideoX</td>
<td>6-10s</td>
<td>Via continuation</td>
<td>I2V (first-frame)</td>
<td>1</td>
<td>720x480</td>
<td>Via <a href="http://fal.ai">fal.ai</a></td>
<td>Yes</td>
</tr>
</tbody>
</table>
<h2>What's Coming</h2>
<p>The trajectory through 2026 is clear. LongCat Video proved that minute-scale generation with consistency is possible in an open model. Helios showed it can happen in real-time. Seaweed APT2 demonstrated interactive long-form generation. And the true-reference models (Kling, Grok, Seedance) proved that character identity can persist across arbitrary scenes.</p>
<p>The next step is combining these capabilities: native long-form generation with true character reference support. Right now you pick one or the other. When a model can generate 5 minutes of video while maintaining characters from reference images across dozens of scene changes, the chained-clips workflow becomes obsolete. Seedance 2.5 (native 30-second clips, up to 50 reference files, shipped July 31, 2026) and Wan 3.0 (30-second single takes from multimodal references, August 2026) are the first real steps in that direction.</p>
<p>As of early September 2026, the <a href="https://artificialanalysis.ai/video/leaderboard/text-to-video">Artificial Analysis text-to-video arena</a> (with audio) has Google's Gemini Omni Flash and Alibaba's API-only Wan 3.0 tied at the top (~1,239 Elo), with MiniMax H3 Max and H3 a few points behind, then Seedance 2.0, Wan 2.7, the HappyHorse models, <a href="http://Sand.ai">Sand.ai</a>'s MAGI-2 preview, and Kling 3.0 Pro rounding out the top ten. The leaderboard reshuffles frequently, so treat any single ranking as a snapshot rather than a fixed order.</p>
<p>The 3D scaffold approach offers a parallel trajectory. As V2V models improve their structural preservation and photorealism, enhancing low-fidelity 3D renders becomes increasingly viable for full production. RealMaster from Meta already achieves research-quality sim-to-real transformation on game engine output. When this capability hits production APIs with reference image support, anyone with basic 3D skills will be able to produce photorealistic long-form video with complete control over camera, staging, and character placement at any duration.</p>
<p>For now, the practical answer depends on your use case:</p>
<p><strong>Best for multi-character reference:</strong> Kling 3.0 (up to 7 refs with separate element + style system), Seedance 2.5 (up to 50 multimodal inputs in a 30-second take), or Vidu Q3 (7 tagged references with in-clip camera switching).</p>
<p><strong>Best API for reference-to-video:</strong> Grok Imagine (clean API, explicit reference mode, $0.05/sec for the original model), Vidu Q3 (<code>@</code> tags, 7 refs), or Kling via <a href="http://fal.ai">fal.ai</a>.</p>
<p><strong>Best for persistent characters across many clips:</strong> Kling 3.0's element references or SkyReels V3's reference-and-extend. (Sora 2 Pro's character-ID system was the cleanest approach, but it's being discontinued in 2026, so don't start new work on it.)</p>
<p><strong>Best open source:</strong> SkyReels V3 (1-4 true reference images, unlimited length), MiniMax H3 (9 reference images plus video and audio, community licence with regional application), or Helios (real-time, Apache 2.0).</p>
<p><strong>Best for raw duration:</strong> LongCat Video (~15 min, but first-frame only).</p>
<p><strong>Best for 3D render enhancement:</strong> Kling 3.0 V2V (per-character element refs, 1080p) or Lucy Restyle 2 (30 min input, $0.01/sec).</p>
<hr>
<h2>Common Questions</h2>
<h3>What is the best AI video model for long videos?</h3>
<p>For raw duration, LongCat Video generates around 15 minutes natively, though it's first-frame only. For long video with consistent characters, the practical answer in 2026 is a reference-and-extend workflow: generate clips with a model that has strong reference support (Kling 3.0, Runway Gen-4.5, or open-source SkyReels V3), then chain them. No single model both runs long and holds character identity perfectly, so most production work combines them.</p>
<h3>Which AI video models support reference images?</h3>
<p>Kling 3.0 Omni, Runway Gen-4.5, Seedance 2.0 and 2.5, Vidu Q3, MiniMax H3, Google Veo 3.1, and Gemini Omni Flash all support reference images among the commercial options. On the open-source side, SkyReels V2/V3, Wan 2.1 and 2.2, LTX-2.5, and the open MiniMax H3 weights accept reference inputs you can run yourself. Support quality varies a lot, which is why the guide above splits them into tiers.</p>
<h3>Can AI generate a consistent character across a long video?</h3>
<p>Yes, but not in one shot. The reliable approach is to lock a character with one or more reference images, generate short clips, and extend or stitch them while feeding the same references back in. True reference support (the model keeps identity across new generations) matters far more here than first-frame conditioning, which only seeds the opening frame.</p>
<h3>What is the difference between first-frame and true reference image support?</h3>
<p>First-frame conditioning uses your image as the literal opening frame of the clip, then drifts as the video progresses. True reference support treats the image as an identity anchor the model honors throughout the generation, so a character or style stays consistent across the whole clip and across separate clips. The section above breaks down which models do which.</p>
<h3>How does Kling AI image to video work with multiple reference images?</h3>
<p>Kling's multi-image reference is a separate mode from plain image-to-video. Instead of animating one picture as the first frame, you upload up to 7 images and elements (4 if you also attach a reference video), tag them in the prompt as <code>@Image1</code> or <code>@Element1</code>, and describe the shot. Elements are locked characters or objects built from up to 4 angle photos or a short video clip, optionally with a bound voice, and they persist across Kling's multi-shot storyboard. The full rules are in the Kling section above, straight from Kuaishou's own guide.</p>
<h3>What about Wan 2.2? Is Wan 2.5 or Wan 3.0 open source?</h3>
<p>Wan 2.2 (July 2025) is the newest Wan you can download, an Apache 2.0 Mixture-of-Experts release with a 5B variant that runs on one RTX 4090 and 14B text-to-video and image-to-video models. Wan 2.5, 2.6, 2.7, and Wan 3.0 (August 2026, 30-second single takes at up to 1080p) are API-only through Alibaba Cloud with no public weights, whatever the affiliate blogs say. If you want the reference-image workflow on open weights, use Wan 2.2's image-to-video and first-last-frame models, or look at SkyReels V3 and MiniMax H3.</p>
<h3>What is the difference between image to video and reference to video?</h3>
<p>Image to video animates the picture you give it, so your image is the opening frame and the model continues from there. Reference to video uses your images as identity and style anchors and generates a new shot from your prompt, so a character photographed in a studio can appear walking through a forest. Image to video is right for animating a finished still. Reference to video is right for multi-scene stories with a consistent character. Kling, Vidu Q3, Seedance, Grok Imagine, and MiniMax H3 offer both modes, and Vidu and Grok label them explicitly in their APIs.</p>
<h3>Which AI video models keep the same subject across clips (subject reference)?</h3>
<p>For subject or character reference across many clips, the strongest options as of September 2026 are Kling 3.0 Omni (element library with multi-angle photos and voice), Seedance 2.5 (up to 50 references and 30-second takes), Vidu Q3 (7 tagged subjects), and MiniMax H3 (9 reference images plus video and audio). Luma Ray3 adds a Character Reference feature and Sora 2 Pro's character IDs were the cleanest system, but Sora's API shuts down on September 24, 2026. On open weights, SkyReels V3 and MiniMax H3 are the ones with true subject reference.</p>
<hr>
<h2>Related</h2>
<ul>
<li><a href="/guides/frontier-gen-ai-models">Frontier Open-Source Gen AI Models</a>: practical guide to open-source generative AI for video, image, 3D, audio, and more</li>
<li><a href="/guides/ai-asset-generators-games">AI Asset Generators for Games</a>: art, models, and audio from a prompt</li>
<li><a href="/guides/ai-music-generators-games">Best AI Music Generators for Games</a>: scoring your game with generated music</li>
<li><a href="/tools/video">Video Generator</a>: our video generation tool powered by Kling 3.0 Pro</li>
</ul>
<p><BuildCta
  title="Make the scene playable instead of rendered"
  desc="Skip the render queue, drive through it live."
  prompt="Make a neon city I can drive through at night" /></p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Landscape Generation with Dynamic LOD and Streaming for Browser Open Worlds]]></title>
            <link>https://app.cinevva.com/guides/landscape-generation-browser</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/landscape-generation-browser</guid>
            <pubDate>Sun, 22 Feb 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Beyond heightmaps and noise functions. Physically correct terrain generation, volumetric representations, diffusion-based synthesis, and GPU-driven rendering pipelines for browser-based open worlds.]]></description>
            <content:encoded><![CDATA[<style>
.video-embed {
  position: relative;
  width: 100%;
  max-width: 720px;
  margin: 1.5rem 0;
}
.video-embed iframe {
  width: 100%;
  aspect-ratio: 16/9;
  border-radius: 8px;
}
.game-caption {
  font-size: 0.9rem;
  color: var(--vp-c-text-2);
  margin-top: 0.5rem;
  font-style: italic;
}
.img-embed {
  width: 100%;
  max-width: 720px;
  margin: 1.5rem 0;
}
.img-embed img {
  width: 100%;
  border-radius: 8px;
  display: block;
}
</style>
<h1>Landscape Generation with Dynamic LOD and Streaming for Browser Open Worlds</h1>
<p>Heightmaps with Perlin noise are the default starting point for procedural terrain. Layer some octaves of fBm, apply a color gradient, and you have something that looks terrain-ish. Every tutorial ends here. But real landscapes don't look like stacked noise. They have river valleys carved by water, cliff faces shaped by stress fractures, caves and arches formed by erosion over millions of years. They have correlated textures (grass on flat ground, rock on steep slopes, snow above the treeline) that emerge from the same physical processes that shaped the geometry.</p>
<p>This guide covers what comes after noise. Physically grounded generation methods, volumetric representations that handle caves and overhangs, diffusion-based neural terrain synthesis, and the GPU-driven LOD and streaming pipelines needed to render it all in a browser tab at 60fps.</p>
<p>Everything here targets our specific constraint: a multiplayer open world running in WebGL 2 / WebGPU, streamed over the network, editable by creators.</p>
<h2>Why Heightmaps Aren't Enough</h2>
<p>A heightmap stores one height value per grid point. It's a 2D function: given (x, z), return y. This representation is compact, GPU-friendly, and fast to render. But it has fundamental limitations that matter for a creator world.</p>
<p><strong>No caves or overhangs.</strong> A heightmap can't represent terrain where one point has two different heights. Caves, arches, cliff overhangs, tunnels, and floating islands are all impossible. Minecraft, No Man's Sky, and Deep Rock Galactic all need volumetric terrain for this reason.</p>
<p><strong>No vertical features.</strong> A vertical cliff face in a heightmap is a near-infinite slope, which creates extreme texture stretching and collision artifacts. Real cliffs have horizontal features (ledges, crevices) that a heightmap can't represent.</p>
<p><strong>Noise looks like noise.</strong> Even with 8 octaves of fBm and domain warping, the terrain has a synthetic quality. It lacks the directional structure of real geology: ridge lines, drainage networks, sediment deposits, tectonic folds. These patterns emerge from physical processes, not from noise functions.</p>
<p><strong>Creator edits are limited.</strong> If creators can only modify heights, they can't dig tunnels, create caves, or build underground spaces. For a world that creators can truly shape, the terrain representation needs to support subtraction as well as addition.</p>
<p>The solution isn't to abandon heightmaps entirely. They remain the best representation for the 90% of terrain that is a simple surface. The solution is a hybrid approach: heightmap base terrain with volumetric overlays where complex geometry is needed, physically correct generation for realistic landforms, and neural synthesis for the diversity that noise can't achieve.</p>
<h2>The Quick Answer: What We'd Actually Build</h2>
<p>Before the deep dive, here's the decision framework. The rest of the article explains each piece.</p>
<h3>Terrain representation</h3>
<p>Use a <strong>hybrid heightmap + SDF</strong> system. The heightmap covers the entire world (cheap, compact, proven). SDF volumes exist only where caves, overhangs, or creator-carved features require them (maybe 5-10% of chunks). This keeps 90% of the world at heightmap cost while supporting arbitrary geometry where needed.</p>
<h3>Generation pipeline</h3>
<p>Run server-side as a chained process:</p>
<ol>
<li><strong>Terrain Diffusion</strong> (or MESA for text prompts) generates the base heightmap from a seed. This replaces noise with geologically realistic landforms trained on real elevation data.</li>
<li><strong>Analytical erosion</strong> (stream power law) refines the heightmap with river networks and ridgelines in milliseconds.</li>
<li><strong>TerraFusion or Geodiffussr</strong> generates correlated textures from the heightmap (or use procedural slope/altitude rules for the WebGL 2 fallback).</li>
<li><strong>Ecosystem simulation</strong> produces vegetation density maps.</li>
<li><strong>Arenite-style erosion</strong> generates SDF volumes for cliff faces, arches, and caves where the terrain calls for them.</li>
<li><strong>Chunk, compress, upload to CDN.</strong> Average chunk: 2-8 KB. Complex chunk with volumetric data: 20-100 KB.</li>
</ol>
<p>Creators interact with this pipeline by adjusting parameters (&quot;wetter,&quot; &quot;more mountainous,&quot; &quot;add caves&quot;), sketching intent, or directly sculpting with brushes and SDF tools.</p>
<h3>LOD strategy</h3>
<table>
<thead>
<tr>
<th>Browser capability</th>
<th>Heightmap LOD</th>
<th>Volumetric LOD</th>
<th>Vegetation LOD</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>WebGPU</strong></td>
<td>GPU-driven quadtree (CDLOD) with compute culling + indirect draw</td>
<td>Multi-resolution SDF with compute marching cubes + Transvoxel</td>
<td>ComputeInstanceCulling with indirect draw</td>
</tr>
<tr>
<td><strong>WebGL 2</strong></td>
<td>Geometry clipmaps with CPU-side ring updates</td>
<td>Pre-generated meshes at 2-3 LOD levels, cached</td>
<td>CPU frustum cull, InstancedMesh</td>
</tr>
</tbody>
</table>
<p>Both paths use geomorphing in the vertex shader for pop-free transitions. Both use billboard impostors for distant vegetation. The WebGPU path is faster (3.5ms terrain budget) but the WebGL 2 path is viable (6.5ms).</p>
<h3>Streaming</h3>
<p>Progressive loading: terrain geometry first (&lt;100ms), textures second (&lt;300ms), vegetation third (&lt;1s), volumetric data fourth (&lt;3s). Pre-fetch based on player velocity. Memory budget: 256 MB total terrain.</p>
<h3>Editing</h3>
<p>Heightmap brushes for surface sculpting (raise, lower, smooth, erode). SDF primitives for volumetric editing (carve caves, add arches). Both are instant locally, sync to server in 100-300ms, broadcast to other players via delta updates.</p>
<h3>What to build in what order</h3>
<p><strong>Month 1-2: Heightmap terrain with geometry clipmaps.</strong> WebGL 2 only. Streaming from CDN. Procedural slope/altitude materials. This gets terrain on screen in every browser. Use noise + analytical erosion for generation (Terrain Diffusion can wait).</p>
<p><strong>Month 3-4: Vegetation and atmosphere.</strong> GPU-instanced grass and trees from density maps. Procedural sky with day/night cycle. Atmospheric fog. Cascaded shadow maps. The world starts to feel like a place.</p>
<p><strong>Month 5-6: Creator editing.</strong> Heightmap brush tools. Delta-based sync for multiplayer terrain edits. Spatial locking for concurrent editing. This is when creators start shaping the world.</p>
<p><strong>Month 7-9: Volumetric terrain and WebGPU path.</strong> SDF overlays for caves and overhangs. Marching cubes in WebGPU compute. Transvoxel for LOD boundaries. SDF sculpting tools. This unlocks the full creation toolkit.</p>
<p><strong>Month 10-12: Neural generation and polish.</strong> Terrain Diffusion or MESA for the base heightmap. TerraFusion/Geodiffussr for textures. Phasor noise for micro-detail. Hex-tiling for anti-repetition. Virtual texturing. Laplacian blending. The terrain reaches production quality.</p>
<p>This ordering means something playable exists after 2 months, something beautiful after 4, something editable after 6, and something state-of-the-art after 12.</p>
<p>The rest of this article is the research behind each decision.</p>
<h2>Terrain Representations Beyond Heightmaps</h2>
<h3>Signed Distance Fields (SDFs)</h3>
<p>A signed distance field stores, at every point in 3D space, the distance to the nearest surface. Positive values are outside, negative values are inside, and the zero-crossing is the surface itself. SDFs represent arbitrary 3D shapes including caves, arches, and floating geometry.</p>
<p>To render an SDF as a mesh, you run marching cubes (or a variant) to extract the zero-crossing as triangles. The mesh resolution depends on the grid resolution: a 256x256x256 SDF grid produces terrain covering roughly one chunk at 1-meter resolution.</p>
<p><strong>Browser implementation:</strong> WebGPU marching cubes runs entirely on the GPU via compute shaders. Will Usher's <a href="https://www.willusher.io/webgpu-marching-cubes/">webgpu-marching-cubes</a> implementation processes a 256^3 grid in real time in the browser, achieving native-speed performance. The algorithm is embarrassingly parallel (each cell processes independently), making it ideal for GPU compute.</p>
<pre><code class="language-wgsl">@compute @workgroup_size(4, 4, 4)
fn marchingCubes(@builtin(global_invocation_id) id: vec3&lt;u32&gt;) {
    let sdfValues = sampleSDF(id);
    let caseIndex = classifyCell(sdfValues);
    if (caseIndex == 0u || caseIndex == 255u) { return; }
    let triangles = lookupTriangulation(caseIndex);
    let vertices = interpolateEdges(sdfValues, triangles);
    appendToMeshBuffer(vertices);
}
</code></pre>
<p><strong>Storage cost:</strong> A 256^3 SDF at 8-bit quantized precision is 16 MB uncompressed. But most of the volume is empty (far from the surface). Run-length encoding or sparse octree storage typically reduces this to 100-500 KB per chunk, comparable to heightmap terrain.</p>
<p><strong>Editing:</strong> SDF terrain is naturally editable. Adding material is a <code>min()</code> operation on the distance field. Removing material (digging) is a <code>max()</code> with a negated shape. Smooth blending between shapes uses <code>smoothMin()</code>. These operations run in a compute shader at interactive rates.</p>
<h3>Dual Contouring</h3>
<p>Marching cubes places vertices on grid edges, which produces smooth surfaces but loses sharp features (cliff edges, rock corners). Dual contouring places one vertex per cell at the position that best represents the surface within that cell, preserving sharp edges and corners.</p>
<p>The algorithm needs both the distance field values and the surface normals (the gradient of the SDF) at each grid point. It solves a small least-squares problem per cell to find the optimal vertex position. The result is a mesh that captures both smooth terrain and sharp rocky features.</p>
<p><strong>Neural Dual Contouring</strong> (Chen et al., 2022, <a href="https://arxiv.org/abs/2202.01999">arXiv:2202.01999</a>) replaces the least-squares solver with a neural network that predicts optimal vertex positions and edge crossings. It achieves better surface reconstruction accuracy and feature preservation, particularly for complex natural rock formations.</p>
<h3>The Transvoxel Algorithm</h3>
<p>The hardest problem in volumetric terrain isn't generating the mesh. It's LOD transitions. When a high-resolution chunk sits next to a low-resolution chunk, the meshes don't line up at the boundary, creating visible cracks.</p>
<p>The Transvoxel algorithm, designed by Eric Lengyel (<a href="https://transvoxel.org/">transvoxel.org</a>), solves this by inserting special transition cells along boundaries between resolutions. These cells bridge the resolution difference with additional triangles that exactly match both sides. The algorithm reduces the complex boundary problem to 73 equivalence classes (compared to ~1.2 million cases for a brute-force approach).</p>
<p>Transvoxel is specifically designed for real-time applications where voxel data changes dynamically (creator edits, erosion, mining). It's patent-free and has been used in shipped games (Space Engineers, Astroneer). For a browser world with editable volumetric terrain, Transvoxel is the LOD solution.</p>
<h3>Hybrid: Heightmap Base + Volumetric Overlays</h3>
<p>The practical approach for a browser open world is a layered system:</p>
<p><strong>Layer 1: Heightmap terrain</strong> covers the entire world. This is the cheap, compact representation for rolling hills, valleys, and mountains. It streams as small heightmap patches per chunk (2-4 KB each). Rendering uses geometry clipmaps with constant GPU cost.</p>
<p><strong>Layer 2: Volumetric overlays</strong> exist only in chunks where complex geometry is needed. Caves, cliff faces, arches, creator-carved tunnels, and underground spaces are stored as sparse SDF volumes. Only chunks with volumetric data incur the SDF storage and marching cubes cost.</p>
<p><strong>Layer 3: Creator modifications</strong> are stored as SDF edits on top of the base layers. A creator who digs a tunnel stores the tunnel's SDF shape. The rendering system combines the heightmap surface with volumetric subtractions and additions to produce the final mesh.</p>
<p>This hybrid costs almost nothing for flat terrain (just the heightmap), and scales only where complexity exists. In a typical world, maybe 5-10% of chunks need volumetric data.</p>
<h2>Physically Correct Terrain Generation</h2>
<p>Noise produces random terrain. Physics produces realistic terrain. The difference is visible: noise terrain has no structure (it's randomly bumpy everywhere), while physical terrain has river networks, ridge lines, alluvial fans, and cliff bands that emerge from erosion and tectonics.</p>
<h3>Hydraulic Erosion: The Foundation</h3>
<div class="video-embed">
<iframe src="https://www.youtube.com/embed/eaXk97ujbPQ" title="Coding Adventure: Hydraulic Erosion" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<div class="game-caption">Sebastian Lague's hydraulic erosion implementation in action. Simulated raindrops flow downhill, erode material based on speed and slope, and deposit sediment when velocity drops — transforming flat noise into river valleys, ridgelines, and alluvial fans.</div>
<p>Water flows downhill, picks up sediment, and deposits it when it slows down. This single process, simulated over millions of virtual years, transforms featureless noise into terrain with recognizable geological features.</p>
<p>The particle-based approach drops simulated raindrops on the heightmap. Each drop flows downhill (following the gradient), erodes material based on speed and slope, carries sediment as dissolved load, and deposits sediment when velocity decreases or capacity is exceeded. After 200,000-500,000 particles, the terrain develops:</p>
<ul>
<li><strong>River valleys</strong> that follow the path of maximum water flow</li>
<li><strong>Ridge lines</strong> that separate drainage basins</li>
<li><strong>Alluvial fans</strong> where steep valleys open into flat plains</li>
<li><strong>V-shaped valleys</strong> in mountainous terrain, U-shaped in glaciated terrain</li>
</ul>
<p><strong>GPU implementation:</strong> The particle simulation is parallelizable. Each particle is independent (the approximation ignores particle-particle interaction, which is fine for erosion). A WebGPU compute shader processes 10,000 particles per frame at 60fps, completing 200,000 particles in about 3 seconds of real time.</p>
<p>Sebastian Lague's open-source implementation (<a href="https://github.com/SebLague/Hydraulic-Erosion">GitHub</a>) is the standard starting point. It runs on a single thread in C# and processes a 1024x1024 heightmap in a few seconds. The GPU version is 50-100x faster.</p>
<h3>Thermal Erosion</h3>
<p>Water isn't the only erosion force. Temperature changes cause rock to crack and crumble (thermal weathering). When the slope between two terrain points exceeds a material's angle of repose, material falls from the higher point to the lower one. This produces:</p>
<ul>
<li><strong>Talus slopes</strong> at the base of cliffs (piles of fallen rock)</li>
<li><strong>Softened ridge lines</strong> over time</li>
<li><strong>Material-dependent profiles</strong> (hard rock maintains steep slopes, soft soil collapses to gentle angles)</li>
</ul>
<p>Thermal erosion is simpler than hydraulic erosion. It's a local operation: for each cell, compare the height difference with neighbors. If the slope exceeds the threshold, move material downhill. It runs as a single compute shader pass per iteration and converges in 50-100 iterations.</p>
<p>Combining hydraulic and thermal erosion produces terrain that looks dramatically more natural than either alone. Water carves valleys; thermal erosion softens the ridges between them and fills the valley floors with debris.</p>
<h3>The Stream Power Law: Analytical Erosion</h3>
<p>Recent research offers an alternative to particle-based simulation. The stream power law (a geomorphological equation relating erosion rate to drainage area and slope) can be solved analytically rather than simulated iteratively.</p>
<p>Cordonnier et al. (2024, <a href="https://hal.science/hal-04525371">HAL</a>) combine the analytical stream power law with landslide and hillslope diffusion processes. The result is terrain generation that's physically grounded but runs as a mathematical function rather than a temporal simulation. You input a noise-based heightmap and parameters (rainfall rate, rock hardness, tectonic uplift rate) and get an eroded terrain in milliseconds.</p>
<p>This analytical approach is ideal for a browser world because it runs once server-side during terrain generation, not iteratively. The parameters are tunable by creators (&quot;make this region more mountainous&quot; adjusts the uplift rate; &quot;make it wetter&quot; increases rainfall and deepens valleys).</p>
<h3>Arenite: Multi-Physics Erosion (SIGGRAPH 2025)</h3>
<div class="video-embed">
<iframe src="https://www.youtube.com/embed/pl_GdrBSAmA" title="Arenite: A Physics-based Sandstone Simulator (SIGGRAPH 2025)" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<div class="game-caption">Arenite simulates stress, wind erosion, fluvial erosion, and particle deposition to generate arches, hoodoos, and buttes from layered rock. Server-side generation produces SDF volumes that feed directly into a marching cubes pipeline.</div>
<p>Arenite (<a href="https://jango6324.github.io/arenite/">Project page</a>) is a physics-based sandstone simulator that generates arches, alcoves, hoodoos, and buttes from simple initial conditions. Users paint erodability maps (soft rock vs. hard rock layers) and vegetation, then the system simulates:</p>
<ul>
<li><strong>Stress distribution</strong> through the rock column</li>
<li><strong>Wind erosion</strong> that preferentially removes exposed soft material</li>
<li><strong>Fluvial erosion</strong> from water flow</li>
<li><strong>Particle deposition</strong> that creates new formations</li>
</ul>
<p>The GPU implementation runs in under 5 minutes for complex formations on a desktop GPU. While this is too slow for real-time browser use, it's fast enough for server-side generation. A creator could define a cliff face with soft/hard rock layers and get a realistic arch formation within minutes.</p>
<p>The output is a 3D voxel field, which fits directly into our SDF/marching cubes pipeline.</p>
<h3>Flexible Erosion Across Representations</h3>
<p>A 2024 paper from IRIT-STORM (&quot;Flexible Terrain Erosion,&quot; <a href="https://link.springer.com/article/10.1007/s00371-024-03444-w">Springer</a>) solves a practical problem: most erosion methods only work on heightfields. If your terrain uses voxels, SDFs, or layered materials, you need separate erosion code for each.</p>
<p>The flexible erosion method decomposes erosion into two independent processes: terrain alteration (removing material from the surface) and material transport (moving sediment with particles governed by basic physics). Each particle has configurable size, density, restitution, and sediment capacity. An optional vector field controls particle motion for realistic fluid dynamics.</p>
<p>Because the particles interact with the terrain through a unified material alteration interface, the same simulation works on heightfields, voxel grids, implicit surfaces, and layered material stacks. For our hybrid terrain (heightmap base + SDF overlays), this means one erosion system handles both representations. The particle simulation runs in parallel on the GPU.</p>
<h3>River Networks and Drainage Basins</h3>
<p>Erosion carves rivers, but generating convincing river networks requires more than just running water downhill. Two approaches produce better results:</p>
<p><strong>Drainage-first generation</strong> (Amit Patel, Red Blob Games, <a href="https://www.redblobgames.com/x/1723-procedural-river-growing/">Project</a>) builds the river network before assigning elevation. Start with a graph (Voronoi or triangle mesh). Classify edges as ridges (no flow), entries (water flows in), or outlets (water flows out). This creates realistic drainage hierarchies where rivers converge from small tributaries into major waterways, following the Rosgen classification system for different river types (braided channels in flat terrain, narrow gorges in mountains).</p>
<p><strong>Flow accumulation</strong> tracks how much water passes through each terrain cell. Drop simulated rain uniformly, flow it downhill, and count visits per cell. Cells with high accumulation are river channels. Cells with moderate accumulation are seasonal streams. The accumulation map also drives erosion intensity (more water = more erosion) and vegetation distribution (river banks are wetter, supporting different plant species).</p>
<p>For a creator world, the river network is generated server-side during terrain creation and stored as a 2D flow direction map plus a water accumulation map per chunk. The browser client uses these maps to render water surfaces (flat planes at the correct height in river channels) and to drive the vegetation distribution (lusher near water).</p>
<h3>Coastal and Shoreline Generation</h3>
<p>Coastlines are where terrain meets water, and they have distinctive features that standard erosion doesn't produce: sea cliffs, beach deposits, tidal flats, sea stacks, and wave-cut platforms.</p>
<p>NEWTS1.0 (2024, <a href="https://dspace.mit.edu/handle/1721.1/157677">MIT</a>) models rocky coastline evolution using two erosion mechanisms: uniform retreat (constant erosion rate) and wave-driven erosion (erosion rate as a function of fetch distance and incident wave angle). The model runs over thousands of simulated years and produces headlands, bays, sea stacks, and arches that match real coastal geomorphology.</p>
<p>For a browser world, coastal features would be pre-generated during world creation. The parameters (dominant wave direction, rock hardness variation along the coast) let creators control the character of their coastline. A &quot;Norwegian fjord&quot; setting produces steep-sided inlets. A &quot;tropical atoll&quot; setting produces low-lying sandy shores with lagoons.</p>
<h3>Cave and Underground Generation</h3>
<p>Caves require fully volumetric terrain (SDFs or voxels) since heightmaps can't represent enclosed spaces. The generation approaches:</p>
<p><strong>3D noise thresholding</strong> is the simplest method. Sample 3D Perlin or simplex noise at each voxel. Values below a threshold are solid, above are empty. Adjust the threshold and noise parameters to control tunnel diameter, connectivity, and chamber size. This produces organic, worm-like cave systems reminiscent of Minecraft.</p>
<p><strong>PLUME (Procedural Layer Underground Modeling Engine)</strong> (2024, <a href="https://arxiv.org/html/2508.20926v1">arXiv:2508.20926</a>) generates realistic cave and lava tube environments using layered procedural rules. Originally built for space exploration research (simulating Martian lava tubes), it produces geologically plausible underground structures with stalactites, columns, and chamber systems.</p>
<p><strong>L-system tunnels with metaball carving</strong> use an L-system grammar to grow branching tunnel paths through the terrain, then carve the actual tunnel geometry using metaball implicit surfaces. The metaballs produce smooth, rounded cave walls. Multiple passes with different parameters create primary passages, side chambers, and narrow connecting tunnels.</p>
<p>For a creator world, cave generation ties into the SDF overlay system. The base terrain is a heightmap (no caves). When a chunk needs caves (either from procedural generation or creator design), an SDF volume is generated that subtracts cave geometry from the base terrain. The marching cubes pipeline renders the combined surface.</p>
<h3>Vegetation as a Physical Process</h3>
<p>Vegetation in games is typically placed procedurally with rules like &quot;grass below 2000m, trees below 1500m, snow above 3000m.&quot; This is fast but produces uniform, unrealistic distribution.</p>
<p>Physically grounded vegetation simulation models each plant as competing for resources (light, water, soil nutrients). The simulation:</p>
<ol>
<li>Seeds are scattered across the terrain</li>
<li>Each plant grows based on available resources (water flows from the hydraulic erosion simulation, sunlight depends on slope and aspect, soil depth depends on erosion history)</li>
<li>Plants compete: trees shade out grass, dense canopy prevents new seedlings</li>
<li>Over simulated time, biomes emerge naturally: forests in valleys with water, sparse vegetation on windswept ridges, wetlands where water pools</li>
</ol>
<p>Deussen et al.'s ecosystem simulation (<a href="https://export.arxiv.org/pdf/2208.01471v1.pdf">Paper</a>) generates forest distributions that match real-world ecological patterns. The simulation runs on a 2D grid (one cell per terrain chunk) and produces density maps and species assignments that the rendering system uses for GPU instanced vegetation placement.</p>
<p>For a browser world, the vegetation simulation runs once during world generation (server-side). The output is a set of density maps per chunk: tree density, grass density, flower density, rock debris density. The browser client uses these maps with GPU instancing to scatter vegetation at runtime.</p>
<h2>Diffusion-Based Terrain Synthesis</h2>
<p>This is where the field is moving fastest. Diffusion models (the same technology behind Stable Diffusion for images) are being applied to terrain generation, and the results are substantially more realistic than noise-based methods.</p>
<h3>Terrain Diffusion: A Successor to Perlin Noise</h3>
<div class="video-embed">
<iframe src="https://www.youtube.com/embed/hJoaCZ7wZ5s" title="Terrain Diffusion Minecraft Integration" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<div class="game-caption">Terrain Diffusion running inside Minecraft, streaming infinite seed-consistent terrain in real time. Trained on real-world elevation data, it produces landscapes with geological structure that noise functions can't match.</div>
<p>Terrain Diffusion (Goslin, 2025, <a href="https://arxiv.org/abs/2512.08309">arXiv:2512.08309</a>, <a href="https://xandergos.github.io/terrain-diffusion/">Project page</a>) is the most significant advance in procedural terrain generation since Perlin noise in 1985. The work has since been accepted to SIGGRAPH 2026, and the canonical arXiv title is now &quot;InfiniteDiffusion: Bridging Learned Fidelity and Procedural Utility for Open-World Terrain Generation.&quot; The InfiniteDiffusion algorithm and the Terrain Diffusion framework are the two halves of the same paper.</p>
<p>The key innovation is <strong>InfiniteDiffusion</strong>, an algorithm that reformulates diffusion sampling for unbounded domains. Traditional diffusion models generate fixed-size outputs (e.g., a 512x512 heightmap). InfiniteDiffusion generates terrain of infinite extent with:</p>
<ul>
<li><strong>Seed consistency:</strong> Same seed always produces the same terrain, like Perlin noise</li>
<li><strong>Constant-time random access:</strong> You can query the height at any point without generating neighboring regions first</li>
<li><strong>No boundary artifacts:</strong> Infinite generation without visible seams or repetition</li>
</ul>
<p>The system uses a hierarchical stack of diffusion models. The top level captures planetary-scale features (continents, mountain ranges). Each subsequent level adds finer detail (individual peaks, valleys, small-scale roughness). A compact Laplacian encoding stabilizes outputs across the enormous dynamic range from sea level to Himalayan peaks.</p>
<p><strong>Performance:</strong> Generation keeps pace with real-time exploration. The paper reports that even at the theoretical extreme of orbital velocity (about 7,700 m/s), terrain synthesis runs 9x faster than traversal on a consumer GPU. The project includes a Minecraft integration demonstrating real-time terrain synthesis.</p>
<p><strong>Why this matters for us:</strong> Terrain Diffusion produces landscapes trained on real-world elevation data (Earth's actual topography). The output has river networks, mountain ranges, coastal features, and plateau structures that emerge from the training data, not from hand-tuned noise parameters. A creator could say &quot;generate terrain like the Scottish Highlands&quot; and the diffusion model would produce something with the right geological character.</p>
<p>The model runs server-side during world generation. The output is a standard heightmap that streams to the browser like any other terrain data. The generation method is invisible to the client.</p>
<h3>TerraFusion: Joint Geometry and Texture</h3>
<div class="img-embed">
<img src="https://cdn.cinevva.com/blog/terrafusion-teaser.png" alt="TerraFusion jointly generates terrain heightmaps and matching surface textures from sketches using latent diffusion" />
</div>
<div class="game-caption">TerraFusion generates heightmap and texture together from a hand-drawn sketch. The correlation between geometry and material is baked in — river beds come out sandy, cliff faces rocky, flat ground grassy — without any manual splat painting.</div>
<p>TerraFusion (2025, <a href="https://arxiv.org/abs/2505.04050">arXiv:2505.04050</a>) goes further by jointly generating heightmaps and terrain textures. The key insight: terrain geometry and surface appearance are correlated (river beds are sandy, cliff faces are rocky, flat areas are grassy). Generating them separately produces mismatches.</p>
<p>TerraFusion uses a latent diffusion model with separate VAEs for heightmaps and textures, trained to model their joint distribution. The system supports:</p>
<ul>
<li><strong>Unconditional generation:</strong> Random plausible terrain with matching textures</li>
<li><strong>Sketch-conditioned generation:</strong> A creator draws a rough map (valleys here, ridges there, cliffs along this edge) and the model generates detailed geometry and textures that match the sketch</li>
</ul>
<p>For a creator world, this is powerful. A creator sketches the general layout of their plot, and the system fills in geologically plausible terrain with appropriate surface materials. No heightmap painting, no texture splatting, no manual material assignment.</p>
<h3>MESA: Text-to-Terrain</h3>
<div class="img-embed">
<img src="https://cdn.cinevva.com/blog/mesa-header.png" alt="MESA generates satellite-style terrain images and elevation maps from text prompts, trained on global Copernicus data" />
</div>
<div class="game-caption">MESA outputs paired satellite images and DEMs from text prompts. Trained on the Copernicus global dataset, it understands real terrain at every scale and climate zone — fjords, steppes, farmland, alpine ridges.</div>
<p>MESA (2025, <a href="https://arxiv.org/abs/2504.07210">arXiv:2504.07210</a>, CVPR 2025 Workshop) generates terrain from text descriptions. It's trained on global remote sensing data from the Copernicus program, so it has exposure to every type of terrestrial landscape.</p>
<p>A prompt like &quot;a fjord with steep granite walls opening to a rocky coastline&quot; produces a heightmap with the appropriate geological structure. &quot;Rolling farmland with gentle hills and a wide river valley&quot; produces something completely different.</p>
<p>MESA introduces the Major TOM Core-DEM extension dataset, which pairs satellite imagery with digital elevation models globally. This training data gives the model understanding of how real terrain looks at every scale and in every climate zone.</p>
<h3>Geodiffussr: Text-Guided Terrain Texturing</h3>
<div class="img-embed">
<img src="https://cdn.cinevva.com/blog/geodiffussr-teaser.png" alt="Geodiffussr generates terrain textures from text descriptions while respecting elevation data — snow on peaks, sand at coasts, forest on slopes" />
</div>
<div class="game-caption">Geodiffussr takes a heightmap and a text prompt and generates surface textures that respect the elevation. Snow only appears above plausible altitudes; vegetation thins with height; water sits in depressions. The geometry stays unchanged.</div>
<p>Geodiffussr (2025, <a href="https://arxiv.org/abs/2511.23029">arXiv:2511.23029</a>) takes an existing heightmap and generates textures guided by text descriptions while respecting the elevation data. &quot;Autumn forest&quot; produces orange and gold foliage on moderate slopes with bare rock on steep faces. &quot;Tropical coast&quot; produces palm vegetation on low ground with coral sand at sea level.</p>
<p>The system uses multi-scale content aggregation to ensure texture assignments respect elevation: snow only appears above a physically plausible altitude, water features sit in depressions, vegetation thins with altitude.</p>
<p>For a creator world, this means terrain textures can be regenerated from a text prompt without changing the geometry. A creator sculpts the terrain they want, then describes the mood (&quot;dark volcanic wasteland&quot; or &quot;lush temperate forest&quot;) and the system generates appropriate surface materials.</p>
<h2>Dynamic LOD for Browser Terrain</h2>
<p>Rendering large terrain at full resolution everywhere is impossible in a browser. A 4 km x 4 km world at 1-meter resolution is 16 million vertices of terrain alone. Dynamic LOD reduces this to a constant, manageable vertex count regardless of world size.</p>
<h3>Geometry Clipmaps</h3>
<div class="video-embed">
<iframe src="https://www.youtube.com/embed/yoUQRT-Hmcc" title="Geometry clipmaps: Terrain rendering using nested regular grids (SIGGRAPH 2004)" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<div class="game-caption">The original SIGGRAPH 2004 presentation of geometry clipmaps. Concentric rings of terrain at halving resolutions keep vertex count constant regardless of world size — still the foundation of most browser terrain LOD today.</div>
<p>Geometry clipmaps (Losasso and Hoppe, SIGGRAPH 2004, <a href="https://hhoppe.com/geomclipmap.pdf">Paper</a>) remain the gold standard for heightmap terrain LOD. The idea: render terrain as a set of concentric square rings centered on the camera. Each ring is twice the area of the previous one but at half the resolution.</p>
<p>Close to the camera (innermost ring): full resolution, 1-meter grid spacing.
One ring out: 2-meter spacing, covering 4x the area.
Next ring: 4-meter spacing, covering 16x the area.
And so on for 6-8 levels, until the outermost ring covers the entire visible distance.</p>
<p>The total vertex count is constant: roughly N^2 * levels, where N is the ring width in vertices. With N=256 and 8 levels, that's about 500K vertices total. This renders the same whether the world is 1 km or 100 km wide.</p>
<p><strong>Browser implementation:</strong> Geometry clipmaps work in WebGL 2 because they only require standard vertex buffer updates (no compute shaders). As the camera moves, the CPU updates the heightmap data for each ring by sampling the terrain at the appropriate resolution. The vertex shader reads height values from a texture and displaces the flat grid.</p>
<p><strong>Morphing:</strong> The transition between LOD levels produces visible &quot;popping&quot; if handled naively. Geomorphing (detailed in its own section below) blends vertex positions between levels over a transition zone in the vertex shader, producing smooth, pop-free transitions at no extra draw call cost.</p>
<h3>CDLOD: Quadtree-Adaptive Clipmaps</h3>
<p>CDLOD (Strugar, 2014, <a href="https://www.vertexasylum.com/CDLOD/cdlod_latest.pdf">Paper</a>) improves on geometry clipmaps by using a quadtree instead of fixed concentric rings. The quadtree adapts to the terrain: flat areas use coarse nodes, while areas with high detail (cliffs, ridges) get finer subdivision.</p>
<p>This matters for a creator world because different chunks have different complexity. A flat meadow needs minimal resolution. A mountainous region with cliffs and caves needs maximum detail. CDLOD allocates resolution where it matters.</p>
<p>The CPU-side quadtree traversal is lightweight (a few hundred nodes) and determines which terrain patches to draw at which resolution. The GPU renders each patch as an instanced grid with per-patch LOD uniforms.</p>
<h3>Concurrent Binary Trees: Planetary-Scale Tessellation</h3>
<div class="video-embed">
<iframe src="https://www.youtube.com/embed/0TzgFwDmbGg" title="Experimenting with Concurrent Binary Trees for Large Scale Terrain Rendering" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<div class="game-caption">CBT adaptive tessellation for planetary-scale terrain: triangles subdivide near the camera and merge in the distance, entirely on the GPU. Under 0.2ms on console hardware.</div>
<p>Concurrent Binary Trees (CBT) are a GPU-friendly data structure for adaptive terrain tessellation, presented by Benyoub and Dupuy (Intel, HPG 2024, <a href="https://arxiv.org/html/2407.02215v1">Paper</a>, <a href="https://github.com/AnisB/large_cbt">GitHub</a>).</p>
<p>The core idea: represent the terrain as a binary tree where each node is a triangle. Adaptive subdivision splits triangles that are close to the camera and merges triangles that are far away. The binary tree lives entirely in GPU memory as a 1D array (a binary heap), and subdivision/merge operations run as compute shaders.</p>
<p>The 2024 paper extends CBT from square heightmap domains to arbitrary polygon meshes. This means you can tessellate a sphere (for planetary rendering) or an arbitrary base mesh (for a game world with non-rectangular boundaries). The key improvement: using CBT as a memory pool manager instead of implicit encoding allows much higher subdivision levels.</p>
<p>Performance: planetary-scale terrain tessellation in under 0.2ms on console-level hardware. The algorithm scales linearly with processor count. For WebGPU, this provides a path to planet-scale terrain rendering in a browser, though the implementation complexity is high.</p>
<h3>GPU-Driven LOD with WebGPU</h3>
<p>WebGPU enables a fully GPU-driven terrain pipeline that eliminates CPU involvement in LOD decisions:</p>
<ol>
<li>
<p><strong>Compute pass 1: Frustum and occlusion culling.</strong> A compute shader tests each terrain patch's bounding box against the view frustum and an occlusion buffer (the depth buffer from the previous frame, downsampled). Invisible patches are discarded entirely.</p>
</li>
<li>
<p><strong>Compute pass 2: LOD selection.</strong> For visible patches, compute the screen-space size and select the appropriate LOD level. Write the LOD level and patch ID into an indirect draw buffer.</p>
</li>
<li>
<p><strong>Compute pass 3: Mesh generation (for volumetric terrain).</strong> For chunks with SDF data, run marching cubes to generate the mesh at the selected LOD resolution.</p>
</li>
<li>
<p><strong>Indirect draw.</strong> A single <code>drawIndexedIndirect()</code> call renders all terrain patches. The GPU decides everything: what to draw, at what resolution, in what order.</p>
</li>
</ol>
<p>This pipeline has constant CPU cost (dispatching compute shaders and the indirect draw call) regardless of world size or complexity. The GPU handles all the per-patch decisions.</p>
<pre><code class="language-wgsl">@compute @workgroup_size(64)
fn lodSelection(@builtin(global_invocation_id) id: vec3&lt;u32&gt;) {
    let patchIdx = id.x;
    let bounds = patchBounds[patchIdx];

    if (!frustumTest(bounds, viewProjection)) { return; }
    if (occlusionTest(bounds, depthPyramid) == OCCLUDED) { return; }

    let screenSize = projectedSize(bounds, viewProjection, screenDimensions);
    let lod = clamp(u32(log2(maxScreenSize / screenSize)), 0u, MAX_LOD);

    let drawIdx = atomicAdd(&amp;drawCount, 1u);
    drawArgs[drawIdx] = DrawArgs(patchIdx, lod, indexCount[lod], indexOffset[lod]);
}
</code></pre>
<h3>Geomorphing: Pop-Free LOD Transitions</h3>
<p>The biggest visual artifact in terrain LOD is popping: vertices suddenly jump to new positions when a patch switches LOD level. Geomorphing eliminates this by smoothly interpolating vertex positions between LOD levels over a transition zone.</p>
<p>The implementation lives entirely in the vertex shader. Each vertex stores both its current-LOD position and its next-coarser-LOD position. As the camera distance crosses the transition threshold, a morph factor blends between the two:</p>
<pre><code class="language-glsl">float morphFactor = smoothstep(lodNear, lodFar, distanceToCamera);
float morphedHeight = mix(fineLodHeight, coarseLodHeight, morphFactor);
gl_Position = viewProjection * vec4(worldPos.x, morphedHeight, worldPos.z, 1.0);
</code></pre>
<p>Hoppe's geometry clipmap paper (GPU Gems 2, <a href="https://developer.nvidia.com/gpugems/gpugems2/part-i-geometric-complexity/chapter-2-terrain-rendering-using-gpu-based-geometry">Chapter 2</a>) describes the full implementation for clipmap rings. The morph zone is the outer 20% of each ring. Within this zone, vertices smoothly converge to the next ring's resolution. The visual effect: terrain geometry &quot;melts&quot; between detail levels rather than snapping. At typical camera speeds, the transition is invisible.</p>
<p>Image-space blending (Scherzer et al., <a href="https://onlinelibrary.wiley.com/doi/10.1111/j.1467-8659.2007.00943.x">Paper</a>) is an alternative that blends rendered images of two LOD levels in screen space. This handles more extreme LOD differences (e.g., mesh-to-billboard transitions) but costs an extra render pass for the transition zone.</p>
<h3>GPU-Driven Vegetation Culling</h3>
<p>Vegetation (trees, grass, rocks) is often the largest source of draw calls in an open world. A naive approach draws every vegetation instance every frame. GPU-driven culling, now available in Three.js via WebGPU, eliminates invisible instances before they reach the rasterizer.</p>
<p>Three.js's <code>ComputeInstanceCulling</code> (<a href="https://www.threejs-blocks.com/docs/ComputeInstanceCulling">Docs</a>) provides frustum and LOD culling for instanced meshes with 10-100x performance gains for large instance counts. The pipeline:</p>
<ol>
<li>A compute shader reads all instance bounding spheres</li>
<li>Tests each against the camera frustum (6-plane test)</li>
<li>Applies distance-based LOD: instances beyond a threshold switch to lower detail or are culled entirely</li>
<li>Surviving instances are compacted into a buffer and drawn via <code>drawIndirect</code></li>
</ol>
<p>The CPU does zero per-instance work. After initial setup, the cost is one compute dispatch plus one indirect draw call per vegetation type, regardless of instance count.</p>
<p>For denser vegetation, Three.js's <code>IndirectBatchedMesh</code> (<a href="https://www.threejs-blocks.com/docs/IndirectBatchedMesh">Docs</a>) packs multiple geometry types (trees, bushes, rocks) into a single buffer and draws them with multi-draw indirect. One draw call for all vegetation in a chunk.</p>
<p>Combined with the density-map-based scattering from our vegetation system, this means: the density map generates 50,000 grass blade positions in a compute shader, the culling pass eliminates the 70% that are off-screen or too far away, and one indirect draw call renders the surviving 15,000 blades. Total CPU cost: negligible.</p>
<h3>LOD for Volumetric Terrain</h3>
<p>Volumetric terrain (SDF + marching cubes) needs its own LOD system because the mesh is generated, not pre-authored. The approach:</p>
<p><strong>Multi-resolution SDF storage.</strong> Store the SDF at multiple resolutions in a mipmap-like hierarchy. Level 0 is full resolution (1-meter voxels). Level 1 is 2-meter voxels (8x less data). Level 2 is 4-meter voxels. At each level, the SDF is downsampled by taking the minimum absolute distance.</p>
<p><strong>LOD-selected marching cubes.</strong> Run marching cubes on the SDF level that matches the desired LOD. Close-up chunks use level 0. Distant chunks use level 2 or 3. The Transvoxel algorithm handles the boundary between different levels.</p>
<p><strong>Caching.</strong> Generated meshes are cached until the SDF changes (creator edit) or the LOD level changes (camera moved significantly). For static terrain, the mesh is generated once and reused.</p>
<h2>Streaming Architecture for Terrain</h2>
<h3>Chunk Data Format</h3>
<p>Each terrain chunk (64x64 meters) streams as a compact binary package:</p>
<pre><code>ChunkPacket {
  header: {
    chunkX: i16, chunkZ: i16,
    version: u32,
    flags: u8  // hasHeightmap | hasVolumetric | hasVegetation
  }
  heightmap: {
    resolution: u8,      // 65x65 for full, 33x33 for half, 17x17 for quarter
    quantizedHeights: u16[resolution * resolution],  // delta-encoded, zlib compressed
    splatMap: u8[4 * resolution * resolution]         // RGBA blend weights, LZ4 compressed
  }
  volumetric?: {         // only present if flags.hasVolumetric
    sdfResolution: u8,   // typically 32 or 64
    sparseOctree: bytes  // run-length encoded sparse SDF
  }
  vegetation?: {         // only present if flags.hasVegetation
    treeDensityMap: u8[16 * 16],    // 4m resolution density grid
    grassDensityMap: u8[32 * 32],   // 2m resolution density grid
    rockDensityMap: u8[16 * 16]
  }
  creatorObjects: {
    count: u16,
    objects: PlacedObject[]   // assetId + transform + properties, ~40 bytes each
  }
}
</code></pre>
<p><strong>Typical sizes:</strong></p>
<ul>
<li>Heightmap-only chunk (flat terrain): 2-4 KB compressed</li>
<li>Heightmap + vegetation: 4-8 KB</li>
<li>Heightmap + volumetric + vegetation (complex chunk): 20-100 KB</li>
<li>5x5 full-detail neighborhood: 50-500 KB total</li>
</ul>
<h3>Progressive Chunk Loading</h3>
<p>Chunks load in priority order based on distance, direction of movement, and data type:</p>
<p><strong>Priority 1 (immediate, &lt;100ms):</strong> Heightmap geometry for chunks the player is about to enter. The terrain surface appears first. Even at the lowest resolution (17x17 per chunk), the ground is there.</p>
<p><strong>Priority 2 (fast, &lt;300ms):</strong> Splat maps and terrain textures. The ground gets color.</p>
<p><strong>Priority 3 (streaming, &lt;1s):</strong> Full-resolution heightmap upgrade. Vegetation density maps. GPU instancing generates trees and grass.</p>
<p><strong>Priority 4 (background, &lt;3s):</strong> Volumetric SDF data for chunks with caves/overhangs. Marching cubes generates the mesh in a Web Worker, transfers the buffer to the main thread.</p>
<p><strong>Priority 5 (lazy, &lt;10s):</strong> Creator-placed objects. High-resolution textures for structures. Detail objects like flowers, small rocks, debris.</p>
<h3>Predictive Pre-fetching</h3>
<p>Don't wait for the player to enter a chunk before loading it. Predict where they're going based on velocity and load ahead:</p>
<ul>
<li><strong>Walking speed (5 km/h):</strong> Pre-fetch 2 chunks ahead (128m). At typical broadband latency, this is 200-400ms of lead time.</li>
<li><strong>Running/riding (15 km/h):</strong> Pre-fetch 4 chunks ahead. The load ring shifts with velocity direction.</li>
<li><strong>Flying/fast travel:</strong> Pause rendering during the transition. Stream the destination chunks at highest priority. Resume rendering when enough data exists for a first frame.</li>
</ul>
<p>The pre-fetch system tracks which chunks are in the cache, which are in-flight (requested but not yet arrived), and which are needed. A priority queue sorts pending requests by urgency. Cancel requests for chunks the player has moved away from.</p>
<h3>Memory Budget and Eviction</h3>
<p>A browser tab gets 2-4 GB on desktop. The terrain system needs to live within a fraction of that (the rest is for rendering, physics, networking, and the JavaScript heap).</p>
<p><strong>Target budget: 256 MB for all terrain data.</strong></p>
<p>At our typical chunk sizes:</p>
<ul>
<li>Full-detail cached chunks: ~100 (10x10 neighborhood) at 5-100 KB each = 5-10 MB for raw data</li>
<li>GPU terrain geometry: ~50 MB (vertex buffers, index buffers for visible terrain)</li>
<li>Terrain textures: ~100 MB (KTX2 compressed, atlas-packed)</li>
<li>Vegetation instance buffers: ~50 MB (positions, rotations, scales for GPU instancing)</li>
<li>SDF volumes and cached marching cubes meshes: ~50 MB</li>
</ul>
<p>Chunks beyond the visible range are evicted from GPU memory first (textures, vertex buffers), then from CPU cache. The raw heightmap data is the last to go because it's the cheapest to keep and the most important to have when the player turns around.</p>
<h2>Biome Transitions and Anti-Tiling</h2>
<h3>Smooth Biome Boundaries</h3>
<p>Real landscapes don't have hard edges between biomes. A forest doesn't stop at a line and become desert. There's a gradient: dense forest thins into scattered trees, then scrubland, then sparse desert vegetation. Getting this right makes the world feel continuous rather than tiled.</p>
<p><strong>AutoBiomes</strong> (Kötter et al., <a href="https://cgvr.cs.uni-bremen.de/papers/cgi20/AutoBiomes.pdf">Paper</a>) combines procedural terrain generation with simplified climate simulation. Temperature, humidity, and elevation determine biome type at each point. Between biomes, material weights and vegetation density interpolate over a transition zone (typically 50-100 meters wide). The transition width varies by biome pair: forest-to-grassland is wide and gradual, cliff-to-water is narrow and abrupt.</p>
<p>For a creator world, biome assignment runs on a coarse grid (one biome sample per 16x16 meter area). The terrain shader reads the biome values for the current fragment and its neighbors, interpolates material weights in the transition zone, and blends textures accordingly. Vegetation scattering uses the same interpolated density values, so tree density fades gradually at the forest edge.</p>
<p>Creator control: let creators paint biome overrides on their plots. The system generates default biomes from terrain properties, but creators can override them. Paint &quot;swamp&quot; on a low-lying area and the material shifts to murky water, moss, and dead trees. The biome paint map is a per-chunk 16x16 grid of biome IDs (256 bytes) that overrides the procedural assignment.</p>
<h3>Hex-Tiling: Eliminating Texture Repetition</h3>
<p>The most common visual artifact in terrain rendering is texture repetition. A 1-meter grass texture tiled across a 100-meter meadow produces visible grid patterns. Two techniques fix this:</p>
<p><strong>Hex-tiling</strong> (Mikkelsen, <a href="https://github.com/mmikk/hextile-demo">Demo</a>) replaces the square tiling grid with a hexagonal one. Each hexagonal tile samples the texture at a random offset and rotation. The hexagonal boundaries are blended to hide seams. The result is a surface that looks uniformly random rather than tiled. Cost: about 3 extra texture samples per fragment. The technique is widely used in production games and runs in any fragment shader.</p>
<p><strong>Stochastic texture filtering</strong> (Pharr et al., NVIDIA, 2024, <a href="https://research.nvidia.com/labs/rtr/publication/pharr2024stochtex/">Paper</a>) applies filtering after shading rather than before, using stochastic sampling. The error from stochastic sampling is minimal and handled well by spatiotemporal denoising. This produces more accurate filtered results and works with compressed/sparse textures. For terrain, it eliminates both tiling artifacts and the filtering artifacts that hex-tiling can sometimes introduce at transitions.</p>
<p>For a browser world, hex-tiling is the practical choice (it works in any shader). Stochastic filtering requires more infrastructure but produces better results if temporal denoising is available (which it would be in a WebGPU path with TAA).</p>
<h2>Terrain Material System</h2>
<h3>Triplanar Mapping</h3>
<p>Standard UV-mapped textures stretch horribly on steep slopes because the UV coordinates compress. Triplanar mapping projects textures along all three axes (X, Y, Z) and blends based on the surface normal:</p>
<pre><code class="language-glsl">vec3 blending = abs(normal);
blending = normalize(max(blending, 0.00001));
blending /= (blending.x + blending.y + blending.z);

vec4 xaxis = texture(material, worldPos.yz * scale);
vec4 yaxis = texture(material, worldPos.xz * scale);
vec4 zaxis = texture(material, worldPos.xy * scale);

vec4 color = xaxis * blending.x + yaxis * blending.y + zaxis * blending.z;
</code></pre>
<p>Cliff faces get the X or Z projection (no stretching). Flat ground gets the Y projection. The blending is smooth and automatic. No UV unwrapping required.</p>
<p>Babylon.js has a built-in <a href="https://doc.babylonjs.com/toolsAndResources/assetLibraries/materialsLibrary/triPlanarMat">TriPlanar Material</a>. Three.js requires a custom shader, but the implementation is about 30 lines of GLSL.</p>
<p>For PBR terrain, apply triplanar mapping to all channels: albedo, normal, roughness, and ambient occlusion. The same blending weights apply to each channel.</p>
<h3>Slope and Altitude-Based Material Assignment</h3>
<p>Rather than hand-painting splat maps, assign materials procedurally based on terrain properties:</p>
<pre><code class="language-glsl">float slope = acos(dot(normal, vec3(0, 1, 0)));
float altitude = worldPos.y;

float grassWeight = smoothstep(0.3, 0.0, slope) * smoothstep(2000.0, 1500.0, altitude);
float rockWeight = smoothstep(0.2, 0.5, slope);
float snowWeight = smoothstep(2500.0, 3000.0, altitude) * smoothstep(0.4, 0.1, slope);
float sandWeight = smoothstep(5.0, 0.0, altitude) * smoothstep(0.15, 0.0, slope);
</code></pre>
<p>Flat ground at low altitude gets grass. Steep slopes get rock. High altitude gets snow (but only on surfaces flat enough for snow to accumulate). Near sea level gets sand. The transitions are smooth and physically motivated.</p>
<p>For a creator world, expose the altitude thresholds and blend zones as paintable parameters per chunk. Creators can move the treeline up or down, extend the snow coverage, or turn a grassy hill into a sandy desert by adjusting the material rules for their plot.</p>
<h3>GPU-Friendly Laplacian Texture Blending</h3>
<p>Standard texture blending (linear interpolation between layers) produces either visible seams or washed-out, low-contrast results. Laplacian pyramid blending solves this but traditionally requires expensive precomputation.</p>
<p>Wronski (NVIDIA, 2025, <a href="https://jcgt.org/published/0014/01/02/">JCGT</a>) presents a GPU-friendly variant that works in real-time shaders with no precomputation and no extra memory. The technique uses the standard mipmap chain as an approximation of the Laplacian pyramid: sample the texture at both the current mip level and a coarser level, compute the difference (the Laplacian), and blend the Laplacian contributions from each layer.</p>
<p>The result preserves sharp local features (individual grass blades, rock cracks) while blending smoothly at larger scales. The cost is a few extra texture taps per fragment. For terrain where you're blending 4+ material layers per pixel, this produces noticeably better results than linear blending, especially at the transitions between grass, rock, and sand.</p>
<h3>Phasor Noise for Erosion Detail</h3>
<p>Standard terrain often looks flat at close range because the erosion simulation operates at the heightmap resolution (1-meter grid). Real terrain has fine-scale erosion patterns (rills, gullies, weathering cracks) at centimeter scale.</p>
<p>Grenier et al. (2024, <a href="https://diglib.eg.org/bitstream/handle/10.1111/cgf14992/v43i1_05_cgf14992.pdf">CGF</a>) use phasor noise to add terrain micro-detail in real time. Phasor noise synthesizes structured patterns by defining a stochastic phase field fed into periodic functions. Applied to terrain, it creates spatially varying erosion patterns that:</p>
<ul>
<li>Cascade narrow rills into larger gullies across scales</li>
<li>Automatically align with the terrain slope (erosion patterns follow the fall line)</li>
<li>Achieve up to 32x amplification (adding detail at 32x the heightmap resolution)</li>
<li>Run entirely in a fragment shader at interactive frame rates</li>
</ul>
<p>For a browser world, phasor noise runs in the terrain shader as a detail layer. The heightmap provides the large-scale shape. Phasor noise adds convincing micro-erosion in the fragment shader without increasing geometry complexity. The parameters (pattern frequency, amplitude, orientation) can vary per biome: deep rills on bare rock, gentle ripples on sand dunes, rough bark-like texture on dried mud.</p>
<h3>Virtual Texturing for Terrain</h3>
<p>At large scales, the terrain texture atlas becomes unwieldy. A 4 km x 4 km world at 1 texel per centimeter needs a 400,000 x 400,000 pixel texture. Obviously impossible.</p>
<p>Virtual texturing (also called megatexture, from id Software's Rage) solves this by treating the terrain texture as a paged structure. The full texture exists conceptually but only the tiles visible on screen are loaded into GPU memory.</p>
<p>The pipeline:</p>
<ol>
<li><strong>Feedback pass:</strong> Render the terrain with a shader that outputs which texture tile each pixel needs (tile ID and mip level). Read this back to the CPU (or process with a compute shader).</li>
<li><strong>Tile loading:</strong> Load requested tiles from the CDN or generate them procedurally from the splat map data.</li>
<li><strong>Indirection texture:</strong> A small texture maps virtual tile coordinates to physical tile coordinates in a texture atlas.</li>
<li><strong>Render pass:</strong> The terrain shader looks up the indirection texture to find the correct physical tile, then samples the material texture from the atlas.</li>
</ol>
<p>WebGPU's compute shaders can handle the feedback analysis and page table management entirely on the GPU. The CPU only manages tile I/O.</p>
<p>The result: terrain with unique texturing at any resolution without a texture memory explosion. Tiles far from the camera load at low resolution. Close-up tiles load at high resolution. The total memory usage stays within a fixed budget (typically 128-256 MB of texture atlas).</p>
<h2>Dynamic Terrain Effects</h2>
<h3>Puddles and Wetness</h3>
<p>Rain doesn't just fall. It accumulates. In depressions, it forms puddles. On surfaces, it creates a wet sheen. On steep slopes, it runs off. Simulating this makes weather feel connected to the terrain rather than a purely visual overlay.</p>
<p>The shader-based approach doesn't simulate fluid dynamics. It uses the terrain heightmap to determine where water pools:</p>
<pre><code class="language-glsl">float concavity = heightCenter * 4.0 - heightLeft - heightRight - heightUp - heightDown;
float puddleDepth = max(0.0, concavity * rainIntensity - evaporationRate * timeSinceRain);
float wetness = smoothstep(0.0, 0.02, puddleDepth);

vec3 wetColor = baseColor * 0.7;
float wetRoughness = baseRoughness * 0.3;
vec3 finalColor = mix(baseColor, wetColor, wetness);
float finalRoughness = mix(baseRoughness, wetRoughness, wetness);
</code></pre>
<p>Concave areas (negative Laplacian of the heightmap) collect water. The deeper the concavity, the larger the puddle. Wet surfaces darken and become more reflective (lower roughness). The effect fades over time after rain stops.</p>
<p>For full puddle reflections, add a planar reflection pass at the puddle surface. Or use screen-space reflections (SSR) which are cheaper and already available in both Three.js and Babylon.js post-processing stacks.</p>
<p>Raindrops on puddle surfaces use a simple 2D wave equation in a feedback texture (Saurel, 2026, <a href="https://www.4rknova.com/blog/2026/02/08/raindrops-on-puddle">Blog</a>). Each raindrop creates a ripple that propagates outward and decays. The wave texture modulates the puddle normal map, creating convincing ripple patterns at 60fps.</p>
<h3>Footprints and Terrain Deformation</h3>
<p>When a player walks on soft terrain (sand, snow, mud), footprints add to the sense of physical presence. The technique: maintain a small deformation texture per chunk (64x64 pixels = 4 KB) that stores height offsets. When a character steps on soft terrain, stamp a footprint shape into the deformation texture.</p>
<p>The terrain vertex shader reads the deformation texture and subtracts the offset from the height. The terrain fragment shader darkens the footprint area (compressed soil is darker) and increases roughness (disturbed surface).</p>
<p>Footprints fade over time (snow fills in, rain washes out mud prints) by gradually zeroing the deformation texture. The fade rate depends on weather: fast in rain, slow in dry conditions.</p>
<p>For a multiplayer world, footprint data is ephemeral and local. Each client generates footprints for visible players. The deformation texture doesn't need to sync across clients (everyone sees their own version of transient footprints). This avoids the networking cost of broadcasting every step.</p>
<h3>Procedural Sky and Day/Night Cycle</h3>
<p>The sky is the largest visible surface in any open world. It sets the mood for the entire terrain.</p>
<p>Three.js has a <a href="https://discourse.threejs.org/t/complete-sky-system-for-three-js-skybox-sun-moon-day-night-cycle-clouds-stars-lensflares/88311">complete sky system</a> that includes procedural sun/moon, day/night cycle, clouds, stars, and lens flares. The built-in Three.js <code>Sky</code> example (also available in <a href="https://threejs.org/examples/webgpu_sky.html">WebGPU</a>) implements Preetham's analytical sky model.</p>
<p>For more physically accurate results, <a href="https://jolifantobambla.github.io/webgpu-sky-atmosphere/">webgpu-sky-atmosphere</a> implements Hillaire's atmosphere model as a WebGPU post-process. It supports multiple scattering phase functions and produces correct aerial perspective (distant terrain appears hazier), sun/sunset colors, and sky gradients from first principles.</p>
<p><a href="https://dev.to/the_lone_engineer/terrainview7-full-scale-planet-rendering-in-webgpu-emscripten-now-with-precomputed-atmospheric-18ik">TerrainView7</a> demonstrates full-scale planet rendering in WebGPU with precomputed atmospheric scattering, proving that physically accurate atmosphere rendering runs in a browser.</p>
<p>For a creator world, the sky parameters (sun position, cloud coverage, haze density) are synchronized across all clients from the server's world clock. The sky shader runs locally on each client, producing consistent lighting across all players.</p>
<h3>Terrain Lighting: Indirect Illumination</h3>
<p>Direct sunlight is handled by shadow maps. But the color and brightness of terrain in shadow (ambient/indirect light) is equally important for visual quality. Pure black shadows look wrong. Shadows should be tinted by sky color (blue on a clear day, grey on an overcast day).</p>
<p>For a browser world, the practical approach:</p>
<p><strong>Screen-space indirect lighting</strong> with visibility bitmask (Jimenez et al., 2023, <a href="https://export.arxiv.org/pdf/2301.11376v2.pdf">Paper</a>) improves on standard SSAO by tracking 32 directional visibility sectors per pixel. This captures not just how occluded a point is, but the directionality of the occlusion. Thin surfaces correctly allow light through from the other side. The result is indirect illumination that reacts to nearby geometry without global illumination infrastructure.</p>
<p>The cost is comparable to SSAO (1-2ms). The visual improvement is significant: terrain in canyons picks up bounce light from the canyon walls. The undersides of overhangs are illuminated by ground reflection. The effect combines with the atmospheric scattering from the sky shader to produce physically motivated ambient lighting.</p>
<h2>Terrain Physics Integration</h2>
<h3>Rapier Heightfield Colliders</h3>
<p>Rapier's WASM physics engine provides native heightfield colliders optimized for terrain. Creating a terrain collider is straightforward:</p>
<pre><code class="language-typescript">const heights = new Float32Array(65 * 65);
// Fill with heightmap data...
const groundCollider = RAPIER.ColliderDesc.heightfield(
  64, 64, heights, new RAPIER.Vector3(64.0, 100.0, 64.0)
);
world.createCollider(groundCollider);
</code></pre>
<p>The heightfield collider uses the structured grid for efficient broadphase queries. Raycasting against a heightfield is O(log n) rather than O(n) for a triangle mesh. For a 65x65 chunk, collision queries resolve in microseconds.</p>
<p>For chunks with volumetric terrain (SDF overlays), generate a triangle mesh from the marching cubes output and use a trimesh collider. This is more expensive than a heightfield collider but handles arbitrary geometry. Only generate trimesh colliders for the 3-5 chunks closest to the player. Distant chunks don't need physics.</p>
<p><strong>Performance:</strong> Rapier's heightfield collider for a 65x65 chunk adds approximately 0.1ms per physics step for character controller queries. 5 active chunks with heightfield colliders: 0.5ms. One trimesh collider for a volumetric chunk: 0.2-0.5ms. Total terrain physics budget: under 1ms, well within the 2-3ms physics budget for the entire world.</p>
<h3>Terrain-Aware Character Controller</h3>
<p>The character controller needs to respond to terrain properties:</p>
<ul>
<li><strong>Slope limiting:</strong> The character can walk on slopes up to 45 degrees. Steeper slopes cause sliding. This uses the terrain normal at the character's position (cheaply computed from the heightmap gradient).</li>
<li><strong>Surface material response:</strong> Walking on rock produces different footstep sounds and movement speed than walking on sand or mud. The terrain's splat map provides the surface material at any point.</li>
<li><strong>Step climbing:</strong> The character can step up ledges up to 0.5 meters. Rapier's <code>KinematicCharacterController</code> handles this automatically with configurable step height.</li>
</ul>
<h2>Interactive Terrain Editing in the Browser</h2>
<p>For a creator world, terrain isn't just generated. It's sculpted, modified, and reshaped by players. The editing tools need to be responsive (instant visual feedback) and networked (other players see changes within seconds).</p>
<h3>WebGPU SDF Editor</h3>
<p>Reinder Nijhoff's <a href="https://reindernijhoff.net/2026/01/webgpu-sdf-editor-real-time-signed-distance-field-modeling/">WebGPU SDF Editor</a> demonstrates that full-featured SDF modeling works in the browser today. The editor supports:</p>
<ul>
<li><strong>Six primitive shapes</strong> (sphere, box, cone, cylinder, capsule, torus) with position, rotation, and scale</li>
<li><strong>Boolean operations</strong> (union, subtraction, intersection) with smooth blending and configurable blend radii</li>
<li><strong>Hierarchical scene graphs</strong> with groups and nested operations</li>
<li><strong>Real-time rendering</strong> using multiple GPU compute shader stages, octree-based space partitioning across 16,384 grid cells, and surface extraction via marching cubes or surface nets</li>
<li><strong>Temporal anti-aliasing and ambient occlusion</strong> via shadow maps</li>
</ul>
<p>Each primitive is stored as 28 floats (112 bytes) in a single GPU buffer. This compact representation means a complex terrain edit (dozens of SDF primitives defining a cave entrance, an arch, or a carved cliff face) weighs under 5 KB and syncs to other players instantly.</p>
<p>For a creator world, the SDF editing workflow looks like:</p>
<ol>
<li>Creator selects a sculpting tool (add sphere, subtract box, smooth blend)</li>
<li>Click/drag in the world to place and size the SDF primitive</li>
<li>The client immediately runs marching cubes on the modified SDF to update the local mesh (feedback in &lt;16ms)</li>
<li>The SDF edit (primitive type + transform + blend mode, ~100 bytes) is sent to the server</li>
<li>The server validates the edit (within the creator's plot, doesn't intersect protected areas) and broadcasts to nearby players</li>
<li>Other players' clients apply the SDF edit and regenerate their local mesh</li>
</ol>
<p>The total round-trip for an edit to become visible to others: 100-300ms depending on network latency. The creator sees their edit instantly because it's applied locally before server confirmation.</p>
<h3>Brush-Based Heightmap Editing</h3>
<p>For the heightmap layer (the 90% of terrain that doesn't need volumetric features), a simpler editing model works. The creator paints height modifications with a brush:</p>
<ul>
<li><strong>Raise/lower:</strong> Add or subtract height in a radius with falloff</li>
<li><strong>Smooth:</strong> Average heights in a radius, removing sharp features</li>
<li><strong>Flatten:</strong> Set all heights in a radius to a target value</li>
<li><strong>Erosion brush:</strong> Apply a few steps of hydraulic erosion locally in the brush radius</li>
</ul>
<p>The heightmap edit is a delta: a small patch of height changes that overlays the base terrain. The delta patch is tiny (a 32x32 grid of 16-bit height offsets = 2 KB) and syncs to other players as a single message. Multiple delta patches accumulate per chunk and are periodically merged server-side into the chunk's persistent heightmap.</p>
<h3>Collaborative Editing Constraints</h3>
<p>When multiple creators edit the same chunk simultaneously, the system needs rules:</p>
<ul>
<li><strong>Spatial locking:</strong> Only one creator can edit a given 8x8 meter sub-region at a time. The lock is acquired when the creator starts an edit stroke and released when they lift the brush. Locks timeout after 10 seconds of inactivity.</li>
<li><strong>Non-overlapping edits:</strong> If two creators edit different parts of the same chunk, both edits apply without conflict (they modify different heightmap cells or SDF regions).</li>
<li><strong>Overlapping edits:</strong> If two creators edit the same location, the server serializes the edits in arrival order. Both clients see the same final result after reconciliation.</li>
</ul>
<p>This is simpler than the full CRDT approach used for placed objects because terrain edits are additive operations on a continuous field (heights, SDF distances) rather than discrete object state.</p>
<h2>Nanite-Style Virtual Geometry in WebGPU</h2>
<p>Unreal Engine 5's Nanite renders billions of triangles by building a cluster DAG (directed acyclic graph) at build time and selecting the right LOD per-cluster at runtime based on screen-space error. The entire pipeline runs on the GPU. This approach has been ported to WebGPU.</p>
<h3>Nanite WebGPU</h3>
<div class="img-embed">
<img src="https://cdn.cinevva.com/blog/nanite-webgpu-scene.png" alt="Nanite WebGPU rendering a complex multi-object scene in a browser using meshlet LOD hierarchy and software rasterizer" />
</div>
<div class="game-caption">Nanite WebGPU rendering a full scene in Chrome using meshlet LOD, software rasterization in WGSL compute shaders, and per-meshlet frustum and occlusion culling. No native plugin — pure WebGPU.</div>
<p><a href="https://scthe.github.io/nanite-webgpu/">Nanite WebGPU</a> by Scthe (1.1k+ GitHub stars) is a complete browser implementation of Nanite's core architecture:</p>
<ul>
<li><strong>Meshlet LOD hierarchy</strong> built offline using meshoptimizer's cluster generation</li>
<li><strong>Software rasterizer</strong> implemented in WGSL compute shaders (working within WebGPU's constraints where hardware rasterization can't do per-cluster draws efficiently)</li>
<li><strong>Per-instance and per-meshlet culling</strong> using frustum and occlusion tests</li>
<li><strong>Billboard impostors</strong> for extremely distant objects</li>
<li><strong>Texture and per-vertex normal support</strong></li>
</ul>
<p>The pipeline: meshes are split into clusters of ~128 triangles. Neighboring clusters are grouped, and each group is simplified (using meshoptimizer) while preserving shared boundaries. This recurses until the entire mesh collapses to a single cluster. At runtime, a compute shader walks the DAG and selects the coarsest cluster per-group that produces less than 1 pixel of error at the current screen resolution.</p>
<p><strong>THREE-Nanite</strong> is an emerging Three.js implementation achieving 20-40fps on integrated graphics hardware while handling hundreds of thousands of triangles. It demonstrates that Nanite-style rendering is viable even on low-end browser hardware.</p>
<h3>meshoptimizer: The LOD Pipeline Foundation</h3>
<p><a href="https://meshoptimizer.org/">meshoptimizer</a> (by Arseny Kapoulkine) is the library behind most browser-compatible LOD pipelines. Version 1.0 (2025) provides:</p>
<ul>
<li><strong>Mesh simplification</strong> with error metrics (how much the shape changed, used for LOD selection)</li>
<li><strong>Cluster generation</strong> for Nanite-style meshlet hierarchies</li>
<li><strong>Vertex cache optimization</strong> for GPU-friendly triangle ordering</li>
<li><strong>Overdraw optimization</strong> to reduce pixel shader cost</li>
<li><strong>Vertex quantization and compression</strong> for smaller downloads</li>
</ul>
<p>meshoptimizer 1.0 (released December 2025) ships a new single-header <code>clusterlod.h</code> that implements Nanite-style continuous LOD directly. It builds a hierarchy of clusters that are progressively grouped and simplified, usable as-is or as a reference for a custom pipeline. This is the exact cluster-DAG primitive the terrain pipeline needs for SDF/marching-cubes mesh LOD.</p>
<p>For our terrain pipeline, meshoptimizer processes the marching cubes output from SDF terrain into optimized, clustered meshes with LOD hierarchies. The offline processing runs server-side. The browser receives pre-clustered meshes and performs GPU-driven LOD selection at runtime.</p>
<p>The combination of meshoptimizer for LOD generation and WebGPU compute for runtime selection gives browser terrain the same architectural pattern as Nanite, adapted for web constraints.</p>
<h2>Terrain-Aware Level Design</h2>
<p>Terrain isn't just a surface to walk on. Its shape guides player movement, directs attention, and creates the emotional rhythm of exploration. The best open worlds use terrain as a design tool.</p>
<h3>Sightlines and Landmarks</h3>
<p>The Level Design Book's <a href="https://book.leveldesignbook.com/process/blockout/wayfinding">wayfinding chapter</a> documents how terrain elevation controls what players see and where they go. A ridge hides what's beyond it, creating curiosity. A valley funnels movement toward its lowest point. A tall landmark (tower, mountain peak, unusual tree) visible from a distance gives players a goal to walk toward.</p>
<p>For a creator world, this means terrain generation should produce natural wayfinding features. Ridge lines should break sightlines, creating &quot;reveal moments&quot; when a player crests a hill and sees a new area. Valleys should converge toward interesting locations. Elevated points should exist where creators can place landmarks visible from far away.</p>
<h3>Curiosity-Driven Exploration</h3>
<p>Research from Purdue University (<a href="https://web.ics.purdue.edu/~cmousas/papers/conf22-FDG-SpatialExploration.pdf">Paper</a>) identifies four spatial exploration triggers:</p>
<ol>
<li><strong>Reaching extreme points</strong> (highest peak, furthest edge, deepest cave). Terrain should have clear extremes that reward reaching them.</li>
<li><strong>Resolving visual obstructions</strong> (what's behind that cliff? inside that cave?). Terrain that blocks the view motivates movement to find what's hidden.</li>
<li><strong>Out-of-place objects</strong> (a structure in the wilderness, a light in the darkness). Creator-placed objects against natural terrain create contrast that draws attention.</li>
<li><strong>Understanding spatial connections</strong> (how does this valley connect to that coast?). Terrain that creates legible geography encourages map-reading and route-planning.</li>
</ol>
<h3>PlotMap: AI-Assisted POI Placement</h3>
<p>PlotMap (<a href="https://arxiv.org/html/2309.15242v4">arXiv:2309.15242</a>) automates point-of-interest layout by taking narrative requirements (this quest needs a village near a river, that quest needs a ruin on a hilltop) and finding terrain locations that satisfy the spatial constraints. For a creator world, a similar system could suggest where to place structures based on terrain properties: &quot;this hilltop has good sightlines for a watchtower,&quot; &quot;this sheltered valley would suit a village.&quot;</p>
<h2>Flowing Water and Waterfalls</h2>
<p>Rivers and waterfalls are terrain features that combine visual appeal with ambient sound and gameplay affordance (water as a barrier, a resource, or a path).</p>
<h3>River Rendering</h3>
<p>Rivers in open worlds are typically rendered as textured strips that follow the terrain surface. The strip mesh is generated from the river spline (stored as control points) and projected onto the terrain heightmap. The river shader applies:</p>
<ul>
<li><strong>Flow-aligned UVs</strong> that scroll in the river's direction, creating the appearance of flowing water</li>
<li><strong>Foam at edges</strong> where the river meets the bank (depth-based, similar to shoreline foam)</li>
<li><strong>Speed variation</strong> based on channel width (narrow sections flow faster, wide sections slow down)</li>
<li><strong>Transparency with depth-based color</strong> (shallow is clear, deep is dark)</li>
</ul>
<p>For a browser world, river data is compact: a spline (20-50 control points per river segment, ~400 bytes) plus width and flow speed parameters. The client generates the river mesh locally by projecting the spline onto its terrain surface.</p>
<h3>Waterfall Rendering</h3>
<p>Where a river drops off a cliff face, a waterfall particle system replaces the flat river surface. The hybrid approach from real-time water simulation research (<a href="https://diglib.eg.org/items/d0320015-4b07-416b-8f41-047485c9f7f3">EG</a>): regions that can't be represented by a height field (waterfalls, splashes) convert to spray, splash, and foam particles that exchange mass and momentum with the fluid simulation.</p>
<p>For a browser world, waterfalls are simpler: detect where the river spline crosses a terrain height discontinuity, spawn a particle system at that point with downward velocity, and add a foam splash at the base. The particles are GPU-instanced quads with scrolling alpha textures. 500 particles per waterfall, one draw call. The sound of falling water uses the Web Audio API with distance attenuation.</p>
<h2>Impostors for Distant Terrain Features</h2>
<p>Trees, rocks, buildings, and other terrain features become tiny at distance. Rendering them as full 3D meshes wastes GPU cycles. Impostors replace distant objects with pre-rendered flat images that face the camera.</p>
<h3>Octahedral Impostor Atlases</h3>
<p>An octahedral impostor captures the appearance of a 3D object from multiple viewing angles and stores them in a texture atlas. At runtime, the shader samples the atlas based on the current view direction, interpolating between the two closest captured angles.</p>
<p>A hemi-octahedral atlas (views from the upper hemisphere only, since you rarely look at trees from below) provides twice the angular resolution of a full octahedral atlas with the same texture size. Unity's impostor system reports frame time dropping from 111ms to 5.78ms when switching 1,600 tree instances from real meshes (140K triangles each) to impostors.</p>
<p>For a browser world, the impostor pipeline:</p>
<ol>
<li>Server-side: render each asset from 16-32 viewing angles, capturing color, normal, and depth</li>
<li>Pack into an atlas texture (one atlas per asset, ~256x256 pixels, &lt;100 KB as KTX2)</li>
<li>At runtime: instances beyond the impostor distance (typically 100-200m) render as billboards sampling the atlas</li>
<li>Crossfade between mesh and impostor over a 20m transition zone to hide the switch</li>
</ol>
<h3>Billboard Splatting (BBSplat)</h3>
<p>Billboard Splatting (2024, <a href="https://arxiv.org/abs/2411.08508">arXiv:2411.08508</a>) takes this further by using learnable textured planar primitives. Instead of pre-rendered views, BBSplat optimizes billboard positions and textures to best represent the 3D object from any angle. This achieves up to 17x compression compared to 3D Gaussian Splatting while maintaining view-dependent appearance. For distant terrain features in a browser world, BBSplat could reduce the per-asset impostor storage while improving angular coverage.</p>
<h2>Professional Terrain Tools and What They Teach</h2>
<p>Before building a terrain pipeline from scratch, it's worth understanding what professional offline tools do. These tools represent decades of terrain generation research distilled into production workflows.</p>
<p><strong>Gaea</strong> (QuadSpinner) is GPU-accelerated and provides near-instant feedback on changes. It supports tiled builds up to 2 million pixels per side, automatic LOD mesh export, and a node-based graph where each node is a physical process (erosion, sedimentation, uplift, thermal weathering). Gaea's erosion nodes produce terrain that looks hand-sculpted because they model specific physical processes rather than generic noise. The key insight: Gaea doesn't use a single erosion algorithm. It offers separate nodes for fluvial erosion (river carving), thermal erosion (cliff crumbling), coastal erosion (wave action), and wind erosion (sand dune formation). Combining them in a graph produces terrain with the geological character of a specific climate.</p>
<p><strong>World Machine</strong> takes a similar graph approach with a focus on terrain macro-structure. Its &quot;layout generator&quot; lets artists sketch the rough shape of terrain features (mountain here, valley there, coastline along this edge) and the system fills in physically plausible detail. This is exactly the creator workflow we want: sketch intent, get geology.</p>
<p><strong>World Creator</strong> differentiates itself with real-time preview during editing and built-in river generation that analyzes the terrain and auto-calculates flow paths based on drainage analysis.</p>
<p><strong>What we take from these tools:</strong> The node-graph approach to combining physical processes is more powerful than any single algorithm. Our server-side generation pipeline should support chaining: noise base &gt; tectonic uplift &gt; hydraulic erosion &gt; thermal weathering &gt; coastal erosion &gt; vegetation. Creators control parameters at each stage. The pipeline runs server-side in seconds and produces heightmaps, splat maps, and vegetation density maps.</p>
<h3>SoilMachine: Open-Source Geomorphology</h3>
<div class="img-embed">
<img src="https://cdn.cinevva.com/blog/soilmachine-banner.png" alt="SoilMachine: open-source modular geomorphology simulator showing terrain with coupled hydraulic, thermal, and wind erosion" />
</div>
<div class="game-caption">SoilMachine couples hydraulic, thermal, and wind erosion in a single layered terrain model. The multi-layer data structure supports features that heightmaps can't represent: caves, overhangs, buttes, and groundwater distributions.</div>
<p><a href="https://github.com/weigert/soilmachine">SoilMachine</a> is an open-source modular geomorphology simulator that couples multiple erosion systems (hydraulic, thermal, wind) with sediment transport and deposition. Built in C++ with GPU compute, it provides a reference implementation of the multi-process erosion approach that professional tools use.</p>
<p>The related <a href="https://github.com/erosiv/soillib">soillib</a> (C++20, MIT license) provides the underlying geomorphology simulation primitives as a reusable library. And <a href="https://github.com/ger0/hydro-gen">hydro-gen</a> implements both grid-based (shallow water) and particle-based (raindrop) hydraulic erosion in OpenGL compute shaders with real-time parameter adjustment.</p>
<p>These open-source tools could be adapted for our server-side generation pipeline. The compute shader implementations translate directly to WebGPU if we ever want to run erosion in the browser for real-time creator feedback.</p>
<h2>Multi-Layer Terrain Materials</h2>
<p>Real terrain isn't a single surface. It's layers: bedrock at the bottom, soil on top, snow or sand accumulating on surfaces. Dynamic layering changes the visual character of terrain with seasons, weather, and creator actions.</p>
<h3>Layered Heightfield Representation</h3>
<p>Instead of a single heightmap, use multiple height layers per grid cell:</p>
<pre><code>Cell {
  bedrock_height: f16,    // permanent rock surface
  soil_height: f16,       // accumulated soil/sediment above bedrock
  snow_height: f16,       // dynamic snow accumulation
  water_height: f16       // standing water depth
}
</code></pre>
<p>Total: 8 bytes per cell (vs 2 bytes for a single heightmap). For a 65x65 chunk, that's 34 KB before compression. Still compact.</p>
<p>The visual surface is <code>bedrock + soil + snow</code>. The terrain shader reads all layers and blends materials accordingly: where soil is thin, rock shows through. Where snow has accumulated, the surface is white. Where water sits, you get puddles or lakes.</p>
<h3>Dynamic Accumulation</h3>
<p>Snow accumulates on flat, upward-facing surfaces during snowfall. The accumulation rate depends on surface normal (steep slopes don't hold snow), temperature (altitude-dependent), and shelter (areas below overhangs stay clear). A compute shader pass updates the snow layer once per weather tick (every few seconds).</p>
<p>Sand accumulation works similarly with wind-driven deposition. Wind carries particles from exposed surfaces and deposits them behind obstacles and in sheltered areas.</p>
<p>For a creator world, dynamic accumulation means the terrain looks different in different weather. Snow covers the world during a blizzard and melts during a clear spell. Rain fills depressions with water. This makes the world feel responsive without creators doing anything.</p>
<h3>Multi-Layered Erosion</h3>
<p>The 2024 paper &quot;3D Real-Time Hydraulic Erosion Simulation using Multi-Layered Heightmaps&quot; (<a href="https://diglib.eg.org/items/deefa865-6a25-4463-adcd-d8de2b37507e">EG</a>) extends erosion to work across layers. Water erodes soil faster than bedrock. Sediment deposits as a new soil layer. The simulation maintains layer integrity (bedrock stays below soil) while enabling complex features like overhangs (where bedrock overhangs eroded soil below).</p>
<p>Performance: approximately 6ms per simulation step on an RTX 3070 at 2048x2048 resolution. This is fast enough for server-side generation but too slow for per-frame browser simulation. The layered representation works for static terrain generation, and the dynamic snow/water accumulation runs as a cheaper per-frame shader.</p>
<h2>Grass, Rock, and Detail Rendering</h2>
<p>The landscape needs more than terrain geometry and textures. It needs grass blades that sway in the wind, rocks scattered on slopes, and small details like flowers, pebbles, and fallen branches that make close-up views look natural.</p>
<h3>GPU-Instanced Grass</h3>
<div class="video-embed">
<iframe src="https://www.youtube.com/embed/pzkcM1rfKZw" title="Rendering 1 Million Blades Of Grass In Unity" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<div class="game-caption">One million grass blades rendered with GPU instancing in a single draw call. The same technique works in Three.js and WebGPU: per-instance transforms, vertex-shader wind animation, and a density map to scatter blades from terrain data.</div>
<p>Browser-based grass rendering is well-proven in Three.js and works through GPU instancing. The approach from <a href="https://al-ro.github.io/projects/grass/">al-ro's grass demo</a> renders 100,000 grass blades with a single draw call using <code>InstancedBufferGeometry</code>.</p>
<p>Each grass blade is a simple quad (4-8 triangles). Per-instance attributes define position, height, bend direction, color variation, and wind phase. The vertex shader:</p>
<ol>
<li>Reads the per-instance transform</li>
<li>Applies wind animation using sine waves keyed to world position and time</li>
<li>Bends the blade based on wind strength (more bend at the tip, none at the base)</li>
<li>Applies color gradient (darker at the base, lighter at the tip for subsurface scattering)</li>
</ol>
<p><strong>Codrops' fluffy grass tutorial</strong> (2025, <a href="https://tympanus.net/codrops/2025/02/04/how-to-make-the-fluffiest-grass-with-three-js/">Tutorial</a>) demonstrates a shell texturing approach: render the ground plane multiple times at increasing offsets, with each layer sampling a noise texture to create the appearance of dense grass volume. This is cheaper than individual blade instancing for very dense coverage but less realistic at close range.</p>
<p>For a creator world, grass density comes from the vegetation density map per chunk. The GPU scatters blade positions from the density map at render time. No per-blade data is stored or streamed. The density map is a 32x32 grid per chunk (1 KB), and the GPU generates thousands of blade instances from it.</p>
<h3>Procedural Rock and Cliff Detail</h3>
<p>Cliff faces and rocky terrain need geometric detail that the base heightmap or SDF can't provide at reasonable resolution. Two approaches complement each other:</p>
<p><strong>GPU mesh shader resurfacing</strong> (Raad et al., Eurographics 2025, <a href="https://hal.science/hal-05176868v1/file/Paper_Resurfacing_2024.pdf">Paper</a>) generates procedural geometry at render time from a coarse control mesh. The mesh shader reads a base terrain surface and adds displacement, cracks, and protrusions without storing the detail geometry in memory. This reduces VRAM usage and enables dynamic LOD.</p>
<p><strong>Instanced rock scattering</strong> places pre-made rock meshes on steep slopes and cliff edges using GPU instancing. A compute shader reads the terrain normal and slope, and scatters rock instances where the slope exceeds a threshold. Each instance is a small mesh (200-500 triangles) with random rotation and scale. 10,000 scattered rocks add negligible rendering cost with instancing.</p>
<h3>Roads and Paths</h3>
<p>Creator-placed roads, trails, and paths need to conform to terrain and modify the surface material (replacing grass with dirt or stone).</p>
<p>The approach used by every major game engine: define the path as a spline (a series of control points). Project the spline onto the terrain surface. Generate a strip mesh that follows the spline and sits slightly above the terrain. Apply a road texture to the strip. In the terrain shader, blend the terrain material toward the road material within the spline's width using a projected texture or decal.</p>
<p>For a browser world, a creator draws a path on the terrain. The client generates control points and sends them to the server (a few dozen vec3 values). The server stores the spline. All clients render the road strip locally by projecting the spline onto their terrain mesh. The road data is tiny (path spline points, maybe 200 bytes) but the visual impact is large: paths connecting creator builds make the world feel inhabited.</p>
<h2>Shadows for Terrain</h2>
<p>Terrain shadows are critical for readability (understanding terrain shape) and atmosphere (time-of-day mood). In an open world, the sun casts shadows across the entire visible terrain.</p>
<h3>Cascaded Shadow Maps (CSM)</h3>
<p>CSM splits the view frustum into 3-4 distance ranges (cascades). Each cascade renders a shadow map from the sun's perspective at a resolution appropriate for its distance. Close cascade: high resolution (detailed shadows under trees and buildings). Far cascade: low resolution (broad mountain shadows).</p>
<p>Both Three.js and Babylon.js support CSM. The key optimization for terrain: only render terrain in the shadow map, not individual grass blades or small details. Grass self-shadows using the terrain's shadow map, not its own.</p>
<p><strong>Performance budget:</strong> 3-4 shadow cascades at 1024x1024 each. Rendering terrain into shadow maps costs 0.5-1ms (the terrain geometry is already in GPU memory). Sampling 4 cascades in the terrain shader adds 0.2-0.3ms.</p>
<h3>Terrain Self-Shadowing from Heightmap</h3>
<p>For very large terrain where CSM becomes expensive, pre-compute a horizon map: for each terrain cell, store the maximum elevation angle in 8 compass directions. At render time, compare the sun angle to the horizon map to determine if a point is in shadow. This is how Skyrim handles terrain self-shadows for distant terrain (beyond CSM range).</p>
<p>The horizon map is computed server-side from the heightmap (a few seconds of processing) and streams as a 128x128 per-chunk texture (16 KB compressed). The visual impact is significant: mountain valleys darken realistically even at extreme view distances.</p>
<h2>Terrain Data Compression for Streaming</h2>
<p>The network is the bottleneck for a browser world. Every byte saved in terrain data is a faster load time.</p>
<h3>Heightmap Compression</h3>
<p>Raw 16-bit heightmaps compress well because adjacent cells have similar values. The pipeline:</p>
<ol>
<li><strong>Delta encoding:</strong> Store the difference between each cell and its predicted value (average of neighbors). Delta values are small, clustering near zero.</li>
<li><strong>Quantization:</strong> For distant chunks, reduce precision from 16-bit to 12-bit or 8-bit. At 500 meters away, 8-bit height precision (0.4m resolution on a 100m height range) is indistinguishable from 16-bit.</li>
<li><strong>Entropy coding:</strong> Apply zlib or brotli compression to the delta-encoded stream. Typical compression ratio: 4-8x.</li>
</ol>
<p>Result: a 65x65 chunk at 16-bit goes from 8.4 KB raw to 1-2 KB compressed. At 8-bit reduced precision: 0.5-1 KB.</p>
<h3>Progressive Heightmap Streaming</h3>
<p>Send terrain at low resolution first, then refine. A 17x17 heightmap (the minimum for a 64m chunk with 4m cell spacing) is 578 bytes raw, under 200 bytes compressed. The terrain is visible instantly. Then stream the 33x33 refinement (adds odd-row/column samples). Then the 65x65 full resolution. Each level adds detail without replacing previous data.</p>
<p>This maps to the geometry clipmap LOD rings: distant terrain uses the low-resolution version (17x17), mid-range uses medium (33x33), close-up uses full (65x65). The streaming priority matches the rendering LOD.</p>
<h3>SDF Volume Compression</h3>
<p>Sparse SDF volumes compress dramatically because most voxels are far from the surface (empty space). Options:</p>
<p><strong>Run-length encoding:</strong> Encode runs of identical values (empty voxels). Typical SDF volumes are 95%+ empty, so RLE achieves 10-50x compression.</p>
<p><strong>Sparse octree:</strong> Only store octree nodes that contain surface-crossing voxels. Empty space has no nodes. A 64^3 SDF volume with a single cave tunnel might have only 2,000-5,000 occupied nodes (vs 262,144 total voxels), each stored as 1-2 bytes.</p>
<p><strong>Entropy-driven progressive compression</strong> (2024, <a href="https://inria.hal.science/hal-04630545v1/file/sgp2024.pdf">HAL</a>) applies to 3D spatial data by recursively partitioning space with entropy-optimized planes and adaptive quantization. This produces a stream of refinements optimized for rate-distortion trade-offs, particularly beneficial at the low bitrates of network streaming.</p>
<h2>Putting It All Together: The Browser Terrain Pipeline</h2>
<p>The strategic overview at the top of this article gives the quick decision framework and phased build plan. This section provides the full technical detail for both the server-side generation pipeline and the browser rendering pipeline.</p>
<h3>Generation Pipeline (Server-Side)</h3>
<p>The generation pipeline runs as a directed graph of physical processes, inspired by Gaea and World Machine's node-graph approach. Each stage takes the previous stage's output and refines it. Creators control parameters at each stage.</p>
<table>
<thead>
<tr>
<th>Stage</th>
<th>Input</th>
<th>Process</th>
<th>Output</th>
<th>Time</th>
</tr>
</thead>
<tbody>
<tr>
<td>1. Base terrain</td>
<td>Seed or text prompt</td>
<td>Terrain Diffusion / MESA / noise + fBm</td>
<td>16-bit heightmap</td>
<td>1-5s</td>
</tr>
<tr>
<td>2. Erosion</td>
<td>Heightmap</td>
<td>Analytical stream power + thermal erosion</td>
<td>Eroded heightmap, flow accumulation map, sediment map</td>
<td>0.5-2s</td>
</tr>
<tr>
<td>3. Rivers</td>
<td>Eroded heightmap, flow map</td>
<td>Drainage network extraction, channel carving</td>
<td>River splines, water level map</td>
<td>0.5s</td>
</tr>
<tr>
<td>4. Coast</td>
<td>Heightmap near sea level</td>
<td>NEWTS-style wave erosion</td>
<td>Coastline features (cliffs, beaches, stacks)</td>
<td>1-3s</td>
</tr>
<tr>
<td>5. Volumetric</td>
<td>Heightmap + creator intent</td>
<td>Arenite erosion / cave generation / SDF sculpts</td>
<td>Sparse SDF volumes for affected chunks</td>
<td>1-60s</td>
</tr>
<tr>
<td>6. Materials</td>
<td>Heightmap + erosion maps</td>
<td>TerraFusion / Geodiffussr / procedural rules</td>
<td>Splat maps, terrain textures</td>
<td>1-5s</td>
</tr>
<tr>
<td>7. Vegetation</td>
<td>Heightmap + flow map + materials</td>
<td>Ecosystem competition simulation</td>
<td>Density maps per biome per chunk</td>
<td>1-3s</td>
</tr>
<tr>
<td>8. Horizon maps</td>
<td>Final heightmap</td>
<td>8-direction max elevation angle</td>
<td>Self-shadow texture per chunk</td>
<td>2-5s</td>
</tr>
<tr>
<td>9. Chunking</td>
<td>All outputs</td>
<td>Slice, delta-encode, compress, hash</td>
<td>Chunk packages on CDN</td>
<td>5-10s</td>
</tr>
<tr>
<td><strong>Total</strong></td>
<td></td>
<td></td>
<td></td>
<td><strong>15-90s</strong></td>
</tr>
</tbody>
</table>
<p>A new 4x4 km world generates in 15-90 seconds. Creator edits (sculpting, parameter changes) re-run only the affected stages for the affected chunks, typically completing in under 5 seconds.</p>
<h3>Rendering Pipeline (Browser)</h3>
<table>
<thead>
<tr>
<th>Step</th>
<th>WebGPU path</th>
<th>WebGL 2 fallback</th>
<th>Frame budget</th>
</tr>
</thead>
<tbody>
<tr>
<td>1. Streaming</td>
<td>Priority queue, predictive pre-fetch</td>
<td>Same</td>
<td>N/A (async)</td>
</tr>
<tr>
<td>2. Heightmap terrain</td>
<td>GPU-driven CDLOD quadtree, compute culling, indirect draw</td>
<td>Geometry clipmaps, CPU ring updates</td>
<td>0.5-1ms</td>
</tr>
<tr>
<td>3. Volumetric mesh</td>
<td>Compute marching cubes + Transvoxel</td>
<td>Pre-generated meshes from Web Worker, 2-3 cached LODs</td>
<td>0.5-2ms</td>
</tr>
<tr>
<td>4. LOD transitions</td>
<td>Geomorphing in vertex shader</td>
<td>Same</td>
<td>Included above</td>
</tr>
<tr>
<td>5. Materials</td>
<td>Triplanar PBR + Laplacian blending + phasor noise detail + virtual texturing</td>
<td>Triplanar PBR + linear blending + pre-baked splat maps</td>
<td>1-1.5ms</td>
</tr>
<tr>
<td>6. Vegetation</td>
<td>ComputeInstanceCulling + IndirectBatchedMesh, hex-tiled ground cover</td>
<td>CPU frustum cull + InstancedMesh</td>
<td>1-1.5ms</td>
</tr>
<tr>
<td>7. Water</td>
<td>Flow-aligned river strips, depth-based shoreline foam</td>
<td>Same (simpler reflections)</td>
<td>0.5ms</td>
</tr>
<tr>
<td>8. Shadows</td>
<td>3-4 cascade CSM + horizon map self-shadows</td>
<td>2 cascade CSM</td>
<td>0.5-1ms</td>
</tr>
<tr>
<td>9. Atmosphere</td>
<td>Hillaire sky model + volumetric fog + weather particles</td>
<td>Preetham sky + distance fog</td>
<td>0.5ms</td>
</tr>
<tr>
<td>10. Dynamic effects</td>
<td>Puddle accumulation, footprint deformation, snow/rain</td>
<td>Puddle accumulation, rain particles</td>
<td>0.3ms</td>
</tr>
<tr>
<td><strong>Total terrain</strong></td>
<td></td>
<td></td>
<td><strong>3.5-6.5ms</strong></td>
</tr>
</tbody>
</table>
<p>At 60fps (16.6ms per frame), the terrain system uses 21% of the frame budget on WebGPU and 39% on WebGL 2. The remainder is available for player avatars, creator objects, UI, networking, and post-processing.</p>
<h3>Why This Works in a Browser</h3>
<p>The entire pipeline is designed around three browser constraints:</p>
<p><strong>Memory (2-4 GB max):</strong> The 256 MB terrain budget fits because heightmap chunks are 2-8 KB each (delta-encoded), SDF volumes are sparse (100-500 KB per volumetric chunk), vegetation is generated at runtime from 1 KB density maps, and textures use KTX2 compression (150 KB per 1024x1024). At any moment, the world visible in the browser weighs 50-200 MB total.</p>
<p><strong>No disk access:</strong> Everything streams over the network. Progressive loading means the player sees terrain in &lt;100ms (low-res heightmap), textured terrain in &lt;300ms, and full detail in &lt;3s. Pre-fetching based on velocity hides load times during normal exploration.</p>
<p><strong>GPU varies wildly:</strong> The WebGPU path handles high-end desktops. The WebGL 2 fallback handles everything else, including mobile. The same chunk data drives both paths. The difference is rendering technique, not data format. A Chromebook running WebGL 2 sees the same world as an RTX 4090 running WebGPU, just at lower detail and shorter view distance.</p>
<h2>Research Papers</h2>
<h3>Terrain Representation and Mesh Generation</h3>
<p><strong>&quot;Marching Cubes: A High Resolution 3D Surface Construction Algorithm&quot;</strong> -- Lorensen and Cline (SIGGRAPH 1987). <a href="https://doi.org/10.1145/37402.37422">DOI</a>. The foundational algorithm for extracting triangle meshes from volumetric data. Still the most widely used isosurface extraction method 38 years later. GPU-parallel implementations run in real time in WebGPU compute shaders.</p>
<p><strong>&quot;Dual Contouring of Hermite Data&quot;</strong> -- Ju, Losasso, Schaefer, Warren (SIGGRAPH 2002). <a href="https://doi.org/10.1145/566570.566586">DOI</a>. Produces meshes that preserve sharp features (cliff edges, rock corners) that marching cubes rounds off. Requires surface normals in addition to distance values.</p>
<p><strong>&quot;Neural Dual Contouring&quot;</strong> -- Chen et al. (2022). <a href="https://arxiv.org/abs/2202.01999">arXiv:2202.01999</a>. Replaces the least-squares vertex placement in dual contouring with a learned predictor. Better surface quality for complex natural features.</p>
<p><strong>&quot;The Transvoxel Algorithm&quot;</strong> -- Lengyel (2009, updated 2024). <a href="https://transvoxel.org/">transvoxel.org</a>. Seamless LOD transitions for voxel terrain. Eliminates cracks at resolution boundaries using 73 transition cell types. Patent-free, designed for real-time applications.</p>
<h3>Terrain LOD and Rendering</h3>
<p><strong>&quot;Geometry Clipmaps: Terrain Rendering Using Nested Regular Grids&quot;</strong> -- Losasso and Hoppe (SIGGRAPH 2004). <a href="https://hhoppe.com/geomclipmap.pdf">Paper</a>. Constant-cost terrain rendering with concentric LOD rings. Handles 40 GB terrains at interactive rates. The foundation for most browser terrain renderers.</p>
<p><strong>&quot;CDLOD: Hybrid LOD for Terrain Rendering&quot;</strong> -- Strugar (2014). <a href="https://www.vertexasylum.com/CDLOD/cdlod_latest.pdf">Paper</a>. Quadtree-adaptive improvement on geometry clipmaps. Allocates resolution based on terrain complexity rather than distance alone.</p>
<p><strong>&quot;GPU-Driven Rendering Pipelines&quot;</strong> -- Ubisoft (SIGGRAPH 2015), Wihlidal and Hoppe. Formalized the GPU-driven approach where compute shaders handle culling, LOD selection, and draw call generation. The architectural pattern for our WebGPU terrain pipeline.</p>
<h3>Physical Terrain Generation</h3>
<p><strong>&quot;Physically-Based Analytical Erosion for Fast Terrain Generation&quot;</strong> -- Cordonnier et al. (2024). <a href="https://hal.science/hal-04525371">HAL</a>. Analytical stream power law erosion that avoids iterative simulation. Generates physically plausible terrain in milliseconds.</p>
<p><strong>&quot;Fast Hydraulic Erosion Simulation and Visualization on GPU&quot;</strong> -- Mei, Decaudin, Hu (2007). <a href="https://hal.science/hal-02281637/file/main.pdf">HAL</a>. GPU-parallel hydraulic erosion using shallow-water simulation. The basis for most game engine erosion implementations.</p>
<p><strong>&quot;Arenite: A Physics-Based Sandstone Simulator&quot;</strong> -- SIGGRAPH 2025. <a href="https://jango6324.github.io/arenite/">Project</a>. Multi-physics erosion generating arches, hoodoos, and alcoves from stress and erosion simulation. Runs in under 5 minutes on desktop GPUs.</p>
<p><strong>&quot;Efficient Debris-flow Simulation for Steep Terrain Erosion&quot;</strong> -- Purdue CGVLAB (2024). <a href="https://www.cs.purdue.edu/cgvlab/www/resources/papers/Arymaan-ToG-2024-efficient.pdf">Paper</a>. GPU-accelerated debris flow and steep-slope erosion producing realistic mountain terrain features.</p>
<p><strong>&quot;Flexible Terrain Erosion&quot;</strong> -- IRIT-STORM (2024). <a href="https://link.springer.com/article/10.1007/s00371-024-03444-w">Springer</a>. Particle-based erosion that works across heightfields, voxel grids, implicit surfaces, and layered materials with a unified interface. Enables one erosion system for hybrid terrain representations.</p>
<h3>Terrain Detail and Texturing</h3>
<p><strong>&quot;GPU-Friendly Laplacian Texture Blending&quot;</strong> -- Wronski (NVIDIA, 2025). <a href="https://jcgt.org/published/0014/01/02/">JCGT</a>. Real-time Laplacian pyramid blending for terrain materials without precomputation. Preserves sharp features while eliminating seam artifacts. A few extra texture taps per fragment.</p>
<p><strong>&quot;Real-time Terrain Enhancement with Controlled Procedural Patterns&quot;</strong> -- Grenier et al. (2024). <a href="https://diglib.eg.org/bitstream/handle/10.1111/cgf14992/v43i1_05_cgf14992.pdf">CGF</a>. Phasor noise-based micro-erosion detail at up to 32x heightmap resolution. Slope-aligned patterns run entirely in a fragment shader.</p>
<h3>Adaptive Tessellation</h3>
<p><strong>&quot;Concurrent Binary Trees for Large-Scale Game Components&quot;</strong> -- Benyoub and Dupuy (Intel, HPG 2024). <a href="https://arxiv.org/html/2407.02215v1">Paper</a>. GPU-friendly binary tree data structure for adaptive terrain tessellation. Renders planetary-scale geometry in under 0.2ms. Extended from square domains to arbitrary polygon meshes.</p>
<h3>Cave and Underground Generation</h3>
<p><strong>&quot;PLUME: Procedural Layer Underground Modeling Engine&quot;</strong> -- 2024. <a href="https://arxiv.org/html/2508.20926v1">arXiv:2508.20926</a>. Open-source framework for generating realistic cave and lava tube environments using layered procedural rules. Originally built for space exploration robotics.</p>
<h3>Neural Terrain Synthesis</h3>
<p><strong>&quot;InfiniteDiffusion: Bridging Learned Fidelity and Procedural Utility for Open-World Terrain Generation&quot;</strong> -- Goslin (2025, SIGGRAPH 2026). <a href="https://arxiv.org/abs/2512.08309">arXiv:2512.08309</a>. Infinite, seed-consistent terrain generation using hierarchical diffusion models with Laplacian encoding. 9x faster than baseline on consumer GPUs.</p>
<p><strong>&quot;TerraFusion: Joint Generation of Terrain Geometry and Texture&quot;</strong> -- 2025. <a href="https://arxiv.org/abs/2505.04050">arXiv:2505.04050</a>. Latent diffusion for simultaneous heightmap and texture synthesis with sketch conditioning.</p>
<p><strong>&quot;MESA: Text-Driven Terrain Generation&quot;</strong> -- CVPR 2025 Workshop. <a href="https://arxiv.org/abs/2504.07210">arXiv:2504.07210</a>. Text-to-terrain using Copernicus remote sensing training data.</p>
<p><strong>&quot;Geodiffussr: Generative Terrain Texturing with Elevation Fidelity&quot;</strong> -- 2025. <a href="https://arxiv.org/abs/2511.23029">arXiv:2511.23029</a>. Text-guided terrain texture generation that respects elevation data using flow-matching.</p>
<p><strong>&quot;Sketch2Terrain: AI-Driven Real-Time Terrain Sketch Mapping&quot;</strong> -- 2025. <a href="https://tianyixiao.top/publication/2025-sketch2terrain">Project</a>. Sketch-to-terrain in augmented reality. 38% efficiency improvement over manual mapping.</p>
<h3>Vegetation and Ecosystem Simulation</h3>
<p><strong>&quot;GPU-Based Real-Time Procedural Distribution of Vegetation on Large-Scale Virtual Terrains&quot;</strong> -- SBGames 2018. <a href="https://sbgames.org/sbgames2018/files/papers/ComputacaoFull/188348.pdf">Paper</a>. Quadtree-based vegetation scattering using biotic/abiotic factors on GPU.</p>
<p><strong>&quot;Procedural Generation and Rendering of Forests&quot;</strong> -- 2022. <a href="https://export.arxiv.org/pdf/2208.01471v1.pdf">Paper</a>. L-system tree generation combined with ecosystem competition simulation for realistic forest distribution.</p>
<p><strong>&quot;Real-Time Procedural Generation with GPU Work Graphs&quot;</strong> -- AMD GPUOpen 2024. <a href="https://gpuopen.com/download/Real-Time_Procedural_Generation_with_GPU_Work_Graphs-GPUOpen_preprint.pdf">Paper</a>. GPU work graphs generating 79K+ vegetation instances in under 4ms.</p>
<h3>Browser GPU Technology</h3>
<p><strong>&quot;GSWT Renderer&quot;</strong> -- SIGGRAPH Asia 2025. <a href="https://github.com/zengyf131/gswt_renderer">GitHub</a>. WebGPU + Rust/Wasm renderer using Gaussian Splatting Wang Tiles for infinite 3D terrain with dynamic LOD and streaming.</p>
<p><strong>&quot;GPU Compute in the Browser at the Speed of Native: WebGPU Marching Cubes&quot;</strong> -- Usher (2024). <a href="https://www.willusher.io/graphics/2024/04/22/webgpu-marching-cubes/">Blog</a>. Demonstrates that WebGPU compute achieves native-speed performance for parallel mesh generation algorithms.</p>
<h3>Voxel Rendering and Large-Scale Scenes</h3>
<p><strong>&quot;Aokana: A GPU-Driven Voxel Rendering Framework for Open World Games&quot;</strong> -- 2025. <a href="https://arxiv.org/abs/2505.02017">arXiv:2505.02017</a>. Sparse Voxel DAG with LOD and streaming for scenes with tens of billions of voxels. 9x memory reduction and 4.8x faster rendering than prior state-of-the-art. Designed for integration with game engines.</p>
<h3>Procedural Geometry and Resurfacing</h3>
<p><strong>&quot;Real-time Procedural Resurfacing using GPU Mesh Shaders&quot;</strong> -- Raad et al. (Eurographics 2025). <a href="https://hal.science/hal-05176868v1/file/Paper_Resurfacing_2024.pdf">Paper</a>. Generates detailed geometric surfaces from coarse control meshes at render time using mesh shaders. Enables dynamic LOD without storing high-resolution geometry in memory.</p>
<h3>Terrain Shadows</h3>
<p><strong>&quot;Optimizing Terrain Shadows&quot;</strong> -- AMD GPUOpen. <a href="https://gpuopen.com/learn/optimizing-terrain-shadows/">Blog</a>. Practical CSM optimization for large-scale terrain. Covers cascade splitting, GPU-efficient shadow map rendering, and terrain-specific optimizations.</p>
<h3>Virtual Geometry and Mesh Optimization</h3>
<p><strong>&quot;Nanite WebGPU&quot;</strong> -- Scthe (2024). <a href="https://github.com/Scthe/nanite-webgpu">GitHub</a>, <a href="https://scthe.github.io/nanite-webgpu/">Demo</a>. Complete browser implementation of UE5 Nanite architecture: meshlet LOD hierarchy, software rasterizer in WGSL, per-meshlet culling, billboard impostors.</p>
<p><strong>&quot;Billions of Triangles in Minutes&quot;</strong> -- Kapoulkine (2025). <a href="https://zeux.io/2025/09/30/billions-of-triangles-in-minutes/">Blog</a>. Meshoptimizer v1.0 for hierarchical clustered LOD generation. Processes massive meshes into Nanite-style cluster DAGs efficiently.</p>
<p><strong>&quot;Billboard Splatting (BBSplat)&quot;</strong> -- 2024. <a href="https://arxiv.org/abs/2411.08508">arXiv:2411.08508</a>. Learnable textured planar primitives for novel view synthesis achieving 17x compression vs 3D Gaussian Splatting.</p>
<h3>Terrain Lighting and Global Illumination</h3>
<p><strong>&quot;Global Illumination in Once Human&quot;</strong> -- GDC 2025. <a href="https://schedule.gdconf.com/session/global-illumination-in-once-human-a-hybrid-approach-for-16km-open-world/907269">Session</a>. Hybrid GI for 16km open world: neural network compressed probes (69:1 ratio), ML-based indoor/outdoor leak resolution, dynamic probe reactions.</p>
<p><strong>&quot;GI with AMD FidelityFX Brixelizer&quot;</strong> -- GDC 2024. <a href="https://gpuopen.com/download/GDC2024_GI_with_AMD_FidelityFX_Brixelizer.pdf">Paper</a>. Compute-based sparse distance field cascades with screen-space probes. No hardware ray-tracing required.</p>
<p><strong>&quot;Radiance Cascades&quot;</strong> -- 2024. <a href="https://jason.today/rc">Blog</a>. Noiseless real-time global illumination using cascaded radiance structures without temporal accumulation.</p>
<h3>Level Design and Exploration</h3>
<p><strong>&quot;PlotMap: Automated Layout Design for Building Game Worlds&quot;</strong> -- 2023. <a href="https://arxiv.org/html/2309.15242v4">arXiv:2309.15242</a>. AI-assisted POI placement satisfying narrative spatial constraints on terrain.</p>
<p><strong>&quot;Spatial Exploration Triggers&quot;</strong> -- Purdue University (FDG 2022). <a href="https://web.ics.purdue.edu/~cmousas/papers/conf22-FDG-SpatialExploration.pdf">Paper</a>. Four design patterns that drive player exploration: extreme points, visual obstructions, out-of-place objects, spatial connections.</p>
<h3>Data Compression and Streaming</h3>
<p><strong>&quot;Entropy-driven Progressive Compression of 3D Point Clouds&quot;</strong> -- SGP 2024. <a href="https://inria.hal.science/hal-04630545v1/file/sgp2024.pdf">Paper</a>. Rate-distortion optimized progressive compression using recursive space partitioning with adaptive quantization. Produces refinement streams suited to variable-bandwidth network streaming.</p>
<h3>Interactive Editing</h3>
<p><strong>&quot;WebGPU SDF Editor&quot;</strong> -- Nijhoff (2026). <a href="https://reindernijhoff.net/2026/01/webgpu-sdf-editor-real-time-signed-distance-field-modeling/">Project</a>. Full-featured SDF modeling in the browser with real-time marching cubes, boolean operations, smooth blending, and octree space partitioning. 112 bytes per primitive.</p>
<h3>River and Coastal Generation</h3>
<p><strong>&quot;Procedural River Drainage Basins&quot;</strong> -- Patel (Red Blob Games). <a href="https://www.redblobgames.com/x/1723-procedural-river-growing/">Project</a>. Drainage-first river generation using Voronoi/triangle mesh edge classification. Builds river hierarchies before assigning terrain elevation.</p>
<p><strong>&quot;NEWTS1.0: Numerical Model of Coastal Erosion by Waves and Transgressive Scarps&quot;</strong> -- MIT (2024). <a href="https://dspace.mit.edu/handle/1721.1/157677">Paper</a>. Simplified coastal erosion model using uniform retreat and wave-driven erosion. Generates headlands, bays, sea stacks, and arches matching real geomorphology.</p>
<h2>Further Reading</h2>
<ul>
<li><a href="/guides/browser-3d-open-world-tech">Browser 3D Open World Tech</a> covers the full architecture for a multiplayer creator world in the browser</li>
<li><a href="/guides/web-games-stack-2026">Web Games Tech Stack in 2026</a> covers WebGL, WebGPU, and WebAssembly fundamentals</li>
<li><a href="/guides/threejs-usdc-tech-report">Three.js + USDC Tech Report</a> on loading 3D assets in the browser</li>
<li><a href="/guides/frontier-gen-ai-models">Frontier Open-Source Gen AI Models</a> for the AI generation pipeline</li>
<li><a href="/tutorials/webgpu-getting-started">WebGPU getting started</a> — compute shaders for GPU-driven terrain</li>
<li><a href="/tutorials/web-workers-game-logic">Web Workers for game logic</a> — offloading terrain generation to Workers</li>
<li><a href="/tutorials/game-physics-libraries">Game physics libraries</a> — physics for terrain interaction and heightfield colliders</li>
<li><a href="/guides/game-assets-guide">Where to Find Free Game Assets</a> — texture and material sources for terrain rendering</li>
</ul>
<p><BuildCta
  title="Put a generated landscape inside a game"
  desc="Terrain is better when you can walk on it."
  prompt="Make a game set in a procedurally generated mountain valley" /></p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Browser 3D Open World Tech for Multiplayer Creator Worlds]]></title>
            <link>https://app.cinevva.com/guides/browser-3d-open-world-tech</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/browser-3d-open-world-tech</guid>
            <pubDate>Fri, 20 Feb 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Deep research into the rendering, networking, streaming, and world-building tech needed to put creators in a shared browser-based 3D open world they can shape together.]]></description>
            <content:encoded><![CDATA[<style>
.video-embed {
  position: relative;
  width: 100%;
  max-width: 720px;
  margin: 1.5rem 0;
}
.video-embed iframe {
  width: 100%;
  aspect-ratio: 16/9;
  border-radius: 8px;
}
.game-caption {
  font-size: 0.9rem;
  color: var(--vp-c-text-2);
  margin-top: 0.5rem;
  font-style: italic;
}
</style>
<h1>Browser 3D Open World Tech for Multiplayer Creator Worlds</h1>
<p>We want to put our creators in a shared open world. Not a lobby. Not a gallery. A living 3D space where people can explore, build, and stumble onto each other's work. Something that loads in a browser tab and feels like a place worth being in.</p>
<p>That's a hard problem. Skyrim and The Witcher 3 spent hundreds of millions of dollars building their worlds, and they still ship on dedicated hardware with tens of gigabytes on disk. We're targeting a browser tab, shared state across hundreds of players, and a world that creators can actually reshape.</p>
<p>This guide documents what we found researching the tech. What's possible today, what's coming, and what architecture would get us there.</p>
<h2>What We Can Learn from Skyrim and The Witcher</h2>
<p>Before picking technology, it helps to understand how the two most successful open worlds actually work. Their techniques map surprisingly well to browser constraints.</p>
<h3>Skyrim's Cell System</h3>
<div class="video-embed">
<iframe src="https://www.youtube.com/embed/JSRtYpNRoN0" title="Skyrim Special Edition Trailer" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<div class="game-caption">Skyrim's open world streams a 5x5 grid of cells around the player. Distant mountains are low-resolution impostors. You never notice.</div>
<p>Skyrim divides its world into a grid of 57x37 exterior cells, each 4096x4096 game units (roughly 59 meters). The engine loads a 5x5 grid of cells around the player at any time. As you walk, cells on the trailing edge unload while cells on the leading edge stream in. Interior spaces (dungeons, buildings) are separate worldspaces loaded through door triggers.</p>
<p>This is directly applicable to a browser world. You don't load the entire map. You load a neighborhood around the player and swap chunks as they move. The key insight: Skyrim never lets you see the full detail of distant terrain. It uses a multi-resolution approach.</p>
<p><strong>LOD (Level of Detail) tiers in Skyrim:</strong></p>
<ul>
<li>Full detail within 1-2 cells (player's immediate area)</li>
<li>Simplified meshes at medium range (objects lose small geometry)</li>
<li>Billboard impostors for trees and rocks beyond medium range</li>
<li>Terrain LOD uses pre-baked low-resolution meshes for distant landscape</li>
<li>Object fade distances tuned per-object (grass fades first, buildings last)</li>
</ul>
<p>Skyrim's landscape uses a heightmap-based terrain with 32x32 vertex patches per cell. Each patch can have different textures blended with alpha maps. This is cheap to store and render. A single cell's terrain data is measured in kilobytes, not megabytes.</p>
<p><strong>What we can apply:</strong> Chunk-based streaming, heightmap terrain, aggressive LOD, interior/exterior separation, and the idea that distant terrain doesn't need to be geometrically accurate, just visually convincing.</p>
<h3>The Witcher 3's Streaming Architecture</h3>
<div class="video-embed">
<iframe src="https://www.youtube.com/embed/53MyR_Z3i1w" title="The Witcher 3: Wild Hunt - Beautiful Open World" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<div class="game-caption">The Witcher 3's 136 km2 world uses content-aware streaming. Trees beyond 200m are flat impostors. Buildings stream independently from terrain.</div>
<p>The Witcher 3's world is larger than Skyrim (roughly 136 km2 across all regions) and uses a more sophisticated streaming system. CD Projekt RED built a custom engine (REDengine 3) where the world is divided into streaming sectors, not a strict grid.</p>
<p>Each sector contains a hierarchy of content layers:</p>
<ul>
<li><strong>Terrain</strong> streams as patches with 4 LOD levels</li>
<li><strong>Foliage</strong> uses GPU instancing with distance-based culling</li>
<li><strong>Static geometry</strong> (buildings, rocks) streams independently from terrain</li>
<li><strong>Gameplay objects</strong> (NPCs, items, triggers) load based on quest state and proximity</li>
</ul>
<p>The renderer uses deferred shading with physically-based materials. One trick that's particularly relevant: The Witcher 3 aggressively uses impostors. A tree that's 200 meters away isn't a 3D model with branches and leaves. It's a flat textured quad that always faces the camera. The engine pre-renders these impostors from multiple angles and swaps them as the camera moves. You never notice because they're far enough away.</p>
<p><strong>World composition:</strong> The Witcher 3's open world was built in layers by separate teams working simultaneously. The terrain team sculpted the landscape. The environment art team placed structures. The quest team wired up triggers and NPC paths. This layered composition system let a large team work without stepping on each other.</p>
<p><strong>What we can apply:</strong> Layered world composition (critical for a creator platform), impostor rendering for distant objects, deferred rendering for many light sources, and the insight that streaming should be content-aware (don't load interiors you can't see, don't spawn NPCs you're not near).</p>
<h3>Breath of the Wild's Chemistry Engine</h3>
<div class="video-embed">
<iframe src="https://www.youtube.com/embed/zw47_q9wbBE" title="Zelda: Breath of the Wild - Nintendo Switch Presentation Trailer" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<div class="game-caption">BotW runs on tablet-class hardware and looks stunning. Cel-shaded style, watercolor distance fog, and systemic interactions over scripted content. The gold standard for stylized open worlds.</div>
<p>Nintendo's approach to open world design inverted the typical formula. Instead of filling the world with scripted content, they built systemic rules and let players discover emergent behavior. Fire spreads to grass. Metal conducts electricity in thunderstorms. Wind carries objects. Everything interacts with everything else through a consistent physics/chemistry layer.</p>
<p>This matters for a creator world because it suggests that the world itself can be more interesting than any individual placed object. If creators can define material properties and interaction rules (not just place static meshes), the world gains emergent behavior that makes exploration worthwhile even in areas nobody explicitly designed.</p>
<p><strong>Technical takeaways from BotW:</strong></p>
<ul>
<li>Relatively low polygon count and resolution (900p docked on Switch). The stylized cel-shaded look hides the low fidelity. A browser world could achieve similar visual quality today.</li>
<li>Distance rendering uses a toon-shaded fog that fades into watercolor-style skyboxes. Cheap to render, beautiful in practice. This kind of atmospheric perspective is essentially free in a fragment shader.</li>
<li>The world is roughly 84 km2 but sparse. Most of the map is traversable terrain with points of interest spread across it. Dense content is reserved for towns and shrines. This &quot;sparse but interesting&quot; approach reduces asset requirements dramatically compared to The Witcher 3's densely populated Novigrad.</li>
<li>Physics objects have material tags (wood, metal, food, explosive) that determine interactions. The number of actual rules is small (maybe 20-30 interaction types) but they combine in ways that feel infinite.</li>
</ul>
<h3>GTA V's World Layering</h3>
<div class="video-embed">
<iframe src="https://www.youtube.com/embed/QkkoHAzjnUs" title="Grand Theft Auto V Official Trailer" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<div class="game-caption">GTA V's Los Santos feels alive because of layered ambient systems: traffic, pedestrians, time-of-day, weather. Distant buildings are composited photographs, not 3D models.</div>
<p>Rockstar's approach to Los Santos teaches a different lesson. GTA V's world feels alive because of layered ambient systems, not because every NPC has a quest.</p>
<p>The city has traffic systems that simulate hundreds of vehicles on a road network. Pedestrians walk routes, react to the player, and interact with each other. Time of day changes the population density, the types of NPCs present, and the ambient activity. Weather affects driving physics and NPC behavior.</p>
<p>For a creator world, the insight is that ambient life makes the difference between a world that feels like a museum and one that feels like a place. Even simple behaviors (birds flying overhead, waves lapping at a shore, NPCs walking between buildings) create the illusion of a living world.</p>
<p><strong>Technical takeaways from GTA V:</strong></p>
<ul>
<li>The map is 75 km2 and uses aggressive LOD combined with a streaming system that loads based on velocity (driving fast loads further ahead than walking).</li>
<li>GTA Online puts 30 players in this world simultaneously. Even at 30, Rockstar found they needed spatial interest management: you get detailed updates about nearby players and less frequent updates about distant ones. The same principle applies at our 200-player target.</li>
<li>GTA V's asset pipeline is one of the most efficient ever built. The entire game fits in roughly 80 GB because of extreme texture compression, mesh sharing, and procedural detail. Their building interiors reuse modular pieces extensively.</li>
<li>The game uses a sophisticated imposter system where distant buildings are actually flat photographs composited together. The player never notices because the transition distances are tuned to specific viewing angles.</li>
</ul>
<h3>Elden Ring's Seamless Open World</h3>
<div class="video-embed">
<iframe src="https://www.youtube.com/embed/E3Huy2cdih0" title="Elden Ring Official Gameplay Trailer" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<div class="game-caption">Elden Ring's 79 km2 map mixes sparse open terrain with dense hand-crafted dungeons. The same environmental assets appear everywhere in different arrangements. Repetition disappears when composition and lighting vary.</div>
<p>FromSoftware built Elden Ring on the same engine as Dark Souls but scaled it to an open world. The result is interesting because it shows how a relatively small team (compared to Rockstar or CD Projekt) can build a large open world.</p>
<p>The trick is density variation. Elden Ring's map is huge (roughly 79 km2) but large sections are open terrain with scattered enemies and points of interest. The dense, hand-crafted content (Legacy Dungeons like Stormveil Castle) is embedded in the open world and uses the same interior/exterior separation that Skyrim uses.</p>
<p><strong>Technical takeaways from Elden Ring:</strong></p>
<ul>
<li>The world streams in large tiles. On horseback you can see very far, but the distant terrain is extremely simplified. Close up, the detail is comparable to Dark Souls 3.</li>
<li>Loading screens only appear when fast-traveling or entering certain dungeons. The open world itself streams without interruption.</li>
<li>The game reuses environmental assets extensively. The same tree models, rock formations, and ruin pieces appear across the map in different arrangements. With enough variety in arrangement and lighting, repetition isn't noticeable. This is directly applicable to a creator world where a library of modular pieces can generate infinite variety.</li>
<li>Multiplayer is session-based (summoning other players into your world), not persistent. But the asynchronous features (messages, bloodstains, ghosts of other players) create a sense of shared existence without the networking overhead of a persistent server. These ambient multiplayer features would be cheap to add to a browser world.</li>
</ul>
<h3>No Man's Sky: Procedural Everything</h3>
<div class="video-embed">
<iframe src="https://www.youtube.com/embed/nLtmEjqzg7M" title="No Man's Sky NEXT Trailer" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<div class="game-caption">18 quintillion planets generated from shared seeds. Every player sees the same universe without storing it on a server. Base building data is compact: part IDs plus transforms.</div>
<p>No Man's Sky is the extreme case of procedural generation. 18 quintillion planets generated from a shared seed, so every player sees the same universe without any of it being stored on a server.</p>
<p>The generation pipeline works in stages: galaxy-level seeds determine star positions, star seeds determine planet count and types, planet seeds drive terrain generation (multi-octave noise), biome assignment, flora/fauna species, color palettes, and resource distribution. Everything computes deterministically from the seed, so two players visiting the same coordinates see the same planet without exchanging any planet data.</p>
<p><strong>Technical takeaways from No Man's Sky:</strong></p>
<ul>
<li>Terrain generation uses voxel-based marching cubes with a stack of noise functions. This allows caves, overhangs, and floating islands that heightmap terrain can't represent. The trade-off is higher compute cost per chunk, but the result is more visually interesting terrain.</li>
<li>The base-building system is closest to what we're envisioning. Players place structures that persist on the server and are visible to other players. The base data is compact (a list of parts with positions and rotations) and streams on demand when someone visits the planet.</li>
<li>The game was initially criticized for repetitive content despite infinite variety. Seed-based generation can produce infinite terrain but limited surprises. The lesson: procedural generation works for the canvas, but creator-placed content is what makes a place feel designed and intentional.</li>
<li>Hello Games added multiplayer years after launch. Up to 32 players share a session with full building and exploration. The network model is simple: one player hosts, others connect. For a browser world with persistent state, a server-authoritative model works better, but No Man's Sky proves that shared procedural worlds are tractable.</li>
</ul>
<h3>Minecraft: The Blueprint for Creator Worlds</h3>
<div class="video-embed">
<iframe src="https://www.youtube.com/embed/MmB9b5njVbA" title="Minecraft Official Trailer" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<div class="game-caption">300 million copies sold. 16x16 pixel textures. Fully editable terrain. Infinitely generated. Multiplayer. The most important reference for a creator world. Browser clones prove the concept works in WebGL.</div>
<p>Minecraft is the most important reference point for what we're building, more than any graphical AAA title. 300 million copies sold. The world is infinitely generated, fully destructible, and multiplayer. Creators don't just place objects in Minecraft. They reshape the terrain itself.</p>
<p><strong>Technical takeaways from Minecraft:</strong></p>
<ul>
<li>The world is divided into 16x16x384 block chunks. Only chunks near the player are loaded (render distance is configurable). This is the same chunk streaming pattern as Skyrim but with fully editable terrain.</li>
<li>Each chunk is stored as a palette-compressed array of block IDs. A chunk with only 5 different block types stores a 4-bit palette index per block instead of a full block ID. This makes chunk data very compact (typically 10-50 KB per chunk after compression).</li>
<li>Minecraft's multiplayer protocol is well-documented and relatively simple. The server sends chunk data as the player moves. Block changes are broadcast as small delta updates (position + new block type). This is exactly the model we'd use for creator edits.</li>
<li>The game runs in Java and now has a Bedrock Edition in C++. There are browser-based Minecraft clones (ClassiCube, eaglercraft) that prove the core concept works in WebGL. They typically handle 8-12 chunk render distance at 60fps, which gives a view of about 200-400 meters.</li>
<li>Minecraft's modding ecosystem is its real moat. Mods add new blocks, entities, biomes, and gameplay systems. For a creator world, this suggests that extensibility matters as much as the base experience. If creators can define new interaction types (not just place objects), the world gets richer over time.</li>
<li>Redstone (Minecraft's in-game wiring system) shows that creators will build complex systems if you give them simple, composable primitives. Logic gates, automatic farms, calculators. The simple rule set generates extraordinary complexity. This is the same lesson as BotW's chemistry engine.</li>
</ul>
<h3>Common Patterns Across AAA Open Worlds</h3>
<p>Looking across all these titles, the same patterns keep showing up:</p>
<p><strong>Spatial partitioning</strong> is universal. Whether it's cells (Bethesda), sectors (CD Projekt), chunks (Mojang/Rockstar), or tiles (FromSoftware), every open world divides space into loadable units. No engine tries to hold the entire world in memory.</p>
<p><strong>Multi-resolution everything.</strong> Terrain, meshes, textures, and even audio all have multiple quality levels. The resolution you get depends on how close you are and how important the object is.</p>
<p><strong>Occlusion culling</strong> matters more than raw triangle throughput. Not rendering what you can't see saves more performance than optimizing what you can. Skyrim uses a simple distance-based system. The Witcher 3 uses software occlusion with large occluders (buildings, cliffs). Modern engines like UE5's Nanite take this further with hardware occlusion queries.</p>
<p><strong>Async loading</strong> hides transitions. These games don't show loading screens for the open world (only for fast-travel or interior transitions). They load content on background threads, decompress in parallel, and swap in new content gradually.</p>
<p><strong>Art direction over polygon count.</strong> Skyrim shipped in 2011 with graphics that were modest even then. BotW runs on a tablet-class chip and looks beautiful. Minecraft uses 16x16 pixel textures and is one of the most visually recognizable games ever made. For a browser world, this matters enormously. A well-directed art style at lower fidelity will always beat a technically advanced but artistically flat world.</p>
<p><strong>Systemic design beats scripted content.</strong> BotW's chemistry engine, Minecraft's block interactions, and GTA V's traffic systems all create emergent behavior from simple rules. This is cheaper to build, cheaper to run, and generates more player stories than hand-crafted scripted sequences. For a creator world, systemic design means the world stays interesting even in areas nobody explicitly designed.</p>
<p><strong>Creator-placed content needs persistence and visibility.</strong> Minecraft bases, No Man's Sky bases, and GTA Online properties all persist across sessions and are visible to other players. The data model for creator content is always compact (part IDs + transforms) while the visual representation is rich (the client expands the data into full 3D scenes).</p>
<h2>Rendering: What Can a Browser Actually Do?</h2>
<h3>Three.js</h3>
<p>Three.js is the foundation. It has the largest community (over 100K GitHub stars), the most examples, and the broadest compatibility. It abstracts WebGL 2 and has experimental WebGPU support via <code>WebGPURenderer</code>.</p>
<p>For an open world, Three.js gives you:</p>
<ul>
<li><strong>Instanced rendering</strong> for foliage, rocks, and repeated geometry (<code>InstancedMesh</code>)</li>
<li><strong>LOD system</strong> built in (<code>THREE.LOD</code> swaps meshes by distance)</li>
<li><strong>Frustum culling</strong> automatic per-object</li>
<li><strong>Terrain</strong> via custom <code>BufferGeometry</code> or heightmap-based <code>PlaneGeometry</code></li>
<li><strong>PBR materials</strong> through <code>MeshStandardMaterial</code> and <code>MeshPhysicalMaterial</code></li>
<li><strong>Post-processing</strong> via <code>EffectComposer</code> (bloom, SSAO, tone mapping)</li>
<li><strong>Shadow maps</strong> with cascaded shadow mapping possible through custom code</li>
<li><strong>glTF/GLB</strong> as the primary asset format (compact, GPU-ready)</li>
</ul>
<p>Three.js also has an active ecosystem of tools that matter for open worlds. <code>three-mesh-bvh</code> accelerates raycasting and spatial queries over complex meshes. <code>postprocessing</code> (by vanruesc) provides a more performant post-processing stack than Three's built-in one. <code>three-gpu-pathtracing</code> enables reference-quality rendering.</p>
<p><strong>Limitations for open worlds:</strong> Three.js doesn't have a built-in scene graph that handles streaming, LOD management, or spatial partitioning at scale. You build those yourself. There's no built-in entity component system (ECS), no physics, and no terrain system. It's a renderer, not an engine. That's actually an advantage for a custom open world because you control memory layout and loading strategy, but it means more up-front work.</p>
<pre><code class="language-typescript">const lod = new THREE.LOD();
lod.addLevel(highDetailMesh, 0);
lod.addLevel(mediumDetailMesh, 50);
lod.addLevel(lowDetailMesh, 200);
lod.addLevel(impostorSprite, 500);
scene.add(lod);
</code></pre>
<h3>Babylon.js</h3>
<p>Babylon.js is the other major contender. Microsoft-backed, it has deeper built-in features than Three.js for the specific problem of open worlds.</p>
<p>Relevant built-in features:</p>
<ul>
<li><strong>Octree-based scene partitioning</strong> for efficient culling of large scenes</li>
<li><strong>Solid Particle System</strong> for massive instanced rendering</li>
<li><strong>Terrain from heightmaps</strong> with built-in LOD and multi-texture splatting</li>
<li><strong>Node Material Editor</strong> for visual shader creation</li>
<li><strong>WebGPU support</strong> (more mature than Three.js, as Babylon invested earlier)</li>
<li><strong>Havok physics integration</strong> (Wasm-compiled, production-quality)</li>
<li><strong>glTF streaming</strong> with progressive loading</li>
</ul>
<p>Babylon's <code>DynamicTerrain</code> extension generates terrain chunks on-the-fly from heightmap data, handles LOD automatically, and supports texture splatting. This is much closer to what Skyrim does than anything Three.js offers out of the box.</p>
<pre><code class="language-typescript">const terrain = new BABYLON.DynamicTerrain(&quot;terrain&quot;, {
  terrainSub: 100,
  mapData: heightmapData,
  mapSubX: 1000,
  mapSubZ: 1000,
}, scene);
terrain.LODLimits = [4, 3, 2, 1];
</code></pre>
<p><strong>The trade-off:</strong> Babylon.js is a larger library (the full build is ~1-2MB minified vs Three.js at ~600KB). But for an open world, you'll likely add enough custom code to Three.js that the size difference becomes negligible. Babylon also has its own Node Material system, inspector, and dev tools, which speed up iteration.</p>
<p>Babylon.js 8.0 (released March 2025) hardened the case for it as the engine core here. All core engine shaders now ship in both GLSL and WGSL, so WebGPU works with no conversion layer and the WebGPU bundle is roughly half the size it used to be. The same release brought Havok's full character controller into the engine, area lights, a rebuilt audio engine, and Gaussian splatting improvements (SPZ and compressed PLY formats, spherical harmonics, and lower memory/CPU footprint).</p>
<h3>PlayCanvas</h3>
<p>PlayCanvas is worth mentioning because it's the most production-proven web-first 3D engine. Snap, Facebook, and numerous advertising clients have shipped complex 3D experiences with it. The engine is around 1MB, loads fast, and the cloud editor enables collaborative world building.</p>
<p>For an open world specifically, PlayCanvas offers batch groups for draw call optimization, a built-in lightmapper, and Gaussian splatting support (relevant for photogrammetry-captured real-world environments). The runtime is tight and well-optimized for mobile browsers.</p>
<h3>WebGPU: The Performance Unlock</h3>
<p>WebGPU changes the equation for browser open worlds. The two features that matter most:</p>
<p><strong>Compute shaders</strong> enable GPU-side terrain generation, foliage placement, particle simulation, and even simple physics. In a WebGL world, all of this runs on the CPU in JavaScript. With WebGPU, you can generate terrain patches entirely on the GPU, compute LOD transitions on the GPU, and run culling passes on the GPU. This frees the CPU for networking, game logic, and content streaming.</p>
<p><strong>Indirect rendering</strong> lets the GPU decide what to draw based on compute shader output. You submit one draw call, and the GPU decides how many instances to render for each LOD level based on distance. This is how modern engines handle millions of blades of grass or trees. Without indirect rendering (which WebGL doesn't support), the CPU has to sort and batch everything, which becomes the bottleneck in dense scenes.</p>
<p>WebGPU now ships in every major browser. Chrome and Edge have had it since version 113, Firefox added it on Windows (141) and Apple Silicon macOS (145), and Safari 26 brought it to macOS, iOS, iPadOS, and visionOS in late 2025. That puts global support around 82%, including mobile (Chrome for Android and Samsung Internet ship it too). You'd still keep a WebGL 2 fallback for older browsers and devices where WebGPU isn't enabled, but the gap has closed fast.</p>
<pre><code class="language-wgsl">@compute @workgroup_size(64)
fn generateTerrain(@builtin(global_invocation_id) id: vec3&lt;u32&gt;) {
    let worldPos = vec2&lt;f32&gt;(f32(id.x), f32(id.y)) * cellSize + worldOffset;
    let height = fbmNoise(worldPos, octaves, persistence);
    heightmap[id.x + id.y * width] = height;
}
</code></pre>
<h3>Recommended Rendering Stack</h3>
<p>For a browser open world targeting creators on desktop:</p>
<p><strong>Primary:</strong> Three.js or Babylon.js with WebGPU renderer where available, WebGL 2 fallback. Babylon has stronger built-in open-world primitives. Three.js has a larger community and more flexibility.</p>
<p><strong>Our pick:</strong> Babylon.js for the engine core because of built-in terrain LOD, octree culling, Havok physics (Wasm), and mature WebGPU support. Use Three.js ecosystem tools where Babylon lacks them (e.g., mesh BVH for spatial queries). Wrap everything in a custom world-streaming layer.</p>
<h2>World Streaming Architecture</h2>
<p>This is the hard part. A browser tab gets roughly 2-4 GB of memory on desktop (browser-imposed limits), about 1 GB on mobile, and no direct disk access. Everything comes over the network. You need an architecture that keeps the visible world in memory while streaming content just ahead of where the player is moving.</p>
<h3>Chunk-Based World Grid</h3>
<p>Like Skyrim's cell system, divide the world into a regular grid of chunks. Each chunk is an independent unit that can be loaded, rendered, and unloaded separately.</p>
<p><strong>Chunk sizing matters.</strong> Too small and you're constantly loading/unloading with high overhead. Too large and each chunk takes too long to download. For a browser world with typical broadband connections:</p>
<ul>
<li>64x64 meter chunks at ground level</li>
<li>Each chunk contains: heightmap patch (2-4 KB), texture splat map (16-32 KB compressed), static meshes as instanced refs (1-50 KB of instance data), creator-placed objects as a manifest (1-10 KB)</li>
<li>Load radius: 5x5 chunks at full detail (320m view), 9x9 at medium LOD, 17x17 at terrain-only</li>
<li>Target: each chunk's full-detail data under 200 KB, so a 5x5 neighborhood is under 5 MB</li>
</ul>
<h3>Progressive Loading Pipeline</h3>
<p>Don't load everything about a chunk at once. Use a priority queue:</p>
<ol>
<li><strong>Terrain geometry first</strong> (heightmap only, 2-4 KB per chunk). The player sees ground within 100ms.</li>
<li><strong>Terrain textures</strong> (splat maps, low-res first then upgrade). Ground has color within 200ms.</li>
<li><strong>Major structures</strong> (buildings, large rocks). Silhouettes appear within 500ms.</li>
<li><strong>Detail objects</strong> (foliage, small props, creator items). World fills in over 1-2 seconds.</li>
<li><strong>High-res textures</strong> upgrade last. Nobody notices if a distant building's texture takes an extra second.</li>
</ol>
<p>This matches how the human eye works. We notice missing ground and missing large structures. We don't notice missing grass.</p>
<h3>Memory Management</h3>
<p>Browser memory is finite and the garbage collector is your enemy. A single GC pause can drop you from 60fps to 10fps for a frame.</p>
<p><strong>Object pooling</strong> is mandatory. Pre-allocate pools for common objects (trees, rocks, grass patches) and recycle them as chunks load/unload. Never create new <code>THREE.Mesh</code> or <code>BABYLON.Mesh</code> instances in the hot path. Swap geometry and material references on pooled objects instead.</p>
<p><strong>Texture atlases</strong> reduce both draw calls and memory fragmentation. Pack all terrain textures into a few large atlases. Pack creator-uploaded textures into per-chunk atlases on the server and stream them as single images.</p>
<p><strong>Geometry compression</strong> with Draco or Meshopt reduces download size by 5-10x and decompression runs on a Web Worker so it doesn't block the main thread. Our <a href="/tools/glb-optimizer">GLB optimizer</a> applies the Meshopt pass in the browser if you want to measure the saving on your own assets first. For terrain specifically, quantized heightmaps (16-bit values compressed with simple delta encoding) are smaller than any general-purpose mesh format.</p>
<p><strong>ArrayBuffer ownership transfer</strong> between workers and the main thread avoids copying. When a worker decompresses a mesh, transfer the buffer to the main thread with zero copy using <code>postMessage</code> with transferable objects.</p>
<h3>Asset Delivery</h3>
<p><strong>CDN with edge caching</strong> for static world data. Terrain chunks, base meshes, and texture atlases that don't change often should be cached aggressively (Cache-Control: max-age=31536000, immutable).</p>
<p><strong>Content-addressed storage</strong> means each asset version gets a unique hash in its URL. When a creator modifies a chunk, the new version gets a new hash and the old one stays in cache for anyone still looking at it. No cache invalidation needed.</p>
<p><strong>KTX2 textures</strong> with Basis Universal compression. These decompress to whatever GPU format the device supports (BC7, ASTC, ETC2, or RGBA fallback). A 1024x1024 terrain texture goes from 4 MB uncompressed to roughly 150 KB in KTX2. For a world with thousands of unique textures, this compression is the difference between viable and not.</p>
<p><strong>glTF Binary (GLB)</strong> for all 3D assets. It's the JPEG of 3D. Every browser engine loads it, it's compact, and it can embed textures, materials, and animations in a single file. Use Draco or Meshopt extensions for mesh compression. Creator-uploaded assets get processed server-side into optimized GLB before entering the world.</p>
<h2>Multiplayer Networking</h2>
<p>Putting hundreds of creators in the same world requires a networking architecture that handles real-time movement, persistent world state, and creator edits without melting.</p>
<h3>Server Architecture</h3>
<p><strong>Authoritative server</strong> for world state. The browser is untrusted. All meaningful actions (placing objects, modifying terrain, moving between chunks) are validated server-side. The client predicts locally and reconciles with server state.</p>
<p><strong>Spatial sharding</strong> divides the world across server instances. Each shard owns a rectangular region of the world grid. As player density shifts, shards can split or merge. This is how EVE Online handles thousands of players in one universe, and it's the same principle at smaller scale.</p>
<p>For a creator world where most interactions are local (you're building in your area, your neighbors can see it), spatial sharding works naturally. A player standing at a shard boundary sees both shards' content, which requires cross-shard visibility queries, but this is a solved problem.</p>
<p><strong>Technology options for the server:</strong></p>
<table>
<thead>
<tr>
<th>Technology</th>
<th>Strengths</th>
<th>Use Case</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Cloudflare Durable Objects</strong></td>
<td>Edge-deployed, auto-scaling, built-in persistence, WebSocket support</td>
<td>World shard state, per-chunk authority</td>
</tr>
<tr>
<td><strong>Hathora / Rivet</strong></td>
<td>Managed game server hosting, DDoS protection, global deployment</td>
<td>Dedicated game server instances</td>
</tr>
<tr>
<td><strong>Colyseus</strong></td>
<td>Open-source game server framework for Node.js, schema-based state sync</td>
<td>Room-based multiplayer with state diffing</td>
</tr>
<tr>
<td><strong>PartyKit</strong></td>
<td>Edge-deployed, WebSocket + WebRTC, Cloudflare Workers based</td>
<td>Real-time collaboration, lightweight multiplayer</td>
</tr>
<tr>
<td><strong>Custom Rust/Go</strong></td>
<td>Maximum control, best performance per instance</td>
<td>High-density shards needing low-latency physics</td>
</tr>
</tbody>
</table>
<p><strong>Our context (Cloudflare infrastructure):</strong> Durable Objects are a natural fit. Each world chunk becomes a Durable Object that holds authoritative state for that chunk's content. Players connect via WebSocket to the Durable Object responsible for their current chunk. When they move to an adjacent chunk, they connect to that chunk's DO. Durable Objects persist state to disk automatically, so world data survives restarts.</p>
<h3>Client-Server Communication</h3>
<p><strong>WebSocket</strong> for reliable ordered messages (chat, world edits, inventory, game state). One connection per active shard the player can see (typically 1-4 connections).</p>
<p><strong>WebRTC DataChannel</strong> for unreliable unordered messages (player positions, animations, ephemeral effects). WebRTC is peer-to-peer capable, but for a world with many players, you'd run it through an SFU (Selective Forwarding Unit) to avoid N2 connections. Cloudflare Calls or LiveKit can serve as the SFU.</p>
<p><strong>State synchronization</strong> uses delta compression. The server tracks what each client has seen and only sends changes. For a creator world, this is particularly important because the world state (what objects exist, where they are, what properties they have) changes much less frequently than player positions. You can afford to send world state updates at 2-5 Hz while player positions update at 20-30 Hz.</p>
<pre><code class="language-typescript">interface WorldChunkState {
  version: number;
  terrain: TerrainPatch;
  objects: PlacedObject[];
  creators: CreatorPresence[];
}

interface DeltaUpdate {
  chunkId: string;
  fromVersion: number;
  toVersion: number;
  addedObjects: PlacedObject[];
  removedObjectIds: string[];
  modifiedObjects: Partial&lt;PlacedObject&gt;[];
  creatorMoves: CreatorPosition[];
}
</code></pre>
<h3>Conflict Resolution for Creator Edits</h3>
<p>When two creators modify the same area simultaneously, you need a conflict resolution strategy. This is where the choice between real-time collaboration models matters.</p>
<p><strong>Last-write-wins</strong> is the simplest. Each object has a single owner at any time. If you're editing a building, nobody else can edit it until you release it. Simple, no conflicts, but limits collaboration.</p>
<p><strong>Operational Transform (OT)</strong> is what Google Docs uses. Operations are transformed against concurrent operations to produce a consistent result. This works for text but gets complex for 3D spatial operations. Figma uses a variant of this for their 2D canvas.</p>
<p><strong>CRDTs (Conflict-free Replicated Data Types)</strong> allow concurrent edits that always converge to the same state without coordination. For a world with discrete objects (each with an ID and properties), a Last-Writer-Wins Register per property combined with an Add-Wins Set for the object collection gives you automatic convergence. Yjs and Automerge are production-quality CRDT libraries for JavaScript.</p>
<p><strong>Our recommendation:</strong> Use CRDTs for world object state (what exists, where it is, what properties it has) and authoritative server for spatial validation (no two objects in the same spot, objects stay within world bounds). The CRDT handles the collaboration. The server handles the physics.</p>
<h3>Handling Scale: How Many Players?</h3>
<p>Browser MMOs exist today. <a href="http://Hordes.io">Hordes.io</a> runs 200+ players in one scene in a browser. BrowserQuest (Mozilla's experiment) handled hundreds with a simple tile-based world. The question isn't whether browsers can handle multiplayer, it's what visual fidelity you can maintain as player count rises.</p>
<p><strong>Player rendering budget:</strong> Each visible player needs a mesh, animations, and potentially creator-customized appearance. At 60fps, you have 16ms per frame. A reasonable budget:</p>
<ul>
<li>50 fully-animated players at close range: ~2ms of animation + skinning</li>
<li>200 players at medium range (simplified animation, instanced): ~1ms</li>
<li>500+ players as dots/icons on minimap: negligible</li>
</ul>
<p>This gives you a visible population of ~250 players in one view, which is more than enough for a creator world. World of Warcraft capitals rarely render more than 200 characters in view at once.</p>
<p><strong>Network budget:</strong> Each player sending position at 20 Hz is roughly 40 bytes * 20 = 800 bytes/second. 200 players in view: 160 KB/s of position data. Add world state, chat, and creator actions, and you're looking at 200-500 KB/s per client. Well within broadband capabilities but worth compressing.</p>
<h2>Terrain System</h2>
<p>Terrain is the foundation of any open world. It's also where browser constraints hit hardest because terrain needs to be everywhere and always visible.</p>
<h3>Heightmap-Based Terrain</h3>
<p>Like Skyrim, use a heightmap. A 2D grid of height values generates 3D terrain through a vertex shader. This is dramatically more compact than arbitrary mesh terrain.</p>
<p>A 4096x4096 heightmap at 16-bit precision is 32 MB uncompressed. But you never load it all at once. Each 64m chunk uses a 65x65 section of the heightmap (about 8.4 KB at 16-bit). Compress that with delta encoding and zlib and you're under 2 KB per chunk.</p>
<p><strong>Texture splatting</strong> paints multiple terrain materials (grass, rock, dirt, sand) using a blend map. Each chunk has a 4-channel RGBA splat map where each channel controls the blend weight of one material. With 4 textures per splat map and the ability to vary splat maps per chunk, you get visual variety across the entire world.</p>
<p>Modern terrain renderers use <strong>virtual texturing</strong> (also called megatexture, from id Software's tech in Rage). Instead of splatting at runtime, you pre-render the blended terrain texture at high resolution and stream tiles of it as the camera moves. This trades storage for runtime performance. WebGPU's compute shaders can handle the feedback and page-table management that virtual texturing requires.</p>
<h3>Clipmap or Geoclipmapping</h3>
<p>For rendering large terrain in a browser, the CDLOD (C. Dick's LOD) or geoclipmapping approach works well. The terrain is rendered as a set of concentric rings around the camera, each ring at half the resolution of the previous one. Close to the camera you see full-resolution terrain. Far away you see a coarser version. The transitions are smooth because geometry morphs between levels.</p>
<p>This technique is GPU-friendly (one draw call per ring), handles infinite terrain with constant memory, and works in WebGL 2. It's what Flight Simulator and most modern open-world games use at some level.</p>
<h3>Creator-Modified Terrain</h3>
<p>If creators can sculpt terrain, you need a way to store and stream modifications on top of the base heightmap. Two approaches:</p>
<p><strong>Delta heightmaps</strong> store the difference between the base terrain and the modified terrain. Most of the world is unmodified (deltas are zero), so this compresses extremely well. When loading a chunk, apply the delta on top of the base.</p>
<p><strong>Voxel overlays</strong> for more dramatic modifications (caves, overhangs, arches). A heightmap can't represent terrain where one point has two heights. A sparse voxel grid stored only in modified chunks handles this. Marching cubes or dual contouring generates the mesh. This is more expensive but enables Minecraft-style terrain editing.</p>
<h2>AI-Powered World Generation</h2>
<p>This is where Cinevva's existing generative AI capabilities become a force multiplier. Instead of hand-building every rock and tree, creators can direct AI to populate the world.</p>
<h3>Terrain Generation with Neural Fields</h3>
<p>Recent research on neural terrain generation (NVIDIA's GET3D, Terragen's neural network mode, and papers like &quot;Terrain Generation Using Procedural Models&quot;) shows that trained models can generate plausible terrain from text prompts or sketch inputs. A creator could draw a rough coastline and say &quot;forested hills meeting a rocky shore&quot; and get a heightmap with appropriate erosion, vegetation masks, and material assignments.</p>
<p>For browser delivery, you'd run the generation server-side and stream the result. The generation model doesn't need to run in the browser. It produces heightmaps and splat maps that the browser can render with the standard terrain pipeline.</p>
<h3>3D Asset Generation</h3>
<p>Models like <a href="https://github.com/Tencent-Hunyuan/HunyuanVideo">Hunyuan3D</a>, Meshy, Tripo, and Rodin can generate 3D meshes from text or images. The workflow for a creator world:</p>
<ol>
<li>Creator describes or sketches what they want (&quot;a mossy stone archway&quot; or &quot;a futuristic lamp post&quot;)</li>
<li>Server runs the generation model, produces a high-poly mesh</li>
<li>Server auto-processes: decimate to web-friendly poly count, generate LODs, bake textures to atlas, export as GLB with Draco compression</li>
<li>Asset appears in the creator's inventory, ready to place in the world</li>
</ol>
<p>This pipeline already exists in pieces on Cinevva. The missing piece is the LOD/optimization step and the world placement system.</p>
<h3>Procedural Population</h3>
<p>Even with AI-generated assets, manually placing every tree in a forest is tedious. Procedural scattering rules let creators define zones (&quot;this area is dense forest&quot;, &quot;this slope is rocky scree&quot;) and the system populates them automatically.</p>
<p>GPU compute shaders can run the scattering in the browser. Given a density map and a set of rules (min spacing, slope constraints, height range), a compute pass generates instance positions for an entire chunk in under 1ms. Modify the density map, and the foliage re-generates instantly.</p>
<h2>Entity Component System (ECS)</h2>
<p>An open world with thousands of objects needs an efficient entity management system. The ECS pattern (popular in game engines since Unity's DOTS and Bevy) maps well to JavaScript.</p>
<p><strong>bitECS</strong> is a high-performance ECS for JavaScript that uses typed arrays and bitwise operations. Entities are plain integers. Components are contiguous typed arrays (one per component type). Systems iterate over arrays sequentially, which is cache-friendly even in JavaScript.</p>
<pre><code class="language-typescript">import { createWorld, defineComponent, Types, defineQuery, addEntity, addComponent } from 'bitecs';

const Position = defineComponent({ x: Types.f32, y: Types.f32, z: Types.f32 });
const Velocity = defineComponent({ x: Types.f32, y: Types.f32, z: Types.f32 });
const ChunkRef = defineComponent({ chunkX: Types.i16, chunkZ: Types.i16 });

const world = createWorld();
const movingQuery = defineQuery([Position, Velocity]);

function movementSystem(world) {
  const entities = movingQuery(world);
  for (let i = 0; i &lt; entities.length; i++) {
    const eid = entities[i];
    Position.x[eid] += Velocity.x[eid] * dt;
    Position.y[eid] += Velocity.y[eid] * dt;
    Position.z[eid] += Velocity.z[eid] * dt;
  }
  return world;
}
</code></pre>
<p>For an open world, the ECS handles everything: player characters, placed objects, NPCs, particles, triggers, and world props. When a chunk unloads, its entities get removed from the ECS. When a chunk loads, entities get added. The ECS doesn't care about the spatial organization. It just processes components.</p>
<h2>Physics</h2>
<p>Browser physics has gotten surprisingly good thanks to WebAssembly.</p>
<h3>Rapier (Rust -&gt; Wasm)</h3>
<p>Rapier is a physics engine written in Rust that compiles to WebAssembly. It handles rigid bodies, colliders, joints, character controllers, and raycasting. Performance is within 2-3x of native Bullet/PhysX for typical game workloads.</p>
<p>For an open world, Rapier handles:</p>
<ul>
<li>Player character controller (walking on terrain, climbing steps, sliding on slopes)</li>
<li>Object-to-object collision (placed objects, projectiles)</li>
<li>Raycasting for player interactions (click on an object to select it)</li>
<li>Trigger volumes (enter an area, trigger an event)</li>
</ul>
<p>Rapier runs in a Web Worker, so physics simulation doesn't block rendering. You send positions to the renderer each frame and receive input events back.</p>
<h3>Havok for Web (via Babylon.js)</h3>
<p>If you go with Babylon.js, Havok physics comes built in as a Wasm module. Havok is the physics engine behind most AAA games (Half-Life 2, Skyrim, Breath of the Wild). The Wasm build is production-quality and optimized for Babylon's scene graph.</p>
<h3>Terrain Collision</h3>
<p>Physics engines need collision geometry for terrain. Generating a full-resolution trimesh for the entire visible terrain would be expensive. Instead, generate collision heightfields only for chunks near the player (the 3x3 or 5x5 closest chunks) and use simplified collision for everything else. Rapier's heightfield collider is designed for exactly this use case.</p>
<h2>Audio</h2>
<p>Sound transforms a 3D space from a visual demo into a place. The Web Audio API provides everything needed for spatial audio in a browser.</p>
<p><strong>Spatial audio with HRTF</strong> (Head-Related Transfer Function) places sounds in 3D space. A waterfall to your left sounds like it's to your left. Walk closer and it gets louder. Walk behind a building and it gets muffled (with additional processing).</p>
<p><strong>Ambiance zones</strong> work like texture splatting for audio. Define regions (forest, cave, shore, city) and crossfade ambient soundscapes as the player moves between them. This is how Skyrim makes forests sound alive. Layer wind, birds, rustling leaves, and distant animals. None of it is complex. All of it is spatial.</p>
<p><strong>Web Audio performance</strong> is good enough for dozens of simultaneous spatial sources. The bottleneck is typically asset size, not processing. Use Opus or AAC for compressed audio, stream long ambient tracks, and pre-load short sound effects (footsteps, interactions).</p>
<h2>Water, Weather, and Atmosphere</h2>
<p>Every memorable open world has water and weather. These systems define the mood and make the world feel alive. They're also surprisingly achievable in a browser.</p>
<h3>Water Rendering</h3>
<p>Water in browser 3D has three levels of complexity, and you can ship the simplest one first and upgrade later.</p>
<p><strong>Level 1: Reflective plane.</strong> A flat mesh at the water level with a reflective/refractive material. Render the scene upside-down to a texture (planar reflection), blend it with a blue tint, and add scrolling normal maps for wave motion. This is what Skyrim's base water shader does. In Three.js, the <code>Water</code> example in the official repo implements this. In Babylon.js, the <code>WaterMaterial</code> does it out of the box. Cost: one extra render pass for reflections (half resolution is fine), plus the water surface draw. On a mid-range GPU, this adds 2-3ms per frame.</p>
<p><strong>Level 2: Screen-space reflections + depth-based effects.</strong> Instead of a separate reflection render pass, sample the existing frame buffer for reflections (SSR). Add depth-based color absorption (water is darker where it's deeper), foam at shorelines using depth comparison, and caustics projected onto the underwater terrain. This is what The Witcher 3 uses. SSR is available in both Three.js's postprocessing stack and Babylon.js's rendering pipeline. Cost: 1-2ms for SSR, negligible for depth effects.</p>
<p><strong>Level 3: FFT ocean simulation.</strong> For open ocean, use a Fast Fourier Transform to simulate wave spectra on the GPU. Jerry Tessendorf's paper &quot;Simulating Ocean Water&quot; (2001) is the foundation that every major game engine uses. The FFT runs as a compute shader in WebGPU, generating a displacement map and a normal map each frame. The resulting ocean looks remarkably convincing. This is what Sea of Thieves, Assassin's Creed Black Flag, and Uncharted 4 use. In WebGPU, a 256x256 FFT ocean runs in under 1ms on desktop GPUs.</p>
<pre><code class="language-wgsl">@compute @workgroup_size(16, 16)
fn fftOceanDisplacement(@builtin(global_invocation_id) id: vec3&lt;u32&gt;) {
    let k = vec2&lt;f32&gt;(f32(id.x) - N/2.0, f32(id.y) - N/2.0);
    let omega = sqrt(length(k) * gravity);
    let phase = omega * time;
    let h = spectrum[id.xy] * vec2&lt;f32&gt;(cos(phase), sin(phase));
    displacement[id.xy] = h;
}
</code></pre>
<p>For a creator world, start with Level 1 (reflective plane) and upgrade to Level 2 when the renderer matures. Level 3 is only needed if the world has open ocean.</p>
<h3>Weather Systems</h3>
<p>Weather in Skyrim and BotW is driven by a state machine with transitions. Clear &gt; Cloudy &gt; Rain &gt; Storm &gt; Clear. Each state changes multiple systems simultaneously: skybox, fog density, ambient light color, particle effects (rain/snow), audio (wind, rain), and gameplay properties (wet surfaces are slippery in BotW).</p>
<p>For a browser world, the weather system has three layers:</p>
<p><strong>Sky rendering.</strong> A procedural sky shader is cheaper and more flexible than skybox textures. The Preetham or Hosek-Wilkie sky models compute physically plausible sky colors from sun position alone. Add a cloud layer using 3D noise scrolled through a plane. Babylon.js has a built-in procedural sky material. Three.js has the <code>Sky</code> example. Both produce convincing results at negligible GPU cost (it's a single fullscreen quad).</p>
<p><strong>Particle effects.</strong> Rain is a particle system with thousands of thin quads falling from above. Snow is similar but with slower, drifting trajectories. Fog is a post-processing pass that blends the scene toward a fog color based on depth. All of these are standard WebGL effects. The cost depends on particle count: 10,000 rain particles add roughly 0.5ms per frame.</p>
<p><strong>Environmental response.</strong> Wet surfaces increase specular reflection. Snow accumulation adds white to upward-facing surfaces. Puddles appear in concave terrain. These are shader tricks, not geometry changes. A &quot;wetness&quot; uniform changes the material roughness. A &quot;snow cover&quot; uniform blends white on surfaces whose normals point upward. GTA V and The Witcher 3 use exactly this approach.</p>
<p><strong>Synchronized weather.</strong> In a multiplayer world, weather must be consistent across clients. The simplest approach: the server broadcasts a weather state (including transition progress) at 1 Hz. Clients interpolate locally. Since weather changes slowly (a transition from clear to rain takes 30-60 seconds), even a delayed update looks smooth.</p>
<h3>Atmospheric Perspective</h3>
<p>This is the single most effective visual technique for making a world feel large, and it's nearly free. Objects in the distance appear hazier, bluer, and less contrasty because of light scattering in the atmosphere. Every open world uses this.</p>
<p>In a fragment shader, blend distant pixels toward the atmosphere color based on depth:</p>
<pre><code class="language-glsl">float fogFactor = 1.0 - exp(-distance * fogDensity);
vec3 finalColor = mix(objectColor, atmosphereColor, fogFactor);
</code></pre>
<p>BotW takes this further with a painterly fog that transitions into a watercolor-style distance. The fog color changes with time of day and weather. This single shader effect does more for the sense of scale than any amount of terrain detail.</p>
<p>For a browser world with a stylized art direction, atmospheric perspective is the first visual effect to implement. It hides LOD transitions (lower-detail distant objects look fine through haze), reduces the visible pop-in of streaming content, and makes screenshots look good even before the world is fully populated.</p>
<h2>Avatar Systems</h2>
<p>Players need bodies. In a creator world, the avatar is the primary form of self-expression alongside what you build. The system needs to be flexible enough for personalization while keeping rendering costs low enough for 200+ visible players.</p>
<h3>Avatar Architecture</h3>
<p><strong>Base mesh + customization layers.</strong> Start with a shared humanoid base mesh (1,500-3,000 triangles for the body). Customization happens through:</p>
<ul>
<li>Color/texture variations (skin tone, hair color) via uniform changes. No extra geometry.</li>
<li>Swappable mesh parts (hair styles, clothing, accessories) that replace sections of the base mesh. Each part is a separate small mesh (200-500 triangles).</li>
<li>Material property variations (metallic armor vs. cloth tunic) through material parameter changes.</li>
</ul>
<p>This is how Roblox, Fortnite, and VRChat handle avatars. The base cost stays constant regardless of customization.</p>
<p><strong>Ready Player Me</strong> and <strong>Avaturn</strong> offer browser-based avatar creation that outputs glTF models compatible with any 3D engine. They handle face scanning from photos, body proportions, and clothing. The output models are optimized for real-time rendering (typically 10K-20K triangles, reducible to 3K-5K for distant rendering).</p>
<h3>Skeletal Animation in the Browser</h3>
<p>Every visible player needs animations: idle, walk, run, jump, emotes. Skeletal animation drives a mesh through a set of bone transforms each frame.</p>
<p><strong>GPU skinning</strong> is mandatory for performance. Both Three.js and Babylon.js perform skinning on the GPU by default. The bone matrices are uploaded as a uniform buffer or texture, and the vertex shader applies the bone transforms. The CPU cost is computing the bone transforms from the animation clip. For a 60-bone skeleton at 30fps, this is roughly 0.01ms per character. 200 characters: 2ms total. Acceptable.</p>
<p><strong>Animation blending</strong> mixes multiple animations (walk + wave, idle + look around) using blend weights. Both Three.js (<code>AnimationMixer</code>) and Babylon.js (<code>AnimationGroup</code>) support this. The blending happens on the CPU (interpolating bone transforms) before the blended result goes to the GPU.</p>
<p><strong>Instanced animation</strong> is the key to rendering many characters efficiently. Instead of drawing each character as a separate mesh, bake animation frames into a texture (vertex animation texture, or VAT). Each row of the texture stores bone transforms for one frame. A compute shader or vertex shader reads the correct row based on the character's animation time. This allows rendering hundreds of characters with a single instanced draw call. The Witcher 3 and Assassin's Creed use this for crowd rendering.</p>
<p>In WebGPU, instanced animated characters look like this:</p>
<pre><code class="language-wgsl">@vertex
fn vs_main(@builtin(instance_index) instanceIdx: u32, @location(0) position: vec3&lt;f32&gt;) -&gt; @builtin(position) vec4&lt;f32&gt; {
    let animFrame = instances[instanceIdx].animationFrame;
    let boneIdx = vertexBoneIndices[vertexIdx];
    let boneTransform = textureLoad(animTexture, vec2&lt;i32&gt;(i32(boneIdx), i32(animFrame)), 0);
    let worldPos = instances[instanceIdx].transform * boneTransform * vec4&lt;f32&gt;(position, 1.0);
    return viewProjection * worldPos;
}
</code></pre>
<p>For distant players (beyond 50 meters), switch to billboard impostors: a flat quad showing a pre-rendered sprite of the character from the current viewing angle. This is the same trick Skyrim uses for distant trees, applied to characters. The transition is unnoticeable at distance.</p>
<h3>Inverse Kinematics for Interaction</h3>
<p>When a character picks up an object, reaches for a door handle, or points at something, procedural IK makes the action look natural. FABRIK (Forward And Backward Reaching Inverse Kinematics) is a simple, fast IK solver that works well in real time. Both Three.js (via <code>CCDIKSolver</code>) and Babylon.js (via <code>BoneIKController</code>) have built-in IK support.</p>
<p>For a creator world, IK means characters can interact with placed objects naturally: sit in creator-placed chairs, lean on railings, pick up items. The interactions don't need per-object animation. The IK system adapts the character's pose to the object's position.</p>
<h2>Advanced Networking</h2>
<p>The basic architecture (WebSocket + WebRTC) was covered earlier. Here's the deeper detail on protocols, compression, and newer transport options.</p>
<h3>Binary Message Protocols</h3>
<p>JSON over WebSocket is a 10x bandwidth waste compared to binary encoding. For a real-time multiplayer world, every message should be binary.</p>
<p><strong>FlatBuffers</strong> (from Google) is the best fit for game networking. Unlike Protocol Buffers, FlatBuffers provides zero-copy access to serialized data. You don't decode the message into JavaScript objects. You read fields directly from the buffer. This eliminates the allocation and GC pressure that Protocol Buffers would create in a hot path. FlatBuffers has a JavaScript/TypeScript code generator.</p>
<p>A player position update in FlatBuffers:</p>
<pre><code class="language-typescript">// Schema: PlayerUpdate { id: uint16, x: float32, y: float32, z: float32, yaw: float16, pitch: float16, animState: uint8 }
// Total: 17 bytes per player update
// vs JSON: {&quot;id&quot;:42,&quot;x&quot;:103.5,&quot;y&quot;:12.3,&quot;z&quot;:-47.8,&quot;yaw&quot;:1.57,&quot;pitch&quot;:0.2,&quot;animState&quot;:3} = 80+ bytes
</code></pre>
<p>For 200 players at 20 Hz, the difference is 200 * 17 * 20 = 68 KB/s (binary) vs 200 * 80 * 20 = 320 KB/s (JSON). Binary is 4.7x smaller, and it avoids JSON.parse allocations in the hot loop.</p>
<p><strong>MessagePack</strong> is simpler than FlatBuffers (no schema, no code generation) but still 30-50% smaller than JSON. It's a good middle ground if you want binary without schema management.</p>
<h3>Position Quantization and Delta Compression</h3>
<p>Player positions don't need 32-bit float precision. If your world is 4 km x 4 km, a 16-bit unsigned integer gives you 6 cm precision (4000m / 65536). For most games, that's indistinguishable from full precision. This halves the size of position data.</p>
<p><strong>Delta compression</strong> sends only the difference from the last acknowledged state. If a player moved 0.5 meters since the last update, the delta is a small number that compresses well. Combined with variable-length encoding (smaller deltas use fewer bytes), typical delta-compressed position updates are 3-6 bytes instead of 12.</p>
<p><strong>Dead reckoning</strong> reduces update frequency. Instead of sending position at 20 Hz, send position + velocity. The client extrapolates the position between updates. Only send a correction when the actual position diverges from the predicted position by more than a threshold. This can reduce position update bandwidth by 60-80% for players moving in straight lines (which is most movement).</p>
<p>RuneScape uses an extreme version of this: player movement is tile-based, so a move command is just a destination tile. The client animates the walk path locally. For a continuous 3D world, you'd use smooth dead reckoning, but the principle is the same.</p>
<h3>WebTransport</h3>
<p>WebTransport is a newer protocol that could replace both WebSocket and WebRTC DataChannel for game networking. It runs over HTTP/3 (QUIC) and provides:</p>
<ul>
<li><strong>Reliable ordered streams</strong> (like WebSocket but multiplexed, so a stall on one stream doesn't block others)</li>
<li><strong>Unreliable datagrams</strong> (like UDP, for position updates that are immediately stale if delayed)</li>
<li><strong>Multiplexed streams</strong> (separate streams for chat, world state, positions, without head-of-line blocking)</li>
</ul>
<p>This is exactly what game networking needs. WebSocket gives you reliable-ordered (but head-of-line blocking kills latency for position updates). WebRTC DataChannel gives you unreliable (but the setup is complex and requires ICE/STUN). WebTransport gives you both over a single connection.</p>
<p>Browser support: Chrome, Edge, and Firefox have shipped WebTransport for a while, and Safari 26.4 added it in March 2026. That move pushed WebTransport to Baseline status, meaning it now works across every major browser, including on iOS where all browsers use WebKit. A WebSocket fallback is still worth keeping for older Safari versions, but WebTransport is broadly usable today.</p>
<p>Cloudflare supports WebTransport through Workers, which fits our infrastructure.</p>
<h3>Interest Management at Scale</h3>
<p>The networking challenge with 200+ players isn't bandwidth per player. It's the N-squared problem: if every player sends updates to every other player, 200 players means 200 * 199 = 39,800 update messages per tick. The server needs to filter.</p>
<p><strong>Area of Interest (AOI)</strong> management means each player only receives updates about entities within their view range. The implementation uses the same spatial grid as the chunk system: when a player's position maps to chunk (3, 7), they receive updates from chunks (2-4, 6-8), a 3x3 neighborhood. Entities outside this range are not sent.</p>
<p><strong>Priority-based updates</strong> within the AOI give more bandwidth to important entities. A player running toward you gets 20 Hz updates. A player standing still 200 meters away gets 2 Hz updates. An NPC doing nothing gets 0.5 Hz updates. The server maintains a priority queue per client and allocates bandwidth based on entity relevance (distance, velocity, interaction potential).</p>
<p><strong>Dormancy.</strong> Entities that haven't changed state for N seconds go dormant and stop generating network traffic entirely. The client keeps the last known state until a wake-up event arrives. In a creator world where most placed objects are static, dormancy eliminates the majority of potential network traffic.</p>
<p><a href="http://Slither.io">Slither.io</a>'s variable tick rate (5 Hz distant vs 30 Hz nearby) is a simplified version of this. EVE Online's &quot;time dilation&quot; is the extreme version (when too many players are in one area, the server slows the game tick rate to maintain consistency). For our use case, priority-based AOI with dormancy is the right balance.</p>
<h2>Gaussian Splatting and Newer Rendering Tech</h2>
<p>Traditional mesh rendering (triangles + textures) isn't the only option for browser 3D anymore. Several newer techniques are reaching production viability.</p>
<h3>3D Gaussian Splatting</h3>
<div class="video-embed">
<iframe src="https://www.youtube.com/embed/T_kXY43VZnk" title="3D Gaussian Splatting for Real-Time Radiance Field Rendering" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<div class="game-caption">3D Gaussian Splatting (SIGGRAPH 2023): photorealistic scene reconstruction from photographs, rendering at real time in the browser. Creators could scan real-world objects with a phone and place them directly in the world.</div>
<p>3D Gaussian Splatting (3DGS) reconstructs 3D scenes from photographs by representing the scene as millions of colored 3D Gaussians (oriented, colored ellipsoids). The renderer sorts and rasterizes these splats instead of triangles.</p>
<p>Why this matters for a creator world:</p>
<ul>
<li><strong>Photogrammetry capture becomes trivial.</strong> A creator takes 50 photos of a real-world object or location with their phone. Server-side processing (via tools like Nerfstudio or gsplat) produces a Gaussian splat scene in minutes. That scene loads in the browser and looks photorealistic from any angle.</li>
<li><strong>Browser rendering is solved.</strong> Multiple open-source implementations render Gaussian splats in WebGL and WebGPU. PlayCanvas has built-in splat rendering. Luma AI has a Three.js-compatible viewer. gsplat.js is a standalone library. Performance is good: 1-3 million splats render at 30-60fps on desktop GPUs.</li>
<li><strong>The data format is compact.</strong> A Gaussian splat scene of a room might be 10-30 MB compressed. Individual objects are 1-5 MB. This is comparable to textured mesh assets.</li>
</ul>
<p>The trade-off: splat scenes are static. You can't easily animate or modify them. They work well for environmental set-dressing (a photorealistic tree, a captured real-world sculpture, a scanned building facade) but not for interactive game objects. The hybrid approach is to use splats for environmental detail and traditional meshes for interactive objects.</p>
<p><strong>For a creator world:</strong> Let creators capture real-world objects via phone photos, process them into Gaussian splats server-side, and place them in the world. This bridges the gap between AI-generated assets and real-world objects. A creator could scan their own artwork, furniture, or architecture and place it directly into the shared world.</p>
<h3>Neural Radiance Fields (NeRFs) to Mesh</h3>
<p>NeRFs represent scenes as neural networks that output color and density for any 3D point. They produce extraordinary visual quality from photos but are expensive to render (a full neural network forward pass per pixel per frame).</p>
<p>The practical approach for browsers: train a NeRF from photos, then extract a mesh using marching cubes on the density field. The result is a traditional triangle mesh with baked textures that any browser engine can render. Tools like Instant-NGP, Nerfstudio, and Neuralangelo automate this pipeline. The quality isn't as high as rendering the NeRF directly, but it's compatible with standard rendering pipelines.</p>
<p>This is another path for creators to get real-world objects into the browser world without modeling skills.</p>
<h3>Mesh Shaders and Nanite-Style Rendering</h3>
<p>UE5's Nanite system renders billions of triangles by using mesh shaders, GPU-driven rendering, and virtual geometry (streaming triangles at the per-cluster level based on screen coverage). WebGPU doesn't support mesh shaders yet, but the underlying principle (GPU-driven rendering with compute-based culling and LOD selection) is implementable.</p>
<p>A WebGPU compute shader can:</p>
<ol>
<li>Read all mesh cluster bounding boxes (groups of ~64 triangles)</li>
<li>Test each cluster against the view frustum and occlusion buffer</li>
<li>Select the appropriate LOD level based on screen-space size</li>
<li>Write visible clusters into an indirect draw buffer</li>
<li>A single indirect draw call renders everything</li>
</ol>
<p>This &quot;virtual geometry&quot; approach handles millions of triangles with constant CPU cost (the CPU submits one draw call regardless of scene complexity). It's how browser rendering will eventually handle large open worlds. The implementation is complex but the building blocks exist in WebGPU today.</p>
<h2>Shader Techniques for Stylized Open Worlds</h2>
<p>A stylized art direction needs specific shader techniques. These are the ones that give the most visual impact per GPU cycle.</p>
<h3>Foliage Wind Animation</h3>
<p>Trees and grass that sway in the wind make a world feel alive. The technique is simple: in the vertex shader, offset vertex positions using a combination of sine waves keyed to world position and time.</p>
<pre><code class="language-glsl">vec3 windOffset = vec3(
    sin(worldPos.x * 0.5 + time * 2.0) * windStrength,
    0.0,
    cos(worldPos.z * 0.3 + time * 1.5) * windStrength
);
float heightFactor = localPos.y / meshHeight;
finalPos += windOffset * heightFactor * heightFactor;
</code></pre>
<p>The <code>heightFactor</code> ensures that the base of the tree stays grounded while the top sways the most. Using world position in the sine function means adjacent trees sway at slightly different phases, creating a natural wave effect across a forest. BotW, Skyrim, and every open world with vegetation use this technique.</p>
<p>For grass, the same principle applies but with a higher frequency and shorter wavelength. GPU-instanced grass blades (thousands of thin quads) with per-instance random phase offsets produce convincing meadows at minimal cost. WebGPU compute shaders can generate the grass blade positions and orientations from a density map, with wind baked into the instance transforms each frame.</p>
<h3>Toon/Cel Shading</h3>
<p>If the art direction is stylized (and the evidence suggests it should be), cel shading is the core technique. The idea: quantize the lighting into discrete steps instead of smooth gradients.</p>
<pre><code class="language-glsl">float NdotL = dot(normal, lightDir);
float toonShading = step(0.3, NdotL) * 0.5 + step(0.6, NdotL) * 0.5;
vec3 color = baseColor * (ambient + toonShading);
</code></pre>
<p>This produces the classic two-tone or three-tone look. Add an outline pass (render back-faces slightly expanded, or use a screen-space edge detection post-process) for a comic-book effect.</p>
<p>BotW's shading is more nuanced than pure cel shading. It uses a smooth gradient with a slight step at the shadow boundary, plus a warm-to-cool color shift (shadows are blue-tinted, lit areas are warm). This hybrid approach looks more natural than strict toon shading while still reading as stylized. It's achievable with a custom shader in any browser 3D engine.</p>
<h3>Stylized Water Shader</h3>
<p>Water in a stylized world doesn't need realistic wave simulation. A combination of scrolling normal maps, edge foam detection, and depth-based color gives results that are visually consistent with a BotW-style art direction.</p>
<pre><code class="language-glsl">float depth = texture(depthTexture, screenUV).r - fragDepth;
vec3 shallowColor = vec3(0.2, 0.7, 0.8);
vec3 deepColor = vec3(0.05, 0.15, 0.3);
vec3 waterColor = mix(shallowColor, deepColor, saturate(depth * 2.0));

float foam = step(0.05, depth) * (1.0 - step(0.15, depth));
foam *= texture(foamNoise, worldUV * 3.0 + time * 0.1).r;
waterColor = mix(waterColor, vec3(1.0), foam * 0.8);
</code></pre>
<p>This gives you depth-based coloring (shallow water is lighter), shoreline foam that animates with noise, and the whole thing runs in a single fragment shader pass.</p>
<h3>Screen-Space Ambient Occlusion (SSAO)</h3>
<p>SSAO darkens corners, crevices, and areas where surfaces meet. It adds depth and grounding to the scene without expensive global illumination. Both Three.js and Babylon.js have built-in SSAO implementations.</p>
<p>For a stylized world, SSAO is even more important than in realistic rendering because the flat shading doesn't naturally show contact shadows. A light SSAO pass (half resolution is fine) adds the missing depth cues. Cost: 1-2ms on desktop GPUs.</p>
<h2>Deeper World Generation</h2>
<p>The base article covered procedural terrain at a high level. Here's the algorithmic detail.</p>
<h3>Noise Functions for Terrain</h3>
<p>All procedural terrain starts with noise. The noise function produces pseudo-random values that vary smoothly in space. Layer multiple octaves (frequencies) for natural-looking results.</p>
<p><strong>Perlin noise</strong> is the classic. <strong>Simplex noise</strong> is faster and has fewer directional artifacts. <strong>OpenSimplex 2</strong> is the modern variant with good performance in JavaScript. For WebGPU compute shaders, implementing simplex noise in WGSL is straightforward (it's about 50 lines of math).</p>
<p><strong>Fractal Brownian Motion (fBm)</strong> layers octaves of noise:</p>
<pre><code>height = 0
amplitude = 1.0
frequency = baseFrequency
for each octave:
    height += amplitude * noise(position * frequency)
    frequency *= lacunarity (typically 2.0)
    amplitude *= persistence (typically 0.5)
</code></pre>
<p>With 6-8 octaves, fBm produces terrain that has large-scale mountain formations, medium-scale hills, and fine-scale roughness, much like real terrain. The persistence parameter controls how rough the terrain is (0.3 produces smooth rolling hills, 0.7 produces jagged mountains).</p>
<p><strong>Domain warping</strong> feeds the output of one noise function as the input coordinates of another. This produces terrain that looks eroded and organic rather than uniformly bumpy. Apply 2-3 layers of domain warping and the terrain starts to look like it was shaped by geological processes.</p>
<h3>Hydraulic Erosion Simulation</h3>
<p>Raw noise terrain looks like crumpled paper. Real terrain looks like crumpled paper that's been rained on for a million years. Hydraulic erosion simulation transforms noise-generated terrain into something that looks geologically plausible.</p>
<p>The algorithm:</p>
<ol>
<li>Drop a water particle at a random position on the heightmap</li>
<li>The particle flows downhill (follow the terrain gradient)</li>
<li>At each step, it picks up sediment from the terrain based on speed and slope</li>
<li>When the particle slows down (flatter terrain, pooling), it deposits sediment</li>
<li>Repeat for 100,000-500,000 particles</li>
</ol>
<p>The result is terrain with river valleys, alluvial fans, natural-looking ridgelines, and smooth slopes that transition logically. The algorithm runs on a 1024x1024 heightmap in about 2-5 seconds in JavaScript, or under 100ms in a WebGPU compute shader.</p>
<p>Sebastian Lague's implementation (available on GitHub) is the standard reference for game developers. It produces terrain that rivals hand-sculpted results. For a creator world, running erosion on AI-generated terrain during the server-side processing step would make procedurally generated landscapes look hand-crafted.</p>
<h3>Biome Assignment</h3>
<p>Real worlds have biomes: forests, deserts, tundra, swampland. Biome assignment maps climate parameters to terrain regions.</p>
<p>The approach from Minecraft is instructive: define biomes on a 2D grid using temperature and humidity axes. Temperature decreases with altitude and latitude. Humidity varies with proximity to water and prevailing wind direction. Each grid cell gets a biome assignment (forest, desert, tundra, etc.) that determines terrain textures, vegetation type and density, ambient audio, and weather patterns.</p>
<p>For a creator world, biome boundaries should be paintable. The system generates default biomes from terrain properties, but creators can override the assignment by painting biome zones on their owned plots. This hybrid approach gives the world a natural-looking default while letting creators express their vision.</p>
<h3>Wave Function Collapse for Structures</h3>
<p>Wave Function Collapse (WFC) generates structures (buildings, dungeons, roads) from a set of tiles with adjacency constraints. Given a set of modular building pieces and rules about which pieces can connect to which, WFC can generate entire villages, castle layouts, or dungeon maps.</p>
<p>For a creator world, WFC enables:</p>
<ul>
<li><strong>Auto-generated villages</strong> to populate the world with baseline content before creators customize it</li>
<li><strong>Assisted building</strong> where a creator places a few pieces and WFC fills in the gaps (like Townscaper but with 3D building blocks)</li>
<li><strong>Dungeon generation</strong> for interactive experiences creators can configure (set the theme, difficulty, and size, and WFC generates the layout)</li>
</ul>
<p>Oskar Stalberg (creator of Townscaper and Bad North) has demonstrated that WFC-based generation feels magical to users. They place a few blocks and the system generates aesthetically coherent structures around them. This is exactly the &quot;simple tools, rich output&quot; principle that succeeds on creator platforms.</p>
<h2>Content Moderation Architecture</h2>
<p>In a world where creators place arbitrary 3D content that others can see, moderation isn't optional. It's a core infrastructure component.</p>
<h3>Automated Screening Pipeline</h3>
<p>Every asset that enters the world goes through a multi-stage pipeline before becoming visible to other players:</p>
<ol>
<li>
<p><strong>Geometry analysis.</strong> Scan the mesh for anatomically explicit shapes using a trained classifier. This catches the majority of obviously inappropriate 3D models. Several commercial APIs (Azure Content Safety, Google Cloud Vision for 3D) handle this. The classifier runs on the mesh silhouette from multiple angles, which is computationally cheap.</p>
</li>
<li>
<p><strong>Texture analysis.</strong> Run each texture through a standard image content moderation API (the same ones used for uploaded photos). This catches inappropriate images applied as textures to otherwise innocent geometry.</p>
</li>
<li>
<p><strong>Text detection.</strong> If the object contains text (either in texture or as a 3D text mesh), run OCR and check against content policy. This catches hate speech, slurs, and other text-based violations.</p>
</li>
<li>
<p><strong>Automated approval.</strong> If all checks pass, the asset becomes visible immediately. If any check flags the asset, it enters a review queue.</p>
</li>
<li>
<p><strong>Human review.</strong> Flagged assets are reviewed by a moderator. For a small platform, this can be the team. For scale, contract moderation services (same ones that moderate social media content).</p>
</li>
</ol>
<h3>Spatial Moderation</h3>
<p>Beyond individual assets, the spatial arrangement of objects can be inappropriate even when each object alone is fine. This is harder to detect automatically. The practical approach:</p>
<ul>
<li><strong>Player reporting.</strong> Any player can report a location. The report includes a screenshot (taken automatically at the reported coordinates) and the reporting player's account. Reports trigger human review.</li>
<li><strong>Heat mapping.</strong> Track which areas generate reports. If a creator's plot consistently generates reports, escalate to review. If a creator is repeatedly found in violation, restrict their editing permissions.</li>
<li><strong>Parcel ratings.</strong> Like Second Life, let creators self-rate their parcels. The default view hides parcels rated above &quot;General.&quot; Players opt in to seeing mature content. This doesn't prevent violations but reduces exposure.</li>
</ul>
<h3>Latency Considerations</h3>
<p>If automated screening takes 5-10 seconds per asset, that's a noticeable delay between a creator placing an object and it appearing to other players. Options:</p>
<ul>
<li><strong>Optimistic local display.</strong> The creator sees their placement immediately. Other players see it after approval. If the asset is rejected, it disappears and the creator is notified.</li>
<li><strong>Pre-approved asset library.</strong> Most placement uses pre-screened assets from the platform's library (including AI-generated assets that were screened during generation). Custom uploads go through screening. This means most placements are instant.</li>
<li><strong>Reputation-based fast-tracking.</strong> Creators with a history of approved content get automatic approval for new placements. New creators or flagged creators go through full screening.</li>
</ul>
<h2>Browser 3D Performance: Real Numbers</h2>
<p>Theoretical budgets are useful. Actual measured performance is more useful. Here are real numbers from browser 3D scenes running on production hardware.</p>
<h3>Rendering Benchmarks</h3>
<p><strong>Three.js scene with 10,000 instanced objects</strong> (trees, rocks, each 500 triangles):</p>
<ul>
<li>MacBook Pro M1 (Chrome, WebGL2): 58-60fps</li>
<li>RTX 3060 desktop (Chrome, WebGL2): 60fps locked</li>
<li>Intel UHD 620 laptop (Chrome, WebGL2): 25-35fps</li>
<li>iPhone 13 (Safari, WebGL2): 30-40fps</li>
</ul>
<p><strong>Three.js scene with 100,000 instanced grass blades</strong> (6 triangles each, 600K total triangles):</p>
<ul>
<li>M1 MacBook: 55fps</li>
<li>RTX 3060: 60fps</li>
<li>Intel UHD 620: 12fps</li>
<li>iPhone 13: 15fps</li>
</ul>
<p><strong>Babylon.js terrain with 1M triangles, 4 LOD levels, Havok physics</strong>:</p>
<ul>
<li>M1 MacBook (WebGPU): 60fps</li>
<li>M1 MacBook (WebGL2): 45fps</li>
<li>RTX 3060 (WebGPU): 60fps</li>
<li>RTX 3060 (WebGL2): 55fps</li>
</ul>
<p><strong>Gaussian splat scene, 2M splats</strong> (via gsplat.js):</p>
<ul>
<li>M1 MacBook (WebGL2): 30fps</li>
<li>RTX 3060 (WebGL2): 45fps</li>
<li>RTX 3060 (WebGPU): 60fps</li>
</ul>
<h3>Memory Measurements</h3>
<p><strong>Three.js minimal scene</strong> (skybox, terrain, 100 objects): 80-120 MB GPU memory, 150-200 MB JS heap
<strong>Babylon.js with Havok physics</strong>: 200-300 MB GPU memory, 250-350 MB JS heap (Havok Wasm adds ~50 MB)
<strong>Browser tab memory limits</strong> (measured, not documented):</p>
<ul>
<li>Chrome desktop: typically crashes around 4 GB</li>
<li>Chrome Android: typically crashes around 1-1.5 GB</li>
<li>Safari iOS: typically crashes around 1 GB</li>
<li>Firefox desktop: typically crashes around 3-4 GB</li>
</ul>
<h3>Network Measurements</h3>
<p><strong>WebSocket round-trip latency</strong> (browser to Cloudflare edge):</p>
<ul>
<li>Same continent: 10-30ms</li>
<li>Cross-continent: 80-200ms</li>
<li>With Cloudflare Durable Objects: add 5-10ms for DO wake-up on first request</li>
</ul>
<p><strong>WebRTC DataChannel latency</strong> (browser to browser via TURN):</p>
<ul>
<li>Same city: 5-15ms</li>
<li>Same continent: 20-50ms</li>
<li>Cross-continent: 100-250ms</li>
</ul>
<p><strong>WebTransport (HTTP/3 QUIC)</strong> latency is comparable to WebSocket but without head-of-line blocking, so P99 latency is significantly better (no stalls from a single lost packet).</p>
<h3>Load Time Measurements</h3>
<p><strong>Three.js empty scene</strong> (just the library): 350ms to first frame
<strong>Babylon.js empty scene</strong>: 500ms to first frame
<strong>1 MB GLB model via fetch + parse</strong>: 200-400ms on broadband
<strong>KTX2 texture, 1024x1024, Basis Universal</strong>: 50-100ms to decode on GPU
<strong>Draco-compressed mesh, 50K triangles</strong>: 30-80ms to decode in Web Worker</p>
<p>These numbers confirm the performance budget in the architecture section is achievable. A mid-range desktop can render a complex open world scene at 60fps. Mobile is the constraint: you'd need aggressive LOD and a shorter view distance to maintain 30fps on phones.</p>
<h2>The Full Stack</h2>
<p>Putting it all together, here's the architecture for a browser-based multiplayer creator open world:</p>
<h3>Client (Browser)</h3>
<table>
<thead>
<tr>
<th>Layer</th>
<th>Technology</th>
<th>Role</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Renderer</strong></td>
<td>Babylon.js (WebGPU + WebGL2 fallback)</td>
<td>Scene rendering, terrain, LOD, post-processing</td>
</tr>
<tr>
<td><strong>Terrain</strong></td>
<td>Custom heightmap system + Babylon DynamicTerrain</td>
<td>Chunk-based streaming terrain with splatting</td>
</tr>
<tr>
<td><strong>Physics</strong></td>
<td>Rapier (Wasm) or Havok (via Babylon)</td>
<td>Character controller, collision, raycasting</td>
</tr>
<tr>
<td><strong>ECS</strong></td>
<td>bitECS</td>
<td>Entity management for all world objects</td>
</tr>
<tr>
<td><strong>Networking</strong></td>
<td>WebSocket + WebRTC DataChannel</td>
<td>State sync, position updates, voice chat</td>
</tr>
<tr>
<td><strong>State</strong></td>
<td>Yjs (CRDT)</td>
<td>Collaborative world editing, conflict resolution</td>
</tr>
<tr>
<td><strong>Audio</strong></td>
<td>Web Audio API</td>
<td>Spatial audio, ambiance, music</td>
</tr>
<tr>
<td><strong>UI</strong></td>
<td>HTML/CSS overlay</td>
<td>HUD, inventory, chat, creator tools</td>
</tr>
<tr>
<td><strong>Workers</strong></td>
<td>Web Workers</td>
<td>Asset decompression, physics, terrain generation</td>
</tr>
</tbody>
</table>
<h3>Server</h3>
<table>
<thead>
<tr>
<th>Layer</th>
<th>Technology</th>
<th>Role</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>World shards</strong></td>
<td>Cloudflare Durable Objects</td>
<td>Per-chunk authoritative state, WebSocket endpoints</td>
</tr>
<tr>
<td><strong>Asset storage</strong></td>
<td>Cloudflare R2</td>
<td>GLB models, KTX2 textures, heightmaps, audio</td>
</tr>
<tr>
<td><strong>Asset CDN</strong></td>
<td>Cloudflare CDN (R2 public bucket)</td>
<td>Edge-cached delivery of world assets</td>
</tr>
<tr>
<td><strong>AI generation</strong></td>
<td>GPU instances (Hetzner/Lambda/RunPod)</td>
<td>3D model gen, terrain gen, texture gen</td>
</tr>
<tr>
<td><strong>Asset pipeline</strong></td>
<td>Cloudflare Queue + Workers</td>
<td>LOD generation, mesh optimization, format conversion</td>
</tr>
<tr>
<td><strong>Auth</strong></td>
<td>Auth0</td>
<td>Creator identity, permissions</td>
</tr>
<tr>
<td><strong>Database</strong></td>
<td>Cloudflare D1</td>
<td>World metadata, creator inventories, permissions</td>
</tr>
<tr>
<td><strong>Real-time</strong></td>
<td>Cloudflare Durable Objects + Pub/Sub</td>
<td>Player presence, chat, event broadcast</td>
</tr>
</tbody>
</table>
<h3>Data Flow</h3>
<ol>
<li>Player opens the world in their browser</li>
<li>Client authenticates, connects to the nearest Durable Object for their spawn chunk</li>
<li>DO sends current chunk state (terrain + objects + nearby players)</li>
<li>Client begins rendering, requests adjacent chunks from R2/CDN</li>
<li>As the player moves, client connects to adjacent DOs, disconnects from distant ones</li>
<li>Creator places an object: client sends edit to DO, DO validates and broadcasts to all connected clients via CRDT delta</li>
<li>DO persists chunk state to storage on each edit (debounced)</li>
<li>Other players see the new object appear within 100-200ms</li>
</ol>
<h2>Performance Budget</h2>
<p>For a 60fps experience on a mid-range desktop (RTX 3060 / M1 Mac / 16GB RAM):</p>
<table>
<thead>
<tr>
<th>Resource</th>
<th>Budget</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Draw calls</strong></td>
<td>&lt; 500 per frame</td>
<td>Batching, instancing, LOD</td>
</tr>
<tr>
<td><strong>Triangles</strong></td>
<td>&lt; 2M per frame</td>
<td>LOD keeps this in check</td>
</tr>
<tr>
<td><strong>Texture memory</strong></td>
<td>&lt; 512 MB</td>
<td>KTX2 compression, streaming, atlas pooling</td>
</tr>
<tr>
<td><strong>Geometry memory</strong></td>
<td>&lt; 256 MB</td>
<td>Shared buffers, pooling, aggressive unload</td>
</tr>
<tr>
<td><strong>JavaScript heap</strong></td>
<td>&lt; 512 MB</td>
<td>ECS uses typed arrays, not objects</td>
</tr>
<tr>
<td><strong>Network</strong></td>
<td>&lt; 500 KB/s sustained</td>
<td>Delta compression, spatial relevance filtering</td>
</tr>
<tr>
<td><strong>Initial load</strong></td>
<td>&lt; 10 MB, &lt; 5 seconds</td>
<td>Progressive loading, terrain-first</td>
</tr>
<tr>
<td><strong>Chunk load</strong></td>
<td>&lt; 200 KB, &lt; 200ms</td>
<td>Pre-fetch adjacent chunks</td>
</tr>
</tbody>
</table>
<h2>Successful Browser Games and What They Prove</h2>
<p>Browser games are not a niche. They're one of the largest gaming markets. Poki serves over 100 million monthly players. CrazyGames, Newgrounds, and <a href="http://itch.io">itch.io</a> serve millions more. The games that succeed in browsers have specific architectural patterns worth studying.</p>
<h3>Browser 3D Games That Ship Today</h3>
<div class="video-embed">
<iframe src="https://www.youtube.com/embed/lCGlEgKAMbE" title="Hordes.io Gameplay" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<div class="game-caption">Hordes.io: 200+ players in a persistent 3D browser MMO. Custom WebGL, low-poly style, loads in under 5 seconds. Built by one developer.</div>
<p><strong><a href="http://Hordes.io">Hordes.io</a></strong> is the most relevant browser MMO. Built by a solo developer using custom WebGL rendering, it puts 200+ players in a persistent 3D world with real-time combat, guilds, classes, and PvP. The entire game loads in under 5 seconds. The world is divided into zones with aggressive culling. Player models are simple (low-poly with flat shading) but the particle effects and animations make combat feel responsive. <a href="http://Hordes.io">Hordes.io</a> proves three things: browser MMOs can handle hundreds of concurrent players in one scene, a solo developer can build one, and stylized graphics perform better than realistic ones in a browser.</p>
<div class="video-embed">
<iframe src="https://www.youtube.com/embed/559m0bR1fgg" title="Krunker.io Gameplay and Map Editor" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<div class="game-caption">Krunker.io: 10M monthly players, built on Three.js, with a full in-browser map editor and user-generated content marketplace.</div>
<p><strong><a href="http://Krunker.io">Krunker.io</a></strong> peaked at over 10 million monthly players and was acquired by FRVR. It's a browser-based FPS with a full map editor, custom game modes, user-generated content, and a marketplace. Built on Three.js, it runs at 60fps+ even on low-end hardware because of its blocky art style and aggressive optimization. The level editor is particularly relevant. Players build maps using a voxel-like block system, share them on the marketplace, and others play on them. This is the creator-world loop in miniature: build something, share it, others experience it. Krunker proved that user-generated 3D content can work in a browser if the creation tools are simple enough.</p>
<p><strong><a href="http://ev.io">ev.io</a></strong> is a browser FPS built on Babylon.js. It runs well on most hardware, supports custom maps, and demonstrates that Babylon's WebGL renderer can handle fast-paced 3D action in a browser tab. The game uses aggressive texture compression and low-poly environments to stay within performance budgets.</p>
<p><strong>Shell Shockers</strong> (over 5 million monthly players) is a 3D multiplayer shooter where you play as eggs. Built on Three.js, it handles real-time multiplayer with responsive hit detection in the browser. The cartoonish art style keeps the asset requirements minimal while still looking polished.</p>
<div class="video-embed">
<iframe src="https://www.youtube.com/embed/QtVkteAS15M" title="Townscaper Trailer" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<div class="game-caption">Townscaper: click to place buildings, the system generates streets, arches, and stairs automatically. No menus, no objectives. Sold over 1 million copies on pure creative joy.</div>
<p><strong>Townscaper</strong> isn't a browser game, but its approach to world building is highly relevant. Players click to place buildings on a water surface. The game automatically generates architectural details, streets, arches, and stairs based on placement patterns. No menus, no settings, no objectives. Just click and build. It sold over 1 million copies. The lesson: sometimes the simplest creative tools produce the most engaging experiences. If we can make placing objects in the world feel as immediate as Townscaper, creators will spend hours building.</p>
<p><strong>A-Frame / 8th Wall experiences.</strong> A-Frame (built on Three.js) powers thousands of web-based 3D experiences. 8th Wall, the long-running WebAR platform Niantic acquired, demonstrated that complex camera-based AR runs in mobile browsers without plugins, though Niantic announced in late 2025 that it's winding the service down (hosted experiences stay live into 2027). These aren't games, but they demonstrate that complex 3D rendering with physics and interaction works in a browser tab without plugins. Many of these experiences load in 2-3 seconds and run on mid-range phones.</p>
<h3>Vuntra City: A Live Procedural City Lab</h3>
<p>Vuntra City is a native UE5 project, not a browser game, so it's not a direct performance benchmark for our stack. It is still one of the most useful public case studies for our open-world architecture because the devlogs are unusually specific about system design trade-offs under real production pressure.</p>
<p>One strong takeaway is speed-aware detail policy. In the transport and optimization videos, high-speed traversal is moved above rooftops, while world detail scales down as speed goes up so the stream manager doesn't choke on interior churn (<a href="https://www.youtube.com/watch?v=KKeBElJS6-M">rapid transport</a>, <a href="https://www.youtube.com/watch?v=aPuYXyJet38">optimization techniques</a>). That maps cleanly to our browser plan where velocity should directly control prefetch radius, interior activation range, and per-frame spawn budget.</p>
<p>Another takeaway is hard separation between topology data and rendered objects. The maps and addresses implementation uses a global topology controller that can answer location and address queries for unloaded regions (<a href="https://www.youtube.com/watch?v=6dLn1GQpu2c">maps and addresses</a>). This is exactly the pattern we need for server-authoritative routing, POI lookup, and world-level queries that should not depend on what one client currently has in memory.</p>
<p>The NPC work is also highly relevant. The million-NPC system computes coarse schedule state globally, then only simulates expensive behavior in player-adjacent space (<a href="https://www.youtube.com/watch?v=nBV0yAAJUf0">million persistent NPCs</a>, <a href="https://www.youtube.com/watch?v=eUi7DB1ar3s">behind the scenes</a>). For us, that reinforces a two-tier simulation model: cheap deterministic far-field state, rich near-field behavior inside AOI.</p>
<p>Finally, Vuntra City's environment design reinforces something easy to forget in technical planning: distribution design is content design. The project avoids uniform random placement, uses weighted outliers for surprise, and drives discovery through diegetic maps and addresses instead of omnipresent minimap markers (<a href="https://www.youtube.com/watch?v=4MZ5-KQW3pc">procedural environments don't have to be boring</a>, <a href="https://www.youtube.com/watch?v=ixR1hqZJlv4">where we're going we won't need a minimap</a>).</p>
<h3>Browser Games That Went Massive</h3>
<p><strong><a href="http://Agar.io">Agar.io</a></strong> (2015) proved that browser multiplayer can reach millions. At its peak, it had over 100,000 concurrent players across servers. The game is 2D and mechanically simple (grow by absorbing smaller cells), but the networking architecture handles massive concurrency through spatial partitioning. Each server runs a region of the game world. Players only receive updates about entities in their view. This is the same interest management pattern needed for a 3D open world, just in 2D.</p>
<p><strong><a href="http://Slither.io">Slither.io</a></strong> built on <a href="http://Agar.io">Agar.io</a>'s success and proved the model scales. 67 million monthly active users at peak. The game uses WebSocket for real-time position sync and spatial partitioning to limit network traffic. One detail worth noting: <a href="http://Slither.io">Slither.io</a>'s server-side collision detection runs at a lower tick rate for distant players (5 Hz) than for nearby ones (30 Hz). This variable tick rate by distance is applicable to a 3D open world.</p>
<p><strong><a href="http://Surviv.io">Surviv.io</a></strong> was a browser-based battle royale that reached 50 million monthly players before being acquired by Kongregate. It ran a full 80-player battle royale match entirely in the browser with real-time networked physics, destructible environments, and item pickup. The map was procedurally arranged from pre-designed building templates, which is a pattern we could use for creator-placed structures.</p>
<p><strong>Zombs Royale</strong> ran a 100-player battle royale in the browser with fast load times and responsive networking. Like <a href="http://Surviv.io">Surviv.io</a>, it proved that large player counts in real-time browser games are commercially viable, not just technically possible.</p>
<p>The common thread across all these browser hits: they load fast (under 5 seconds), they work on any device, the art style is simple but consistent, and the networking is optimized for the specific gameplay (spatial partitioning, variable update rates, aggressive culling of distant state).</p>
<h3>RuneScape: An MMO That Moved to the Browser</h3>
<div class="video-embed">
<iframe src="https://www.youtube.com/embed/YX7VjGC-2q4" title="Old School RuneScape Steam Launch Trailer" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<div class="game-caption">RuneScape: a full MMO with 20+ years of content running in a browser tab. Custom binary protocol, tile-based streaming, 2,000 concurrent players per server. Proof that browser MMOs work at scale.</div>
<p>RuneScape is the most important case study for a browser-based open world because it actually happened. Jagex moved an entire MMO with 20 years of content into the browser.</p>
<p>RuneScape originally ran as a Java applet. When browsers dropped Java support, Jagex rebuilt the client in C++ and also shipped a fully functional HTML5/WebGL client. Old School RuneScape (the retro version) now runs entirely in the browser via a client compiled through Emscripten to WebAssembly. The game handles large persistent worlds, real-time multiplayer with hundreds of players per server, an economy with a functioning grand exchange (auction house), and 23 skills with deep progression systems.</p>
<p><strong>Technical details that matter:</strong></p>
<ul>
<li>The world is divided into map squares (64x64 tile regions). The client loads a 13x13 grid of regions around the player (104x104 tiles visible). Regions outside this grid are culled completely.</li>
<li>Terrain is tile-based with height values per tile corner. Terrain overlays (paths, water edges, beach transitions) use a shape system with 12 rotation variants per shape. This is more constrained than a heightmap but extremely compact and fast to stream.</li>
<li>The network protocol is custom binary over WebSocket. Each packet type has a defined structure. Player position updates use 2 bytes for map square coordinates and variable-length encoding for movement type. Chat, trade, and combat events have their own compact binary formats. The entire protocol is heavily optimized for minimum bandwidth.</li>
<li>Object rendering uses a model system where the server sends a model ID and the client renders the cached model. Most models are loaded once and reused. This means the world streams as metadata (what model goes where) rather than streaming geometry.</li>
<li>Each server instance handles 2,000 concurrent players across the full game world. The world is not spatially sharded. A single server process manages all players, all NPCs, and all game logic on a 600ms game tick. This works because the game logic is simple per-tick: process player actions, update NPC AI, resolve combat, broadcast state changes.</li>
</ul>
<p><strong>What RuneScape proves for our case:</strong> A full MMO with persistent world state, thousands of players, complex game systems, and a real economy can run in a browser tab. The client is under 50 MB downloaded, loads in a few seconds, and runs on laptops. If a 20-year-old Java MMO can make the transition, a purpose-built browser world has even fewer constraints.</p>
<p><strong>Where RuneScape's approach doesn't fit:</strong> RuneScape's rendering is isometric/fixed-camera, not first/third-person 3D. The visual fidelity is low by modern standards. And the world is not creator-editable. But the networking architecture, the tile-based streaming, and the proof that browser MMOs retain players for decades are all directly relevant.</p>
<h3>Habbo Hotel: Social Spaces That Lasted 25 Years</h3>
<p>Habbo Hotel launched in 2000 and is still running. It's a 2D isometric social world where users create and decorate rooms, visit other people's rooms, and socialize. At peak, it had 9 million monthly users. The entire experience ran in Flash (now HTML5 after the Flash deprecation).</p>
<p>Habbo matters because of how long it has sustained a creator community. The room system is effectively a 2D version of what we're building: users place furniture objects in a grid, customize the layout, and invite others to visit. The economic model (users buy virtual furniture with real money) has generated over $1 billion in lifetime revenue.</p>
<p><strong>What Habbo teaches:</strong></p>
<ul>
<li>Room-based spaces with user-created interiors work as a social platform for decades if the creation tools are simple and the social features are strong.</li>
<li>Virtual furniture economy sustains long-term engagement. Users buy, trade, and collect items. The items have no gameplay utility. They're pure self-expression and status.</li>
<li>Moderation in social spaces requires constant investment. Habbo has been through multiple moderation crises. Automated content filtering plus human moderators plus community reporting is the minimum viable approach.</li>
<li>The transition from Flash to HTML5 (completed around 2020-2021) proved that a large social world can migrate rendering technology without losing its community. The users care about their rooms and friends, not the underlying tech.</li>
</ul>
<h3>Among Us and Spatial Social Games</h3>
<p>Among Us is not an open world, but its success revealed something important about multiplayer spaces: players want to be in a place together, not just in a game together. The spatial proximity chat mods that went viral showed that being in the same virtual room with directional audio transforms multiplayer from a game mechanic into a social experience.</p>
<p>Spatial social features that enhance a creator world:</p>
<ul>
<li><strong>Proximity voice chat</strong> where volume fades with distance. Walk up to someone to talk. Walk away and they fade out. This creates natural social clusters without requiring voice channel management.</li>
<li><strong>Emote and gesture systems</strong> let players express themselves without voice. A wave, a dance, a pointing gesture. These are cheap to implement (animations on the player avatar) and disproportionately increase social engagement.</li>
<li><strong>Shared activities</strong> that happen in-world (not through menus) turn a space into a venue. If two creators can sit at a virtual table and look at 3D models together, the world has a reason to exist beyond displaying static content.</li>
</ul>
<h3>Browser Games That Scaled on Poki and CrazyGames</h3>
<p>Poki and CrazyGames together serve over 150 million monthly players. The games that perform best on these platforms offer insights into what works in the browser specifically.</p>
<p><strong>Top-performing patterns on browser game portals:</strong></p>
<ul>
<li>Instant play (under 3 seconds to interactive). No login required. No tutorial required. The game should make sense within 5 seconds of landing.</li>
<li>Session flexibility. Players drop in for 2 minutes or 2 hours. The game accommodates both. For a creator world, this means the world should be explorable without committing to a session. Walk around, see cool things, leave. Or stay and build for hours.</li>
<li>Mobile compatibility. Over 60% of Poki traffic is mobile. A browser world that only works on desktop loses the majority of potential visitors.</li>
<li>Social features that don't require friends. Leaderboards, reactions to other players' content, asynchronous features (see what other players built without being online at the same time).</li>
</ul>
<p>The most successful 3D games on these portals (like Shell Shockers, 1v1.LOL, Smash Karts) keep the poly count low, the textures simple, and the framerate high. They prove that players accept simple graphics if the experience is smooth and responsive.</p>
<h3>Browser-Based Creator Platforms</h3>
<p><strong>Hubs by Mozilla (now community-maintained).</strong> Multi-user 3D spaces in the browser built on Three.js and A-Frame. Supports voice chat, avatars, and shared objects. Not an open world (it's room-based), but the networking and rendering architecture are relevant. Mozilla open-sourced it before shutting down the hosted service, so the full codebase is available to study. <a href="https://github.com/mozilla/hubs">GitHub</a>.</p>
<p><strong>Hyperfy.</strong> A web-based metaverse platform running entirely in the browser. Three.js rendering, multiplayer, avatar customization, and world building. Closer to our target than Hubs because it emphasizes creator tools. Worlds load in a browser tab with no download required. <a href="https://hyperfy.io">hyperfy.io</a>.</p>
<p><strong>Ethereal Engine (formerly XREngine).</strong> Open-source engine for multi-user worlds, built on Three.js and bitECS. Supports WebXR, spatial audio, and world editing. Has built-in ECS architecture, networking layer, and editor tools. The closest existing open-source project to what we're describing. Worth studying for how they integrate bitECS with Three.js for entity management and how their networking handles spatial state. <a href="https://github.com/EtherealEngine/etherealengine">GitHub</a>.</p>
<p><strong>Dusk (formerly Rune).</strong> Multiplayer game SDK for web games. Handles the networking layer so developers focus on gameplay. Their state sync approach uses predicted state with server reconciliation, which is the standard model for responsive multiplayer. The SDK abstracts away the complexity of rollback netcode. Worth studying for their developer experience.</p>
<p><strong>Niantic Studio.</strong> A browser-based visual editor and web game engine (the successor to 8th Wall's tooling) for building 3D and XR experiences that others can visit in a browser. It demonstrates that non-technical creators can build 3D scenes in a browser if the tools are approachable. (Niantic spun its geospatial work into Niantic Spatial and sold its games business, including Pokemon GO, to Scopely in 2025.)</p>
<p><strong>PlayCanvas Editor.</strong> Not a game itself, but PlayCanvas's cloud-based 3D editor shows that collaborative world-building tools can run in the browser. Multiple team members edit the same scene simultaneously. The editor communicates changes via a real-time sync layer. This is the collaborative creation model we'd need, except with our world as the canvas instead of a game editor.</p>
<h3>Native Creator Platforms (Lessons for Browser)</h3>
<p>These platforms run as native apps, but their design decisions about creator tools, world persistence, and social dynamics are directly applicable.</p>
<div class="video-embed">
<iframe src="https://www.youtube.com/embed/mUgtVhbSiNM" title="Roblox Creator Platform" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<div class="game-caption">Roblox: 80M+ daily users, $740M paid to creators in 2023. Creation happens in-engine. Discovery is social. The business model that proves creator platforms can sustain themselves.</div>
<p><strong>Roblox</strong> is the single most important reference for a creator world. 80+ million daily active users. Creators build full 3D experiences (games, social spaces, stores) that other players visit. The platform handles hosting, networking, discovery, and monetization.</p>
<p>What Roblox gets right:</p>
<ul>
<li><strong>Creation is in-engine.</strong> Roblox Studio is the same environment players experience. Creators test their work instantly. There's no export/upload/wait cycle. For a browser world, the editor should be the world itself.</li>
<li><strong>Scripting is accessible.</strong> Lua (Roblox's scripting language) is simple enough that children learn it. Complex behavior is possible but optional. The floor is low and the ceiling is high.</li>
<li><strong>Discovery is social.</strong> You find experiences because friends are playing them. The homepage shows trending experiences. For a browser world, the world itself is the discovery surface. You explore and find things by walking around.</li>
<li><strong>Monetization works.</strong> Creators earn real money (Roblox paid out $740 million to creators in 2023). This attracts serious creative effort. Without economic incentive, creator platforms become hobby projects that fade.</li>
<li><strong>Roblox's rendering engine is custom</strong> and runs in a native app, not a browser. But the per-experience asset budgets are modest by modern standards (100 MB recommended max). Most successful Roblox experiences use low-poly stylized art, which aligns with browser rendering constraints.</li>
</ul>
<p><strong>Fortnite Creative / UEFN (Unreal Editor for Fortnite).</strong> Epic brought Unreal Engine's full editor to Fortnite creators. The result is a platform where people build islands (self-contained worlds) using professional-grade tools. Fortnite handles hosting, multiplayer, and distribution.</p>
<p>Relevant insights:</p>
<ul>
<li><strong>Professional tools attract professional content.</strong> UEFN produces visually stunning experiences because creators have access to UE5's full capabilities. The trade-off is complexity. UEFN has a steep learning curve.</li>
<li><strong>Island-based instancing</strong> (each creation is a separate world) avoids the moderation and conflict problems of a single shared world. But it also means creators don't naturally discover each other's work by exploring. You visit islands through menus, not by walking.</li>
<li><strong>The business model works.</strong> Fortnite's creator program pays based on engagement. Top creators earn millions per year. Again, economic incentive drives quality.</li>
</ul>
<p><strong>Dreams (Media Molecule / PlayStation).</strong> Dreams gave console players a full 3D creation suite (modeling, animation, music, logic, level design) and a platform to share creations. It's the most ambitious creator-platform ever built in terms of tool depth.</p>
<p>Relevant insights:</p>
<ul>
<li><strong>Sculpture-based modeling</strong> instead of polygon editing. Creators shape soft volumes with move/grab/smooth tools, similar to ZBrush but more intuitive. The learning curve is gentle. This approach maps well to in-browser creation because it doesn't require understanding vertices and UV maps.</li>
<li><strong>Everything is a shared asset.</strong> If someone creates a tree model, anyone can use it in their own creation (with attribution). This creates a compound creative ecosystem where each creation makes the platform more valuable.</li>
<li><strong>Dreams struggled commercially</strong> despite critical praise. The problem was distribution: it was locked to PlayStation, and the creation tools were so deep that most players never moved beyond consuming content. The lesson: the creation tools need to be simple enough that the majority of users try them, even if only a minority become serious builders.</li>
</ul>
<p><strong>Core (Manticore Games).</strong> A free platform for creating and playing multiplayer games, built on Unreal Engine with a simplified editor. Core's editor runs as a native app, but the philosophy is relevant. Templates and community-shared scripts let beginners assemble games from pre-made components. Advanced creators can write Lua scripts for custom behavior. Core struggled to find a large audience, partly because the games had to be played through the Core launcher. A browser-based version wouldn't have this friction.</p>
<p><strong>VRChat</strong> and <strong>Rec Room</strong> are social platforms where creators build spaces others visit. VRChat uses Unity and runs on PC/VR. Rec Room runs on everything including mobile. Both prove that user-generated 3D worlds can sustain large communities. VRChat is more technically impressive (custom shaders, complex avatars). Rec Room is more accessible (in-app creation tools, simpler graphics, wider platform support). For a browser world, Rec Room's approach of simple in-app creation tools is more applicable than VRChat's external-tool workflow.</p>
<div class="video-embed">
<iframe src="https://www.youtube.com/embed/E5HCeVCjCXo" title="Second Life: Your World, Your Imagination" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<div class="game-caption">Second Life: launched in 2003, still running with 200K+ daily users. Entirely user-created. Parcel-based ownership, virtual economy worth ~$500M/year. 20 years of lessons in persistence and moderation.</div>
<p><strong>Second Life</strong> is the grandfather of all creator worlds. Launched in 2003, it's still running with 200,000+ daily active users. The entire world is user-created. Land is owned and traded. Creators sell objects, clothing, and buildings. The in-world scripting language (LSL) enables interactive content.</p>
<p>What Second Life teaches after 20+ years:</p>
<ul>
<li><strong>Persistence matters more than graphics.</strong> Second Life's visuals are dated, but the world persists. Creations stay where you put them. Relationships and history accumulate. This persistence is what keeps people coming back.</li>
<li><strong>Economy drives creation.</strong> Second Life's GDP is estimated at $500 million per year. Creators build because they can sell. Without economic incentive, the volume and quality of creator content drops off.</li>
<li><strong>User-generated content requires moderation infrastructure.</strong> Second Life has had 20 years of moderation challenges. Any platform where users can place arbitrary content in a shared space needs automated scanning, reporting tools, and human review.</li>
<li><strong>Land-based spatial organization works.</strong> Second Life divides its world into parcels that users own. Each parcel has a prim (object) limit. This naturally prevents any one creator from consuming all the resources. For a browser world, chunk-based ownership with per-chunk object budgets is the equivalent pattern.</li>
</ul>
<h2>Comparative Analysis: What Each Game Teaches Us</h2>
<table>
<thead>
<tr>
<th>Game</th>
<th>Key Lesson</th>
<th>Applicable Tech</th>
<th>Risk If Ignored</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Skyrim</strong></td>
<td>Chunk-based streaming with cell grid</td>
<td>Heightmap terrain, LOD tiers, interior/exterior separation</td>
<td>World doesn't fit in browser memory</td>
</tr>
<tr>
<td><strong>The Witcher 3</strong></td>
<td>Layered world composition by separate teams</td>
<td>Content-aware streaming, impostor rendering</td>
<td>Creators can't work independently</td>
</tr>
<tr>
<td><strong>Breath of the Wild</strong></td>
<td>Systemic rules beat scripted content</td>
<td>Material interaction system, physics-driven gameplay</td>
<td>World feels static and dead</td>
</tr>
<tr>
<td><strong>GTA V</strong></td>
<td>Ambient life makes worlds feel real</td>
<td>NPC behavior systems, traffic, time-of-day</td>
<td>Creator world feels like an empty museum</td>
</tr>
<tr>
<td><strong>Elden Ring</strong></td>
<td>Density variation and asset reuse</td>
<td>Modular asset library, sparse + dense zones</td>
<td>Either too empty or too expensive to fill</td>
</tr>
<tr>
<td><strong>No Man's Sky</strong></td>
<td>Procedural generation for the canvas, creator content for the soul</td>
<td>Seed-based terrain, compact base data model</td>
<td>Infinite but boring terrain</td>
</tr>
<tr>
<td><strong>Minecraft</strong></td>
<td>Fully editable world, simple tools, infinite depth</td>
<td>Chunk streaming, palette compression, block-edit protocol</td>
<td>Creators can't reshape the world itself</td>
</tr>
<tr>
<td><strong>Roblox</strong></td>
<td>Creation is in-engine, economy drives quality</td>
<td>In-world editor, creator monetization</td>
<td>Nobody builds because there's no reason to</td>
</tr>
<tr>
<td><strong><a href="http://Krunker.io">Krunker.io</a></strong></td>
<td>Browser UGC works at scale with simple tools</td>
<td>Three.js rendering, voxel-based editor, marketplace</td>
<td>Creation tools too complex for casual creators</td>
</tr>
<tr>
<td><strong><a href="http://Hordes.io">Hordes.io</a></strong></td>
<td>200+ players in browser 3D, solo-dev viable</td>
<td>Custom WebGL, spatial culling, stylized art</td>
<td>Over-engineer the multiplayer layer</td>
</tr>
<tr>
<td><strong>Vuntra City (native reference)</strong></td>
<td>Speed-aware streaming and two-tier world simulation keep a huge procedural city coherent</td>
<td>Velocity-coupled LOD policy, topology query layer, far-field schedule simulation + near-field behavior</td>
<td>High-speed traversal causes pop-in and simulation spikes</td>
</tr>
<tr>
<td><strong><a href="http://Agar.io">Agar.io</a> / <a href="http://Slither.io">Slither.io</a></strong></td>
<td>Spatial partitioning enables massive concurrency</td>
<td>Variable tick rate by distance, interest management</td>
<td>Network collapses at scale</td>
</tr>
<tr>
<td><strong>Second Life</strong></td>
<td>Persistence and economy sustain 20-year communities</td>
<td>Parcel-based ownership, object budgets, marketplace</td>
<td>No long-term retention</td>
</tr>
<tr>
<td><strong>Dreams</strong></td>
<td>Sculpture-based creation is more intuitive than polygon editing</td>
<td>Volume-based modeling, shared asset library</td>
<td>Creation tools feel like a CAD program</td>
</tr>
<tr>
<td><strong>Fortnite Creative</strong></td>
<td>Pro tools attract pro content</td>
<td>Full editor capabilities in the platform</td>
<td>Content quality ceiling is too low</td>
</tr>
<tr>
<td><strong>RuneScape</strong></td>
<td>Full MMO works in browser via Wasm, binary protocols</td>
<td>Emscripten, custom binary WebSocket protocol, tile streaming</td>
<td>Underestimate what browsers can handle</td>
</tr>
<tr>
<td><strong>Habbo Hotel</strong></td>
<td>Simple room creation sustains 25-year community</td>
<td>Grid-based placement, virtual furniture economy</td>
<td>Overcomplicate the creation tools</td>
</tr>
</tbody>
</table>
<p>The games that matter most for our specific case (browser-based, creator-focused, multiplayer) are Minecraft (editable world, compact data), Roblox (in-engine creation, economy), Krunker (browser UGC at scale), and <a href="http://Hordes.io">Hordes.io</a> (browser MMO architecture). The AAA titles (Skyrim, BotW, Witcher 3) teach rendering and streaming. The browser hits (<a href="http://Agar.io">Agar.io</a>, <a href="http://Slither.io">Slither.io</a>, <a href="http://Surviv.io">Surviv.io</a>) teach networking at scale. The creator platforms (Roblox, Dreams, Second Life) teach community dynamics. Vuntra City adds a current, implementation-level reference for speed-aware streaming, diegetic navigation, and million-agent simulation patterns in a modern procedural city.</p>
<h2>What Skyrim and The Witcher Would Look Like in a Browser</h2>
<p>Let's get concrete. If you took Skyrim's Whiterun and rebuilt it for browser delivery:</p>
<p><strong>Terrain:</strong> The area around Whiterun is roughly 2km x 2km. At our chunk size (64m), that's about 32x32 = 1024 chunks. At 2-4 KB per chunk's heightmap, that's 2-4 MB of terrain data. The terrain textures (grass, dirt, rock, snow) as KTX2 atlas tiles might add another 5 MB. Total terrain: under 10 MB for the entire region.</p>
<p><strong>Structures:</strong> Whiterun itself has maybe 40-50 buildings. Each building as an optimized GLB (3 LOD levels) might be 200-500 KB at highest detail. But you only need full detail for the 5-10 closest buildings. The rest are medium or low LOD (50-100 KB each). Total visible structures at any time: 2-5 MB.</p>
<p><strong>Foliage:</strong> Skyrim's trees and grass around Whiterun are all instanced. You need maybe 10 unique tree models (200 KB each at full LOD, 20 KB as billboard impostors) and a grass system that generates blades from a density map on the GPU. Total foliage assets: 2-3 MB. The instancing data (positions, rotations, scales) for a 5x5 chunk area: under 500 KB.</p>
<p><strong>NPCs:</strong> Whiterun has roughly 70 named NPCs plus guards. Each avatar at medium quality: 100-200 KB. But only 10-20 are visible at any time. Total NPC rendering data: 2-4 MB.</p>
<p><strong>Grand total for a Whiterun-scale area visible at any time: 15-25 MB.</strong> That's absolutely viable in a browser. The initial load would show terrain and major structures within 3-5 seconds on broadband, with detail filling in over the next few seconds.</p>
<p>The Witcher 3's Novigrad is larger and denser but the same principles apply. You'd need more aggressive LOD and streaming, but the total visible data at any moment stays within browser memory limits.</p>
<h2>What We'd Build First</h2>
<p>A full open world is a multi-year project. Here's the path to get something real in creators' hands quickly:</p>
<p><strong>Phase 1: Shared Island (3 months).</strong> A single terrain chunk (512x512m island) with heightmap terrain, water, basic foliage, day/night cycle. Multiplayer via Durable Objects (up to 50 concurrent users). Creators can place AI-generated 3D assets from their existing Cinevva library. Think of it as a shared diorama.</p>
<p><strong>Phase 2: Expandable World (3 months).</strong> Chunk streaming for a 4x4 km world. Creator-owned plots where they have edit permissions. LOD system for terrain and objects. Persistent world state. Up to 200 concurrent users across the world.</p>
<p><strong>Phase 3: Living World (6 months).</strong> AI-assisted terrain sculpting. Procedural foliage and atmosphere. Quest/event system so creators can build interactive experiences, not just static scenes. Voice chat. Avatar customization. The world becomes a destination, not a demo.</p>
<h2>Open Questions</h2>
<p><strong>Art style.</strong> Stylized (low-poly, cel-shaded) is cheaper to render and more forgiving of AI-generated assets. Realistic requires higher-quality assets and more rendering budget. Skyrim worked despite dated graphics because the art direction was consistent. BotW is gorgeous on tablet-class hardware because the cel-shaded style hides low polygon counts. Minecraft uses 16x16 textures and is one of the most recognizable games ever. <a href="http://Krunker.io">Krunker.io</a> and <a href="http://Hordes.io">Hordes.io</a> both succeed with simple stylized graphics in the browser. The evidence overwhelmingly favors a stylized direction for a browser world. We need to pick a specific visual identity early and enforce consistency across AI-generated assets.</p>
<p><strong>World persistence vs. instancing.</strong> Does everyone share one world (like an MMO or Second Life) or do creators each get their own instance that others can visit (like Minecraft servers or Fortnite Islands)? The tech supports both, but the social dynamics are completely different. Second Life's persistent shared world creates serendipitous discovery (you stumble onto other people's work by walking around). Fortnite's instanced islands require a menu or portal system for discovery. Roblox uses a hub-based approach: games are separate but you browse and discover through a shared interface. A hybrid could work: a persistent shared overworld where creators own plots (like Second Life parcels), with the option to enter standalone experiences through portals.</p>
<p><strong>Creation tool depth.</strong> Dreams proved that deep creation tools impress critics but intimidate users. Townscaper proved that minimal tools can sell a million copies. Roblox Studio sits in the middle: simple enough for kids, deep enough for professionals. Krunker's voxel editor is simpler still. For a browser world, we should start with Townscaper-level simplicity (place objects, they snap and connect) and add depth over time. The initial experience of placing your first object in the world should take under 30 seconds.</p>
<p><strong>Economy.</strong> Roblox, Second Life, and Fortnite Creative all prove that economic incentive is what turns a toy into a platform. Without a way for creators to earn from their work, the most talented creators will build elsewhere. This doesn't need to launch on day one, but the architecture should support it (object ownership, visit tracking, creator attribution).</p>
<p><strong>Mobile.</strong> WebGPU on mobile is years away from reliable. A mobile experience would need to be a reduced version: simpler terrain, fewer objects, shorter view distance. Rec Room's approach of running on everything with adaptive quality is worth studying. Or we ship a native app for mobile and keep the full experience in the browser.</p>
<p><strong>Moderation.</strong> An open world where anyone can place anything is a moderation nightmare. Second Life has been dealing with this for 20 years. Every placed asset needs automated content review before it becomes visible to others. This adds latency to the creative process but is non-negotiable. We should also consider parcel-based content ratings (like Second Life's General/Moderate/Adult system) so creators can choose their content boundaries.</p>
<p><strong>Systemic interactions.</strong> BotW and Minecraft both show that material-based interaction systems create exponentially more interesting worlds than static object placement. If a creator places a wooden bridge and another creator starts a fire nearby, should the bridge burn? If someone places a dam, should water pool behind it? These interactions make the world feel alive but require consistent physics and material rules across all creator content. Deciding how far to go with systemic design is an early architectural decision.</p>
<h2>Key Takeaways</h2>
<p>Browser 3D open worlds are viable today. <a href="http://Hordes.io">Hordes.io</a> runs 200+ players in 3D in a browser. <a href="http://Krunker.io">Krunker.io</a> had 10 million monthly players with a full 3D map editor. The .io games proved browser multiplayer scales to millions. The tech isn't speculative.</p>
<p>The rendering is ready. Three.js and Babylon.js handle 3D scenes comparable to early-2010s AAA games. WebGPU unlocks compute shaders for terrain and foliage. Wasm physics engines run within 2-3x of native. A Whiterun-scale area fits in 15-25 MB of visible data.</p>
<p>The networking is ready. Cloudflare Durable Objects give you per-chunk authoritative servers at the edge. CRDTs handle collaborative editing without conflicts. Spatial partitioning (proven by every game from <a href="http://Agar.io">Agar.io</a> to Skyrim) keeps network traffic manageable at hundreds of concurrent players.</p>
<p>The AAA open worlds (Skyrim, Witcher 3, BotW, Elden Ring, Minecraft, No Man's Sky) aren't just graphical benchmarks. They're textbooks on chunk streaming, LOD management, procedural generation, systemic design, and world composition. Every technique they use has a browser-compatible equivalent.</p>
<p>The creator platforms (Roblox, Second Life, Fortnite Creative, Dreams) teach the social and economic lessons. Creation must happen in-world, not in an external tool. Economic incentive drives quality. Persistence creates attachment. Simple tools reach more creators than powerful ones.</p>
<p>The creative pipeline is where Cinevva has an edge. We already generate 3D assets, textures, and audio. Connecting that pipeline to a world placement system is the missing piece. AI-generated content fills the world. Creator curation and arrangement gives it soul.</p>
<p>What we'd end up with isn't Skyrim in a browser. It's closer to the intersection of Minecraft (editable world), Roblox (creator economy), and BotW (systemic interactions), running in a browser tab with AI-powered creation tools. The technology to build it exists. The question is execution.</p>
<h2>Research Papers and Academic References</h2>
<p>The techniques in this guide aren't invented from scratch. They're grounded in decades of research. These are the papers that matter most for each subsystem, with notes on how they apply to a browser open world.</p>
<h3>Terrain Generation and Rendering</h3>
<p><strong>&quot;An Image Synthesizer&quot;</strong> -- Ken Perlin (SIGGRAPH 1985). <a href="https://doi.org/10.1145/325165.325247">DOI</a>. The paper that introduced Perlin noise. Every procedural terrain generator in every game since 1985 traces back to this. The noise function produces the smooth randomness that, when layered in octaves (fractional Brownian motion), generates natural-looking heightmaps. Simplex noise (Perlin, 2001) is the faster successor. For our terrain pipeline, this is the foundation: noise-based heightmap generation runs in a WebGPU compute shader at interactive speeds.</p>
<p><strong>&quot;Texturing and Modeling: A Procedural Approach&quot;</strong> -- Ebert, Musgrave, Peachey, Perlin, Worley (1994, 3rd edition 2003). The textbook on procedural generation. Musgrave's chapters on terrain modeling, including multifractal terrain with erosion-like features, are the direct basis for modern game terrain generators. The fBm parameters (lacunarity, persistence, octave count) described here are the same ones we'd expose to creators for terrain customization.</p>
<p><strong>&quot;Geometry Clipmaps: Terrain Rendering Using Nested Regular Grids&quot;</strong> -- Losasso and Hoppe (SIGGRAPH 2004). <a href="https://doi.org/10.1145/1015706.1015799">DOI</a>. This paper solved how to render massive terrain at interactive rates using concentric LOD rings (clipmaps). The terrain mesh is a fixed set of nested grids centered on the camera. As the camera moves, the grids shift and update. This is the technique recommended in our terrain section for WebGL 2, and it works because the GPU workload is constant regardless of world size. The original implementation predates WebGL but maps directly to it.</p>
<p><strong>&quot;Fast Hydraulic Erosion Simulation and Visualization on GPU&quot;</strong> -- Mei, Decaudin, Hu (2007). <a href="https://hal.inria.fr/inria-00402079/document">PDF</a>. Moved hydraulic erosion from a CPU-bound offline process to a real-time GPU computation. The paper's shallow-water simulation model (treating water as a height field, computing flow between grid cells) runs in a compute shader. For our pipeline, server-side GPU erosion can transform noise-generated terrain into geologically plausible landscapes in under a second, making AI-generated terrain look hand-sculpted.</p>
<p><strong>&quot;Real-Time Rendering of Procedurally Generated Planets&quot;</strong> -- Hybrid approaches from No Man's Sky's GDC talks and Sean Murray's descriptions. While not a single paper, the GDC 2017 talk &quot;Building Worlds Using Maths&quot; by Innes McKendrick (Hello Games) details how No Man's Sky generates planet-scale terrain using stacked noise functions, voxel representation with marching cubes, and GPU-side generation. Directly relevant to our procedural terrain approach, particularly for generating terrain features that heightmaps can't represent (caves, arches).</p>
<p><strong>&quot;C-DBLOD: Hybrid LOD for Terrain Rendering&quot;</strong> -- Filip Strugar (2014). <a href="https://www.vertexasylum.com/CDLOD/cdlod_latest.pdf">Paper</a>. An improvement on geometry clipmaps that adds quadtree-based selection for better adaptivity around camera position. The key insight: instead of fixed concentric rings, use a quadtree to select terrain patches at varying resolutions. This handles irregular terrain (where some areas need more detail than others) better than pure clipmaps. Implementable in WebGL 2 with a small CPU-side quadtree traversal.</p>
<h3>3D Gaussian Splatting and Neural Rendering</h3>
<p><strong>&quot;3D Gaussian Splatting for Real-Time Radiance Field Rendering&quot;</strong> -- Kerbl, Kopanas, Leimkühler, Drettakis (SIGGRAPH 2023). <a href="https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/">Project page</a>. The paper that launched the Gaussian splatting revolution. A scene is represented as millions of 3D Gaussians, each with position, covariance (shape), opacity, and spherical harmonic color coefficients. Rendering sorts splats by depth and rasterizes them as 2D Gaussians. The approach is 100-1000x faster to train than NeRFs and renders at real-time rates. Multiple WebGL/WebGPU implementations exist. For our platform, this enables creators to capture real-world objects with phone photos and place them in the browser world.</p>
<p><strong>&quot;NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis&quot;</strong> -- Mildenhall et al. (ECCV 2020). <a href="https://www.matthewtancik.com/nerf">Project page</a>. The foundational neural scene representation paper. A neural network maps 3D coordinates to color and density, enabling photorealistic novel view synthesis from a set of input photographs. While NeRFs are too expensive to render directly in a browser (they require per-pixel network evaluation), the NeRF-to-mesh extraction pipeline (training a NeRF, then running marching cubes on the density field) produces high-quality textured meshes from photos.</p>
<p><strong>&quot;Instant Neural Graphics Primitives with a Multiresolution Hash Encoding&quot;</strong> -- Müller, Evans, Schied, Keller (SIGGRAPH 2022). <a href="https://nvlabs.github.io/instant-ngp/">Project page</a>. Reduced NeRF training from hours to seconds using a multi-resolution hash table for spatial encoding. This made NeRF practical for production use. The hash encoding technique is also applicable to other spatial data in a browser world (fast lookups in large 3D datasets).</p>
<p><strong>&quot;Neuralangelo: High-Fidelity Neural Surface Reconstruction&quot;</strong> -- Li et al. (CVPR 2023). <a href="https://research.nvidia.com/labs/dir/neuralangelo/">Project page</a>. Extracts high-quality triangle meshes from neural representations using multi-resolution hash encoding and numerical gradients for SDF (signed distance function) estimation. The output meshes are directly usable in browser 3D engines. For our asset pipeline, Neuralangelo (or similar tools like NeuS2) can convert NeRF captures into web-ready GLB files with clean geometry and baked textures.</p>
<h3>Multiplayer Networking and State Synchronization</h3>
<p><strong>&quot;Interest Management in Massively Multiplayer Online Games&quot;</strong> -- Boulanger, Kienzle, Verbrugge (2006). <a href="https://doi.org/10.1007/11558651_18">DOI</a>. A comprehensive survey of area-of-interest (AOI) management techniques for MMOs. Covers grid-based, aura-based, and hybrid approaches for filtering network updates based on spatial relevance. The grid-based approach (which maps to our chunk system) is the most efficient for uniform-density worlds. The aura-based approach (per-entity influence radius) works better for variable density. Our recommendation of chunk-based AOI with priority-based update rates within the AOI draws from this research.</p>
<p><strong>&quot;Dead Reckoning: Latency Hiding for Networked Games&quot;</strong> -- Pantel and Wolf (2002). <a href="https://doi.org/10.1145/566500.566510">DOI</a>. Formalizes dead reckoning (predicting entity positions based on last known velocity) for networked games. The paper quantifies the trade-off: higher prediction thresholds reduce bandwidth but increase position error visible during corrections. For browser games with 50-200ms latency, a prediction threshold of 0.5-1.0 meters keeps corrections invisible while cutting position update bandwidth by 60-80%.</p>
<p><strong>&quot;Conflict-free Replicated Data Types&quot;</strong> -- Shapiro, Preguiça, Baquero, Zawirski (2011). <a href="https://doi.org/10.1007/978-3-642-24550-3_29">DOI</a>. The foundational CRDT paper. Defines state-based and operation-based CRDTs that converge without coordination. For our world editing system, the relevant CRDTs are: LWW-Register (Last-Writer-Wins Register) for object properties that have a single value (position, rotation, color), and OR-Set (Observed-Remove Set) for the collection of objects in a chunk (handles concurrent add/remove without conflicts). Yjs implements these efficiently in JavaScript.</p>
<p><strong>&quot;Time Warp: A Mechanism for Distributed Simulation&quot;</strong> -- Jefferson (1985). <a href="https://doi.org/10.1145/3916.3988">DOI</a>. The original optimistic distributed simulation paper. While Time Warp itself is too complex for a browser game, the core insight (process events optimistically and roll back if a conflict arrives from another node) is the basis for modern client-side prediction with server reconciliation. This is how every responsive multiplayer game works: the client predicts locally, sends actions to the server, and corrects if the server disagrees.</p>
<p><strong>&quot;The TRIBES Engine Networking Model&quot;</strong> -- Frohnmayer and Gift (GDC 1999). One of the first practical descriptions of client-server game networking with interest management, prioritized state updates, and bandwidth budgeting. The &quot;ghost manager&quot; concept (the server maintains a per-client view of what the client knows, and only sends deltas from that view) is exactly what our chunk-based Durable Object architecture implements. This GDC talk is the intellectual ancestor of most modern game networking.</p>
<p><strong>&quot;Source Multiplayer Networking&quot;</strong> -- Valve (2009). <a href="https://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking">Developer documentation</a>. Valve's documentation of the Source engine networking model (used in Half-Life 2, CS:GO, Team Fortress 2). Covers client-side prediction, entity interpolation, lag compensation, and the &quot;snapshot&quot; system where the server sends full world state at regular intervals while the client interpolates between snapshots. This is the gold standard for authoritative server networking and directly applicable to our architecture.</p>
<h3>Procedural Generation</h3>
<p><strong>&quot;Model Synthesis: A General Procedural Modeling Algorithm&quot;</strong> -- Merrell (2007). <a href="https://doi.org/10.1145/1289603.1289612">DOI</a>. One of the precursors to Wave Function Collapse. Generates 3D structures from example models by propagating local constraints. The algorithm ensures global consistency by iteratively collapsing cells with the fewest possibilities (minimum entropy heuristic). This is how Townscaper and similar generators produce coherent structures from simple user input.</p>
<p><strong>&quot;WaveFunctionCollapse&quot;</strong> -- Maxim Gumin (2016). <a href="https://github.com/mxgmn/WaveFunctionCollapse">GitHub</a>. Not a traditional paper but a seminal open-source project with extensive documentation. The algorithm takes a small example image or tileset and generates larger outputs that are locally similar to the input. For a creator world, WFC can generate building layouts, road networks, dungeon maps, and terrain details from a small set of creator-defined rules. Multiple JavaScript implementations exist.</p>
<p><strong>&quot;Wave Function Collapse is Constraint Solving in the Wild&quot;</strong> -- Karth and Smith (FDG 2017). <a href="https://doi.org/10.1145/3102071.3110566">DOI</a>. An academic analysis of WFC that clarifies its relationship to constraint satisfaction and shows how to analyze and extend it. Relevant for understanding WFC's limitations (it can get stuck and need backtracking) and how to design tilesets that avoid these issues.</p>
<p><strong>&quot;Superposition Theorem and Its Implications for the Procedural Generation of Game Content&quot;</strong> -- Sandhu et al. (2022). Explores using quantum-inspired superposition concepts for procedural content generation. While speculative, the mathematical framework for maintaining multiple possible states before &quot;collapsing&quot; to a final configuration is exactly how WFC works and could inform more sophisticated generation systems.</p>
<h3>Real-Time Rendering Techniques</h3>
<p><strong>&quot;Real-Time Rendering&quot;</strong> -- Akenine-Möller, Haines, Hoffman (4th edition, 2018). The standard textbook. Chapter 19 (Acceleration Structures), Chapter 20 (Efficient Shading), and Chapter 21 (Virtual and Augmented Reality) are particularly relevant. The frustum culling, occlusion culling, and LOD algorithms described here are what Three.js, Babylon.js, and every game engine implement. Not a paper, but the definitive reference.</p>
<p><strong>&quot;A Survey on Baking Neural Radiance Fields for Real-Time View Synthesis&quot;</strong> -- Reiser et al. (2023). <a href="https://doi.org/10.1111/cgf.14835">DOI</a>. Surveys methods to convert NeRFs into formats that render in real time (meshes, textures, sparse voxel grids). Directly relevant to our asset pipeline where server-side neural capture needs to produce browser-renderable output.</p>
<p><strong>&quot;Scalable and Accurate Online Feature Matching Using 3D Gaussian Splatting&quot;</strong> -- Various groups (2024-2025). Multiple recent papers explore editing, compositing, and dynamic scenes with Gaussian splats. Relevant because creator worlds need to composite multiple splat scenes (each creator's captured objects) into a single coherent scene. Methods for splat editing (recoloring, deformation, compositing) are active research areas.</p>
<p><strong>&quot;Efficient GPU Screen-Space Ray Tracing&quot;</strong> -- McGuire and Mara (JCGT 2014). <a href="https://doi.org/10.2312/hpg.20141090">DOI</a>. The paper behind screen-space reflections used in our water rendering section. Traces rays through the depth buffer for approximate reflections without the cost of full ray tracing. The &quot;hierarchical tracing&quot; variant (using a min-max depth mipmap) runs efficiently on WebGL 2.</p>
<p><strong>&quot;Simulating Ocean Water&quot;</strong> -- Jerry Tessendorf (2001). <a href="https://people.computing.clemson.edu/~jtessen/reports/papers_files/coursenotes2004.pdf">PDF</a>. The foundational paper on FFT-based ocean simulation. Describes the Phillips spectrum (statistical model of ocean waves) and how to transform it into a spatial displacement map via inverse FFT. Used by every major game with realistic ocean (Sea of Thieves, Assassin's Creed, Uncharted). The FFT computation maps cleanly to WebGPU compute shaders.</p>
<p><strong>&quot;Precomputed Atmospheric Scattering&quot;</strong> -- Bruneton and Neyret (EGSR 2008). <a href="https://doi.org/10.1111/j.1467-8659.2008.01245.x">DOI</a>. The paper behind physically accurate sky rendering. Precomputes atmospheric scattering into lookup tables that a fragment shader samples in real time. Produces correct sky colors, aerial perspective (distant objects look bluish/hazy), and sunset/sunrise colors from first principles. The precomputed tables are small (a few hundred KB) and the runtime shader is cheap. Both Three.js's <code>Sky</code> shader and Babylon.js's procedural sky are simplified versions of this approach.</p>
<p><strong>&quot;Ambient Occlusion Volumes&quot;</strong> -- McGuire (HPG 2010) and <strong>&quot;Scalable Ambient Obscurance&quot;</strong> -- McGuire, Mara, Luebke (HPG 2012). <a href="https://research.nvidia.com/sites/default/files/pubs/2012-06_Scalable-Ambient-Obscurance/McGuire12SAO.pdf">PDF</a>. The papers behind modern SSAO implementations. SAO is the most commonly implemented variant in browser 3D engines because it's efficient (one depth buffer sample per pixel) and produces plausible contact shadows. The algorithm samples the depth buffer around each pixel to estimate how &quot;occluded&quot; it is by nearby geometry. Both Three.js and Babylon.js implement SAO-derived SSAO.</p>
<h3>Crowd Rendering and Animation</h3>
<p><strong>&quot;GPU Crowd Rendering&quot;</strong> -- Dudash (2007) and subsequent GDC/SIGGRAPH presentations on instanced crowd rendering. The core technique: bake skeletal animation frames into textures (Vertex Animation Textures), then render crowds as instanced meshes where each instance reads its bone transforms from the animation texture based on its current frame. This decouples animation evaluation from draw calls, allowing a single instanced draw call to render hundreds of uniquely animated characters.</p>
<p><strong>&quot;Position Based Dynamics&quot;</strong> -- Müller et al. (2007). <a href="https://doi.org/10.1016/j.jvcir.2007.01.005">DOI</a>. The foundational paper on PBD, which is how modern game engines simulate cloth, hair, and soft bodies. Rapier (our recommended Wasm physics engine) uses PBD-derived solvers. For avatar customization (capes, flowing hair, loose clothing), PBD provides responsive simulation at game frame rates. The Wasm implementation keeps it off the main JavaScript thread.</p>
<p><strong>&quot;FABRIK: A Fast, Iterative Solver for the Inverse Kinematics Problem&quot;</strong> -- Aristidou and Lasenby (2011). <a href="https://doi.org/10.1016/j.gmod.2011.05.003">DOI</a>. The paper behind the IK solver recommended in our avatar section. FABRIK works by alternately reaching from end effector to root and root to end effector, converging in 3-5 iterations. It's faster than Jacobian-based IK, handles joint constraints naturally, and is simple to implement (about 50 lines of code for the basic solver). Both Three.js and Babylon.js IK implementations are derived from FABRIK.</p>
<h3>Virtual Worlds and Collaborative Environments</h3>
<p><strong>&quot;Massive Multiplayer Online Games: A Survey of the State-of-the-Art&quot;</strong> -- Yahyavi and Kemme (2013). <a href="https://doi.org/10.1145/2522968.2522972">DOI</a>. Comprehensive survey of MMO architecture covering client-server models, peer-to-peer approaches, interest management, consistency models, scalability techniques, and cheating prevention. The taxonomy of consistency models (strict, eventual, causal) maps to our CRDT-based approach (eventual consistency with causal ordering via vector clocks).</p>
<p><strong>&quot;A Distributed Architecture for Multiplayer Interactive Applications on the Internet&quot;</strong> -- Diot and Gautier (1999). <a href="https://doi.org/10.1109/65.790947">DOI</a>. Early research on distributed virtual environments that identified the core tension: strict consistency requires coordination (adding latency), while weak consistency allows responsiveness but risks visible inconsistency. The paper argues for &quot;local lag&quot; (delaying local display by a small amount to give time for remote updates to arrive) as a middle ground. For world edits (placing objects), a 100-200ms local lag is imperceptible and gives the server time to validate.</p>
<p><strong>&quot;The Second Life Grid: The Architecture of a Near-Contemporary Open Source Virtual World&quot;</strong> -- Linden Lab technical documentation and community reverse-engineering. While not a single paper, the technical analysis of Second Life's architecture is extensively documented. The key insights: each 256x256m region runs on a dedicated server instance. Objects are stored as a tree of &quot;primitives&quot; (basic shapes with transforms, textures, and scripts). The viewer streams object descriptions and textures on demand. This parcel-based model with per-object persistence is the closest existing architecture to what we're building, and Second Life's 20+ years of operation prove it scales.</p>
<h3>Web Graphics and Browser Performance</h3>
<p><strong>&quot;WebGPU: A High-Performance Graphics API for the Web&quot;</strong> -- W3C GPU for the Web Working Group (2023-ongoing). <a href="https://www.w3.org/TR/webgpu/">Specification</a>. The formal specification for WebGPU. Not a research paper, but the definitive technical document for browser GPU programming. The compute shader specification (Section 23) is particularly relevant for terrain generation, foliage scattering, and particle systems described throughout this guide.</p>
<p><strong>&quot;WebAssembly: A Framework for Running Compiled Code in the Browser&quot;</strong> -- Haas et al. (PLDI 2017). <a href="https://doi.org/10.1145/3062341.3062363">DOI</a>. The original WebAssembly paper from the browser vendors. Demonstrates that Wasm achieves within 2x of native performance for compute-intensive workloads. This validates our recommendation of Wasm-compiled physics engines (Rapier, Havok) for browser open worlds. The paper's performance analysis shows that the overhead comes primarily from bounds checking and indirect function calls, not from the compilation model itself.</p>
<p><strong>&quot;Not So Fast: Analyzing the Performance of WebAssembly vs. Native Code&quot;</strong> -- Jangda et al. (USENIX ATC 2019). <a href="https://www.usenix.org/system/files/atc19-jangda.pdf">PDF</a>. A rigorous benchmark of Wasm vs native performance. Finds that Wasm runs 1.45x-1.55x slower than native C on average across the SPEC CPU benchmark suite. For game physics specifically (floating-point heavy, few system calls), the overhead is at the lower end (~1.3x). This confirms that Wasm physics in a browser is viable for real-time game workloads.</p>
<p><strong>&quot;Bringing the Web up to Speed with WebAssembly&quot;</strong> -- Rossberg et al. (2018). <a href="https://doi.org/10.1145/3192366.3192379">DOI</a>. Describes the design rationale and formal semantics of WebAssembly. Particularly relevant: the discussion of memory safety guarantees (Section 3) explains why Wasm modules can safely share a browser tab with JavaScript without the security risks of native plugins. This is what makes running physics engines (which were traditionally C++ libraries) safe in a browser.</p>
<h3>AI-Powered Content Generation</h3>
<p><strong>&quot;Text-to-3D Generation with Bidirectional Diffusion Using Both 2D and 3D Priors&quot;</strong> -- Various groups (2023-2025). Multiple recent papers (DreamFusion, Magic3D, ProlificDreamer, MVDream, Zero-1-to-3++) explore generating 3D assets from text prompts by using 2D diffusion models as priors for 3D optimization. The quality has improved dramatically from early 2023 to 2025, going from blobby shapes to detailed, textured meshes. For our platform, these models (running server-side on GPUs) are the &quot;AI generation&quot; step in the creator asset pipeline.</p>
<p><strong>&quot;DreamFusion: Text-to-3D using 2D Diffusion&quot;</strong> -- Poole et al. (ICLR 2023). <a href="https://dreamfusion3d.github.io/">Project page</a>. The foundational paper on Score Distillation Sampling (SDS), which uses a pre-trained 2D diffusion model to guide 3D optimization. The key insight: you don't need 3D training data if you can evaluate whether rendered views of a 3D object match a text prompt using an existing 2D model. This opened the door to text-to-3D generation and is the basis for subsequent work (Magic3D, ProlificDreamer) that improved quality and speed.</p>
<p><strong>&quot;LRM: Large Reconstruction Model for Single Image to 3D&quot;</strong> -- Hong et al. (ICLR 2024). <a href="https://yiconghong.me/LRM/">Project page</a>. Reconstructs a 3D model from a single image in 5 seconds on a single GPU. The model outputs a NeRF-like representation that can be converted to a mesh. For a creator world, this means a creator could take a photo of any real-world object and get a 3D model within seconds. The speed makes it viable as an interactive tool rather than a batch process.</p>
<p><strong>&quot;Procedural Content Generation via Machine Learning (PCGML)&quot;</strong> -- Summerville et al. (2018). <a href="https://doi.org/10.1109/TG.2018.2846639">DOI</a>. A survey of using machine learning for procedural content generation in games. Covers level generation, item generation, narrative generation, and world generation. Particularly relevant: the discussion of &quot;controllable generation&quot; where designers set high-level parameters and the ML model fills in details. This is the paradigm for AI-assisted world building: creators set intent (&quot;make this area a spooky forest&quot;), AI fills in the geometry, textures, and population.</p>
<h3>How These Papers Connect to Our Architecture</h3>
<p>The research maps to our architecture in layers:</p>
<p><strong>Terrain pipeline:</strong> Perlin/simplex noise (Perlin 1985, 2001) generates the base heightmap. Hydraulic erosion (Mei et al. 2007) adds geological realism. Geometry clipmaps (Losasso and Hoppe 2004) or CDLOD (Strugar 2014) render the terrain efficiently in the browser. Atmospheric scattering (Bruneton and Neyret 2008) makes distant terrain look correct.</p>
<p><strong>Asset pipeline:</strong> Text-to-3D (DreamFusion et al.) and image-to-3D (LRM) generate assets server-side. Gaussian splatting (Kerbl et al. 2023) enables photogrammetry capture. Neuralangelo (Li et al. 2023) extracts clean meshes from neural captures. All outputs are processed into browser-ready GLB/KTX2.</p>
<p><strong>Rendering:</strong> SSAO (McGuire 2012) adds depth. Screen-space reflections (McGuire and Mara 2014) power water. FFT ocean (Tessendorf 2001) simulates water. Vertex animation textures (Dudash 2007) render crowds. FABRIK (Aristidou and Lasenby 2011) drives character IK.</p>
<p><strong>Networking:</strong> Interest management (Boulanger et al. 2006) filters updates by spatial relevance. Dead reckoning (Pantel and Wolf 2002) reduces bandwidth. CRDTs (Shapiro et al. 2011) handle collaborative editing. Client prediction with server reconciliation (Jefferson 1985, Valve Source Networking) provides responsiveness.</p>
<p><strong>World generation:</strong> WFC (Gumin 2016, Karth and Smith 2017) generates structures and layouts. PCGML (Summerville et al. 2018) provides the framework for AI-assisted generation where creators set intent and models fill details.</p>
<p>The research is mature. Most of these techniques have been used in shipped games for years. The innovation in bringing them to a browser isn't the algorithms. It's the engineering of making them work within browser memory, GPU, and network constraints, which is what the rest of this guide addresses.</p>
<h2>Further Reading</h2>
<ul>
<li><a href="/guides/web-games-stack-2026">Web Games Tech Stack in 2026</a> covers WebGL, WebGPU, and WebAssembly fundamentals</li>
<li><a href="/guides/web-game-engines-comparison">Web Game Engines Comparison</a> compares engines for browser delivery</li>
<li><a href="/guides/threejs-usdc-tech-report">Three.js + USDC Tech Report</a> on loading 3D assets in the browser</li>
<li><a href="/guides/frontier-gen-ai-models">Frontier Open-Source Gen AI Models</a> for the AI generation pipeline</li>
<li><a href="/guides/co-op-game-design">Co-op Game Design</a> on multiplayer design patterns that keep players engaged</li>
<li><a href="/guides/landscape-generation-browser">Landscape Generation for Browser Open Worlds</a> — terrain, erosion, and vegetation rendering</li>
<li><a href="/tutorials/websocket-multiplayer-basics">WebSocket multiplayer basics</a> — getting started with browser multiplayer networking</li>
<li><a href="/tutorials/webgpu-getting-started">WebGPU getting started</a> — the rendering API for next-gen browser 3D</li>
<li><a href="/tutorials/streaming-asset-loading">Streaming asset loading</a> — progressive loading patterns for large 3D worlds</li>
</ul>
<p><BuildCta
  title="Try an open world in your browser right now"
  desc="One sentence in, a walkable 3D world out."
  prompt="Make a small open world island I can explore in third person" /></p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Co-op Game Design in 2026]]></title>
            <link>https://app.cinevva.com/guides/co-op-game-design</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/co-op-game-design</guid>
            <pubDate>Mon, 26 Jan 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[What makes "friend slop" games work. Peak sold 11 million copies. Here's why.]]></description>
            <content:encoded><![CDATA[<style>
.video-embed {
  position: relative;
  width: 100%;
  max-width: 560px;
  margin: 1.5rem 0;
}
.video-embed iframe {
  width: 100%;
  aspect-ratio: 16/9;
  border-radius: 8px;
}
.campaign-link {
  display: inline-block;
  padding: 0.5rem 1rem;
  background: var(--vp-c-brand-1);
  color: white !important;
  border-radius: 6px;
  text-decoration: none;
  font-weight: 500;
  margin: 0.5rem 0 1.5rem;
}
.campaign-link:hover {
  background: var(--vp-c-brand-2);
}
.stat-box {
  background: var(--vp-c-bg-soft);
  border-radius: 8px;
  padding: 1rem 1.5rem;
  margin: 1rem 0;
}
.stat-box strong {
  color: var(--vp-c-brand-1);
  font-size: 1.5rem;
}
</style>
<h1>Co-op Game Design in 2026</h1>
<p>There's a term floating around that developers either love or hate: &quot;friend slop.&quot;</p>
<p>It started as an insult. A way to dismiss low-budget co-op games as shallow content farms designed for viral clips. But then Peak sold 11 million copies in two months. R.E.P.O. dominated Steam. And suddenly the developers making these games started embracing the label.</p>
<p>&quot;We actually think friend slop is a fire term,&quot; said Paige Wilson from Aggro Crab, Peak's publisher. &quot;It's used to describe a low-cost game that you and your friends can pick up whenever, have some fun, hang out, and expect a bit of jank. I think some people might not view it as this, but we do!&quot;</p>
<p>Here's what I've learned about why these games work, and how you can design one.</p>
<h2>The Games That Defined 2025</h2>
<div class="video-embed">
<iframe width="560" height="315" src="https://www.youtube.com/embed/Am4gM4b2UHw" title="Lethal Company Trailer" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<p><strong>Lethal Company</strong> (2023) kicked off the wave. Solo developer Zeekerss created a co-op horror game where you collect scrap from abandoned facilities while avoiding monsters. It sold millions and spawned an entire genre.</p>
<p><a href="https://store.steampowered.com/app/1966720/Lethal_Company/" target="_blank" class="campaign-link">View Lethal Company on Steam →</a></p>
<div class="video-embed">
<iframe width="560" height="315" src="https://www.youtube.com/embed/oSfoK8eSeD8" title="R.E.P.O. Release Trailer" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<p><strong>R.E.P.O.</strong> (2025) took the formula and made it goofier. Robot avatars. Exaggerated physics. Players swore it was &quot;so funny it was hard to be scared.&quot; It became one of the biggest co-op games of 2025. When Steam published its year-end best-sellers in December 2025, R.E.P.O. came out as the top-selling new game of the year by units, with Peak right behind it. Co-op friend slop games took the top slots outright, beating out big-budget releases that cost five times as much.</p>
<p><a href="https://store.steampowered.com/app/3241660/REPO/" target="_blank" class="campaign-link">View R.E.P.O. on Steam →</a></p>
<div class="video-embed">
<iframe width="560" height="315" src="https://www.youtube.com/embed/6BCdx7I1gz8" title="Peak Explained" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<p><strong>Peak</strong> (2025) proved the formula works outside horror. Climb a mountain with friends. Fall off. Laugh. Try again. 11 million copies sold. The game was made in <a href="https://www.pcgamer.com/games/sim/peak-devs-say-the-hit-comedy-climber-was-pitched-in-a-swedish-hot-tub-and-developed-in-a-frantic-4-week-korean-game-jam-we-brought-our-computers-to-an-airbnb-in-hongdae-and-locked-tf-in-for-a-month/">4 weeks during a game jam in South Korea</a>, where the Landfall and Aggro Crab teams shared an Airbnb in Seoul's Hongdae district.</p>
<p>Peak kept adding free content after launch, rotating in a new Mesa biome in August 2025 and running a limited-time in-game concert with rapper bbno$ in December 2025. The low-budget jam game became a live service in everything but name.</p>
<p><a href="https://store.steampowered.com/app/3527290/PEAK/" target="_blank" class="campaign-link">View Peak on Steam →</a></p>
<h2>The Core Design Principles</h2>
<p>After studying these games and reading developer interviews, here's what they all share:</p>
<h3>1. Low Barrier to Entry</h3>
<div class="stat-box">
<strong>$8 or less</strong><br>
Peak's pricing theory: "Eight bucks is still five bucks. It doesn't become ten bucks."
</div>
<p>These games cost under $20. Most are under $10. Peak launched at $5, then $8. The developers had a whole theory about price psychology: &quot;Eight bucks is still five bucks. Three bucks is two bucks. Two bucks is basically free.&quot;</p>
<p>But it's not just price. The games are easy to learn. You don't need prior gaming experience. You don't need to understand complex systems. Your non-gamer friends can join.</p>
<h3>2. Failure Is Funny</h3>
<p>In Peak, I've never survived to the end of a run. I keep playing anyway.</p>
<p>The most entertaining moments aren't victories. They're watching your friend miss a jump and fall off a mountain. Eat poisonous food. Get chased by the scoutmaster.</p>
<p>Design for comedic failure states. Make death spectatable. Let players laugh at each other.</p>
<h3>3. Proximity Chat</h3>
<p>Almost every successful friend slop game has proximity voice chat. Your voice gets quieter as you move away from teammates. Character mouths lip-sync to what you're saying.</p>
<p>This creates natural comedy. Someone screaming for help in the distance. Whispered conversations. The panic when you realize you've wandered too far alone.</p>
<h3>4. Physics Jank (Intentional)</h3>
<p>The wobbly, unpredictable physics aren't bugs. They're features.</p>
<p>When your character ragdolls unexpectedly, it's funny. When objects bounce in weird ways, it creates stories. The jank is the content.</p>
<h3>5. Shareable Moments</h3>
<p>These games are designed for clips. Twitch. TikTok. YouTube Shorts.</p>
<p>Every session produces moments worth sharing. The algorithm loves them. Players become marketers without realizing it.</p>
<h2>What Makes Them Different From Traditional Co-op</h2>
<table>
<thead>
<tr>
<th>Traditional Co-op</th>
<th>Friend Slop</th>
</tr>
</thead>
<tbody>
<tr>
<td>Winning is the goal</td>
<td>Hanging out is the goal</td>
</tr>
<tr>
<td>Skill required</td>
<td>Anyone can play</td>
</tr>
<tr>
<td>Solo mode works</td>
<td>Solo mode is sad</td>
</tr>
<tr>
<td>Story-driven</td>
<td>Moment-driven</td>
</tr>
<tr>
<td>$40-60</td>
<td>$5-20</td>
</tr>
<tr>
<td>Polished</td>
<td>Intentionally janky</td>
</tr>
</tbody>
</table>
<p>The Verge's analysis nailed it: &quot;In friend slop, the main objective is humor. Winning is secondary.&quot;</p>
<h2>The Loneliness Angle</h2>
<p>Here's something the critics miss when they dismiss these games as &quot;slop.&quot;</p>
<p>We're in a loneliness epidemic. People are isolated. Remote work scattered friend groups. These games give people a reason to hang out virtually. They're low-commitment social spaces.</p>
<p>As one writer put it: &quot;a real path to salvation from divisive and isolating times.&quot;</p>
<p>That's not nothing.</p>
<h2>The Economics</h2>
<div class="stat-box">
<strong>4 weeks → 11 million copies</strong><br>
Peak was developed during a month-long game jam in South Korea.
</div>
<p>These games are cheap to make. Small teams. Short development cycles. Low-fidelity graphics that players actually prefer because they're charming.</p>
<p>Content Warning took a small team and minimal time. Peak was a game jam project. R.E.P.O. came from a studio that makes experimental games.</p>
<p>The studios behind these hits aren't slowing down. Aggro Crab, Peak's co-developer, shipped its next co-op game Crashout Crew on May 28, 2026, a chaotic forklift warehouse simulator for one to four players that launched on Steam and Xbox Game Pass. Same recipe: small team, physics-driven mayhem, designed to be played with friends.</p>
<p>The math works: low investment, high potential upside, and a genre that rewards authenticity over polish.</p>
<h2>Notable Examples</h2>
<p><strong>The Essentials:</strong></p>
<ul>
<li>Among Us (2018) - the prototype</li>
<li>Phasmophobia (2020) - ghost hunting with proximity chat</li>
<li>Lethal Company (2023) - the genre-definer</li>
<li>Content Warning (2024) - filming monsters for views</li>
<li>Peak (2025) - climbing chaos</li>
<li>R.E.P.O. (2025) - goofy horror extraction</li>
<li>Crashout Crew (2026) - forklift co-op mayhem from Peak's co-developer Aggro Crab</li>
<li>Gamble With Your Friends (2026) - party game that sold a million copies in its first week, proof the genre kept rolling into 2026</li>
</ul>
<p><strong>The Experiments:</strong></p>
<ul>
<li>Guilty as Sock! - courtroom drama with sock puppets</li>
<li>Mage Arena - $2.99, cast spells by shouting</li>
<li>Lockdown Protocol - Among Us meets chore simulator</li>
<li>YAPYAP - wizards vandalizing a tower</li>
</ul>
<h2>Why Web Games Fit Perfectly</h2>
<p>Here's where it gets interesting for browser-based developers.</p>
<p>Friend slop games have two requirements: low barrier to entry and instant multiplayer. Web games nail both.</p>
<p>No downloads. No installs. Share a link, everyone's playing in 30 seconds. That's the dream for co-op games.</p>
<p>The technical challenges (WebSocket multiplayer, physics sync, voice chat) are solvable. We have <a href="/tutorials/websocket-multiplayer-basics">WebSocket tutorials</a> for a reason.</p>
<p>The bigger question is design. Can you create moments worth sharing? Can you make failure funny? Can you give friends a reason to hang out in your game?</p>
<h2>If You're Building One</h2>
<p><strong>Start with the social loop.</strong> What will players talk about after? What stories will they tell? Design for those moments.</p>
<p><strong>Embrace the jank.</strong> You don't need AAA polish. Players prefer charm. Ragdolls are your friend.</p>
<p><strong>Price it low.</strong> $5-10 is the sweet spot. You want entire friend groups buying in. Four copies at $8 beats one copy at $30.</p>
<p><strong>Add proximity chat.</strong> It's practically required. Players expect it now.</p>
<p><strong>Make it clippable.</strong> If nobody's sharing clips of your game, you're missing free marketing.</p>
<p><strong>Test with actual friend groups.</strong> Solo playtesting won't tell you if the social dynamics work.</p>
<p>The games that win aren't the most polished. They're the ones that give friends a reason to laugh together.</p>
<hr>
<h2>Common Questions</h2>
<h3>What makes a good co-op game?</h3>
<p>The best co-op games create situations where players need each other but also get in each other's way. You want moments of chaos that turn into stories people retell later. Low skill floors help because nobody wants to be the friend who can't figure out the controls. Funny failure states matter more than you'd think. When losing is entertaining, people keep playing. Proximity voice chat adds a layer that text chat can't replicate. And keep sessions short, 15 to 30 minutes, so people can fit a few rounds into an evening without it feeling like a commitment.</p>
<h3>Why are co-op games so popular right now?</h3>
<p>A few things came together. Lethal Company proved in 2023 that a solo dev could build a co-op game and sell millions of copies. Then Peak hit 11 million copies in 2025 as a game that started as a jam project. The economics got hard to ignore. These games are cheap to make, they spread through friend groups like wildfire, and they generate clips that go viral on social media. The &quot;friend slop&quot; genre, as people call it, rewards authenticity over polish. You don't need a big studio or a big budget. You need funny moments and friends who want to share them.</p>
<h3>Can you make a co-op game for the browser?</h3>
<p>Absolutely. Browser games are actually a great fit for co-op because the biggest barrier to playing with friends is getting everyone set up. With a web game, you share a link and everyone's in. No downloads, no version mismatches, no &quot;hold on I need to update.&quot; The technical pieces, WebSocket multiplayer, physics sync, even basic voice chat through WebRTC, are all doable in the browser. We've got a <a href="/tutorials/websocket-multiplayer-basics">WebSocket multiplayer tutorial</a> that covers the networking side.</p>
<hr>
<p><strong>Related:</strong></p>
<ul>
<li><a href="/tutorials/websocket-multiplayer-basics">WebSocket Multiplayer Basics</a></li>
<li><a href="/guides/steam-next-fest-strategy">Steam Next Fest Strategy</a></li>
<li><a href="/guides/kickstarter-for-indie-games">Kickstarter for Indie Games</a></li>
<li><a href="/tutorials/gamepad-api">Gamepad API</a> — local co-op with multiple controllers</li>
<li><a href="/guides/game-jams-hackathons">Game Jams &amp; Hackathons</a> — co-op jam games get more ratings and shares</li>
<li><a href="/guides/itch-io-launch-guide">How to Launch Your Game on itch.io</a> — browser co-op games thrive on <a href="http://itch.io">itch.io</a></li>
</ul>
<p><BuildCta
  title="Prototype your co-op idea solo"
  desc="Start with the two-character core and test the puzzle loop."
  prompt="Make a puzzle game where I control two characters and swap between them to hit switches" /></p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Kickstarter for Indie Games in 2026]]></title>
            <link>https://app.cinevva.com/guides/kickstarter-for-indie-games</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/kickstarter-for-indie-games</guid>
            <pubDate>Mon, 26 Jan 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[What the data actually says, who's succeeding, who's failing, and whether crowdfunding makes sense for your game.]]></description>
            <content:encoded><![CDATA[<style>
.video-embed {
  position: relative;
  width: 100%;
  max-width: 560px;
  margin: 1.5rem 0;
}
.video-embed iframe {
  width: 100%;
  aspect-ratio: 16/9;
  border-radius: 8px;
}
.campaign-link {
  display: inline-block;
  padding: 0.5rem 1rem;
  background: var(--vp-c-brand-1);
  color: white !important;
  border-radius: 6px;
  text-decoration: none;
  font-weight: 500;
  margin: 0.5rem 0 1.5rem;
}
.campaign-link:hover {
  background: var(--vp-c-brand-2);
}
</style>
<h1>Kickstarter for Indie Games in 2026</h1>
<p>Let's talk about what's actually happening with game crowdfunding right now, because the vibes don't match the data.</p>
<p>The golden age is over. In 2013, video games raised $51 million on Kickstarter. By 2024, that dropped to $25.2 million across roughly the same number of campaigns. The pie shrunk by half, but the number of people fighting for slices barely changed. That's the math you're walking into.</p>
<p>And yet, developers keep turning to Kickstarter. Publishers are saying no. Investors got spooked by the layoff wave. Around 15,000 game industry jobs vanished in 2024 alone, and trackers note the real number is likely higher since not every cut gets reported. For a lot of teams, crowdfunding isn't Plan A anymore. It's the backup when everything else falls through.</p>
<h2>Two Stories From 2025</h2>
<h3>The One That Worked</h3>
<div class="video-embed">
<iframe width="560" height="315" src="https://www.youtube.com/embed/mrvpsBjg4nI" title="Elestrals Awakened Trailer" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<p><strong>Elestrals Awakened</strong> raised over $1.3 million from more than 9,000 backers, making it the most funded video game on Kickstarter in 2025. The team behind it? A former Pokemon Championship caster with nearly a million YouTube subscribers, and two successful Kickstarters already under their belt (a trading card game and its digital version). They had an audience. They had a track record. They had years of community-building before they ever asked for money.</p>
<p><a href="https://www.kickstarter.com/projects/elestrals/elestrals-awakened" target="_blank" class="campaign-link">View the Elestrals Awakened Kickstarter →</a></p>
<h3>The One That Didn't</h3>
<div class="video-embed">
<iframe width="560" height="315" src="https://www.youtube.com/embed/dAzaaBUqki4" title="Alzara Radiant Echoes Trailer" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<p><strong>Alzara: Radiant Echoes</strong> raised €300,000 from over 5,000 backers in 2024. One of the most-backed video game campaigns that year. The studio, Camelia, shut down in April 2025. No game. No refunds. The team had a playable demo, a senior team, half their funding secured, and the Kickstarter success as proof of market interest. They pitched at Tokyo Game Show, DICE, and every industry event they could find. Nobody bit.</p>
<blockquote>
<p>&quot;This is part of the harsh reality of the industry. Sometimes, even having a promising game concept with proven market interest and a strong team is not enough.&quot;</p>
<p>— Studio Camelia, final update to backers</p>
</blockquote>
<p><a href="https://www.kickstarter.com/projects/studiocamelia/seed-a-vibrant-tribute-to-jrpg-classics" target="_blank" class="campaign-link">View the Alzara Kickstarter (archived) →</a></p>
<p>Two campaigns. Both &quot;successful&quot; by Kickstarter's definition. One delivered nothing. The difference wasn't the money raised. It was everything that came before.</p>
<h2>The Numbers That Matter</h2>
<p>Data from 17,000 Kickstarter campaigns since 2009 tells a clear story:</p>
<p><strong>Goal size predicts success.</strong> None of the 15 campaigns aiming for $2.5 million or more succeeded. But games with goals under $500K often overperformed. Shenmue 3 asked for $2M and got $6.3M. Bloodstained asked for $500K and got $5.5M. Set a goal people can rally behind, then blow past it.</p>
<p><strong>Timing matters.</strong> December is the worst month to launch (28% success rate). February is the best (35%). The overall average is 32%. Yes, two-thirds of campaigns fail.</p>
<p><strong>Most money comes from modest campaigns.</strong> 81.8% of all funds raised came from campaigns with goals of $500K or less. 68.1% from campaigns under $250K. The mega-campaigns get the headlines, but the mid-size ones actually fund.</p>
<p>The 2025 numbers are now in, and they tell a more nuanced story than the long decline. Video games drew 443 successful campaigns in 2025, raising just shy of 2024's roughly $26 million. The interesting shift was at the top: 11 campaigns cleared $500,000, the most in that band since 2015 and more than double the count in 2024. The pool isn't growing, but the big, well-prepared campaigns are coming back.</p>
<h2>What $50,000 Actually Buys You</h2>
<div class="video-embed">
<iframe width="560" height="315" src="https://www.youtube.com/embed/BoqbkWJqlVY" title="Space Chef Kickstarter Trailer" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<p>Here's a postmortem from the <strong>Space Chef</strong> team, who raised $50,000 from 1,119 backers:</p>
<blockquote>
<p>&quot;To get $50,000, we had to spend $20,000+ on marketing, ads, and creators. The trailer took 3 months to make. Kickstarter isn't free money. It's a multi-year commitment to hundreds of people.&quot;</p>
</blockquote>
<p>Their math:</p>
<table>
<thead>
<tr>
<th>Item</th>
<th>Amount</th>
</tr>
</thead>
<tbody>
<tr>
<td>Raised</td>
<td>$50,000</td>
</tr>
<tr>
<td>Marketing</td>
<td>-$20,000</td>
</tr>
<tr>
<td>Fees &amp; taxes</td>
<td>-$4,000</td>
</tr>
<tr>
<td><strong>Left for development</strong></td>
<td><strong>$26,000</strong></td>
</tr>
</tbody>
</table>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 380" role="img" aria-label="Where a 50,000 dollar Kickstarter raise goes: 50,000 dollars raised, minus 20,000 for marketing, minus 4,000 for fees and taxes, leaving 26,000 dollars for development" style="width:100%;height:auto;max-width:720px;margin:1.5rem auto;display:block;border-radius:14px">
  <rect width="720" height="380" rx="14" fill="#0b1020"/>
  <text x="32" y="44" font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif" font-size="20" font-weight="800" fill="#e8edf5">Where a $50,000 raise actually goes</text>
  <text x="32" y="68" font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif" font-size="13" fill="#9aa7b4">Space Chef, $50,000 from 1,119 backers. Source: developer postmortem.</text>
  <g font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif" font-size="11" fill="#5b6472">
    <g stroke="#ffffff" stroke-opacity="0.07">
      <line x1="70" y1="100" x2="690" y2="100"/>
      <line x1="70" y1="140" x2="690" y2="140"/>
      <line x1="70" y1="180" x2="690" y2="180"/>
      <line x1="70" y1="220" x2="690" y2="220"/>
      <line x1="70" y1="260" x2="690" y2="260"/>
    </g>
    <line x1="70" y1="300" x2="690" y2="300" stroke="#ffffff" stroke-opacity="0.16"/>
    <text x="60" y="104" text-anchor="end">$50k</text>
    <text x="60" y="144" text-anchor="end">$40k</text>
    <text x="60" y="184" text-anchor="end">$30k</text>
    <text x="60" y="224" text-anchor="end">$20k</text>
    <text x="60" y="264" text-anchor="end">$10k</text>
    <text x="60" y="304" text-anchor="end">$0</text>
  </g>
  <g font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif">
    <g stroke="#9aa7b4" stroke-opacity="0.45" stroke-dasharray="4 4">
      <line x1="200" y1="100" x2="250" y2="100"/>
      <line x1="360" y1="180" x2="410" y2="180"/>
      <line x1="520" y1="196" x2="570" y2="196"/>
    </g>
    <rect x="90" y="100" width="110" height="200" rx="6" fill="#7dd3fc"/>
    <rect x="250" y="100" width="110" height="80" rx="6" fill="#fb7185"/>
    <rect x="410" y="180" width="110" height="16" rx="4" fill="#fb7185"/>
    <rect x="570" y="196" width="110" height="104" rx="6" fill="#6ee7b7"/>
    <g text-anchor="middle" font-weight="800" font-size="14">
      <text x="145" y="92" fill="#7dd3fc">$50,000</text>
      <text x="305" y="92" fill="#fb7185">&#8722;$20,000</text>
      <text x="465" y="172" fill="#fb7185">&#8722;$4,000</text>
      <text x="625" y="188" fill="#6ee7b7">$26,000</text>
    </g>
    <g text-anchor="middle" font-size="12.5" font-weight="700" fill="#e8edf5">
      <text x="145" y="322">Raised</text>
      <text x="305" y="322">Marketing</text>
      <text x="465" y="322">Fees &amp; taxes</text>
      <text x="625" y="322">Left for dev</text>
    </g>
  </g>
</svg>
<p>At $20/hour, that's 1,300 hours. About 32 weeks. Nowhere near enough to finish their game.</p>
<p>They eventually got publisher investment to complete it. The Kickstarter didn't fund the game. It proved the game was worth funding.</p>
<p><a href="https://www.kickstarter.com/projects/bluegoogames/space-chef" target="_blank" class="campaign-link">View the Space Chef Kickstarter →</a></p>
<h2>When It Makes Sense</h2>
<p>Kickstarter works when you're using it for validation, not salvation.</p>
<p><strong>Good reasons to run a campaign:</strong></p>
<ul>
<li>You have an audience that's already asking for your game</li>
<li>You need proof of market demand to attract a publisher</li>
<li>You want to build a community that's literally invested in your success</li>
<li>You have a track record (previous games, successful projects, visible expertise)</li>
</ul>
<p><strong>Bad reasons:</strong></p>
<ul>
<li>You need the money to start development</li>
<li>You have no existing audience</li>
<li>You're hoping the campaign itself will build awareness</li>
<li>You can't afford to fail</li>
</ul>
<h2>The Brutal Truths</h2>
<p><strong>You probably can't finish your game on Kickstarter money alone.</strong> Most successful campaigns cover 25-50% of actual development costs. The rest comes from publishers, grants, savings, or day jobs.</p>
<p><strong>Your backers can't get refunds if you fail.</strong> They know this. They're increasingly skeptical of first-time creators. Studios with shipped games or proven track records get more trust.</p>
<p><strong>Running a campaign is a full-time job.</strong> Updates every few days. Backer messages. Press outreach. Stretch goal planning. Social media. For 30+ days, you're not making your game. You're marketing it.</p>
<p><strong>Success rate is 32%.</strong> That means 68% of campaigns fail. If you launch without preparation, you're almost certainly in that 68%.</p>
<h2>If You're Still In</h2>
<p>Do this before you launch:</p>
<ol>
<li>
<p><strong>Build your audience first.</strong> 1,000-2,000 people who actually want your game. Discord, email list, social following. Whatever works.</p>
</li>
<li>
<p><strong>Have something playable.</strong> A demo, a vertical slice, something. Players have been burned too many times. Showing beats promising.</p>
</li>
<li>
<p><strong>Set a goal you can actually hit.</strong> Ask for what you need to finish, not what you'd like to have. Fund fast, then stretch.</p>
</li>
<li>
<p><strong>Plan for the work after.</strong> Updates. Fulfillment. Years of development with people watching. This isn't a transaction. It's a relationship.</p>
</li>
</ol>
<p>The teams that succeed treat Kickstarter as the start of a conversation, not the end of a fundraising problem. Everyone else treats it like a lottery ticket.</p>
<p>Don't be a lottery ticket.</p>
<hr>
<h2>Common Questions</h2>
<h3>Is Kickstarter still worth it for indie games?</h3>
<p>It depends on what you're bringing to the table. If you've got an audience, a playable demo, and realistic expectations, it can work. The success rate for video game campaigns sits at about 32%, which isn't great odds. But teams with existing communities and prior track records do much better than that average. The real question is whether you've done the groundwork. If you're launching cold with no following, your chances are rough.</p>
<h3>How much money do indie games raise on Kickstarter?</h3>
<p>The total pool for video games on Kickstarter has been shrinking. It peaked around $51 million back in 2013 and dropped to about $25.2 million in 2024. Most successful campaigns raise between $10,000 and $50,000. The thing people forget is how much of that disappears. Kickstarter takes about 5%, payment processing takes another 3-5%, then you've got reward fulfillment, shipping, and taxes. A campaign that raises $50,000 might leave you with $26,000 in actual working money.</p>
<h3>What percentage of game Kickstarters fail?</h3>
<p>About 68% of video game campaigns on Kickstarter don't reach their funding goal. That number has stayed pretty consistent over the years. The campaigns that fail usually share a few traits: no existing audience, no playable demo, unrealistic funding goals, or launching during a crowded period without any way to stand out.</p>
<hr>
<p><strong>Related:</strong></p>
<ul>
<li><a href="/guides/itch-io-launch-guide">How to Launch Your Game on itch.io</a></li>
<li><a href="/guides/game-jams-hackathons">Game Jams &amp; Hackathons Guide</a></li>
<li><a href="/guides/steam-next-fest-strategy">Steam Next Fest Strategy</a> — building wishlists before and alongside crowdfunding</li>
<li><a href="/guides/co-op-game-design">Co-op Game Design</a> — co-op games generate organic social sharing that helps campaigns</li>
</ul>
<p><BuildCta
  title="Backers fund playable, not promised"
  desc="A live demo link in your pitch beats concept art."
  prompt="Make a playable teaser level for a cozy exploration game" /></p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Steam Next Fest Strategy in 2026]]></title>
            <link>https://app.cinevva.com/guides/steam-next-fest-strategy</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/steam-next-fest-strategy</guid>
            <pubDate>Mon, 26 Jan 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[What the data says about Steam Next Fest wishlists, demos, and timing, with real numbers from 200+ games and what actually drives visibility.]]></description>
            <content:encoded><![CDATA[<style>
.video-embed {
  position: relative;
  width: 100%;
  max-width: 560px;
  margin: 1.5rem 0;
}
.video-embed iframe {
  width: 100%;
  aspect-ratio: 16/9;
  border-radius: 8px;
}
.campaign-link {
  display: inline-block;
  padding: 0.5rem 1rem;
  background: var(--vp-c-brand-1);
  color: white !important;
  border-radius: 6px;
  text-decoration: none;
  font-weight: 500;
  margin: 0.5rem 0 1.5rem;
}
.campaign-link:hover {
  background: var(--vp-c-brand-2);
}
.stat-box {
  background: var(--vp-c-bg-soft);
  border-radius: 8px;
  padding: 1rem 1.5rem;
  margin: 1rem 0;
}
.stat-box strong {
  color: var(--vp-c-brand-1);
  font-size: 1.5rem;
}
</style>
<h1>Steam Next Fest Strategy in 2026</h1>
<p><em>Last updated: July 2026.</em></p>
<div class="stat-box">
<strong>2026 calendar</strong><br>
The June 2026 Next Fest ran June 15 to 22 and set a record with nearly 5,000 playable demos (<a href="https://partner.steamgames.com/doc/marketing/upcoming_events/nextfest/2026june" target="_blank">Steamworks</a>), which only sharpened the point below: with the field that crowded, the demos that broke out were the ones that walked in with an audience already. The next edition, <a href="https://partner.steamgames.com/doc/marketing/upcoming_events/nextfest/2026october" target="_blank">October 2026</a>, runs October 19 to 26. Remember a game can only join one Next Fest ever, so pick the edition that fits your release window.
</div>
<p>Here's the thing about Next Fest: everyone treats it like a lottery. Throw your demo in, cross your fingers, hope the algorithm smiles on you. That's not how it works.</p>
<p>I've been reading postmortems obsessively. Hundreds of them from 2025 alone. The pattern is so consistent it's almost boring: the games that &quot;win&quot; Next Fest aren't discovering success during the festival. They're amplifying momentum they already built.</p>
<p>Let me show you what I mean.</p>
<h2>The Formula Nobody Wants to Hear</h2>
<div class="stat-box">
<strong>Wishlists Before × 2 = Wishlists Gained</strong><br>
This ratio shows up in postmortem after postmortem.
</div>
<p>Eilean Mor went into October 2025 with 2,117 wishlists. Gained 2,082 during the festival. Almost exactly 2×.</p>
<div class="video-embed">
<iframe width="560" height="315" src="https://www.youtube.com/embed/jFv7SjsQEws" title="Eilean Mor: The Lost Keepers Trailer" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<p>Dice of Kalma went in with 335 wishlists. Gained 659. Just under 2×. Their developer wrote: &quot;Our wishlists nearly tripled, which is awesome, but we have still lot of work to do.&quot;</p>
<p>That's the uncomfortable truth. Next Fest doubles what you already have. If you have nothing, you get nothing doubled.</p>
<p><a href="https://store.steampowered.com/app/3871570/Eilean_Mor_The_Lost_Keepers/" target="_blank" class="campaign-link">View Eilean Mor on Steam →</a></p>
<h2>The 2,000 Wishlist Cliff</h2>
<p>Data from 208 games in February 2025 shows a sharp inflection point at 2,000 wishlists.</p>
<table>
<thead>
<tr>
<th>Starting Wishlists</th>
<th>What Happens</th>
</tr>
</thead>
<tbody>
<tr>
<td>Under 1,000</td>
<td>You're invisible after day 2. Zero games jumped tiers.</td>
</tr>
<tr>
<td>1,000–2,000</td>
<td>Modest gains. You stay in your lane.</td>
</tr>
<tr>
<td>2,000+</td>
<td>The algorithm starts helping you. Real momentum possible.</td>
</tr>
<tr>
<td>10,000+</td>
<td>Gold tier. Strong gains likely.</td>
</tr>
<tr>
<td>100,000+</td>
<td>Diamond tier. You're competing for the top charts.</td>
</tr>
</tbody>
</table>
<p>Here's what a developer from that survey said: &quot;You really start to see how the wishlists a game earns takes off for games that have 2000+ wishlists before Steam Next Fest.&quot;</p>
<p>It's not an algorithm thing exactly. It's a validation thing. 2,000 wishlists means you've figured out something about marketing. You know how to reach people. That skill compounds during the festival.</p>
<h2>What February 2026 Confirmed</h2>
<p>The February 2026 Next Fest (February 23 to March 2) was the most crowded yet at that point, with over 3,500 demos. And the bigger the field gets, the louder the data screams the same thing.</p>
<p>How To Market A Game surveyed 182 developers afterward. The single strongest relationship in the data was between a game's pre-fest wishlist count and the wishlists it earned during the event: an independent analysis of the survey data put the Spearman correlation at 0.825. For comparison, most marketing correlations in indie data sit between 0.2 and 0.4. Nothing else came close.</p>
<p>The spread was brutal. The median demo gained 806 wishlists. The 70th percentile hit 1,839. You needed 13,461 to crack the 95th percentile, and the top earner pulled 57,074. A cold-launched demo with no follower base had roughly a 1 in 20 shot at reaching that top 5%. The festival rewards momentum you bring with you. It does not manufacture it.</p>
<p>The timing data backed up the early-demo rule too. Of the games that gained 15,000+ wishlists, five had demos out months ahead, four launched about a month before, and only one shadow-dropped days before the fest.</p>
<h2>The First 48 Hours Are Everything</h2>
<p>Valve gives everyone a shot on days 1 and 2. After that, the algorithm decides who deserves more visibility based on performance.</p>
<p>Bronze tier games? Their impressions fall off a cliff on day 3. Diamond tier games? Their impressions triple.</p>
<div class="stat-box">
<strong>Day 1-2:</strong> Push everything. Stream. Post. Coordinate with creators.<br>
<strong>Day 3+:</strong> The algorithm has already decided. You're along for the ride.
</div>
<h2>What Actually Won in 2025</h2>
<h3>Do No Harm (February 2025)</h3>
<div class="video-embed">
<iframe width="560" height="315" src="https://www.youtube.com/embed/GBlOHAL1LkY" title="Do No Harm Trailer" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<p><strong>The numbers:</strong> 45,655 wishlists gained during Next Fest. Started with 52,102.</p>
<p><strong>What they did:</strong></p>
<ul>
<li>Trailer dropped on GameTrailers January 29 (weeks before Next Fest)</li>
<li>PR outreach timed with trailer</li>
<li>Demo went live February 4</li>
<li>Paid ads to amplify organic momentum</li>
</ul>
<p>This is the playbook. They didn't rely on Next Fest to discover them. They used Next Fest to multiply attention they'd already earned.</p>
<p><a href="https://store.steampowered.com/app/3138780/Do_No_Harm/" target="_blank" class="campaign-link">View Do No Harm on Steam →</a></p>
<h3>Cairn (October 2025)</h3>
<div class="video-embed">
<iframe width="560" height="315" src="https://www.youtube.com/embed/x6KWhvvk3bM" title="Cairn Launch Date Trailer" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<p>Hit #5 demo on day 1. Trending Upcoming and Top Demos by day 2.</p>
<p><strong>What they did:</strong></p>
<ul>
<li>Demo launched December 2024 (10 months before their Next Fest)</li>
<li>32,000 followers before the festival</li>
<li>Accepted into 18 festivals before Next Fest</li>
<li>The Game Bakers (Furi, Haven) - established studio with track record</li>
</ul>
<p>They didn't need Next Fest. But they used it anyway because it's free amplification when you've already done the work.</p>
<p><a href="https://store.steampowered.com/app/1588550/Cairn/" target="_blank" class="campaign-link">View Cairn on Steam →</a></p>
<h3>YAPYAP (October 2025)</h3>
<div class="video-embed">
<iframe width="560" height="315" src="https://www.youtube.com/embed/7d8Fd9XXAtQ" title="YAPYAP Demo Gameplay" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<p>The &quot;friend slop&quot; phenomenon. Co-op horror where you play as wizards vandalizing a tower. Went viral on social media, then dominated Next Fest.</p>
<p>Their trailer dropped August 25, 2025 - one month before Next Fest. It earned 434K views. That was the inflection point. Everything after was just riding the wave.</p>
<p><a href="https://store.steampowered.com/app/3834090/YAPYAP/" target="_blank" class="campaign-link">View YAPYAP on Steam →</a></p>
<h2>The Genres That Keep Winning</h2>
<p>From the February 2025 diamond tier:</p>
<ul>
<li><strong>Horror</strong> (×2) - Steam loves horror. Always has.</li>
<li><strong>Strategy/Management</strong> (×4) - &quot;Crafty-buildy-simulationy&quot; is the vibe</li>
<li><strong>Co-op &quot;friend slop&quot;</strong> - Lethal Company opened the floodgates</li>
<li><strong>Point-and-click</strong> (×2) - but both were sequels with existing audiences</li>
</ul>
<p>The point-and-click thing is interesting. Beholder: Conductor was the 4th game in its series. Duck Detective was a sequel. They had built-in audiences. First-time point-and-click devs don't see those results.</p>
<h2>What The Small Games Say</h2>
<p>Not everyone is chasing diamond tier. Here's what developers at the smaller end reported from October 2025:</p>
<blockquote>
<p>&quot;62% conversion rate from visits to wishlists. Store page itself seems to work. But impressions were high and people didn't click. Capsule art needs an update.&quot;</p>
</blockquote>
<blockquote>
<p>&quot;57% of store visitors played our demo. That sounds high? But only 15% who played also wishlisted. Something didn't meet expectations.&quot;</p>
</blockquote>
<blockquote>
<p>&quot;Got permanently banned from r/cozygames for asking if they found our game cozy. Always try to follow the rules but this was pretty surprising.&quot;</p>
</blockquote>
<p>The grind is real. These developers are testing capsule art, tweaking tags, getting banned from subreddits. It's not glamorous.</p>
<h2>The Honest Playbook</h2>
<p><strong>Months before Next Fest:</strong></p>
<ol>
<li>Launch your demo early. Like, way early. The winners had demos out for 6-12 months.</li>
<li>Enter smaller genre festivals first. Use them as polish runs.</li>
<li>Build to 2,000+ wishlists. That's your real threshold.</li>
</ol>
<p><strong>During Next Fest:</strong></p>
<ol>
<li>Days 1-2 are make or break. Push everything.</li>
<li>Stream if you can. It shows as &quot;live&quot; on your page.</li>
<li>Coordinate with streamers. Pay them if you have to.</li>
<li>Put your demo on a separate Steam page so it can collect reviews.</li>
</ol>
<p><strong>After Next Fest:</strong></p>
<ol>
<li>Don't launch immediately. A few weeks later actually performs better.</li>
<li>Use the momentum for your actual launch marketing.</li>
</ol>
<h2>When To Skip It</h2>
<p>Real talk: Next Fest isn't for everyone.</p>
<p>Skip it if:</p>
<ul>
<li>You have under 1,000 wishlists (you'll be invisible by day 3)</li>
<li>Your demo isn't polished (you get one shot at first impressions)</li>
<li>It's your first festival ever (do smaller ones first)</li>
<li>You're launching immediately after (wait a few weeks)</li>
</ul>
<p>There are dozens of smaller festivals every month. More focused audiences. Less competition. Check <a href="https://howtomarketagame.com/festivals">howtomarketagame.com/festivals</a> for the list.</p>
<p>Next Fest is the default because Valve prompts everyone to join. But the best marketing isn't the stuff everyone gets prompted to do.</p>
<hr>
<h2>Common Questions</h2>
<h3>How many wishlists do you need for Steam Next Fest?</h3>
<p>The data points to about 2,000 wishlists as the threshold where Next Fest starts working for you. Below that, you're basically invisible by day three. The algorithm favors games that are already getting traction, so you need momentum going in. The rough pattern from the February 2025 festival: whatever your wishlist count was before Next Fest, you can roughly double it during the event. So if you go in with 500, you might come out with 1,000. Go in with 5,000, you could hit 10,000. The starting number matters way more than most people realize.</p>
<h3>When should you release a demo for Steam Next Fest?</h3>
<p>Earlier than you'd think. The games that performed best in recent festivals had demos out for 6 to 12 months before Next Fest even started. That gives you time to collect feedback, fix the obvious stuff, and build wishlists organically before the festival multiplies whatever you've already got. Dropping your demo the week of Next Fest is a common mistake. You're competing with hundreds of other new demos and you've got no reviews, no feedback loop, nothing to work with.</p>
<h3>Is Steam Next Fest worth it for small indie games?</h3>
<p>It can be, but only if you're prepared. Small games that go in with under 1,000 wishlists and an unpolished demo usually get buried fast. The festival runs for a week and there are hundreds of games competing for attention. If you're early in development, smaller genre-specific festivals are a better first step. They have more focused audiences and less competition. Save Next Fest for when your demo is tight and you've got some momentum behind you.</p>
<hr>
<p><strong>Related:</strong></p>
<ul>
<li><a href="/guides/kickstarter-for-indie-games">Kickstarter for Indie Games</a></li>
<li><a href="/guides/itch-io-launch-guide">How to Launch Your Game on itch.io</a></li>
<li><a href="/guides/co-op-game-design">Co-op Game Design</a> — co-op games consistently overperform at Next Fest</li>
<li><a href="/tutorials/analytics-web-games">Analytics for web games</a> — tracking demo performance and conversion metrics</li>
<li><a href="/guides/game-jams-hackathons">Game Jams &amp; Hackathons</a> — building audience before your first festival</li>
</ul>
<p><BuildCta
  title="Practice the first-30-seconds hook"
  desc="Next Fest rewards demos that grab instantly. Prototype that hook now."
  prompt="Make a playable demo level with a hook in the first 30 seconds" /></p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Best Open-Source Generative AI Models for Games (2026)]]></title>
            <link>https://app.cinevva.com/guides/frontier-gen-ai-models</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/frontier-gen-ai-models</guid>
            <pubDate>Sat, 24 Jan 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[The best open-source generative AI models in 2026 for video, image, 3D, audio, speech, and world simulation, with what each one is good for and what it costs to run.]]></description>
            <content:encoded><![CDATA[<h1>Best Open-Source Generative AI Models for Games (2026)</h1>
<p><em>Last updated: September 2026.</em></p>
<p>Here's the thing about generative AI. For years, the best models lived behind API keys and unpredictable pricing. You'd build your workflow around a tool, get comfortable, then wake up to an email saying the pricing changed. Or worse, the company pivoted entirely.</p>
<p>That changed in late 2024. Tencent, Alibaba, and DeepSeek started releasing models you can actually download. Models that rival the closed alternatives. And suddenly, creators have options that don't depend on someone else's business model.</p>
<p>What if you could generate video, 3D assets, music, and voices, all from models you control? That's where we are now. This guide walks through what's real, what works, and what you can start using today.</p>
<h2>Video Generation</h2>
<p>For years, video generation meant Runway or Pika: closed platforms, subscription fees, limits on what you could do with the output. Now? You can run comparable models on your own hardware.</p>
<video controls autoplay loop muted playsinline style="width: 100%; border-radius: 8px;">
  <source src="https://cdn.cinevva.com/video/hunyuanvideo-demo.mp4" type="video/mp4">
</video>
<p><em>HunyuanVideo text-to-video generation, 720p output from the leading open-source video model</em></p>
<table>
<thead>
<tr>
<th>Model</th>
<th>Org</th>
<th>Params</th>
<th>Specs</th>
<th>Hardware</th>
<th>Cost</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="https://github.com/Tencent-Hunyuan/HunyuanVideo"><strong>HunyuanVideo</strong></a></td>
<td>Tencent</td>
<td>13B</td>
<td>720p, text+img</td>
<td>80GB</td>
<td>~$0.20</td>
</tr>
<tr>
<td><a href="https://github.com/Tencent-Hunyuan/HunyuanVideo-1.5"><strong>HunyuanVideo-1.5</strong></a></td>
<td>Tencent</td>
<td>8.3B</td>
<td>480p-1080p, text+img</td>
<td>14GB</td>
<td>~$0.05</td>
</tr>
<tr>
<td><a href="https://github.com/genmoai/mochi"><strong>Mochi 1</strong></a></td>
<td>Genmo</td>
<td>10B</td>
<td>480p@30fps</td>
<td>12GB+</td>
<td>~$0.10</td>
</tr>
<tr>
<td><a href="https://github.com/Lightricks/LTX-Video"><strong>LTX-Video</strong></a></td>
<td>Lightricks</td>
<td>—</td>
<td>768x512, real-time</td>
<td>12GB</td>
<td>~$0.02</td>
</tr>
<tr>
<td><a href="https://huggingface.co/Lightricks/LTX-2"><strong>LTX-2 / LTX-2.5</strong></a></td>
<td>Lightricks</td>
<td>19B (2) / 22B (2.5)</td>
<td>4K, <strong>synced audio</strong>, multishot in 2.5</td>
<td>High-end</td>
<td>~$0.30</td>
</tr>
<tr>
<td><a href="https://github.com/Wan-Video/Wan2.1"><strong>Wan 2.1</strong></a></td>
<td>Alibaba</td>
<td>1.3-14B</td>
<td>480p-720p</td>
<td>8GB+</td>
<td>~$0.03</td>
</tr>
<tr>
<td><a href="https://github.com/Wan-Video/Wan2.2"><strong>Wan 2.2</strong></a></td>
<td>Alibaba</td>
<td>27B MoE (14B active)</td>
<td>720p, MoE</td>
<td>8GB+</td>
<td>~$0.03</td>
</tr>
<tr>
<td><a href="https://huggingface.co/zai-org/CogVideoX1.5-5B"><strong>CogVideoX1.5-5B</strong></a></td>
<td>Tsinghua</td>
<td>5B</td>
<td>1360x768@16fps, up to 10s</td>
<td>12GB</td>
<td>~$0.04</td>
</tr>
<tr>
<td><a href="https://github.com/SkyworkAI/SkyReels-V3"><strong>SkyReels-V3</strong></a></td>
<td>Skywork</td>
<td>14-19B</td>
<td>Audio-driven, ref-to-video, V2V</td>
<td>High-end</td>
<td>~$0.10</td>
</tr>
<tr>
<td><a href="https://huggingface.co/MiniMaxAI/MiniMax-H3"><strong>MiniMax H3</strong></a></td>
<td>MiniMax</td>
<td>33B</td>
<td>2K, 4-15s, <strong>stereo audio</strong>, up to 9 ref images</td>
<td>High-end</td>
<td>not benchmarked</td>
</tr>
<tr>
<td><a href="https://github.com/stepfun-ai/Step-Video-T2V"><strong>Step-Video-T2V</strong></a></td>
<td>StepFun</td>
<td>30B</td>
<td>Largest open T2V, 204 frames</td>
<td>High-end</td>
<td>~$0.15</td>
</tr>
<tr>
<td><a href="https://github.com/hpcaitech/Open-Sora"><strong>Open-Sora 2.0</strong></a></td>
<td>HPC-AI</td>
<td>11B</td>
<td>Flux integration</td>
<td>High-end</td>
<td>~$0.20</td>
</tr>
</tbody>
</table>
<p>Weights: <a href="https://huggingface.co/tencent/HunyuanVideo">HunyuanVideo ↗</a> · <a href="https://huggingface.co/genmo/mochi-1-preview">Mochi 1 ↗</a> · <a href="https://huggingface.co/Wan-AI/Wan2.1-T2V-14B">Wan 2.1 ↗</a> · <a href="https://huggingface.co/hpcai-tech/Open-Sora-v2">Open-Sora ↗</a></p>
<p><strong>See samples:</strong> <a href="https://aivideo.hunyuan.tencent.com/">HunyuanVideo gallery ↗</a> · <a href="https://www.genmo.ai/">Mochi examples ↗</a> · <a href="https://github.com/THUDM/CogVideo#gallery">CogVideoX samples ↗</a></p>
<h3>What this means for creators</h3>
<p><strong>HunyuanVideo</strong> outperforms Runway Gen-3 in professional evaluations, and it's fully open. The catch? You need serious hardware. An A100 or H100 with 80GB VRAM. For most of us, that means renting cloud GPUs when you need them.</p>
<p><strong>HunyuanVideo-1.5</strong> changed the calculus on hardware. Tencent released it in November 2025 as an 8.3B-parameter open model that runs on a 14GB consumer GPU, with text-to-video and image-to-video at 480p/720p and optional 1080p upscaling. A new Selective and Sliding Tile Attention (SSTA) mechanism gives it roughly double the inference speed of the original HunyuanVideo. If you wanted HunyuanVideo quality but couldn't justify an 80GB card, this is the version you can actually run at home.</p>
<p><strong>Mochi 1</strong> is the one you can actually run. A 12GB GPU, that's RTX 3060 territory, handles it fine. The output is genuinely creative, with a distinct artistic quality. Not quite HunyuanVideo's fidelity, but you own the process.</p>
<p><strong>LTX-2</strong> is where things get interesting for games. It's the first open model that generates synchronized audio with video. Imagine cutscenes where the sound just... matches. No post-production sync. Lightricks open-sourced the full weights, inference, and training code in January 2026, with native 4K output at up to 50fps and synced audio up to 20 seconds. One license caveat: LTX-2's open weights are free for academic use and for commercial use only by companies under $10M in annual revenue, so check that threshold before you build a business on it. The current checkpoint as of September 2026 is <a href="https://huggingface.co/Lightricks/LTX-2.5">LTX-2.5</a>, a 22B model that adds native multishot generation (several connected shots with one character and look), a diffusion video decoder in place of plain VAE reconstruction, and a Gemma 4 12B text encoder for longer prompts, all still under the LTX-2.x Community License with the same $10M revenue line and a paid agreement above it.</p>
<p><strong>SkyReels-V3</strong> (Skywork, January 2026) is the notable newer open line. It's a unified multimodal model that does audio-driven video, reference-to-video, and video-to-video in 14B and 19B variants, so it's strong when you need a character or a reference image to drive the shot. <strong>Step-Video-T2V</strong> (StepFun) is the largest open text-to-video model at 30B and ships under a clean MIT license, worth knowing if permissive licensing matters more to you than fitting on a small GPU.</p>
<p><strong>MiniMax H3</strong> (Hailuo 3.0) is the newest open entry and the one to watch for reference-driven cutscenes. MiniMax launched it as an API on July 31, 2026 and put the 33B base weights on <a href="https://huggingface.co/MiniMaxAI/MiniMax-H3">Hugging Face</a> in August with two checkpoints: FL2VA for first-and-last-frame generation and Ref2VA, which takes up to 9 reference images, 3 reference video clips, and 3 audio clips (12 files total) and generates 4 to 15 seconds at up to 2K with native stereo audio. The licence is the MiniMax H3 Community License, and the model card asks users in the USA, EU, UK, and South Korea to file an application form first, so it's not a drop-in for every studio.</p>
<p><strong>Wan 2.1</strong> runs on a gaming laptop. An 8GB GPU works for the smaller variants. If you've ever wanted to prototype with video generation but couldn't justify the hardware, this is your path in.</p>
<p><strong>Wan 2.2</strong> (Alibaba, July 2025) is the first open-source video model built on a Mixture-of-Experts design: 27B total parameters with only 14B active per step. It ships as text-to-video (T2V-A14B), image-to-video (I2V-A14B), and a hybrid 5B variant that runs on consumer GPUs, all under Apache 2.0 for commercial use.</p>
<p>One caveat worth knowing: Wan 2.2 is still the last open Wan. The newer Wan 2.5 (September 2025), 2.6 (December 2025), 2.7 (April 2026), and now Wan 3.0 (August 2026, with 30-second single-take clips at up to 1080p and reference inputs, per <a href="https://www.alibabacloud.com/help/en/model-studio/wan3-0-video-prime">Alibaba Cloud Model Studio</a>) added synced audio, 1080p, and finer frame control but are API-only, with no public weights. The <a href="https://huggingface.co/Wan-AI">Wan-AI Hugging Face org</a> still tops out at 2.2 as of September 2026, whatever the affiliate sites claim. If self-hosting matters to you, 2.2 is the ceiling. LTX-2.5 is the open model to reach for when you need 4K and synced audio.</p>
<p>The workflow that makes sense: Mochi 1 or Wan 2.1 for prototyping locally. HunyuanVideo-1.5 or LTX-2.5 on cloud GPUs when you need final quality.</p>
<h2>Image Generation</h2>
<p>This is where open-source already won. The models you can download today genuinely compete with Midjourney. Not &quot;almost as good,&quot; actually competitive.</p>
<p><img src="/img/ai-samples/flux-sample.png" alt="FLUX.1 generation samples">
<em>FLUX.1 samples, photorealistic quality from an Apache 2.0 licensed model</em></p>
<table>
<thead>
<tr>
<th>Model</th>
<th>Org</th>
<th>Released</th>
<th>Params</th>
<th>Key Feature</th>
<th>License</th>
<th>Cost/image</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="https://huggingface.co/black-forest-labs/FLUX.1-schnell"><strong>FLUX.1 [schnell]</strong></a></td>
<td>Black Forest Labs</td>
<td>Aug 2024</td>
<td>12B</td>
<td>4-step generation, fast</td>
<td>Apache 2.0</td>
<td>~$0.001</td>
</tr>
<tr>
<td><a href="https://huggingface.co/black-forest-labs/FLUX.1-dev"><strong>FLUX.1 [dev]</strong></a></td>
<td>Black Forest Labs</td>
<td>Aug 2024</td>
<td>12B</td>
<td>Quality close to Pro</td>
<td>Non-commercial</td>
<td>~$0.002</td>
</tr>
<tr>
<td><a href="https://huggingface.co/stabilityai/stable-diffusion-3.5-large"><strong>SD 3.5 Large</strong></a></td>
<td>Stability AI</td>
<td>Oct 2024</td>
<td>8B</td>
<td>Text rendering, diverse styles</td>
<td>Stability license</td>
<td>~$0.002</td>
</tr>
<tr>
<td><a href="https://huggingface.co/stabilityai/stable-diffusion-3.5-large-turbo"><strong>SD 3.5 Large Turbo</strong></a></td>
<td>Stability AI</td>
<td>Oct 2024</td>
<td>8B</td>
<td>4-step, fast</td>
<td>Stability license</td>
<td>~$0.001</td>
</tr>
<tr>
<td><a href="https://huggingface.co/HiDream-ai/HiDream-I1-Full"><strong>HiDream-I1</strong></a></td>
<td><a href="http://HiDream.ai">HiDream.ai</a></td>
<td>Apr 2025</td>
<td>17B</td>
<td>High quality, Full/Dev/Fast variants</td>
<td>MIT</td>
<td>~$0.002</td>
</tr>
<tr>
<td><a href="https://github.com/zai-org/CogView4"><strong>CogView4</strong></a></td>
<td>Tsinghua / Zhipu</td>
<td>Mar 2025</td>
<td>6B</td>
<td>Native Chinese text, up to 2048px</td>
<td>Apache 2.0</td>
<td>~$0.002</td>
</tr>
<tr>
<td><a href="https://github.com/QwenLM/Qwen-Image"><strong>Qwen-Image</strong></a></td>
<td>Alibaba</td>
<td>Aug 2025</td>
<td>20B</td>
<td>Best-in-class text rendering, editing</td>
<td>Apache 2.0</td>
<td>~$0.002</td>
</tr>
<tr>
<td><a href="https://bfl.ai/blog/flux-2"><strong>FLUX.2</strong></a></td>
<td>Black Forest Labs</td>
<td>Nov 2025</td>
<td>32B</td>
<td>Text+edit, 4MP, multi-ref</td>
<td>dev: Non-commercial / klein 4B: Apache 2.0</td>
<td>~$0.003</td>
</tr>
<tr>
<td><a href="https://github.com/ideogram-oss/ideogram4"><strong>Ideogram 4.0</strong></a></td>
<td>Ideogram</td>
<td>Jun 2026</td>
<td>9.3B</td>
<td>Design work, text rendering, JSON layout control</td>
<td>Non-commercial</td>
<td>~$0.002</td>
</tr>
</tbody>
</table>
<p>Try them directly: <a href="https://huggingface.co/spaces/black-forest-labs/FLUX.1-schnell">FLUX.1 schnell demo ↗</a> · <a href="https://huggingface.co/spaces/stabilityai/stable-diffusion-3.5-large">SD 3.5 Large demo ↗</a> · <a href="https://github.com/black-forest-labs/flux">GitHub (FLUX) ↗</a></p>
<p><strong>See samples:</strong> <a href="https://flux1.ai/examples">FLUX gallery ↗</a> · <a href="https://flux1.ai/gallery">FLUX LoRA gallery ↗</a> · <a href="https://replicate.com/black-forest-labs/flux-schnell/examples">Replicate examples ↗</a></p>
<h3>For building game assets</h3>
<p><strong>FLUX.1 [schnell]</strong> is the one to know. Apache 2.0 license, meaning you can ship commercial games without worrying about licensing drama. It generates in just 4 steps, so you can iterate fast. Describe what you want, see the result, adjust, repeat.</p>
<p><strong>SD 3.5 Large</strong> finally handles text rendering properly. Previous versions mangled any text you tried to include. This matters for UI mockups, in-game signage, title screens, anywhere you need readable words in your images.</p>
<p><strong>FLUX.2</strong> (Black Forest Labs, November 2025) is the bigger successor: a 32B model that handles text-to-image and image editing in one checkpoint, with strong multi-reference character/style consistency and reliable text rendering at up to 4 megapixels. The open-weight FLUX.2 [dev] uses a non-commercial license, but the size-distilled FLUX.2 [klein] (January 2026) ships its 4B version under Apache 2.0, generates in under a second, and runs in about 8GB of VRAM, so there's still a commercial-safe option for shipping game art. Grab the 4B klein specifically: the larger klein 9B stays under the non-commercial FLUX license. Quantized pipelines bring [dev] down to 18-24GB GPUs. Black Forest Labs' next generation, FLUX 3, is a joint image, video, and audio model announced July 23, 2026, and as of September 2026 it's API-only: video with synced audio went live as a preview on August 4, and the open-weight FLUX 3 Dev is &quot;planned for later in 2026&quot; per the <a href="https://docs.bfl.ml/release-notes">BFL release notes</a>. Until it lands, klein 4B remains the commercial-safe FLUX.</p>
<p>Two more open options worth knowing. <strong>Chroma1-HD</strong> (8.9B, Apache 2.0) is a fully-open FLUX.1-schnell derivative, so it's the commercial-safe way to get FLUX-family quality without the [dev] license. <strong>OmniGen2</strong> (Apache 2.0) is a unified model that does text-to-image plus instruction-based editing in one place, which is the fastest path when you're iterating on an existing asset (&quot;make the sword glow blue&quot;) rather than generating from scratch.</p>
<p><strong>Qwen-Image</strong> (Alibaba, August 2025) is the open model to reach for when your art needs readable text, like signage, UI, posters, or item labels. It's a 20B Apache 2.0 model with best-in-class text rendering and a strong instruction-based editing variant, so it's commercial-safe and unusually good at the thing most image models still fumble. The December 2025 refresh, <a href="https://huggingface.co/Qwen/Qwen-Image-2512">Qwen-Image-2512</a>, sharpened human realism and text layout and kept the Apache 2.0 license, so grab that checkpoint if you're self-hosting. The newer Qwen-Image-2.0 (February 2026) is API-only, and as of September 2026 the <a href="https://github.com/QwenLM/Qwen-Image">QwenLM repository</a> still lists Qwen-Image-2512 and Qwen-Image-Edit-2511 as the newest checkpoints with public weights.</p>
<p><strong>Ideogram 4.0</strong> (June 2026) is Ideogram's first open-weight release: a 9.3B diffusion transformer built for design work, with strong multilingual text rendering and explicit layout and color control through structured JSON prompts. One catch before you build on it: the inference code is Apache 2.0, but the weights sit under a non-commercial license, so it's a research and prototyping tool unless you buy the commercial license.</p>
<p>The ecosystem around Stable Diffusion is still unmatched. ControlNet for precise composition. Inpainting for fixes. LoRA fine-tuning for custom styles. FLUX is catching up, but if you need deep customization today, SD's tooling maturity gives you more to work with.</p>
<p>Here's how I'd think about it: textures and sprites, either works. Concept art with specific style requirements, SD 3.5 with LoRAs. Pure quality for commercial shipping, FLUX schnell.</p>
<h2>3D Generation</h2>
<p>If you've ever spent eight hours modeling a prop that appears in your game for three seconds, this section is for you. 3D generation crossed from &quot;interesting research&quot; to a real production tool a while back, and by 2026 the open models are genuinely good. You can go from a sketch to a textured mesh in under a minute.</p>
<p>This page covers the open models you can self-host. If you're choosing a tool rather than a model, our <a href="/guides/ai-3d-model-generators">best AI 3D model generators</a> guide compares the hosted options (Meshy, Tripo, Rodin, Hi3D) against the open ones, with pricing and commercial rights on each.</p>
<p><img src="/img/ai-samples/trellis-sample.png" alt="TRELLIS 3D generation samples">
<em>TRELLIS generates textured 3D meshes with PBR materials from single images</em></p>
<table>
<thead>
<tr>
<th>Model</th>
<th>Org</th>
<th>Released</th>
<th>Key Feature</th>
<th>Output</th>
<th>Cost/mesh</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="https://github.com/microsoft/TRELLIS.2"><strong>TRELLIS.2-4B</strong></a></td>
<td>Microsoft</td>
<td>Dec 2025</td>
<td>4B params, native PBR, up to 1536³</td>
<td>Textured mesh with normals</td>
<td>~$0.03</td>
</tr>
<tr>
<td><a href="https://github.com/Tencent-Hunyuan/Hunyuan3D-2.1"><strong>Hunyuan3D 2.1</strong></a></td>
<td>Tencent</td>
<td>Jun 2025</td>
<td>Production PBR, full weights + training code</td>
<td>High-fidelity textured mesh</td>
<td>~$0.05</td>
</tr>
<tr>
<td><a href="https://github.com/facebookresearch/sam-3d-objects"><strong>SAM 3D</strong></a></td>
<td>Meta</td>
<td>Nov 2025</td>
<td>Single-image to 3D (objects + human body)</td>
<td>Mesh from one photo</td>
<td>~$0.02</td>
</tr>
<tr>
<td><a href="https://huggingface.co/stabilityai/stable-fast-3d"><strong>Stable Fast 3D</strong></a></td>
<td>Stability AI</td>
<td>Aug 2024</td>
<td>Single image → mesh in ~0.5s</td>
<td>Fast textured mesh</td>
<td>~$0.001</td>
</tr>
<tr>
<td><a href="https://github.com/VAST-AI-Research/TripoSG"><strong>TripoSG</strong></a></td>
<td>VAST-AI</td>
<td>Mar 2025</td>
<td>1.5B rectified-flow shape gen</td>
<td>High-quality mesh</td>
<td>~$0.01</td>
</tr>
<tr>
<td><a href="https://github.com/VAST-AI-Research/TripoSR"><strong>TripoSR</strong></a></td>
<td>Stability / Tripo</td>
<td>2024</td>
<td>Fast single-image reconstruction</td>
<td>Mesh (no texture)</td>
<td>~$0.001</td>
</tr>
<tr>
<td><a href="https://huggingface.co/VAST-AI/UniRig"><strong>UniRig</strong></a></td>
<td>Tsinghua / Tripo</td>
<td>2025</td>
<td>Auto-rig: skeleton + skinning weights</td>
<td>Rigged, animatable mesh</td>
<td>~$0.01</td>
</tr>
</tbody>
</table>
<p>Try them directly: <a href="https://huggingface.co/spaces/microsoft/TRELLIS.2">TRELLIS.2 demo ↗</a> · <a href="https://huggingface.co/spaces/tencent/Hunyuan3D-2">Hunyuan3D demo ↗</a> · <a href="https://huggingface.co/spaces/TencentARC/InstantMesh">InstantMesh demo ↗</a></p>
<p><strong>See samples:</strong> <a href="https://microsoft.github.io/TRELLIS.2/">TRELLIS.2 project page ↗</a> · <a href="https://www.3daistudio.com/Models/Trellis-2">3D AI Studio gallery ↗</a></p>
<h3>A workflow that actually works</h3>
<p>The approach that's clicking for creators right now chains models together. Start with an image, generated or photographed, doesn't matter. Run it through Stable Zero123 or Wonder3D to get multiple views. Feed those views to InstantMesh or TripoSR for the mesh. Then TRELLIS.2 or Hunyuan3D for proper materials.</p>
<p><strong>TRELLIS.2</strong> from Microsoft is the new leader for production-ready assets. It handles the geometry that breaks other models: thin surfaces, holes, complex topology. The 4B parameter version outputs meshes with real PBR textures, not just vertex colors pretending to be materials.</p>
<p><strong>Stable Fast 3D</strong> is about speed. Roughly half a second from image to mesh. The mesh needs cleanup and texturing, but for prototyping? For figuring out if an idea works before you invest hours? Unbeatable. TripoSG is the step up when you want cleaner geometry from a single image.</p>
<p><strong>Hunyuan3D 2.1</strong> is the open Tencent model to use: it ships full weights and training code with production-grade PBR texturing. Note the naming, because it trips people up. Hunyuan3D 2.5, 3.0, and 3.1 all exist but are API-only, with no public weights, so for self-hosting the base generator still tops out at 2.1 (a <a href="https://github.com/Tencent-Hunyuan/Hunyuan3D-2.1/issues/111">GitHub thread</a> asking Tencent about open-sourcing 2.5 has gone unanswered as of September 2026). If you'd rather try it than host it, our <a href="/tools/hunyuan3d#prompt=low%20poly%20treasure%20chest">3D generator</a> runs Hunyuan3D in the browser. Tencent did open two useful extensions built on 2.1: Hunyuan3D-Omni adds multi-condition control (point cloud, voxel, skeleton, bounding box), and Hunyuan3D-Part decomposes a mesh into editable parts. Its license also excludes the EU, UK, and South Korea, so check terms before you ship in those regions.</p>
<p><strong>SAM 3D</strong> (Meta, November 2025) is the newest way in: a single photo becomes a 3D mesh, with separate models for objects and human bodies. Combined with Meta's segmentation work, you can isolate an object in an image and reconstruct just that object.</p>
<p><strong>UniRig</strong> (Tsinghua and Tripo, MIT) closes the gap everyone hits right after they have a mesh: rigging. It auto-generates a valid skeleton and skinning weights for an input mesh, so a generated character can actually be animated instead of sitting there as a static prop. Pair it with the auto-animation work in NVIDIA's SOMA-X and a fully generated, fully rigged character stops being a research demo.</p>
<p>Here's the realistic expectation for indie creators: generate concept art with FLUX, run it through InstantMesh for geometry, then texture in Blender or use TRELLIS for automated PBR. You're looking at 30-60 minutes per asset instead of 4-8 hours. Not zero time, but a real difference.</p>
<h2>Audio and Music</h2>
<p>Audio generation hasn't caught up to images and video yet. But there's enough here to change how you work, especially for prototyping and sound effects.</p>
<audio controls style="width: 100%;">
  <source src="/img/ai-samples/music-sample.mp3" type="audio/mpeg">
</audio>
<p><em>AI-generated music sample. Describe the mood you want, get music that fits</em></p>
<table>
<thead>
<tr>
<th>Model</th>
<th>Org</th>
<th>Released</th>
<th>What It Does</th>
<th>License</th>
<th>Cost/30s</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="https://github.com/ace-step/ACE-Step-1.5"><strong>ACE-Step 1.5</strong></a></td>
<td>StepFun/ACE Studio</td>
<td>Jan 2026</td>
<td>~4 min music fast, 19 languages, voice clone</td>
<td>MIT</td>
<td>~$0.02</td>
</tr>
<tr>
<td><a href="https://stability.ai/stable-audio"><strong>Stable Audio 3.0</strong></a></td>
<td>Stability AI</td>
<td>May 2026</td>
<td>Up to ~6 min songs; open Small, Small-SFX + Medium models</td>
<td>Stability Community</td>
<td>~$0.02</td>
</tr>
<tr>
<td><a href="https://github.com/multimodal-art-projection/YuE"><strong>YuE</strong></a></td>
<td>MAP</td>
<td>Jan 2025</td>
<td>Full songs from lyrics, vocals + accompaniment</td>
<td>Apache 2.0</td>
<td>~$0.05</td>
</tr>
<tr>
<td><a href="https://huggingface.co/facebook/musicgen-large"><strong>MusicGen</strong></a></td>
<td>Meta</td>
<td>2023</td>
<td>Text-to-music, controllable</td>
<td>code MIT / weights CC-BY-NC</td>
<td>~$0.01</td>
</tr>
<tr>
<td><a href="https://github.com/ASLP-lab/DiffRhythm2"><strong>DiffRhythm 2</strong></a></td>
<td>ASLP-lab</td>
<td>Feb 2026</td>
<td>Fast full-song generation</td>
<td>Apache 2.0</td>
<td>~$0.02</td>
</tr>
<tr>
<td><a href="https://huggingface.co/google/magenta-realtime"><strong>Magenta RealTime</strong></a></td>
<td>Google</td>
<td>Jun 2025</td>
<td>Real-time, prompt-steerable music</td>
<td>code Apache / weights CC-BY</td>
<td>~$0.02</td>
</tr>
</tbody>
</table>
<p>Try them directly: <a href="https://huggingface.co/spaces/facebook/MusicGen">MusicGen demo ↗</a> · <a href="https://audiocraft.metademolab.com/musicgen.html">AudioCraft playground ↗</a></p>
<p><strong>See samples:</strong> <a href="https://replicate.com/meta/musicgen/examples">MusicGen examples ↗</a> · <a href="https://felixkreuk.github.io/audiogen/">AudioGen samples ↗</a></p>
<h3>What you can actually ship with</h3>
<p><strong>MusicGen</strong> from Meta is still a practical choice for prototyping game audio. Describe the mood you want, get music that fits, and it runs fine on a 12GB GPU. One license gotcha: the MusicGen code is MIT, but the model weights are CC-BY-NC (non-commercial), so use it to prototype and switch to a commercially-licensed model like ACE-Step or Stable Audio for anything you ship.</p>
<p><strong>Stable Audio's open sound-effects model (Small-SFX)</strong> handles footsteps, door creaks, ambient wind, and mechanical sounds, runs locally, and ships under Stability's community license, so it's the open SFX option to reach for when you need sounds you can actually use commercially. It's the one to pick because the other open SFX models come with strings: Meta's AudioGen is CC-BY-NC and TangoFlux is under Stability's non-commercial community license, so both are prototype-only for a shipped game.</p>
<p><strong>Magenta RealTime</strong> (Google) is the odd one out in the best way: it's the only open-weights model built for real-time, continuously prompt-steerable music. Instead of rendering a finished track, it generates music live that you can steer as it plays, which is exactly the shape of an adaptive game soundtrack that shifts with what the player is doing. The code is Apache 2.0 and the weights are CC-BY, both fine for commercial use.</p>
<p><strong>YuE</strong> is genuinely exciting. It's the first open model that generates full songs with vocals. Theme songs. Background music with actual singing. The quality varies, but it's miles ahead of anything else you can download and run yourself.</p>
<p><strong>ACE-Step</strong> is the open music model worth knowing now, and it's moved fast: the 1.5 line (January 2026, with a larger 5B XL variant) supersedes the original May 2025 release and is now MIT-licensed. It generates several minutes of music quickly, supports 19 languages, and handles voice cloning, remixing, and lyric editing. For game prototyping it closes a lot of the gap that YuE and MusicGen left open.</p>
<p><strong>Stable Audio 3.0</strong> (May 2026) is the bigger update for sound. It can generate songs up to roughly six minutes, and Stability shipped open weights for three of the four variants: Small and the dedicated sound-effects model Small-SFX both run on-device, and Medium adds better musical structure and the full track length. Only the Large model stayed API-only. Small-SFX is now the strongest open option specifically for game SFX. The three open models ship under the Stability AI Community License, which lets you use and sell what they generate, with an Enterprise License for companies above $1M in annual revenue, per <a href="https://stability.ai/news-updates/meet-stable-audio-3-the-model-family-built-for-artistic-experimentation-with-open-weight-models">Stability's announcement</a>. The whole family was trained on licensed data, so the legal footing is cleaner than the music generators with unsettled lawsuits.</p>
<p>Here's the honest take: the gap between open models and closed ones (Suno, Udio) is narrowing but still real for full vocal songs, and those closed tools also carry unsettled training-data litigation. For sound effects, open models (especially Stable Audio's SFX model) are genuinely competitive. For songs you want to ship, expect to iterate heavily, or bring in a musician for final production and use these tools for everything else.</p>
<h2>Speech and Voice</h2>
<p>Voice generation is well past &quot;good enough for games&quot; now, and that changes what's possible for small teams.</p>
<audio controls style="width: 100%;">
  <source src="/img/ai-samples/speech-sample.mp3" type="audio/mpeg">
</audio>
<p><em>AI-generated game narration with natural speech, proper pacing, and emotion</em></p>
<table>
<thead>
<tr>
<th>Model</th>
<th>Org</th>
<th>Released</th>
<th>Key Feature</th>
<th>License</th>
<th>Cost/min</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="https://github.com/QwenLM/Qwen3-TTS"><strong>Qwen3-TTS</strong></a></td>
<td>Alibaba</td>
<td>Jan 2026</td>
<td>3s voice cloning, voice design, 10 languages</td>
<td>Apache 2.0</td>
<td>~$0.002</td>
</tr>
<tr>
<td><a href="https://huggingface.co/ResembleAI/chatterbox"><strong>Chatterbox</strong></a></td>
<td>Resemble AI</td>
<td>2025</td>
<td>Emotion control, cloning from ~5s, 23 languages</td>
<td>MIT</td>
<td>~$0.003</td>
</tr>
<tr>
<td><a href="https://github.com/SesameAILabs/csm"><strong>CSM</strong></a></td>
<td>Sesame AI</td>
<td>Mar 2025</td>
<td>Conversational flow, natural pauses</td>
<td>Apache 2.0</td>
<td>~$0.005</td>
</tr>
<tr>
<td><a href="https://github.com/fishaudio/fish-speech"><strong>Fish Speech 1.5</strong></a></td>
<td>Fish Audio</td>
<td>2024</td>
<td>Zero-shot cloning from 10-30s</td>
<td>code Apache / weights CC-BY-NC-SA</td>
<td>~$0.002</td>
</tr>
<tr>
<td><a href="https://github.com/myshell-ai/OpenVoice"><strong>OpenVoice V2</strong></a></td>
<td>MyShell/MIT</td>
<td>Apr 2024</td>
<td>Emotion/accent control</td>
<td>MIT</td>
<td>~$0.003</td>
</tr>
<tr>
<td><a href="https://huggingface.co/coqui/XTTS-v2"><strong>XTTS-v2</strong></a></td>
<td>Coqui (community)</td>
<td>2024</td>
<td>17 languages, voice cloning</td>
<td>CPML (non-commercial)</td>
<td>~$0.005</td>
</tr>
</tbody>
</table>
<p><strong>Hear samples:</strong> <a href="https://fish.audio/">Fish Audio voices ↗</a> · <a href="https://huggingface.co/spaces/myshell-ai/OpenVoice">OpenVoice demo ↗</a></p>
<h3>Making NPCs sound like people</h3>
<p><strong>CSM (Conversational Speech Model)</strong> from Sesame was built specifically for dialogue. It produces natural pauses. Intonation shifts. The rhythm of actual conversation. Most TTS sounds like someone reading a script, and you can hear it instantly. CSM sounds like someone talking. That difference matters more than you'd think.</p>
<p><strong>Qwen3-TTS</strong> (Alibaba, January 2026) is the one to reach for on commercial projects. The whole family is Apache 2.0, it clones a voice from about 3 seconds of reference audio, speaks 10 languages, and supports description-based voice design, so you can spec an NPC voice in plain text instead of hunting for reference recordings. The 0.6B and 1.7B models run on modest hardware.</p>
<p><strong>Chatterbox</strong> (Resemble AI) is the expressive-voice pick, and it's MIT-licensed so you can ship it. It clones a voice from about 5 seconds, runs at sub-200ms latency, covers 23 languages, and it's the first open model with an emotion-exaggeration control, so an NPC can actually sound angry or scared rather than flat. Two more Apache-2.0 options fill specific niches: <strong>Orpheus</strong> (Canopy) takes inline emotion tags like <code>&lt;laugh&gt;</code> and <code>&lt;sigh&gt;</code> that map cleanly to NPC barks and ships a 150M variant for low-end hardware, and <strong>Dia</strong> (Nari Labs) is built for multi-speaker dialogue with non-verbals like coughs and laughter in a single pass. Mistral's <strong>Voxtral TTS</strong> (March 2026) is a newer open-weights entrant aimed at voice agents, per <a href="https://mistral.ai/news">Mistral's news page</a>, but read its licence before shipping it.</p>
<p><strong>Fish Speech</strong> and <strong>OpenVoice</strong> handle voice cloning. Record 10-30 seconds of a voice actor, then generate unlimited dialogue in that voice. Think about what this means: you can hire voice talent for key lines, then extend their performance to cover hundreds of variations and ambient dialogue. One license note on Fish Speech: the code is open but the 1.5 weights are CC-BY-NC-SA, so it's a prototyping tool. For shipped games, use OpenVoice (MIT) or Qwen3-TTS (Apache 2.0) instead.</p>
<p><strong>NVIDIA ACE</strong> (not fully open, but worth knowing) now supports Qwen3-8B for on-device NPC deployment. Local LLM + local TTS + lip sync, all running on consumer GPUs. This is the stack for real-time NPC conversations that don't need cloud calls.</p>
<p>The approach that makes sense for indie creators: hire voice actors for main characters and the lines that matter most. Use Qwen3-TTS or OpenVoice to extend coverage for ambient dialogue, variations, and all the incidental lines that would otherwise be silent or prohibitively expensive.</p>
<h2>World Models and Game Simulation</h2>
<p>This is where things get genuinely weird, and genuinely exciting. These models don't generate static assets. They generate experiences that feel like games.</p>
<a href="https://oasis.decart.ai/" target="_blank" style="display: block; background: linear-gradient(135deg, #2d5a27 0%, #1a3d16 100%); padding: 20px; border-radius: 12px; text-align: center; text-decoration: none; color: white;">
  <strong style="font-size: 18px;">🎮 Play Oasis: AI-Generated Minecraft</strong><br>
  <span style="opacity: 0.8;">Real-time world generation with no game engine, just AI prediction</span>
</a>
<table>
<thead>
<tr>
<th>Model</th>
<th>Org</th>
<th>Released</th>
<th>What It Does</th>
<th>Status</th>
<th>Cost/frame</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="https://github.com/eloialonso/diamond"><strong>DIAMOND</strong></a></td>
<td>Research</td>
<td>2024</td>
<td>Diffusion world model, Atari simulation</td>
<td>Open weights</td>
<td>~$0.001</td>
</tr>
<tr>
<td><a href="https://github.com/etched-ai/open-oasis"><strong>Oasis</strong></a></td>
<td>Decart/Etched</td>
<td>Oct 2024</td>
<td>Real-time Minecraft generation</td>
<td>500M weights open</td>
<td>~$0.002</td>
</tr>
<tr>
<td><a href="https://huggingface.co/microsoft/mineworld"><strong>MineWorld</strong></a></td>
<td>Microsoft</td>
<td>Apr 2025</td>
<td>Real-time Minecraft, open Oasis alternative</td>
<td>MIT</td>
<td>~$0.002</td>
</tr>
<tr>
<td><a href="https://huggingface.co/tencent/Hunyuan-GameCraft-1.0"><strong>Hunyuan-GameCraft</strong></a></td>
<td>Tencent</td>
<td>Aug 2025</td>
<td>Interactive game video, keyboard/mouse control</td>
<td>Tencent Community</td>
<td>~$0.005</td>
</tr>
<tr>
<td><a href="https://github.com/GameGen-X/GameGen-X"><strong>GameGen-X</strong></a></td>
<td>Research</td>
<td>2024</td>
<td>Open-world video generation</td>
<td>Open code + dataset</td>
<td>~$0.005</td>
</tr>
<tr>
<td><a href="https://huggingface.co/nvidia/Cosmos-Predict2.5-2B"><strong>NVIDIA Cosmos</strong></a></td>
<td>NVIDIA</td>
<td>Oct 2025</td>
<td>Physical AI simulation (Predict2.5)</td>
<td>NVIDIA Open Model License</td>
<td>~$0.01</td>
</tr>
<tr>
<td><a href="https://github.com/SkyworkAI/Matrix-Game"><strong>Matrix-Game 3.0</strong></a></td>
<td>Skywork</td>
<td>Mar 2026</td>
<td>Real-time 720p interactive worlds, long-horizon memory</td>
<td>Open weights</td>
<td>~$0.005</td>
</tr>
<tr>
<td><a href="https://deepmind.google/blog/genie-2-a-large-scale-foundation-world-model/"><strong>Genie 2</strong></a></td>
<td>DeepMind</td>
<td>Dec 2024</td>
<td>Interactive 3D from images</td>
<td>Not released</td>
<td>N/A</td>
</tr>
<tr>
<td><a href="https://deepmind.google/blog/genie-3-a-new-frontier-for-world-models/"><strong>Genie 3</strong></a></td>
<td>DeepMind</td>
<td>Aug 2025</td>
<td>Real-time 720p worlds, promptable events</td>
<td>Closed (Project Genie)</td>
<td>N/A</td>
</tr>
</tbody>
</table>
<p>See the research: <a href="https://diamond-wm.github.io/">DIAMOND project page ↗</a> · <a href="https://huggingface.co/blog/nvidia/cosmos-predict-and-transfer2-5">Cosmos blog ↗</a></p>
<p><strong>Try it:</strong> <a href="https://oasis.decart.ai/starting-point">Oasis live demo ↗</a> · <a href="https://deepmind.google/blog/genie-2-a-large-scale-foundation-world-model/">Genie 2 examples ↗</a></p>
<h3>Why you should care about this</h3>
<p><strong>DIAMOND</strong> proved something that changes how you think about game AI. You can train an agent entirely inside a generated world. No real game engine needed for training. The AI plays in a diffusion model's imagination, and then transfers to the real game. The implications here are significant.</p>
<p><strong>Oasis</strong> runs a Minecraft-like world in real-time. Frame by frame. No game engine, no textures, no pre-built assets. Just a transformer predicting what comes next. It's a proof of concept, but imagine where this goes. The 500M parameter version is already open.</p>
<p><strong>GameGen-X</strong> released the largest dataset for open-world game video. If you want to train your own models or fine-tune existing ones to generate game-like content, this is your starting point.</p>
<p><strong>NVIDIA Cosmos</strong> was built for robotics and autonomous vehicles, but the world foundation models work for games too. They understand physics. Object permanence. Spatial relationships. The current open line is Cosmos-Predict2.5, released October 2025 under the NVIDIA Open Model License, which allows commercial use and derivatives.</p>
<p><strong>Hunyuan-GameCraft</strong> (Tencent, August 2025) is the most directly game-shaped open world model. It was trained on over a million recordings across 100+ AAA games and unifies keyboard and mouse input into a shared control space, so it generates interactive game video you actually drive rather than just watch. It carries the same Tencent Community License as Hunyuan3D, with the same EU, UK, and South Korea exclusion, so check terms before shipping there. <strong>MineWorld</strong> (Microsoft, MIT) is the fully-permissive counterpart to Oasis: a real-time Minecraft world model you can download and run without a game engine.</p>
<p><strong>Genie 3</strong> (DeepMind, announced August 2025) is the leap worth noting: the first world model with real-time interaction, generating navigable 720p worlds at 24fps that stay consistent for a few minutes, plus 'promptable world events' that change weather or add objects on command. It opened to the public as Project Genie in January 2026 for Google AI Ultra subscribers in the US. Still closed weights, but it shows where playable, generated worlds are heading.</p>
<p><strong>Matrix-Game 3.0</strong> (Skywork, March 2026) is the open answer to Genie. It's a memory-augmented interactive world model that streams 720p at 40fps in real time and keeps scenes consistent across minute-long sequences. A 5B distilled version handles real-time inference, a larger 2x14B MoE version pushes quality, and the weights are on Hugging Face under Apache 2.0. If you want to experiment with playable generated worlds today instead of waiting on DeepMind, this is the one you can actually download.</p>
<p>For practical game development today, these are still research tools. But if you're working on AI-driven content, procedural generation, or just thinking about where this is all going, this is the frontier.</p>
<h2>Large Language Models</h2>
<p>LLMs power dialogue, quest generation, and game logic. And the open options now genuinely compete with GPT-4. This wasn't true two years ago.</p>
<table>
<thead>
<tr>
<th>Model</th>
<th>Org</th>
<th>Released</th>
<th>Size</th>
<th>Best For</th>
<th>License</th>
<th>Cost/1K tok</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="https://github.com/deepseek-ai/DeepSeek-V3"><strong>DeepSeek-V3</strong></a></td>
<td>DeepSeek</td>
<td>Dec 2024</td>
<td>671B MoE (37B active)</td>
<td>Reasoning, general</td>
<td>Permissive</td>
<td>~$0.02</td>
</tr>
<tr>
<td><a href="https://huggingface.co/deepseek-ai/DeepSeek-R1"><strong>DeepSeek-R1</strong></a></td>
<td>DeepSeek</td>
<td>Jan 2025</td>
<td>Based on V3</td>
<td>Chain-of-thought</td>
<td>Permissive</td>
<td>~$0.03</td>
</tr>
<tr>
<td><a href="https://huggingface.co/deepseek-ai/DeepSeek-V3.2"><strong>DeepSeek-V3.2</strong></a></td>
<td>DeepSeek</td>
<td>Dec 2025</td>
<td>Sparse attention (DSA)</td>
<td>Reasoning + tool use</td>
<td>MIT</td>
<td>~$0.02</td>
</tr>
<tr>
<td><a href="https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro"><strong>DeepSeek-V4</strong></a></td>
<td>DeepSeek</td>
<td>Apr 2026</td>
<td>1.6T MoE (49B active)</td>
<td>Frontier reasoning, 1M context</td>
<td>MIT</td>
<td>~$0.02</td>
</tr>
<tr>
<td><a href="https://huggingface.co/zai-org/GLM-5"><strong>GLM-5</strong></a></td>
<td>Zhipu / <a href="http://Z.ai">Z.ai</a></td>
<td>Feb 2026</td>
<td>744B MoE (40B active)</td>
<td>Coding, agentic, tool use</td>
<td>MIT</td>
<td>~$0.02</td>
</tr>
<tr>
<td><a href="https://huggingface.co/zai-org/GLM-5.2"><strong>GLM-5.2</strong></a></td>
<td>Zhipu / <a href="http://Z.ai">Z.ai</a></td>
<td>Jun 2026</td>
<td>753B MoE</td>
<td>Coding, agents, 1M context</td>
<td>MIT</td>
<td>~$0.02</td>
</tr>
<tr>
<td><a href="https://huggingface.co/openai/gpt-oss-120b"><strong>GPT-OSS</strong></a></td>
<td>OpenAI</td>
<td>Aug 2025</td>
<td>120B / 20B MoE</td>
<td>Reasoning, tool use, on-device</td>
<td>Apache 2.0</td>
<td>~$0.01</td>
</tr>
<tr>
<td><a href="https://huggingface.co/moonshotai"><strong>Kimi K2</strong></a></td>
<td>Moonshot</td>
<td>2025</td>
<td>1T MoE (32B active)</td>
<td>Agentic, coding</td>
<td>Modified MIT</td>
<td>~$0.02</td>
</tr>
<tr>
<td><a href="https://www.kimi.com/blog/kimi-k3"><strong>Kimi K3</strong></a></td>
<td>Moonshot</td>
<td>Jul 2026</td>
<td>2.8T MoE (16 of 896 experts active)</td>
<td>Frontier agentic, coding, 1M context, vision</td>
<td>Kimi K3 License</td>
<td>~$0.03</td>
</tr>
<tr>
<td><a href="https://huggingface.co/tencent/Hy3"><strong>Hy3</strong></a></td>
<td>Tencent</td>
<td>Jul 2026</td>
<td>295B MoE (21B active)</td>
<td>Reasoning, agentic coding, 256K context</td>
<td>Apache 2.0</td>
<td>~$0.02</td>
</tr>
<tr>
<td><a href="https://huggingface.co/blog/gemma3"><strong>Gemma 3</strong></a></td>
<td>Google</td>
<td>2025</td>
<td>1B-27B</td>
<td>On-device, 140 languages, vision</td>
<td>Gemma</td>
<td>~$0.01</td>
</tr>
<tr>
<td><a href="https://ai.google.dev/gemma/docs/core/model_card_4"><strong>Gemma 4</strong></a></td>
<td>Google</td>
<td>Apr 2026</td>
<td>E2B to 31B (26B-A4B MoE)</td>
<td>On-device, 140+ languages, vision + audio, 256K</td>
<td>Apache 2.0</td>
<td>~$0.01</td>
</tr>
<tr>
<td><a href="https://github.com/QwenLM/Qwen3"><strong>Qwen3</strong></a></td>
<td>Alibaba</td>
<td>2025</td>
<td>235B MoE (22B active)</td>
<td>Multilingual, code</td>
<td>Apache 2.0</td>
<td>~$0.01</td>
</tr>
<tr>
<td><a href="https://github.com/QwenLM/Qwen3.8"><strong>Qwen3.5 / 3.6 / 3.8</strong></a></td>
<td>Alibaba</td>
<td>Feb-Aug 2026</td>
<td>0.8B up to 2.4T-A95B</td>
<td>Multimodal, agentic, Qwen-Max-class open flagship</td>
<td>Apache 2.0</td>
<td>~$0.02</td>
</tr>
<tr>
<td><a href="https://mistral.ai/news/mistral-small-4"><strong>Mistral Small 4</strong></a></td>
<td>Mistral</td>
<td>Mar 2026</td>
<td>119B MoE (6B active)</td>
<td>Reasoning + vision + agentic coding, 256K</td>
<td>Apache 2.0</td>
<td>~$0.01</td>
</tr>
<tr>
<td><a href="https://huggingface.co/Qwen/Qwen3-Coder-480B-A35B-Instruct"><strong>Qwen3-Coder</strong></a></td>
<td>Alibaba</td>
<td>2025</td>
<td>480B MoE (35B active)</td>
<td>Agentic coding, 256K context</td>
<td>Apache 2.0</td>
<td>~$0.02</td>
</tr>
<tr>
<td><a href="https://huggingface.co/collections/meta-llama/llama-4"><strong>Llama 4</strong></a></td>
<td>Meta</td>
<td>2025</td>
<td>Various</td>
<td>Agents, up to 10M context</td>
<td>Llama Community</td>
<td>~$0.01</td>
</tr>
<tr>
<td><a href="https://huggingface.co/meta-models/Muse-Glimmer-30B"><strong>Muse Glimmer 30B</strong></a></td>
<td>Meta</td>
<td>Aug 2026</td>
<td>~30B dense</td>
<td>On-device agents, vision, 128K+ context</td>
<td>Apache 2.0</td>
<td>~$0.01</td>
</tr>
<tr>
<td><a href="https://github.com/QwenLM/Qwen3-VL"><strong>Qwen3-VL</strong></a></td>
<td>Alibaba</td>
<td>2025</td>
<td>2B-235B</td>
<td>Vision + language</td>
<td>Apache 2.0</td>
<td>~$0.02</td>
</tr>
<tr>
<td><a href="https://internvl.github.io/blog/2025-04-11-InternVL-3.0/"><strong>InternVL3</strong></a></td>
<td>Shanghai AI Lab</td>
<td>2025</td>
<td>1B-78B</td>
<td>Vision, OCR, UI grounding</td>
<td>MIT</td>
<td>~$0.02</td>
</tr>
</tbody>
</table>
<p>Get started: <a href="https://huggingface.co/Qwen/Qwen3-8B">Qwen3-8B on HuggingFace ↗</a> · <a href="https://huggingface.co/deepseek-ai/DeepSeek-V3">DeepSeek-V3 on HuggingFace ↗</a> · <a href="https://huggingface.co/zai-org/GLM-5">GLM-5 on HuggingFace ↗</a></p>
<h3>For building games</h3>
<p><strong>Qwen3</strong> is the practical choice for most game uses. Apache 2.0 license, meaning you own your integration. Strong multilingual support, which matters if you're thinking about localization. Good at following structured instructions. The 7B and 14B variants run locally on consumer GPUs.</p>
<p><strong>Qwen3.5, 3.6, and 3.8</strong> kept the Apache 2.0 line going through 2026. Qwen3.5 (February 16, 2026) led with a 397B-A17B MoE and then filled in dense 27B, 9B, and 4B variants. Qwen3.6 (April) tuned the same family for stability, and its 35B-A3B is the local sweet spot: 35B of knowledge with only 3B active per token, so it flies on a single 24GB card. Qwen3.8 (August 12-14, 2026) is the big one, described in the <a href="https://github.com/QwenLM/Qwen3.8">Qwen3.8 repo</a> as the first Qwen-Max-class model brought to open release, as a 2.4T-A95B flagship alongside a 27B dense model, both Apache 2.0 with a 262K context.</p>
<p><strong>DeepSeek-V3</strong> matches or beats GPT-4 on most benchmarks. The architecture is clever: only 37B parameters activate per token despite the 671B total. You need serious hardware (multi-GPU), but the quality is frontier-level without the API dependency.</p>
<p><strong>DeepSeek-V3.2</strong> (December 2025) folds reasoning and tool-use into one model and introduces DeepSeek Sparse Attention (DSA) for cheaper long-context inference, with a high-compute Speciale variant aimed at the top reasoning benchmarks. For game logic and dialogue it's a stronger, more agent-capable drop-in than V3.</p>
<p><strong>DeepSeek-V4</strong> (April 2026) moved the open frontier again. V4-Pro is a 1.6T-parameter MoE with only 49B active per token, a 1 million token context window, and selectable reasoning modes, all under MIT. The V4-Flash variant (284B total, 13B active) keeps the 1M context in a package that doesn't demand a full GPU cluster. If you're picking an open model for complex quest logic or long game-state context today, this is where the ceiling is.</p>
<p><strong>GLM-5</strong> (Zhipu AI, February 2026) is the open model to beat for coding and agentic work, and the GLM-5.2 refresh pushed its tool-use and long-horizon planning scores up near the closed frontier. It's a 744B-parameter MoE with 40B active per token, a 200K-token context, and an MIT license. <a href="https://huggingface.co/zai-org/GLM-5.2">GLM-5.2</a> itself shipped June 17, 2026 as a 753B MoE with a 1M-token context, still MIT with no regional limits, and <a href="https://huggingface.co/zai-org/GLM-5.3">GLM-5.3</a>, a post-training refresh on the same base, followed with its weights on Hugging Face under <a href="http://Z.ai">Z.ai</a>'s own GLM-5.3 licence rather than MIT, so check that text if you self-host the newest one. <a href="http://Z.ai">Z.ai</a> is the first publicly traded foundation-model company and prices its hosted API aggressively (around $1.40 per million input tokens), but the weights are on Hugging Face if you'd rather self-host. If your game leans on an LLM for quest scripting, tool-calling agents, or code-driven systems, GLM-5 is a strong OpenAI alternative that you fully control.</p>
<p><strong>GPT-OSS</strong> (OpenAI, August 2025) is the first open-weight release from OpenAI, and it lands squarely on this guide's theme. The gpt-oss-120b model reasons and calls tools at roughly o4-mini level on a single 80GB GPU, and gpt-oss-20b runs on a 16GB consumer card, both under Apache 2.0. If you want a Western-lab model you can self-host for NPC logic or tool-using agents, this is the one.</p>
<p><strong>Kimi K2</strong> (Moonshot) is the other open agentic heavyweight alongside GLM-5 and DeepSeek. It's a 1-trillion-parameter MoE with 32B active, tuned hard for coding and tool use, and its Modified MIT license only adds restrictions above 100M monthly users, so for indies it's effectively MIT. Reach for it when an agent has to plan across many steps.</p>
<p><strong>Kimi K3</strong> (Moonshot, July 2026) is the biggest open-weight model ever announced, and it lands closer to the closed frontier than any open model before it. It's a 2.8-trillion-parameter MoE with only about 50B active per token (16 of 896 experts), a 1M-token context, and native vision, built on two new attention designs called Kimi Delta Attention and Attention Residuals. Moonshot's July benchmarks had it beating the Claude Opus and GPT-5.5 releases of the time on coding and agentic tasks and trailing only the very top proprietary models, targets that have since moved again with Claude Fable 5.1 and GPT-6 Astra in September. The weights landed on <a href="https://huggingface.co/moonshotai/Kimi-K3">Hugging Face</a> on July 27, 2026 in MXFP4, under the Kimi K3 License rather than MIT. It's permissive for most uses, but a model-as-a-service business above $20 million in revenue over any 12 months needs a separate agreement with Moonshot, and products above 100 million monthly users or $20 million in monthly revenue have to show &quot;Kimi K3&quot; in the interface. Self-hosting a 2.8T model still means a multi-node GPU cluster, so most teams will reach it through the API at $3 per million input tokens and $15 per million output. For agents you can actually run yourself, K2 stays the practical Moonshot pick, but K3 resets what &quot;open&quot; can mean at the top end.</p>
<p><strong>Gemma 3</strong> (Google) is the best fit when you need to run on the player's hardware or localize widely. It comes in 1B, 4B, 12B, and 27B sizes, so it scales from an 8GB card up, handles 140 languages, does function calling, and the 4B-and-up variants see images too, so it doubles as a small vision model. The Gemma license permits commercial use.</p>
<p><strong>Gemma 4</strong> (Google, April 2, 2026) replaces it for new projects and fixes the licence question outright: the whole family is Apache 2.0, per the <a href="https://ai.google.dev/gemma/docs/core/model_card_4">model card</a>. It ships as E2B and E4B for phones and laptops, a 12B, a 26B-A4B MoE with under 4B active, and a dense 31B, with 128K context on the small models and 256K on the rest, native image input across all sizes and audio on the small ones, and 140+ languages. For an on-device NPC brain that also has to look at a screenshot, the 26B-A4B is the pick.</p>
<p><strong>Meta's Llama line is effectively paused.</strong> Llama 4 (April 2025) is still the last Llama, and in April 2026 Meta Superintelligence Labs launched its successor, Muse Spark, as a closed model. Meta came partway back in August 2026 with <a href="https://huggingface.co/meta-models/Muse-Glimmer-30B">Muse Glimmer 30B</a>, a roughly 30B dense multimodal model under Apache 2.0 with a 128K+ context and 4-bit builds that fit a 24GB card. It's a strong local agent model, but if you were waiting for a Llama 5, stop waiting and pick from Qwen, Gemma 4, or Glimmer instead.</p>
<p><strong>Hy3</strong> (Tencent, July 2026) is the other big Apache 2.0 arrival. It's a 295B MoE with 21B active and a 256K context, per its <a href="https://huggingface.co/tencent/Hy3">model card</a>, and the July release dropped the regional exclusions the April preview carried, so unlike Tencent's Hunyuan3D and GameCraft licences it's usable in the EU, UK, and South Korea.</p>
<p><strong>Qwen3-Coder</strong> (Alibaba) is the dedicated open coding model, replacing the older DeepSeek-Coder line for most uses. It's a 480B MoE with 35B active, a 256K native context (extendable to 1M), Apache 2.0, and it's in the Claude-Sonnet class on agentic coding benchmarks. If your game generates or runs code, this is the open ceiling. Europe's <strong>Mistral</strong> family is a solid self-hostable alternative: Devstral for coding, and <a href="https://mistral.ai/news/mistral-small-4">Mistral Small 4</a> (March 16, 2026), a 119B MoE with 6B active that folds reasoning, vision, and agentic coding into one Apache 2.0 model with a 256K context.</p>
<p><strong>Qwen3-VL</strong> adds vision understanding, with dense and MoE sizes from 2B up to 235B under Apache 2.0. Useful for games that need to analyze screenshots, understand player-drawn content, or process camera input. The 8B variant runs on a single GPU. <strong>InternVL3</strong> (Shanghai AI Lab, MIT) is the other strong open vision-language option, notably good at OCR and UI grounding, which matters if your tooling needs to read game interfaces; Mistral's <strong>Pixtral 12B</strong> (Apache 2.0) is a lighter commercial-safe pick.</p>
<p>For on-device NPCs, characters that respond in real-time without cloud calls, <strong>Qwen3-8B</strong> through NVIDIA ACE is the most practical path right now. It runs alongside your game on the player's hardware.</p>
<h2>Utility Models</h2>
<p>These don't generate content directly, but they make your pipelines work.</p>
<p><img src="/img/ai-samples/sam2-sample.jpg" alt="SAM 2 segmentation">
<em>SAM 2 segments any object in images and video. Click once, get a perfect mask</em></p>
<table>
<thead>
<tr>
<th>Model</th>
<th>Org</th>
<th>Released</th>
<th>What It Does</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="https://github.com/facebookresearch/sam2"><strong>SAM 2</strong></a></td>
<td>Meta</td>
<td>Aug 2024</td>
<td>Segment anything in images and video</td>
</tr>
<tr>
<td><a href="https://github.com/apple/ml-depth-pro"><strong>Depth Pro</strong></a></td>
<td>Apple</td>
<td>Oct 2024</td>
<td>Metric depth from single image</td>
</tr>
<tr>
<td><a href="https://github.com/nerfstudio-project/gsplat"><strong>gsplat</strong></a></td>
<td>Nerfstudio</td>
<td>2024+</td>
<td>Gaussian splatting, CUDA accelerated</td>
</tr>
</tbody>
</table>
<p><strong>SAM 2</strong> segments objects in video in real-time. Click on something, get a perfect mask. Useful for rotoscoping, compositing, or extracting objects from footage to use as game assets. <a href="https://github.com/huggingface/sam2-studio">Try SAM 2 ↗</a></p>
<p><strong>Depth Pro</strong> from Apple produces metric depth maps from single images in under a second. That opens up a lot: converting 2D art to 2.5D with parallax effects, generating depth data for 3D reconstruction, and creating normal maps from flat images. <a href="https://huggingface.co/apple/DepthPro-hf">Depth Pro on HuggingFace ↗</a></p>
<p><strong>gsplat</strong> is the fast implementation of Gaussian splatting. If you're capturing real environments for games, whether photogrammetry or environment scans, this is the library that makes it practical.</p>
<h2>What I'd Actually Use</h2>
<p>If you're starting a game project today, here's the stack that makes sense:</p>
<p><strong>Textures and sprites</strong>: FLUX.1 [schnell], Apache 2.0, fast iteration, quality that ships</p>
<p><strong>Concept art</strong>: SD 3.5 Large with LoRAs for style control</p>
<p><strong>3D assets</strong>: Hunyuan3D 2.1 or TRELLIS.2 for textured meshes, SAM 3D when you're starting from a photo, then Blender for cleanup</p>
<p><strong>Auto-rigging</strong>: UniRig or NVIDIA SOMA-X to skeleton and skin generated meshes (both open) instead of relying on Mixamo</p>
<p><strong>Sound effects</strong>: Stable Audio's open Small-SFX model, runs locally, commercially licensed</p>
<p><strong>Music</strong>: ACE-Step for prototypes, then bring in a composer for final production</p>
<p><strong>Voice</strong>: Qwen3-TTS for cloning and ambient dialogue (Apache 2.0), Chatterbox (MIT) when a line needs real emotion, voice actors for the lines that matter</p>
<p><strong>NPC dialogue</strong>: Qwen3.6-35B-A3B, Gemma 4 26B-A4B, or Muse Glimmer 30B locally, or a self-hostable cloud LLM (GLM-5.2, DeepSeek-V4, or Kimi K3) for complex reasoning and tool use</p>
<p><strong>Video (cutscenes)</strong>: Mochi 1 or the Wan 2.2 5B locally, LTX-2.5 or HunyuanVideo-1.5 on cloud when you need final quality</p>
<p>Here's the thing about all of this: the common mistake is trying to use AI for everything. These are tools, not replacements. They compress the tedious parts like iteration, variations, and placeholder assets, so you can spend your time on the creative decisions that actually matter. The parts that make your game yours.</p>
<h2>Hardware Reality Check</h2>
<p>Let's be honest about what you actually need to run this stuff:</p>
<p><strong>8GB VRAM</strong> (RTX 3060, 4060): SD 1.5/SDXL, Wan 2.1 small, AudioGen, Fish Speech, small LLMs (7B quantized). This is gaming laptop territory, and it's enough to get started.</p>
<p><strong>12GB VRAM</strong> (RTX 3080, 4070): SD 3.5, FLUX schnell, Mochi 1, MusicGen, TripoSR, Qwen 14B quantized. This is where things get comfortable. Most of the useful models run here.</p>
<p><strong>24GB VRAM</strong> (RTX 3090, 4090): Most models at full precision, InstantMesh, larger LLMs, and the 2026 local-agent tier: Qwen3.6-35B-A3B, Gemma 4 31B at 4-bit, Muse Glimmer 30B at 4-bit. If you're serious about this workflow, this is the sweet spot.</p>
<p><strong>48-80GB VRAM</strong> (A100, H100): HunyuanVideo, LTX-2, DeepSeek-V3, production-scale generation. Enterprise hardware. You're not buying this, you're renting it.</p>
<p>Cloud instances on RunPod, Lambda Labs, or Modal cost $2-4/hour for A100s. For occasional use, that's cheaper than hardware. Spin up when you need final quality, shut down when you're done.</p>
<p><strong>About the cost estimates in this guide</strong>: Per-generation costs assume self-hosted inference on cloud GPUs at ~$2-3/hour (A100) or ~$0.40/hour (RTX 4090). Actual costs vary based on hardware, optimization, and batch sizes. These are ballpark figures for planning, so your mileage will vary.</p>
<h2>What's New in 2026</h2>
<p><strong>Recently shipped</strong>: LTX-2 and LTX-2.3 brought open synchronized audio-and-video with native 4K. Microsoft's TRELLIS.2 (December 2025) became the open img-to-3D leader, and Meta's SAM 3D (November 2025) made single-photo 3D reconstruction practical. FLUX.2 superseded FLUX.1 for image generation, and NVIDIA's SOMA-X brought open auto-rigging and retargeting. The first half of 2026 kept the pace up: Qwen3-TTS (January) gave voice cloning a proper Apache 2.0 home, Zhipu's GLM-5 (February) shipped a 744B open coding-and-agentic model under MIT, Skywork's Matrix-Game 3.0 (March) put a real-time interactive world model in open weights, DeepSeek-V4 (April) pushed open LLMs to a 1M-token context under MIT, Stable Audio 3.0 (May) shipped three open audio models trained on licensed data, and Ideogram released its first open-weight image model (June). Then in July, Moonshot announced Kimi K3, a 2.8T-parameter open-weight model, and its weights landed on July 27 under the Kimi K3 License, the same month Tencent moved the 295B Hy3 to Apache 2.0 and a few weeks after <a href="http://Z.ai">Z.ai</a> shipped GLM-5.2 under MIT (June 17). August was busy on the open side too: Alibaba released Qwen3.8 (a 2.4T-A95B flagship plus a 27B dense model, Apache 2.0), Meta put Muse Glimmer 30B out under Apache 2.0, MiniMax opened the 33B H3 video weights, and Lightricks shipped LTX-2.5. Earlier in the year Google's Gemma 4 (April, Apache 2.0) and Mistral Small 4 (March, Apache 2.0) reset the on-device tier.</p>
<p><strong>The trend to watch</strong>: the top labs are increasingly keeping their newest models API-only even when earlier versions were open. Wan went closed at 2.5 and has stayed closed through 3.0 (August 2026), Qwen-Image went closed at 2.0, and Hunyuan3D at 2.5. Meta's Llama successor Muse Spark launched closed in April 2026 before the smaller Muse Glimmer came back open in August, Black Forest Labs is shipping FLUX 3 through its API first with an open FLUX 3 Dev promised for later in 2026, and Skywork announced SkyReels V4 in February without publishing weights. The open ecosystem is still vibrant and fast-moving, but &quot;the latest version is open&quot; is no longer a safe assumption, so check weights availability before you build a pipeline around a model.</p>
<p>The trajectory is clear: every capability that exists in closed models shows up in open models 6-12 months later. The question isn't whether open models will be good enough. They already are for most uses. The question is how fast they become the default.</p>
<p>And here's what that means for creators: the tools that used to require enterprise budgets or monthly subscriptions are becoming something you can just... run. On your own hardware. With no one else's permission.</p>
<p>That's the shift. That's what we're building toward.</p>
<hr>
<h2>Common Questions</h2>
<h3>What is the best open-source AI model for generating game assets?</h3>
<p>It depends on the asset. For 3D models, Hunyuan3D is the strongest open option in 2026. For 2D art and textures, FLUX leads on quality. For sound effects and music, the open audio models have caught up fast. There's no single &quot;best&quot; model because games need many asset types, so most creators chain a few together rather than relying on one.</p>
<h3>Are open-source AI models good enough to replace closed APIs?</h3>
<p>For most game-asset work in 2026, yes. Open models now match closed APIs on image, 3D, and audio generation, and you can run them on your own hardware with no per-call fees or surprise pricing changes. Closed models still lead on a few frontier tasks like long-form video, but the gap usually closes within 6 to 12 months.</p>
<h3>Can I run these generative AI models on my own GPU?</h3>
<p>Many of them, yes. Image and audio models run comfortably on a single consumer GPU like an RTX 4090. Larger video and 3D models want more VRAM and often an A100-class cloud GPU. The hardware section above lists what each model needs so you can plan before you commit.</p>
<h3>What is the best open source frontier model in 2026?</h3>
<p>As of September 2026 the open frontier is a four-way race, and the answer depends on what you can run. Kimi K3 (2.8T MoE) is the largest and scores closest to the closed leaders, but its Kimi K3 License adds conditions for large model-as-a-service businesses. DeepSeek-V4-Pro (1.6T, 49B active) and Qwen3.8-2.4T-A95B are the cleanest licences at that scale, MIT and Apache 2.0 respectively. GLM-5.2 (753B, MIT) is the coding and agent specialist. None of them fit a single GPU, so for anything you host yourself the real &quot;best&quot; is one tier down: Qwen3.6-35B-A3B, Gemma 4 31B, or Muse Glimmer 30B.</p>
<h3>What are the best frontier image generation models, open and closed?</h3>
<p>Open: FLUX.2 [klein] 4B (Apache 2.0, sub-second) for commercial-safe game art, Qwen-Image-2512 (Apache 2.0) when you need readable text, and FLUX.2 [dev] or Chroma1-HD for maximum quality if the licence fits. Closed: FLUX.2 [pro] and the API-only Qwen-Image-2.0, plus 2026 arrivals like Kling IMAGE 3.0 (up to 10 reference images per <a href="https://kling.ai/quickstart/klingai-image-3-model-user-guide">Kling's guide</a>) and xAI's Grok Imagine Image 2.0. FLUX 3's image model sits behind BFL's API for now, with an open Dev version promised later in 2026. For game work the open tier is already good enough, so the closed models mostly buy you convenience.</p>
<h3>Which open-weights video models allow full commercial deployment, and under what licence?</h3>
<p>If you need an open video model you can deploy commercially at enterprise scale with no revenue cap, the safe picks are Wan 2.2 (Apache 2.0, including the 5B and 14B MoE variants), Mochi 1 (Apache 2.0), Step-Video-T2V (MIT), and CogVideoX 2B (Apache 2.0). LTX-2 and LTX-2.5 are free to use commercially under $10M in annual revenue and require a paid agreement above that, which is the &quot;buy access&quot; route Lightricks actually offers. MiniMax H3 is open under the MiniMax H3 Community License but asks users in the USA, EU, UK, and South Korea to apply first, and HunyuanVideo carries Tencent's community licence with regional carve-outs, so read both before committing. Wan 2.5 through 3.0, Veo, Kling, and Seedance have no public weights at all. Our <a href="/guides/long-reference-video-models">reference video models guide</a> compares the hosted options.</p>
<h3>What generative AI should I use for game assets and environments in 2026?</h3>
<p>Chain a few specialists rather than hunting for one model. For props and characters, run a FLUX.2 klein or Qwen-Image concept through Hunyuan3D 2.1 or TRELLIS.2 and rig with UniRig. For environments, generate a skybox or HDRI (our <a href="/tools/skybox">skybox generator</a> does this in the browser), build terrain procedurally or with a diffusion pass as in our <a href="/guides/landscape-generation-browser">terrain generation guide</a>, and texture with an image model plus a PBR extractor as covered in our <a href="/guides/ai-texture-generators">AI texture generators guide</a>. Audio comes from Stable Audio 3.0 Small-SFX and ACE-Step, voices from Qwen3-TTS or Chatterbox. Every model in that chain is open and commercially usable as of September 2026.</p>
<h3>What is the best LLM to run locally in 2026?</h3>
<p>Pick by VRAM first. On 8GB, Qwen3.5-4B or Gemma 4 E4B. On 16GB, gpt-oss-20b (Apache 2.0, built for 16GB) or Gemma 4 12B. On 24GB, Qwen3.6-35B-A3B is the all-rounder most people should run, with Muse Glimmer 30B at 4-bit for agentic work with vision and Gemma 4 31B quantized when you want the strongest dense model. Above that, DeepSeek-V4-Flash (284B, 13B active) is the smallest way to get 1M-token context on a workstation. All of these are Apache 2.0 or MIT, and Ollama or LM Studio runs each of them with one command.</p>
<h3>Is it legal to use AI-generated assets in a commercial game?</h3>
<p>Generally yes for open-source models you run yourself, but it depends on the model's license and your training-data assumptions. Always check the specific model license, and disclose AI-generated content where your platform requires it. See our <a href="/ai-content">AI-generated content policy</a> for how we handle this.</p>
<hr>
<h2>More Reading</h2>
<ul>
<li><a href="/blog/2026-01-18-ai-controversy-and-post-ai-economy">AI controversy, trust, and the post-AI economy</a>: our position on AI in games</li>
<li><a href="/ai-content">AI-generated content policy</a>: how we handle AI disclosure</li>
<li><a href="/guides/long-reference-video-models">Best AI Video Models with Reference Image Support</a>: the hosted video models compared</li>
<li><a href="/guides/ai-3d-model-generators">Best AI 3D Model Generators</a>: hosted Meshy, Tripo, and Rodin against the open models</li>
<li><a href="/guides/web-games-stack-2026">Web Games Tech Stack in 2026</a>: WebGL, WebGPU, and Wasm for games</li>
<li><a href="/guides/browser-3d-open-world-tech">Browser 3D Open World Tech</a>: using AI-generated 3D assets in browser worlds</li>
<li><a href="/guides/landscape-generation-browser">Landscape Generation for Browser Open Worlds</a>: diffusion-based terrain synthesis</li>
<li><a href="/guides/game-assets-guide">Where to Find Free Game Assets</a>: traditional asset sources alongside AI generation</li>
<li><a href="/tutorials/agentic-code-tools">Agentic AI code tools</a>: AI for writing game code, not just generating assets</li>
</ul>
<p><BuildCta
  title="See these models make a game, not just assets"
  desc="Generation models are more fun when the output is playable."
  prompt="Make a game where I explore a strange AI generated alien landscape" /></p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Game Asset Licenses Explained (CC0, CC-BY, Royalty-Free)]]></title>
            <link>https://app.cinevva.com/guides/game-asset-licenses</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/game-asset-licenses</guid>
            <pubDate>Sun, 18 Jan 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[How game asset licenses work in plain English - CC0, CC-BY, CC-BY-SA, royalty-free, editorial, MIT, and GPL - and which are safe to use in a commercial game.]]></description>
            <content:encoded><![CDATA[<h1>Game Asset Licenses Explained (CC0, CC-BY, Royalty-Free)</h1>
<p><em>Last updated: September 2026.</em></p>
<p>A game asset license is the creator's rules for how you're allowed to use their 3D model, texture, sound, or music. The safest licenses for a commercial game are CC0 (public domain, no attribution required) and royalty-free (pay once, then use it forever), which both allow commercial use with no ongoing fees. CC-BY also works in a commercial game as long as you give the creator attribution, while non-commercial licenses (CC-BY-NC) and editorial-only assets can't ship in a game you sell. This guide breaks down each license in plain English so you can use free and paid assets in your games without legal trouble.</p>
<h2>Why Licenses Matter</h2>
<p>Every creative work - 3D models, textures, sounds, music - is protected by copyright. The creator owns it by default. A <strong>license</strong> is the creator's permission for you to use their work under specific terms.</p>
<p><strong>Using assets without understanding their license can lead to:</strong></p>
<ul>
<li>DMCA takedowns of your game</li>
<li>Legal action from copyright holders</li>
<li>Forced removal from app stores</li>
<li>Financial damages</li>
</ul>
<p><strong>The good news:</strong> Most game assets have clear, permissive licenses. You just need to understand what they allow.</p>
<hr>
<h2>License Quick Reference</h2>
<table>
<thead>
<tr>
<th>License</th>
<th>Commercial Use</th>
<th>Attribution</th>
<th>Modify</th>
<th>Share Alike</th>
<th>Providers</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>CC0</strong></td>
<td>✅ Yes</td>
<td>❌ No</td>
<td>✅ Yes</td>
<td>❌ No</td>
<td>Poly Haven, Kenney, Quaternius, AmbientCG, some Freesound</td>
</tr>
<tr>
<td><strong>CC-BY</strong></td>
<td>✅ Yes</td>
<td>✅ Required</td>
<td>✅ Yes</td>
<td>❌ No</td>
<td>Sketchfab, OpenGameArt, some Freesound</td>
</tr>
<tr>
<td><strong>CC-BY-SA</strong></td>
<td>✅ Yes</td>
<td>✅ Required</td>
<td>✅ Yes</td>
<td>✅ Required</td>
<td>OpenGameArt (including the LPC collection)</td>
</tr>
<tr>
<td><strong>CC-BY-NC</strong></td>
<td>❌ No</td>
<td>✅ Required</td>
<td>✅ Yes</td>
<td>❌ No</td>
<td>Some Sketchfab, <a href="http://itch.io">itch.io</a>, some Freesound</td>
</tr>
<tr>
<td><strong>CC-BY-NC-SA</strong></td>
<td>❌ No</td>
<td>✅ Required</td>
<td>✅ Yes</td>
<td>✅ Required</td>
<td>Various</td>
</tr>
<tr>
<td><strong>Royalty-Free</strong></td>
<td>✅ Yes</td>
<td>❌ Usually no</td>
<td>✅ Yes</td>
<td>❌ No</td>
<td>Synty, CGTrader, TurboSquid</td>
</tr>
<tr>
<td><strong>Editorial Only</strong></td>
<td>❌ No*</td>
<td>Varies</td>
<td>⚠️ Limited</td>
<td>❌ No</td>
<td>TurboSquid (some)</td>
</tr>
<tr>
<td><strong>MIT</strong></td>
<td>✅ Yes</td>
<td>✅ Required</td>
<td>✅ Yes</td>
<td>❌ No</td>
<td>Three.js, pmndrs</td>
</tr>
<tr>
<td><strong>GPL</strong></td>
<td>✅ Yes</td>
<td>✅ Required</td>
<td>✅ Yes</td>
<td>✅ Required</td>
<td>Some OpenGameArt</td>
</tr>
</tbody>
</table>
<p><strong>Note on Freesound:</strong> Freesound is a per-sound license mix. Individual sounds are CC0, CC-BY, or CC-BY-NC (plus a small legacy set under the retired Sampling+ license), so check each file before you download. The CC-BY-NC sounds can't ship in a commercial game. As of September 2026 the split is friendlier than it used to be: Freesound's own <a href="https://freesound.org/search/?q=">license filter</a> counts about 381,000 CC0 sounds out of 734,000, so roughly 52% of the catalog needs no attribution at all.</p>
<hr>
<h2>Creative Commons Licenses</h2>
<p>Creative Commons (CC) licenses are the most common for free game assets. They're standardized, internationally recognized, and easy to understand.</p>
<h3>CC0 - Public Domain Dedication</h3>
<p><strong>The most permissive license. Treat it as if no copyright exists.</strong></p>
<table>
<thead>
<tr>
<th>What You Can Do</th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td>Use commercially</td>
<td>✅</td>
</tr>
<tr>
<td>Use in closed-source games</td>
<td>✅</td>
</tr>
<tr>
<td>Modify, remix, transform</td>
<td>✅</td>
</tr>
<tr>
<td>Distribute and share</td>
<td>✅</td>
</tr>
<tr>
<td>Use without credit</td>
<td>✅</td>
</tr>
<tr>
<td>Claim as your own work</td>
<td>⚠️ Legally yes, ethically questionable</td>
</tr>
</tbody>
</table>
<p><strong>In plain English:</strong> Do whatever you want. No restrictions. No attribution required.</p>
<p><strong>Providers using CC0:</strong></p>
<ul>
<li>Poly Haven (all assets)</li>
<li>Kenney (all assets)</li>
<li>Quaternius (all assets)</li>
<li>AmbientCG (all assets)</li>
<li>Some OpenGameArt, Freesound, Sketchfab</li>
</ul>
<p><strong>Example use:</strong> Download a spaceship from Kenney, modify it, sell your game for $20, never mention Kenney anywhere. Perfectly legal.</p>
<p><strong>Why creators choose CC0:</strong> To maximize adoption. Many creators want their work used widely and don't care about attribution.</p>
<hr>
<h3>CC-BY - Attribution</h3>
<p><strong>Use freely, but you must give credit.</strong></p>
<table>
<thead>
<tr>
<th>What You Can Do</th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td>Use commercially</td>
<td>✅</td>
</tr>
<tr>
<td>Use in closed-source games</td>
<td>✅</td>
</tr>
<tr>
<td>Modify, remix, transform</td>
<td>✅</td>
</tr>
<tr>
<td>Distribute and share</td>
<td>✅</td>
</tr>
<tr>
<td>Use without credit</td>
<td>❌ Must attribute</td>
</tr>
</tbody>
</table>
<p><strong>Attribution requirements:</strong></p>
<ol>
<li>Name the creator</li>
<li>Provide the license name (CC-BY 4.0)</li>
<li>Link to the license (if reasonable)</li>
<li>Indicate if changes were made</li>
</ol>
<p><strong>In plain English:</strong> Use it however you want, but give credit to the creator.</p>
<p><strong>Where to put attribution:</strong></p>
<ul>
<li>Credits screen in your game</li>
<li>README or CREDITS.txt file</li>
<li>About/Legal section</li>
<li>Game's website</li>
</ul>
<p><strong>Example attribution:</strong></p>
<pre><code>&quot;Spaceship Model&quot; by John Artist
Licensed under CC-BY 4.0 (https://creativecommons.org/licenses/by/4.0/)
Modified: Adjusted scale and added emission texture
</code></pre>
<p><strong>Providers using CC-BY:</strong></p>
<ul>
<li>Many Sketchfab models</li>
<li>Many OpenGameArt assets</li>
<li>Some Freesound audio</li>
<li>BlendSwap</li>
</ul>
<p><strong>OGA-BY:</strong> OpenGameArt also has its own OGA-BY license (versions 3.0 and 4.0), a CC-BY variant without the DRM clause. Per the <a href="https://opengameart.org/content/faq">OpenGameArt FAQ</a>, OGA-BY &quot;removes the restriction against technical measures that prevent redistribution of a work (eg. DRM)&quot;, which matters because CC-BY forbids you from applying DRM to the licensed work, and a game shipped on a console or a DRM-wrapped store arguably does exactly that. Treat OGA-BY like CC-BY and credit the creator.</p>
<p><strong>A note on Sketchfab:</strong> Its paid store closed in 2024 and selling moved to Epic's Fab marketplace, and in August 2026 Epic sold Sketchfab and ArtStation to KitBash, the company behind KitBash3D and Greyscalegorilla. KitBash has said there are no immediate changes to how you access Sketchfab, and as of September 2026 free Creative Commons and CC0 downloads still work. Even so, if you're sourcing CC-BY or CC0 models there, grab and archive what you need rather than assuming a link will live forever.</p>
<hr>
<h3>CC-BY-SA - Attribution ShareAlike</h3>
<p><strong>Use freely with credit, but derivatives must use the same license.</strong></p>
<table>
<thead>
<tr>
<th>What You Can Do</th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td>Use commercially</td>
<td>✅</td>
</tr>
<tr>
<td>Use in closed-source games</td>
<td>✅ (the game itself)</td>
</tr>
<tr>
<td>Modify, remix, transform</td>
<td>✅</td>
</tr>
<tr>
<td>Distribute and share</td>
<td>✅</td>
</tr>
<tr>
<td>Use without credit</td>
<td>❌ Must attribute</td>
</tr>
<tr>
<td>Keep derivatives proprietary</td>
<td>❌ Must use same license</td>
</tr>
</tbody>
</table>
<p><strong>The &quot;ShareAlike&quot; catch:</strong> If you modify the asset and distribute the modified version, it must also be CC-BY-SA.</p>
<p><strong>Important clarification for games:</strong></p>
<ul>
<li>Your <strong>game code</strong> does NOT need to be open source</li>
<li>Your <strong>game</strong> can be commercial and closed-source</li>
<li>Only the <strong>asset itself</strong> (and derivatives of it) must remain CC-BY-SA</li>
<li>If someone extracts the asset from your game, they can use it under CC-BY-SA</li>
</ul>
<p><strong>In plain English:</strong> Credit the creator. If you share a modified version of the asset, it stays CC-BY-SA.</p>
<p><strong>When to be careful:</strong></p>
<ul>
<li>If you're creating an asset pack or template</li>
<li>If you're redistributing assets in a toolkit</li>
<li>If your game allows users to extract raw assets</li>
</ul>
<hr>
<h3>CC-BY-NC - Attribution NonCommercial</h3>
<p><strong>Free to use with credit, but NOT for commercial purposes.</strong></p>
<table>
<thead>
<tr>
<th>What You Can Do</th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td>Use commercially</td>
<td>❌ No</td>
</tr>
<tr>
<td>Use in closed-source games</td>
<td>✅ (if game is free)</td>
</tr>
<tr>
<td>Modify, remix, transform</td>
<td>✅</td>
</tr>
<tr>
<td>Distribute and share</td>
<td>✅ (non-commercially)</td>
</tr>
<tr>
<td>Use without credit</td>
<td>❌ Must attribute</td>
</tr>
</tbody>
</table>
<p><strong>What counts as &quot;commercial&quot;?</strong></p>
<ul>
<li>❌ Selling the game</li>
<li>❌ In-app purchases</li>
<li>❌ Ads in the game</li>
<li>❌ Patreon-funded game development</li>
<li>⚠️ Free game by a company (gray area)</li>
<li>✅ Purely free hobby project with no monetization</li>
</ul>
<p><strong>In plain English:</strong> Only use in completely free, non-monetized projects.</p>
<p><strong>Recommendation:</strong> Avoid NC-licensed assets for any project that might generate revenue. The definition of &quot;commercial&quot; is broad and contested.</p>
<hr>
<h3>CC-BY-NC-SA - Attribution NonCommercial ShareAlike</h3>
<p><strong>The most restrictive Creative Commons license.</strong></p>
<table>
<thead>
<tr>
<th>What You Can Do</th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td>Use commercially</td>
<td>❌ No</td>
</tr>
<tr>
<td>Use in closed-source games</td>
<td>✅ (if game is free)</td>
</tr>
<tr>
<td>Modify, remix, transform</td>
<td>✅</td>
</tr>
<tr>
<td>Distribute and share</td>
<td>✅ (non-commercially)</td>
</tr>
<tr>
<td>Use without credit</td>
<td>❌ Must attribute</td>
</tr>
<tr>
<td>Keep derivatives proprietary</td>
<td>❌ Must use same license</td>
</tr>
</tbody>
</table>
<p><strong>In plain English:</strong> Non-commercial only, must credit, and any derivatives must also be NC-SA.</p>
<p><strong>Recommendation:</strong> Generally avoid for game development unless you're certain your project will never be monetized in any way.</p>
<hr>
<h2>Royalty-Free Licenses</h2>
<p>&quot;Royalty-Free&quot; is a commercial licensing model, NOT a Creative Commons variant.</p>
<h3>What &quot;Royalty-Free&quot; Actually Means</h3>
<p><strong>Royalty-Free ≠ Free</strong></p>
<p>&quot;Royalty-Free&quot; means:</p>
<ul>
<li>You pay <strong>once</strong> (or get it free during a promotion)</li>
<li>You can use it <strong>unlimited times</strong></li>
<li>You don't pay <strong>per-use royalties</strong></li>
</ul>
<p><strong>Compare to &quot;Rights-Managed&quot; (the alternative):</strong></p>
<ul>
<li>Pay per specific use</li>
<li>Limited to certain media, territories, time periods</li>
<li>More expensive, more restrictive</li>
</ul>
<h3>Standard Royalty-Free Terms</h3>
<p>Most marketplaces (Synty, CGTrader, TurboSquid) use similar terms:</p>
<table>
<thead>
<tr>
<th>What You Can Do</th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td>Use commercially in games</td>
<td>✅ Yes</td>
</tr>
<tr>
<td>Use in multiple projects</td>
<td>✅ Yes (often unlimited)</td>
</tr>
<tr>
<td>Modify and adapt</td>
<td>✅ Yes</td>
</tr>
<tr>
<td>Credit the creator</td>
<td>❌ Usually not required</td>
</tr>
<tr>
<td>Resell the raw asset file</td>
<td>❌ No</td>
</tr>
<tr>
<td>Let users extract the asset</td>
<td>❌ No</td>
</tr>
<tr>
<td>Transfer license to others</td>
<td>❌ No</td>
</tr>
</tbody>
</table>
<p><strong>Key restrictions:</strong></p>
<ol>
<li><strong>No redistribution</strong> - Can't give away or sell the asset files</li>
<li><strong>No extraction</strong> - Must be &quot;incorporated&quot; so users can't easily extract it</li>
<li><strong>One licensee</strong> - The license is for you/your team, not transferable</li>
</ol>
<p><strong>In plain English:</strong> Use it in your games, but don't let others get the raw files.</p>
<h3>Synty Studios License</h3>
<p>Synty now offers two license models: a <strong>one-time purchase license</strong> (perpetual rights to the specific packs you buy) and a <strong>Standard Subscription license</strong> (access to the whole library while your subscription is active). Both are royalty-free for commercial use once paid.</p>
<p>One-time purchase terms:</p>
<ul>
<li>✅ Use in unlimited commercial projects</li>
<li>✅ Modify assets freely</li>
<li>✅ 5 seats (team members) per purchase (Humble Bundle copies include 1 seat)</li>
<li>❌ Cannot resell, redistribute, or share assets outside your seated team</li>
<li>❌ Cannot use in asset flipping (minimal changes then resell)</li>
<li>❌ Cannot use Synty's name or logo, or claim you created the assets</li>
<li>❌ Cannot include assets in generative-AI training datasets, NFTs/blockchain products, or metaverse products (these need a custom license)</li>
</ul>
<h3>CGTrader Royalty-Free License</h3>
<ul>
<li>✅ Commercial use in games, films, VR/AR</li>
<li>✅ Modify and adapt</li>
<li>❌ Cannot sell or give away the model file</li>
<li>❌ Cannot allow users to extract the model</li>
<li>⚠️ Some models marked &quot;No AI&quot; - can't use for ML training</li>
</ul>
<h3>TurboSquid 3D Model License</h3>
<ul>
<li>✅ Commercial use (unless marked &quot;Editorial&quot;)</li>
<li>✅ Modify and adapt</li>
<li>✅ Up to 5 physical prints for personal/charitable use</li>
<li>❌ Cannot redistribute model files</li>
<li>❌ Cannot use in logo/trademark</li>
<li>⚠️ Check for &quot;Editorial Only&quot; label</li>
<li>⚠️ Check for Depicted IP (brand logos)</li>
</ul>
<hr>
<h2>Editorial Use Only</h2>
<p>Some assets are marked &quot;Editorial Use Only&quot; - this is important to understand.</p>
<h3>What It Means</h3>
<p>&quot;Editorial&quot; use includes:</p>
<ul>
<li>News reporting</li>
<li>Educational content</li>
<li>Documentary</li>
<li>Commentary and criticism</li>
</ul>
<p><strong>NOT editorial:</strong></p>
<ul>
<li>Commercial games</li>
<li>Advertising</li>
<li>Marketing materials</li>
<li>Products for sale</li>
</ul>
<h3>Why Assets Get This Label</h3>
<p>Usually because they contain:</p>
<ul>
<li><strong>Trademarks</strong> - Brand logos (Nike, Apple, etc.)</li>
<li><strong>Likenesses</strong> - Real people's faces</li>
<li><strong>Copyrighted designs</strong> - Car designs, product designs</li>
<li><strong>Intellectual property</strong> - Characters, recognizable items</li>
</ul>
<h3>Example</h3>
<p>A 3D model of a Ferrari might be &quot;Editorial Only&quot; because:</p>
<ul>
<li>Ferrari's design is protected</li>
<li>Using it in a game could imply endorsement</li>
<li>Commercial use requires Ferrari's permission</li>
</ul>
<p><strong>Recommendation:</strong> Avoid &quot;Editorial Only&quot; assets entirely for game development. Use original or properly licensed alternatives.</p>
<hr>
<h2>Software Licenses (MIT, GPL, Apache)</h2>
<p>These primarily apply to code but sometimes cover assets too.</p>
<h3>MIT License</h3>
<p><strong>Very permissive. Common for code and code-adjacent assets.</strong></p>
<table>
<thead>
<tr>
<th>What You Can Do</th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td>Use commercially</td>
<td>✅ Yes</td>
</tr>
<tr>
<td>Modify</td>
<td>✅ Yes</td>
</tr>
<tr>
<td>Distribute</td>
<td>✅ Yes</td>
</tr>
<tr>
<td>Keep proprietary</td>
<td>✅ Yes</td>
</tr>
<tr>
<td>Attribution</td>
<td>✅ Required (in license file)</td>
</tr>
</tbody>
</table>
<p><strong>Attribution requirement:</strong> Include the original license text somewhere in your project (usually in a LICENSES file or about screen).</p>
<p><strong>Example MIT notice:</strong></p>
<pre><code>The MIT License (MIT)
Copyright (c) 2024 Original Author

Permission is hereby granted, free of charge, to any person obtaining a copy...
</code></pre>
<p><strong>Assets using MIT:</strong></p>
<ul>
<li>Three.js examples</li>
<li>pmndrs/vanilla effects</li>
<li>Many npm packages with assets</li>
</ul>
<h3>GPL (GNU General Public License)</h3>
<p><strong>Copyleft license. Derivatives must also be GPL.</strong></p>
<table>
<thead>
<tr>
<th>What You Can Do</th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td>Use commercially</td>
<td>✅ Yes</td>
</tr>
<tr>
<td>Modify</td>
<td>✅ Yes</td>
</tr>
<tr>
<td>Distribute</td>
<td>✅ Yes</td>
</tr>
<tr>
<td>Keep proprietary</td>
<td>❌ No (if distributing)</td>
</tr>
<tr>
<td>Attribution</td>
<td>✅ Required</td>
</tr>
</tbody>
</table>
<p><strong>The catch:</strong> If you distribute GPL-licensed work (or derivatives), you must:</p>
<ul>
<li>Make source available</li>
<li>License it under GPL</li>
<li>Include the full GPL license text</li>
</ul>
<p><strong>For games:</strong> Using GPL assets in a distributed game is complex. The game itself may need to be GPL. Consult a lawyer if unsure.</p>
<p><strong>Recommendation:</strong> Avoid GPL-licensed assets for commercial games unless you fully understand the implications.</p>
<hr>
<h2>Practical Guidelines</h2>
<h3>Choosing Assets by License (Recommended Order)</h3>
<ol>
<li><strong>CC0</strong> - No restrictions, no worries</li>
<li><strong>MIT</strong> - Include license text, you're good</li>
<li><strong>Royalty-Free</strong> - Standard commercial terms, read the specific license</li>
<li><strong>CC-BY</strong> - Must attribute, but otherwise free</li>
<li><strong>CC-BY-SA</strong> - Attribution + ShareAlike, fine for most games</li>
<li><strong>CC-BY-NC</strong> - Only if your project is 100% non-commercial</li>
<li><strong>GPL</strong> - Avoid unless you want your game to be open source</li>
<li><strong>Editorial Only</strong> - Never use in games</li>
</ol>
<h3>Building a Credits System</h3>
<p>Even for CC0 assets, maintaining credits is good practice:</p>
<p><strong>1. Create a <a href="http://CREDITS.md">CREDITS.md</a> file:</strong></p>
<pre><code class="language-markdown"># Asset Credits

## 3D Models
- Spaceship: Kenney (https://kenney.nl) - CC0
- Tree Pack: Quaternius (https://quaternius.com) - CC0
- Robot Character: &quot;RoboHelper&quot; by @artist123 on Sketchfab - CC-BY 4.0
  Modified: Reduced polygon count, changed colors

## Textures
- Wood Floor: Poly Haven (https://polyhaven.com/a/wood_floor_01) - CC0
- Metal Panel: AmbientCG - CC0

## Audio
- Laser Sound: &quot;pew_laser&quot; by sounduser on Freesound - CC-BY 3.0
- Background Music: Composed by [Your Name] - All Rights Reserved

## Code/Shaders
- Soft Shadows: pmndrs/vanilla - MIT License
- Post-processing: Three.js Examples - MIT License
</code></pre>
<p><strong>2. Add an in-game credits screen:</strong></p>
<pre><code>CREDITS

Models &amp; Textures
- Poly Haven (polyhaven.com)
- Kenney (kenney.nl)
- Quaternius (quaternius.com)

Audio
- Freesound contributors (see CREDITS.txt)

Special Thanks
- Three.js team
- Open source community
</code></pre>
<h3>Handling Mixed Licenses</h3>
<p>When your project uses assets with different licenses:</p>
<ol>
<li><strong>Track everything</strong> - Maintain a spreadsheet or document</li>
<li><strong>Use the most restrictive attribution</strong> - If any asset needs credit, have a credits section</li>
<li><strong>Separate concerns</strong> - Keep NC assets out of commercial projects</li>
<li><strong>When in doubt, replace</strong> - Swap questionable assets for clearly licensed ones</li>
</ol>
<h3>Red Flags to Watch For</h3>
<p>⚠️ <strong>Be cautious when:</strong></p>
<ul>
<li>License isn't clearly stated</li>
<li>Asset looks too professional to be free (might be pirated)</li>
<li>Asset is a recognizable character/brand</li>
<li>Site looks sketchy or unofficial</li>
<li>Terms say &quot;personal use only&quot;</li>
<li>Asset is ripped from a game</li>
</ul>
<p>✅ <strong>Trust indicators:</strong></p>
<ul>
<li>Established platforms (Poly Haven, Kenney, Sketchfab)</li>
<li>Clear license on download page</li>
<li>Creator has a portfolio/history</li>
<li>Asset is original work, not a copy</li>
</ul>
<hr>
<h2>License Compatibility</h2>
<p>Not all licenses can be combined. Here's what works together:</p>
<h3>Combining Assets in One Project</h3>
<table>
<thead>
<tr>
<th>License A</th>
<th>+</th>
<th>License B</th>
<th>=</th>
<th>Result</th>
</tr>
</thead>
<tbody>
<tr>
<td>CC0</td>
<td>+</td>
<td>Anything</td>
<td>=</td>
<td>✅ Fine</td>
</tr>
<tr>
<td>CC-BY</td>
<td>+</td>
<td>CC-BY</td>
<td>=</td>
<td>✅ Credit both</td>
</tr>
<tr>
<td>CC-BY</td>
<td>+</td>
<td>CC-BY-SA</td>
<td>=</td>
<td>✅ Credit both, SA applies to that asset</td>
</tr>
<tr>
<td>CC-BY</td>
<td>+</td>
<td>CC-BY-NC</td>
<td>=</td>
<td>⚠️ Project becomes NC</td>
</tr>
<tr>
<td>CC-BY-SA</td>
<td>+</td>
<td>CC-BY-NC-SA</td>
<td>=</td>
<td>⚠️ Incompatible for derivatives</td>
</tr>
<tr>
<td>MIT</td>
<td>+</td>
<td>CC-BY</td>
<td>=</td>
<td>✅ Include MIT license, credit CC-BY</td>
</tr>
<tr>
<td>GPL</td>
<td>+</td>
<td>Proprietary</td>
<td>=</td>
<td>❌ Problematic</td>
</tr>
</tbody>
</table>
<h3>Key Rule</h3>
<p>When combining licenses, the most restrictive terms apply to the final work.</p>
<hr>
<h2>Frequently Asked Questions</h2>
<h3>Can I use CC-BY assets in a commercial game?</h3>
<p><strong>Yes.</strong> CC-BY allows commercial use. Just include attribution.</p>
<h3>Do I need to open-source my game if I use CC-BY-SA assets?</h3>
<p><strong>No.</strong> Your game code can be proprietary. Only the asset (and modifications to it) must remain CC-BY-SA if distributed separately.</p>
<h3>What if I modified a CC-BY asset beyond recognition?</h3>
<p><strong>Still attribute.</strong> If you started with someone's work, you should credit them regardless of how much you changed it. It's both legally safer and ethically right.</p>
<h3>Can I use Freesound audio in a commercial game?</h3>
<p><strong>Depends on the specific sound.</strong> Each sound on Freesound has its own license. Filter by CC0 for worry-free use, or CC-BY if you can attribute.</p>
<h3>Is a free game with ads &quot;commercial&quot;?</h3>
<p><strong>Yes.</strong> Any monetization (ads, IAP, donations, Patreon) generally counts as commercial. Avoid NC-licensed assets.</p>
<h3>Can I use CC0 assets and then sell them?</h3>
<p><strong>Technically yes, but...</strong> You can include CC0 assets in a product you sell. You cannot claim you created them if asked. Reselling unchanged CC0 assets is legal but ethically questionable.</p>
<h3>What about AI-generated assets?</h3>
<p><strong>Complicated.</strong> Current legal consensus is unclear. Some considerations:</p>
<ul>
<li>AI-generated images may not be copyrightable (no human author)</li>
<li>Training data licensing is legally contested</li>
<li>Some marketplaces (CGTrader) have &quot;No AI&quot; restrictions</li>
<li>When in doubt, use human-created assets with clear licenses</li>
</ul>
<p>On copyrightability specifically, the US Copyright Office's January 2025 report on AI is the clearest guidance to date: a work generated entirely by AI is not copyrightable because copyright requires human authorship, and prompts alone (even long, detailed ones) don't make the output yours. But AI used as a tool, where a human meaningfully selects, arranges, or modifies the result, can produce a copyrightable work, judged case by case. So an AI-generated texture you drop in untouched likely has no copyright protection you can enforce, while a scene you substantially build and edit around AI elements can.</p>
<p>Separate from copyright, the tool you generated with imposes its own terms, and those are what actually bite. Free tiers are frequently non-commercial or publish your output publicly under CC BY. Our <a href="/guides/ai-3d-model-generators">best AI 3D model generators</a> guide lists the current commercial terms for each major generator, hosted and open, and Cinevva's own <a href="/tools/hunyuan3d#prompt=a%20low%20poly%20knight%20character&amp;character=1">3D Model Generator</a> spells out its <a href="/legal/generation-rights">generation rights</a> up front.</p>
<h3>Do I need a lawyer?</h3>
<p><strong>For most indie games, no.</strong> If you stick to CC0, MIT, and standard Royalty-Free licenses from reputable sources, you're fine.</p>
<p><strong>Consider legal advice if:</strong></p>
<ul>
<li>Your game has significant revenue potential</li>
<li>You're using GPL-licensed assets</li>
<li>You're unsure about a specific license</li>
<li>You're creating an asset marketplace</li>
</ul>
<h3>What licenses does OpenGameArt allow, and can I use its assets commercially?</h3>
<p>Yes, everything on OpenGameArt can be used in a commercial game. The site's <a href="https://opengameart.org/content/faq">FAQ</a> says it plainly: &quot;Yes, you can use this art. Even in commercial projects.&quot; OpenGameArt only accepts a fixed set of licenses, so every submission is one of CC0, CC-BY 3.0 or 4.0, CC-BY-SA 3.0 or 4.0, OGA-BY 3.0 or 4.0, or GPL 2.0 or 3.0, and those are exactly the nine checkboxes in the license filter on its <a href="https://opengameart.org/art-search-advanced">advanced search</a>. Tick only CC0 for zero obligations, add CC-BY and OGA-BY if you can show a credit line, and leave GPL and CC-BY-SA unticked unless you've read the share-alike section above. OpenGameArt's suggested credit format is <code>&quot;[asset name]&quot; by [author name] licensed [license]: [asset url]</code>.</p>
<h3>What is the OGA-BY license?</h3>
<p>OGA-BY is OpenGameArt's own attribution license, a copy of CC-BY with one clause removed: the ban on applying technical protection measures such as DRM. Under CC-BY 4.0, Section 2(a)(5)(C) says you may not &quot;apply any Effective Technological Measures to, the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient&quot;, which sits awkwardly with console builds and DRM-wrapped storefronts. OGA-BY drops that sentence and keeps the rest, so the practical rule is the same as CC-BY: credit the author, name the license, link the source, and note your changes.</p>
<h3>Are Kenney assets really CC0 and free for commercial use?</h3>
<p>Yes. Kenney's <a href="https://kenney.nl/support">support page</a> states that &quot;All game assets on the asset pages are public domain licensed (CC0)&quot; and that &quot;You're free to use them, even in commercial projects.&quot; Attribution is not required, and if you want to give credit anyway Kenney asks only that you mention &quot;Kenney&quot;. That covers every 2D, 3D, UI, and audio pack on <a href="http://kenney.nl">kenney.nl</a>, which is why Kenney sits in the CC0 row of every table on this page. Browse the <a href="/game-assets/free-3d-character-models">3D character models</a> or <a href="/game-assets/free-ui-sprites">UI sprites</a> pages to see what that includes.</p>
<h3>Is Quaternius CC0?</h3>
<p>Yes. Quaternius's <a href="https://quaternius.com/faq.html">FAQ</a> says &quot;All models are under the CC0 License&quot; and that they &quot;can be used for free without the need for attribution in commercial, educational, and personal projects.&quot; You can modify the models and combine them with other packs, and the free tiers of each pack carry the same CC0 terms as the paid Source tiers, which add the Blender files. Credit is appreciated, never required.</p>
<h3>Which Freesound licenses allow commercial use?</h3>
<p>Two of the three. Freesound's <a href="https://freesound.org/help/faq/">FAQ</a> describes CC0 as &quot;you can do pretty much what you want with the sound. You could even sell the sound&quot;, and CC BY as free to use as long as &quot;you should always mention the original creators&quot;. CC BY-NC works like CC BY except &quot;you can't earn any money with the piece of work you create&quot;, so it's out for any game with a price tag, ads, or in-app purchases. A handful of old uploads still carry the retired Sampling+ license, which Freesound keeps only because the sounds belong to their uploaders. In the search sidebar, the &quot;Approved for Free Cultural Works&quot; filter is a one-click way to see just CC0 and CC BY results, and our <a href="/game-assets/free-footstep-sound-effects">free footstep</a> and <a href="/game-assets/free-ui-sound-effects">UI sound</a> pages are already filtered to commercial-safe picks.</p>
<h3>Do I have to credit or add &quot;special thanks&quot; under a permissive license?</h3>
<p>Only when the license says so. CC0 and Kenney-style public domain dedications ask for nothing, so a &quot;special thanks&quot; section is a courtesy rather than a requirement. CC-BY, OGA-BY, and MIT do require it: CC-BY wants the creator's name, the license name, a link where practical, and a note of changes, and MIT wants the original copyright and license text reproduced somewhere in your project. A &quot;thanks to X&quot; line without the license name doesn't satisfy CC-BY, so if you're going to credit, credit properly. Royalty-free marketplace licenses (Synty, CGTrader, TurboSquid) generally don't require credit but you should still read the specific terms.</p>
<h3>What's the difference between CC BY 3.0 and CC BY 4.0 for game assets?</h3>
<p>For a game developer the permissions are identical: both allow commercial use, modification, and distribution with attribution. Version 4.0 is friendlier on the details. Per Creative Commons' <a href="https://creativecommons.org/version4/">4.0 summary</a>, it lets you satisfy attribution &quot;with a link to a separate page for attribution information&quot; (a credits screen or a URL qualifies), it reinstates your rights automatically if you fix a breach within 30 days of discovering it, where 3.0 terminated immediately, and it's a single international license rather than a set of country-specific ports. Older assets on OpenGameArt and <a href="http://game-icons.net">game-icons.net</a> (CC BY 3.0) and newer ones (CC BY 4.0) can sit in the same game without conflict, just name the right version in your credits.</p>
<hr>
<h2>Attribution Templates</h2>
<p>Copy and customize these for your projects.</p>
<h3>Simple Credits File</h3>
<pre><code>ASSET CREDITS

This game uses assets from the following sources:

3D Models
- Kenney.nl (CC0) - https://kenney.nl
- Quaternius (CC0) - https://quaternius.com

Textures  
- Poly Haven (CC0) - https://polyhaven.com
- AmbientCG (CC0) - https://ambientcg.com

Audio
- Freesound.org (various CC licenses)
  - &quot;explosion.wav&quot; by user123 (CC-BY 3.0)
  - &quot;footstep.wav&quot; by user456 (CC0)

Thank you to all creators who share their work!
</code></pre>
<h3>Detailed Attribution (CC-BY)</h3>
<pre><code>&quot;Asset Name&quot; by Creator Name
Source: https://example.com/asset-url
License: Creative Commons Attribution 4.0 International (CC-BY 4.0)
License URL: https://creativecommons.org/licenses/by/4.0/
Modifications: [Describe any changes made, or &quot;None&quot;]
</code></pre>
<h3>MIT License Inclusion</h3>
<pre><code>This software includes code/assets licensed under the MIT License:

---
[Original copyright and license text]
---
</code></pre>
<hr>
<h2>Summary</h2>
<table>
<thead>
<tr>
<th>If You Want...</th>
<th>Use These Licenses</th>
</tr>
</thead>
<tbody>
<tr>
<td>No restrictions at all</td>
<td>CC0</td>
</tr>
<tr>
<td>Commercial use, minimal hassle</td>
<td>CC0, Royalty-Free, MIT</td>
</tr>
<tr>
<td>Commercial use, willing to credit</td>
<td>CC-BY</td>
</tr>
<tr>
<td>Free hobby project only</td>
<td>Any except Editorial</td>
</tr>
<tr>
<td>Maximum legal safety</td>
<td>CC0 from reputable sources</td>
</tr>
</tbody>
</table>
<p><strong>Golden rules:</strong></p>
<ol>
<li>When in doubt, use CC0</li>
<li>Always check the license before downloading</li>
<li>Keep records of where assets came from</li>
<li>Include a credits file even if not required</li>
<li>Replace questionable assets rather than risk issues</li>
</ol>
<hr>
<h2>Resources</h2>
<ul>
<li><a href="https://creativecommons.org/choose/">Creative Commons License Chooser</a></li>
<li><a href="https://tldrlegal.com/">TL;DR Legal</a>: plain-English license explanations</li>
<li><a href="https://choosealicense.com/">Choose a License</a>: for code licenses</li>
<li><a href="https://opengameart.org/content/faq">OpenGameArt FAQ</a>: the allowed license list and OGA-BY explained</li>
</ul>
<p><BuildCta
  title="Build with assets that are already cleared"
  desc="Everything Cinevva places is CC0 or generated for you, so licensing is a non-issue."
  prompt="Build a low poly farm game using free CC0 props" /></p>
<h2>Related</h2>
<ul>
<li><a href="/guides/game-assets-guide">Where to Find Free Game Assets</a>: providers, formats, and search tools for every asset type</li>
<li><a href="/guides/free-sound-effects-music">Free Sound Effects and Music for Games</a>: the per-source audio licenses in depth</li>
<li><a href="/guides/free-2d-sprites-tilesets">Free 2D Sprites, Pixel Art and Tilesets</a>: which sprite packs are CC0 and which need credit</li>
<li><a href="/guides/game-dev-courses">Online Game Development Courses</a>: courses that teach asset creation in Blender and other tools</li>
<li><a href="/guides/game-jams-hackathons">Game Jams &amp; Hackathons</a>: license-friendly asset packs for jam games</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Where to Find Free Game Assets in 2026 (20+ Sources)]]></title>
            <link>https://app.cinevva.com/guides/game-assets-guide</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/game-assets-guide</guid>
            <pubDate>Sun, 18 Jan 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[20+ sources for free game assets in 2026 - 3D models, textures, audio, sprites, animations, and shaders, with licenses explained and what each site is best for.]]></description>
            <content:encoded><![CDATA[<h1>Where to Find Free Game Assets in 2026 (20+ Sources)</h1>
<p>Start with a usable file: browse <a href="/game-assets/free-3d-character-models">CC0 3D characters</a>, <a href="/game-assets/free-3d-vehicle-models">vehicles</a>, or <a href="/game-assets/free-3d-weapon-models">weapons and props</a>. Cards include creator credits, GLB downloads, and available dimensions, vertex counts and animation metadata.</p>
<p><em>Last updated: September 2026.</em></p>
<p>The best places to find free game assets in 2026 are Poly Haven, Kenney, and Quaternius for CC0 3D models and textures, Freesound and the Sonniss GDC bundle for sound, Kenney and <a href="http://itch.io">itch.io</a> for sprites, and the Quaternius animation library or Mixamo for character animation. This guide covers where to find high-quality, free game assets for your web games: 3D models, textures, sprites, audio, music, animations, and shaders. Most of these providers are searchable directly inside Cinevva's asset library (look for the &quot;Searchable in Cinevva&quot; note), and we've included the best external sources too.</p>
<p>::: info Try Our Asset Search
Search across all these sources at once with our <a href="/assets">Asset Library Search</a>. Find 3D models, textures, audio, and more from a single search box.</p>
<p><strong>New:</strong> Assets with direct download links show a download icon on the tile. Click to download instantly without leaving the search results.</p>
<p><strong>Quick search by source:</strong> <a href="/assets?providers=polyhaven">Poly Haven</a> · <a href="/assets?providers=sketchfab">Sketchfab</a> · <a href="/assets?providers=freesound">Freesound</a> · <a href="/assets?providers=kenney">Kenney</a> · <a href="/assets?providers=ambientcg">AmbientCG</a></p>
<p><strong>Prefer to browse?</strong> <a href="/game-assets/">Free game assets by category</a> has hand-picked pages for <a href="/game-assets/free-3d-character-models">character models</a>, <a href="/game-assets/free-wood-textures">wood textures</a>, <a href="/game-assets/free-footstep-sound-effects">footstep sounds</a>, <a href="/game-assets/free-hdri-skies">HDRI skies</a> and thirty more.
:::</p>
<p>::: tip Understanding Licenses
Not sure what CC0, CC-BY, or Royalty-Free mean? Read our <a href="/guides/game-asset-licenses">Game Asset Licenses Explained</a> guide for a complete breakdown.
:::</p>
<h2>Quick Reference</h2>
<table>
<thead>
<tr>
<th>Need</th>
<th>Best Provider</th>
<th>License</th>
<th>Direct Download</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>3D Models (high-quality)</strong></td>
<td>Poly Haven, Sketchfab, BlenderKit</td>
<td>CC0 / Various</td>
<td>✅ / Manual</td>
</tr>
<tr>
<td><strong>3D Models (game-ready)</strong></td>
<td>Kenney, Quaternius</td>
<td>CC0</td>
<td>✅</td>
</tr>
<tr>
<td><strong>3D Models (stylized low-poly)</strong></td>
<td>Synty POLYGON, Quaternius</td>
<td>Royalty-Free / CC0</td>
<td>✅</td>
</tr>
<tr>
<td><strong>3D Models (marketplace)</strong></td>
<td>CGTrader, TurboSquid</td>
<td>Royalty-Free</td>
<td>✅</td>
</tr>
<tr>
<td><strong>Textures (PBR)</strong></td>
<td>Poly Haven, AmbientCG, BlenderKit</td>
<td>CC0 / Various</td>
<td>✅</td>
</tr>
<tr>
<td><strong>Sprites/2D</strong></td>
<td>Kenney, <a href="http://itch.io">itch.io</a>, OpenGameArt</td>
<td>CC0 / Various</td>
<td>✅</td>
</tr>
<tr>
<td><strong>Sound Effects</strong></td>
<td>Freesound, Sonniss GDC, Kenney</td>
<td>Various / Royalty-Free / CC0</td>
<td>⚠️ / ✅</td>
</tr>
<tr>
<td><strong>Music</strong></td>
<td>Jamendo</td>
<td>CC personal / paid sync for commercial</td>
<td>⚠️</td>
</tr>
<tr>
<td><strong>Character Animations</strong></td>
<td>Mixamo</td>
<td>Free commercial</td>
<td>Manual</td>
</tr>
<tr>
<td><strong>Shaders/Effects</strong></td>
<td>Shadertoy, Three.js Examples</td>
<td>Various / MIT</td>
<td>View code</td>
</tr>
<tr>
<td><strong>Blender Models</strong></td>
<td>BlendSwap</td>
<td>CC-BY</td>
<td>Manual</td>
</tr>
</tbody>
</table>
<hr>
<h2>3D Models</h2>
<h3>Poly Haven</h3>
<p><strong>Best for:</strong> High-quality photorealistic models, HDRIs, PBR textures</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://polyhaven.com">polyhaven.com</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>CC0 (Public Domain) - no attribution required</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>2,300+ assets (520+ models, 850+ textures, 990+ HDRIs per the <a href="https://api.polyhaven.com/assets?t=textures">public API</a>, September 2026)</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>GLTF, Blend, FBX</td>
</tr>
<tr>
<td><strong>API</strong></td>
<td>Yes - no key required</td>
</tr>
<tr>
<td><strong>Direct Download</strong></td>
<td>✅ Yes - 1K resolution via CDN</td>
</tr>
</tbody>
</table>
<p><strong>Strengths:</strong></p>
<ul>
<li>Professional quality suitable for commercial projects</li>
<li>All assets are CC0 - use them however you want</li>
<li>Multiple resolutions available (1K to 16K for textures)</li>
<li>Direct download links via API - download icon in search results</li>
</ul>
<p><strong>Best for finding:</strong></p>
<ul>
<li>Architectural elements (furniture, buildings)</li>
<li>Natural objects (rocks, plants, terrain)</li>
<li>HDRIs for lighting</li>
<li>PBR material textures</li>
</ul>
<hr>
<h3>Kenney</h3>
<p><strong>Best for:</strong> Game-ready low-poly assets in consistent art styles</p>
<figure class="sample-sheet">
<a href="/assets?providers=kenney"><img src="https://cdn.cinevva.com/guides/samples/samples-kenney-3d.jpg" alt="Sample CC0 3D models from Kenney: race car, spaceship, siege tower, house, pirate ship, windmill, UFO and firetruck" loading="lazy"></a>
<figcaption>Eight Kenney props, all CC0. <a href="/assets?providers=kenney">Browse the full Kenney set in the asset library</a>.</figcaption>
</figure>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://kenney.nl">kenney.nl</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>CC0 (Public Domain)</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>200+ packs, more than 60,000 individual assets (Kenney's own count on the <a href="https://kenney.itch.io/kenney-game-assets">All-in-1 bundle</a>)</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>GLB, PNG, WAV, and more</td>
</tr>
<tr>
<td><strong>Catalog</strong></td>
<td>Offline catalog available (instant search)</td>
</tr>
<tr>
<td><strong>Direct Download</strong></td>
<td>✅ Yes - links to asset pack page</td>
</tr>
</tbody>
</table>
<p><strong>Strengths:</strong></p>
<ul>
<li>Massive library of game-focused assets</li>
<li>Consistent art styles within packs</li>
<li>Everything is game-ready, optimized for performance</li>
<li>Includes models, sprites, UI elements, and sounds in one place</li>
</ul>
<p><strong>Best packs to start with:</strong></p>
<ul>
<li><strong>Space Kit</strong> - Spaceships, asteroids, stations</li>
<li><strong>Platformer Kit</strong> - Characters, tiles, obstacles</li>
<li><strong>Nature Kit</strong> - Trees, rocks, grass</li>
<li><strong>Furniture Kit</strong> - Indoor props</li>
<li><strong>UI Pack</strong> - Buttons, icons, HUD elements</li>
</ul>
<hr>
<h3>Quaternius</h3>
<p><strong>Best for:</strong> Stylized low-poly 3D models</p>
<figure class="sample-sheet">
<a href="/assets"><img src="https://cdn.cinevva.com/guides/samples/samples-quaternius.jpg" alt="Sample CC0 low-poly models from Quaternius: monsters, pirate captain, mech, wizard, spaceship, shiba inu and knight" loading="lazy"></a>
<figcaption>Quaternius characters and ships, all CC0 and most of them animated. <a href="/assets">Search them in the free asset library</a>.</figcaption>
</figure>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://quaternius.com">quaternius.com</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>CC0 (Public Domain)</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>Over 80 themed packs, including rigged Universal Base Characters and a CC0 outfit kit</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>GLTF/GLB, FBX</td>
</tr>
<tr>
<td><strong>Catalog</strong></td>
<td>Offline catalog available</td>
</tr>
<tr>
<td><strong>Direct Download</strong></td>
<td>✅ Yes - ZIP file per pack</td>
</tr>
</tbody>
</table>
<p><strong>Strengths:</strong></p>
<ul>
<li>Cute, stylized low-poly aesthetic</li>
<li>Great for indie games</li>
<li>Well-organized themed packs</li>
<li>Optimized polygon counts</li>
</ul>
<p><strong>Popular packs:</strong></p>
<ul>
<li>Ultimate Modular Characters</li>
<li>Medieval Pack</li>
<li>Ultimate Spaceships</li>
<li>Ultimate Monsters</li>
<li>Nature Pack</li>
</ul>
<hr>
<h3>Sketchfab</h3>
<p><strong>Best for:</strong> Wide variety of models, including complex/detailed ones</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://sketchfab.com">sketchfab.com</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>Various (check each model)</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>Millions of models</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>GLTF, FBX, OBJ</td>
</tr>
<tr>
<td><strong>API</strong></td>
<td>Yes - optional key for higher limits</td>
</tr>
<tr>
<td><strong>Direct Download</strong></td>
<td>⚠️ Links to download page (requires login)</td>
</tr>
</tbody>
</table>
<p><strong>Note:</strong> Sketchfab's paid Store closed in 2024 and selling moved to Epic's <a href="https://www.fab.com">Fab</a> marketplace, and only CC-BY and Fab Standard content could migrate there, so CC0, CC-BY-SA, CC-BY-NC, and CC-BY-ND models stayed Sketchfab-only. Then on August 10, 2026 Epic <a href="https://www.epicgames.com/site/news/kitbash-acquires-artstation-and-sketchfab">sold Sketchfab and ArtStation to KitBash</a>, the company behind KitBash3D and Greyscalegorilla, which says there are no immediate changes for creators. As of September 2026 free and view-only models remain downloadable, the download and viewer APIs keep working (we checked the search API this month), and filtering for free, downloadable models works exactly as before. Treat Sketchfab as a still-useful source with a new owner and an unwritten roadmap, and grab what you need rather than assuming it will always be there.</p>
<p><strong>Strengths:</strong></p>
<ul>
<li>Largest 3D model library</li>
<li>3D preview before download</li>
<li>Filter by &quot;downloadable&quot; and license</li>
<li>Many professional artists</li>
</ul>
<p><strong>Search tips:</strong></p>
<ul>
<li>Add <code>downloadable:true</code> to search</li>
<li>Filter by CC0 or CC-BY licenses</li>
<li>Check polygon count for web games (&lt; 100K preferred)</li>
<li>Look for &quot;game-ready&quot; tag</li>
</ul>
<p>::: tip Searchable in Cinevva
Sketchfab results show up directly in the Cinevva Assets panel.
:::</p>
<hr>
<h3>BlenderKit</h3>
<p><strong>Best for:</strong> A huge in-app library of models, materials, and HDRIs</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://www.blenderkit.com">blenderkit.com</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>Royalty-Free and CC0 - check each asset</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>Thousands of models, materials, HDRIs, and brushes</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>Blend, GLTF, FBX (varies)</td>
</tr>
<tr>
<td><strong>API</strong></td>
<td>Yes - free tier available</td>
</tr>
</tbody>
</table>
<p><strong>Strengths:</strong></p>
<ul>
<li>One of the largest asset libraries with a mix of free and paid content</li>
<li>Covers models, PBR materials, and HDRIs in one place</li>
<li>Strong for environment props, materials, and scene dressing</li>
<li>Filterable by license so you can stick to CC0 when you need to</li>
</ul>
<p><strong>Note:</strong> Free and paid assets sit side by side, so filter for the free or CC0 tier when budget matters.</p>
<p>::: tip Searchable in Cinevva
BlenderKit is integrated into the Cinevva Assets panel - search it alongside Poly Haven and Sketchfab without leaving the editor.
:::</p>
<hr>
<h3>Fab (Epic Games)</h3>
<p><strong>Best for:</strong> Game-ready assets and free Quixel Megascans, all in one marketplace</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://www.fab.com">fab.com</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>Standard (Personal/Professional) and Creative Commons (some CC0) - check each listing</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>Models, materials, environments, VFX, audio, animations, plugins</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>Unreal Engine, Unity, glTF, and more</td>
</tr>
<tr>
<td><strong>Price</strong></td>
<td>Free sign-up, mix of free and paid</td>
</tr>
</tbody>
</table>
<p>Fab is Epic's unified content marketplace, the successor to the Unreal Engine Marketplace, ArtStation Marketplace, the Sketchfab Store, and Quixel Megascans. The big draw for asset hunters is a free Megascans starter collection that Epic describes as &quot;1500+ assets&quot; usable &quot;in any engine or tool&quot; under the Fab Standard license (per <a href="https://forums.unrealengine.com/t/megascans-starter-content-on-fab/2255322">Epic's forum announcement</a>), covering surfaces, decals, and 3D scans. Note that the era of the entire Megascans library being free ended on December 31, 2024, and the wider catalog is now paid, but Epic keeps that starter set free and rotates a &quot;Limited-Time Free&quot; selection on a regular basis. Filter by the Creative Commons or free Standard license to stay budget-friendly, and check the license on each listing before shipping.</p>
<hr>
<h3>BlendSwap</h3>
<p><strong>Best for:</strong> Complex Blender models with materials</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://blendswap.com">blendswap.com</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>Various (CC-BY common)</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>Thousands of Blender models</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>Blend (convert to GLTF)</td>
</tr>
</tbody>
</table>
<p><strong>Strengths:</strong></p>
<ul>
<li>Community-driven quality content</li>
<li>Full Blender files with materials</li>
<li>Good for learning/modifying</li>
<li>Many architectural and vehicle models</li>
</ul>
<p><strong>Note:</strong> Usually requires export to GLTF for web use.</p>
<p><strong>2026 update:</strong> BlendSwap changed hands and relaunched in May 2026 with a rebuilt, faster site. The library survived the move and everything stays free under Creative Commons licenses.</p>
<hr>
<h3>Poly Pizza &amp; Icosa Gallery</h3>
<p><strong>Best for:</strong> Low-poly 3D models, the spiritual successors to Google Poly</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://poly.pizza">poly.pizza</a> · <a href="https://icosa.gallery">icosa.gallery</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>Mostly CC-BY (attribution), with a CC0 subset on Poly Pizza</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>Poly Pizza: 10,600+ models (its own count, September 2026), including the archived &quot;Poly by Google&quot; collection</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>GLTF/GLB, OBJ</td>
</tr>
</tbody>
</table>
<p>Google Poly shut down in June 2021, but its low-poly catalog lives on. Poly Pizza hosts the archived &quot;Poly by Google&quot; collection plus thousands of new community models, and the open-source, non-profit Icosa Gallery continues the open-asset mission. Most models are CC-BY (credit the creator), with some CC0. Great for fast, stylized props that match the low-poly look of Kenney and Quaternius.</p>
<hr>
<h3>Synty Studios (POLYGON)</h3>
<p><strong>Best for:</strong> Professional stylized low-poly assets with consistent art style</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://syntystore.com">syntystore.com</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>Royalty-Free (5 seats per purchase)</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>A large catalog of themed POLYGON packs</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>FBX, Unity, Unreal</td>
</tr>
<tr>
<td><strong>Price</strong></td>
<td>Paid (with free starter packs)</td>
</tr>
</tbody>
</table>
<p><strong>Strengths:</strong></p>
<ul>
<li>Industry-standard stylized low-poly aesthetic</li>
<li>Consistent art style across ALL packs (mix and match!)</li>
<li>Professional quality, optimized for games</li>
<li>Characters have Mecanim rigs (Unity)</li>
</ul>
<p><strong>Free packs available:</strong></p>
<ul>
<li><strong>POLYGON Starter Pack</strong> - Sample of props, characters, environment pieces</li>
<li><strong>POLYGON Santa Pack</strong> - Holiday-themed assets</li>
<li><strong>POLYGON Easter Pack</strong> - Seasonal decorations</li>
<li><strong>POLYGON Xmas Pack</strong> - Christmas/winter assets</li>
</ul>
<p><strong>Popular paid packs:</strong></p>
<ul>
<li>POLYGON City, Town, Fantasy, Sci-Fi</li>
<li>POLYGON Nature, Farm, Prototype</li>
<li>POLYGON Knights, Samurai, Pirates</li>
</ul>
<p><strong>Best for:</strong></p>
<ul>
<li>Indie games needing cohesive art direction</li>
<li>Rapid prototyping with polished look</li>
<li>Mobile and web games (optimized poly counts)</li>
</ul>
<p><strong>Note:</strong> Free packs are great for testing the style. Paid packs are excellent value for the quantity and quality.</p>
<hr>
<h3>CGTrader</h3>
<p><strong>Best for:</strong> Large marketplace with many free models</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://cgtrader.com">cgtrader.com</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>Royalty-Free (per model)</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>Over 150,000 free models in the <a href="https://www.cgtrader.com/free-3d-models">free section</a> alone</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>FBX, OBJ, GLTF, Blend</td>
</tr>
<tr>
<td><strong>API</strong></td>
<td>No</td>
</tr>
</tbody>
</table>
<p><strong>Strengths:</strong></p>
<ul>
<li>Large variety from professional artists</li>
<li>Many free models available</li>
<li>Filter by price and format</li>
<li>Both low-poly and high-detail models</li>
</ul>
<p><strong>License terms:</strong></p>
<ul>
<li>✅ Use in commercial games/apps</li>
<li>✅ Modify and adapt</li>
<li>❌ Cannot resell the model files</li>
<li>❌ Cannot allow users to extract model files</li>
</ul>
<p><strong>Search tips:</strong></p>
<ul>
<li>Filter by &quot;Free&quot; in price</li>
<li>Check polygon count</li>
<li>Look for &quot;game-ready&quot; or &quot;low-poly&quot; tags</li>
<li>Verify format compatibility (GLTF preferred for web, and you can <a href="/tools/fbx-to-glb">convert FBX or OBJ to GLB</a> in the browser)</li>
</ul>
<p><strong>Categories:</strong></p>
<ul>
<li>Vehicles, Characters, Architecture</li>
<li>Weapons, Furniture, Nature</li>
<li>Sci-Fi, Fantasy, Modern</li>
</ul>
<hr>
<h3>TurboSquid</h3>
<p><strong>Best for:</strong> Professional 3D model marketplace</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://turbosquid.com">turbosquid.com</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>Royalty-Free / Editorial (check each)</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>A professional catalog with a large free section</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>FBX, OBJ, MAX, Blend</td>
</tr>
<tr>
<td><strong>Quality</strong></td>
<td>Professional grade</td>
</tr>
</tbody>
</table>
<p><strong>Strengths:</strong></p>
<ul>
<li>High-quality professional models</li>
<li>Established marketplace (since 2000)</li>
<li>CheckMate certification for quality</li>
<li>Many free models available</li>
</ul>
<p><strong>License terms:</strong></p>
<ul>
<li>✅ Commercial use allowed (Royalty-Free)</li>
<li>⚠️ Check for &quot;Editorial Only&quot; label (restricted use)</li>
<li>⚠️ Check for Depicted IP (branded items)</li>
<li>❌ Cannot redistribute raw model files</li>
</ul>
<p><strong>Cautions:</strong></p>
<ul>
<li>&quot;Editorial Only&quot; models cannot be used commercially</li>
<li>Models with brand logos need additional clearance</li>
<li>Free models may have less indemnification protection</li>
</ul>
<p><strong>Search tips:</strong></p>
<ul>
<li>Filter by &quot;Free&quot; and desired format</li>
<li>Avoid &quot;Editorial Use Only&quot; for commercial projects</li>
<li>Check polygon count for web games</li>
<li>Prefer models without recognizable brand IP</li>
</ul>
<hr>
<h3>Poly Ronin</h3>
<p><strong>Best for:</strong> Stylized low-poly themed packs (currently offline)</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://polyronin.com">polyronin.com</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>⚠️ Was never clearly stated</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>Themed low-poly packs (samurai and viking weapons, desert village, market stalls, city vehicles)</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>FBX, GLB, OBJ</td>
</tr>
<tr>
<td><strong>Price</strong></td>
<td>Free</td>
</tr>
</tbody>
</table>
<p>::: warning Site status (September 2026)
Poly Ronin still isn't responding as of September 2026, and it looks like the site has gone offline for good. This is a good example of why unclear licensing is risky: the packs never had documented commercial-use terms, and now there's no creator to ask. If you grabbed packs earlier, treat them as prototype-only. For production, use sources with clear licensing like Kenney, Quaternius, or Poly Pizza instead.
:::</p>
<hr>
<h2>Textures &amp; Materials</h2>
<figure class="sample-sheet">
<a href="/assets?providers=polyhaven"><img src="https://cdn.cinevva.com/guides/samples/samples-polyhaven-textures.jpg" alt="Sample CC0 PBR materials from Poly Haven rendered on spheres: brick, wood, metal, cobblestone, fabric, grass, marble and concrete" loading="lazy"></a>
<figcaption>Poly Haven material previews: brick, wood, metal, cobblestone, fabric, grass, marble and concrete, all CC0. <a href="/assets?providers=polyhaven">Search Poly Haven in the asset library</a>.</figcaption>
</figure>
<h3>Poly Haven (Textures)</h3>
<p><strong>Best for:</strong> Photorealistic PBR textures</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://polyhaven.com/textures">polyhaven.com/textures</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>CC0</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>850+ PBR texture sets</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>JPG, PNG, EXR</td>
</tr>
</tbody>
</table>
<p><strong>Includes:</strong></p>
<ul>
<li>Diffuse/Albedo maps</li>
<li>Normal maps</li>
<li>Roughness maps</li>
<li>Displacement maps</li>
<li>AO maps</li>
</ul>
<p><strong>Common categories:</strong></p>
<ul>
<li>Wood, Metal, Stone, Concrete</li>
<li>Fabric, Leather, Ground</li>
<li>Brick, Tile, Organic</li>
</ul>
<hr>
<h3>AmbientCG</h3>
<p><strong>Best for:</strong> Large variety of CC0 PBR materials</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://ambientcg.com">ambientcg.com</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>CC0</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>2,000+ materials</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>JPG, PNG</td>
</tr>
<tr>
<td><strong>API</strong></td>
<td>Yes - no key required</td>
</tr>
<tr>
<td><strong>Direct Download</strong></td>
<td>✅ Yes - 1K resolution ZIP</td>
</tr>
</tbody>
</table>
<p><strong>Strengths:</strong></p>
<ul>
<li>Similar quality to Poly Haven</li>
<li>More variety in some categories</li>
<li>Tileable textures</li>
<li>Multiple resolutions (1K-8K)</li>
</ul>
<p><strong>Good for:</strong></p>
<ul>
<li>Ground textures (grass, dirt, gravel)</li>
<li>Building materials</li>
<li>Fabric and upholstery</li>
<li>Metallic surfaces</li>
</ul>
<hr>
<h2>Sprites &amp; 2D Art</h2>
<figure class="sample-sheet">
<a href="/assets?providers=kenney"><img src="https://cdn.cinevva.com/guides/samples/samples-kenney-sprites.jpg" alt="Sample CC0 2D sprites from Kenney: astronaut character, spaceships, pixel tiles, heart emote and alien" loading="lazy"></a>
<figcaption>A taste of Kenney's 2D range: characters, ships, tiles and emotes, all CC0. <a href="/assets?providers=kenney">Browse Kenney sprites in the asset library</a>.</figcaption>
</figure>
<h3>Kenney (2D)</h3>
<p><strong>Best for:</strong> Complete game UI and sprite sets</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>License</strong></td>
<td>CC0</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>100+ 2D packs</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>PNG, SVG</td>
</tr>
</tbody>
</table>
<p><strong>Great 2D packs:</strong></p>
<ul>
<li>UI Pack (buttons, windows, icons)</li>
<li>Platformer Pack (characters, tiles)</li>
<li>Roguelike Pack (dungeon tiles)</li>
<li>Space Shooter Pack</li>
<li>Puzzle Pack</li>
</ul>
<hr>
<h3><a href="http://itch.io">itch.io</a></h3>
<p><strong>Best for:</strong> Unique art styles from indie creators</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://itch.io/game-assets">itch.io/game-assets</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>Various (check each)</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>53,500+ free asset packs (53,571 as of September 2026)</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>Various</td>
</tr>
</tbody>
</table>
<p><strong>Strengths:</strong></p>
<ul>
<li>Incredible variety of art styles</li>
<li>Many free packs available</li>
<li>Support indie artists</li>
<li>Filter by &quot;Free&quot; and type</li>
</ul>
<p><strong>Search tips:</strong></p>
<ul>
<li>Filter by price: Free</li>
<li>Popular tags: pixel-art, sprites, tileset, characters</li>
<li>Check license terms carefully</li>
</ul>
<hr>
<h3>OpenGameArt</h3>
<p><strong>Best for:</strong> Community-contributed 2D art</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://opengameart.org">opengameart.org</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>Various (CC0, CC-BY, GPL)</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>Thousands</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>PNG, SVG</td>
</tr>
<tr>
<td><strong>Direct Download</strong></td>
<td>⚠️ Links to content page</td>
</tr>
</tbody>
</table>
<p><strong>Strengths:</strong></p>
<ul>
<li>Active community</li>
<li>Good for retro/pixel art</li>
<li>Many complete game art sets</li>
<li>Also has audio and 3D</li>
</ul>
<p><strong>Categories:</strong></p>
<ul>
<li>2D Art &gt; Tiles, Characters, UI</li>
<li>Textures</li>
<li>Concept Art</li>
</ul>
<hr>
<h2>Audio &amp; Sound Effects</h2>
<h3>Freesound</h3>
<p><strong>Best for:</strong> Massive sound effects library</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://freesound.org">freesound.org</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>Various per-sound CC licenses (~52% CC0 as of September 2026, per Freesound's own <a href="https://freesound.org/search/?q=">license filter</a>)</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>730,000+ sounds</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>WAV, MP3, FLAC</td>
</tr>
<tr>
<td><strong>API</strong></td>
<td>Yes - requires free API key</td>
</tr>
<tr>
<td><strong>Direct Download</strong></td>
<td>✅ Yes - MP3 preview (with API key)</td>
</tr>
</tbody>
</table>
<p><strong>Strengths:</strong></p>
<ul>
<li>Largest free sound library</li>
<li>Advanced search filters</li>
<li>Community ratings</li>
<li>Waveform previews</li>
</ul>
<p><strong>Tips:</strong></p>
<ul>
<li>Filter by license before downloading (CC0 preferred for games)</li>
<li>Filter by sample rate (44.1kHz standard)</li>
<li>Many variations of common sounds</li>
<li>Great for sound design</li>
</ul>
<p><strong>Common searches:</strong></p>
<ul>
<li>Footsteps, explosions, UI clicks</li>
<li>Ambient loops, background noise</li>
<li>Voice/vocal effects</li>
<li>Musical instruments</li>
</ul>
<hr>
<h3>Kenney (Audio)</h3>
<p><strong>Best for:</strong> Game-ready sound effects packs</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>License</strong></td>
<td>CC0</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>10 audio packs</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>WAV, OGG</td>
</tr>
</tbody>
</table>
<p><strong>Packs include:</strong></p>
<ul>
<li>UI Audio (clicks, hovers, notifications)</li>
<li>RPG Audio (combat, spells, environment)</li>
<li>Sci-Fi Audio (weapons, computers, doors)</li>
<li>Impact Sounds</li>
<li>Music Jingles</li>
</ul>
<hr>
<h3>Sonniss GDC</h3>
<p><strong>Best for:</strong> Professional, royalty-free sound effects in bulk</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://sonniss.com/gameaudiogdc">sonniss.com/gameaudiogdc</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>Royalty-free for commercial use (Sonniss GDC Game Audio Bundle)</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>A decade of yearly bundles of pro sound effects, 2015 to 2026</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>WAV (full quality), MP3/OGG previews</td>
</tr>
</tbody>
</table>
<p><strong>Strengths:</strong></p>
<ul>
<li>Studio-grade sound effects recorded by professional sound designers</li>
<li>Royalty-free, so no attribution and no per-use fees for commercial games</li>
<li>Released every year as part of the GDC Game Audio Bundle (the <a href="https://gdc.sonniss.com/">2026 edition</a> landed in March with 7.47 GB across 347 WAV files, and every bundle back to 2015 stays downloadable)</li>
<li>Covers foley, ambiences, weapons, creatures, vehicles, and UI</li>
</ul>
<p><strong>Note:</strong> The license covers media production only (games, film, TV, interactive projects) and explicitly prohibits using the sounds for AI/ML training. Previews stream as MP3/OGG inside Cinevva, and full-resolution WAVs download from Sonniss.</p>
<p>::: tip Searchable in Cinevva
Sonniss is integrated into the Cinevva Assets panel - search the GDC bundle right next to Freesound.
:::</p>
<hr>
<h2>Music</h2>
<h3>Jamendo</h3>
<p><strong>Best for:</strong> Discovering music, not for free commercial use</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://www.jamendo.com">jamendo.com</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>CC for personal listening, paid sync license for commercial projects</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>Hundreds of thousands of independent music tracks</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>MP3</td>
</tr>
<tr>
<td><strong>API</strong></td>
<td>Yes - requires a free client ID</td>
</tr>
</tbody>
</table>
<p><strong>Strengths:</strong></p>
<ul>
<li>Huge catalog of independent music across every genre</li>
<li>Great for finding a mood or an artist before you license</li>
<li>Searchable by genre, mood, and tempo</li>
</ul>
<p><strong>Note:</strong> Jamendo trips people up. The free downloads are for personal listening, and putting a track in a game you sell requires a per-track license from Jamendo Licensing, their paid sync program. Treat it as a paid source with a free preview, not a free source.</p>
<p>::: tip Searchable in Cinevva
Jamendo is integrated into the Cinevva Assets panel for background music and soundtracks.
:::</p>
<hr>
<h2>Character Animations</h2>
<figure class="sample-sheet">
<a href="/assets"><img src="https://cdn.cinevva.com/guides/samples/samples-characters.jpg" alt="Rig-ready CC0 low-poly characters: knight, shiba inu, skeleton warrior, astronaut and barbarian" loading="lazy"></a>
<figcaption>Rig-ready CC0 characters from KayKit, Quaternius, PolygonalMind and Kenney that pair with these animation libraries. <a href="/assets">Grab one from the asset library</a>.</figcaption>
</figure>
<h3>Mixamo</h3>
<p><strong>Best for:</strong> Professional character animations</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://mixamo.com">mixamo.com</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>Free for commercial use, no redistribution of raw files</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>Thousands of animations plus stock characters</td>
</tr>
<tr>
<td><strong>Formats</strong></td>
<td>FBX</td>
</tr>
<tr>
<td><strong>Account</strong></td>
<td>Adobe account required</td>
</tr>
</tbody>
</table>
<p>::: warning Reliability note (September 2026)
Mixamo is still online and free, but Adobe has not actively maintained it. Since a mid-2025 outage the account page and auto-rigger have been intermittently broken, outage threads kept appearing on Adobe's Mixamo forum into 2026, and Adobe support has told users it is effectively unsupported. It has not been shut down, but treat it as a fragile source: download and back up the animations you need rather than relying on it long-term. For auto-rigging specifically, Cinevva's browser <a href="/tools/rigger">Auto Rigger</a> covers humanoids and quadrupeds, and the open MIT-licensed UniRig model is worth watching as a self-hosted replacement.
:::</p>
<p><strong>Strengths:</strong></p>
<ul>
<li>Professional quality animations</li>
<li>Retargetable to custom characters</li>
<li>Huge animation library</li>
<li>Also has rigged characters</li>
</ul>
<p><strong>Categories:</strong></p>
<ul>
<li>Locomotion (walk, run, jump)</li>
<li>Combat (punch, kick, sword)</li>
<li>Dance</li>
<li>Gestures</li>
<li>Actions (sit, climb, grab)</li>
<li>Reactions (hit, death, fall)</li>
</ul>
<p><strong>Workflow:</strong></p>
<ol>
<li>Create free Adobe account</li>
<li>Upload your character or use theirs</li>
<li>Browse/preview animations</li>
<li>Download as FBX</li>
<li>Convert to GLTF for web</li>
</ol>
<hr>
<h2>Shaders &amp; Effects</h2>
<h3>Shadertoy</h3>
<p><strong>Best for:</strong> GLSL shader inspiration and effects</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://shadertoy.com">shadertoy.com</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>Various (check each)</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>A huge community archive of shaders</td>
</tr>
<tr>
<td><strong>Format</strong></td>
<td>GLSL source code</td>
</tr>
</tbody>
</table>
<p><strong>Strengths:</strong></p>
<ul>
<li>Mind-blowing visual effects</li>
<li>Learn shader techniques</li>
<li>Real-time preview</li>
<li>Active community</li>
</ul>
<p><strong>Popular categories:</strong></p>
<ul>
<li>Raymarching/fractals</li>
<li>Post-processing effects</li>
<li>Procedural textures</li>
<li>Particle systems</li>
<li>Water/fire/smoke</li>
</ul>
<p><strong>Note:</strong> Shaders need adaptation for Three.js/WebGL use.</p>
<hr>
<h3>Three.js Examples</h3>
<p><strong>Best for:</strong> Ready-to-use Three.js code</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://threejs.org/examples">threejs.org/examples</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>MIT</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>580+ examples (588 in the <a href="https://threejs.org/examples/">examples index</a>, September 2026)</td>
</tr>
<tr>
<td><strong>Format</strong></td>
<td>JavaScript source</td>
</tr>
</tbody>
</table>
<p><strong>Strengths:</strong></p>
<ul>
<li>Official examples</li>
<li>Copy-paste ready</li>
<li>Well documented</li>
<li>Cover all features</li>
</ul>
<p><strong>Useful examples:</strong></p>
<ul>
<li>Post-processing effects</li>
<li>Custom shaders</li>
<li>Physics integration</li>
<li>Model loaders</li>
<li>Animation systems</li>
</ul>
<hr>
<h3>pmndrs/vanilla</h3>
<p><strong>Best for:</strong> Three.js materials and effects</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Website</strong></td>
<td><a href="https://github.com/pmndrs/vanilla">github.com/pmndrs/vanilla</a></td>
</tr>
<tr>
<td><strong>License</strong></td>
<td>MIT</td>
</tr>
<tr>
<td><strong>Assets</strong></td>
<td>A set of ready-made materials and effects</td>
</tr>
<tr>
<td><strong>Package</strong></td>
<td><code>@pmndrs/vanilla</code></td>
</tr>
</tbody>
</table>
<p><strong>Includes:</strong></p>
<ul>
<li>MeshReflectorMaterial</li>
<li>MeshDistortMaterial</li>
<li>MeshWobbleMaterial</li>
<li>Caustics</li>
<li>Sparkles</li>
<li>Soft shadows</li>
</ul>
<hr>
<h2>Generating Assets with AI</h2>
<p>By 2026, generating an asset is often faster than hunting for the right free one. A few options worth knowing:</p>
<ul>
<li><strong>3D models:</strong> Meshy and Tripo turn text or an image into a textured, riggable mesh. Meshy's free-tier outputs are CC BY 4.0 (commercial use with attribution, per its <a href="https://www.meshy.ai/pricing">pricing page</a>), while Tripo's commercial rights come with paid plans, so check each tool's terms. Open, self-hostable options include Tencent's Hunyuan3D 2.1, Microsoft's MIT-licensed TRELLIS.2 (December 2025), and Roblox's open-sourced Cube 3D. Note that Hunyuan3D 2.1's license excludes the EU, UK, and South Korea, so check terms before shipping. Our <a href="/guides/ai-3d-model-generators">best AI 3D model generators</a> guide compares all of these on output quality, topology, and licensing.</li>
<li><strong>Textures and images:</strong> open image models like FLUX.2 and Qwen-Image generate tileable textures and concept art, and the freely-commercial weights are the FLUX.2 klein 4B (Apache 2.0) and Qwen-Image variants.</li>
<li><strong>Audio:</strong> Stable Audio 3.0 (May 2026, with open-weight Small-SFX, Small-Music, and Medium models under the Stability Community License) and the MIT-licensed ACE-Step 1.5 (February 2026) cover music and SFX with open weights, while ElevenLabs is the strongest hosted option (commercial rights on paid plans).</li>
</ul>
<p>The licensing on AI-generated assets is still settling, so confirm the model's output-rights terms before using anything commercially. For the full rundown of which models to use, see our <a href="/guides/frontier-gen-ai-models">best open-source generative AI models for games</a> guide. Cinevva has <a href="/tools/hunyuan3d#prompt=a%20low%20poly%20treasure%20chest%20with%20gold%20coins">text-to-3D</a>, text-to-image, <a href="/tools/music">music</a>, and <a href="/tools/skybox">skybox</a> generation built in, so you can generate and drop assets straight into your game without leaving the editor.</p>
<h2>Asset Type Cheat Sheet</h2>
<h3>I need a spaceship</h3>
<ol>
<li><strong>Quick &amp; easy:</strong> Kenney Space Kit (CC0)</li>
<li><strong>Stylized:</strong> Quaternius Ultimate Spaceships (CC0)</li>
<li><strong>Professional stylized:</strong> Synty POLYGON Sci-Fi (Royalty-Free, paid)</li>
<li><strong>Detailed:</strong> Sketchfab search &quot;spaceship downloadable&quot; (check license)</li>
</ol>
<h3>I need a consistent art style for my whole game</h3>
<ol>
<li><strong>Synty POLYGON</strong> - All packs share the same aesthetic, mix and match freely</li>
<li><strong>Kenney</strong> - CC0, cohesive game-ready style within packs</li>
<li><strong>Quaternius</strong> - CC0, cute low-poly style</li>
</ol>
<h3>I need realistic textures</h3>
<ol>
<li><strong>Poly Haven</strong> - Best quality, CC0</li>
<li><strong>AmbientCG</strong> - More variety, CC0</li>
</ol>
<h3>I need sound effects</h3>
<ol>
<li><strong>Kenney Audio Packs</strong> - Quick game sounds, CC0</li>
<li><strong>Freesound</strong> - Specific sounds, various licenses</li>
</ol>
<h3>I need character animations</h3>
<ol>
<li><strong>Mixamo</strong> - Professional quality, requires an Adobe account (but see the 2026 reliability note above, and back up what you download)</li>
<li><strong>Quaternius Universal Animation Library</strong> - 250+ CC0 clips on a retargetable humanoid rig, or <a href="/tools/animations">retarget them in the browser</a></li>
</ol>
<h3>I need pixel art</h3>
<ol>
<li><strong><a href="http://itch.io">itch.io</a></strong> - Filter by &quot;pixel-art&quot; and &quot;Free&quot;</li>
<li><strong>OpenGameArt</strong> - 2D Art category</li>
<li><strong>Kenney</strong> - 2D packs</li>
</ol>
<h3>I need UI elements</h3>
<ol>
<li><strong>Kenney UI Pack</strong> - Complete set, CC0</li>
<li><strong><a href="http://itch.io">itch.io</a></strong> - Search &quot;UI&quot; or &quot;GUI&quot;</li>
</ol>
<h3>I need a wide variety of random models</h3>
<ol>
<li><strong>CGTrader</strong> - Filter by &quot;Free&quot;, huge variety</li>
<li><strong>TurboSquid</strong> - Professional quality, check license type</li>
<li><strong>Sketchfab</strong> - 4M+ models, filter by downloadable</li>
</ol>
<hr>
<h2>License Guide</h2>
<h3>CC0 (Public Domain)</h3>
<ul>
<li>✅ Use commercially</li>
<li>✅ Modify</li>
<li>✅ No attribution needed</li>
<li>✅ No restrictions</li>
</ul>
<p><strong>Providers:</strong> Poly Haven, Kenney, Quaternius, AmbientCG</p>
<h3>Royalty-Free License</h3>
<ul>
<li>✅ Use commercially (in your games/apps)</li>
<li>✅ Modify and adapt</li>
<li>✅ No ongoing royalties</li>
<li>❌ Cannot resell the raw model files</li>
<li>❌ Cannot let users extract the model</li>
</ul>
<p><strong>Providers:</strong> Synty POLYGON, CGTrader, TurboSquid</p>
<p><strong>Note:</strong> &quot;Royalty-Free&quot; means you pay once (or get it free) and can use it without paying per-use fees. It does NOT mean the asset is public domain.</p>
<h3>CC-BY (Attribution)</h3>
<ul>
<li>✅ Use commercially</li>
<li>✅ Modify</li>
<li>⚠️ Must credit the author</li>
<li>✅ Otherwise unrestricted</li>
</ul>
<p><strong>Providers:</strong> Many Sketchfab, BlendSwap, OpenGameArt</p>
<h3>CC-BY-SA (ShareAlike)</h3>
<ul>
<li>✅ Use commercially</li>
<li>✅ Modify</li>
<li>⚠️ Must credit author</li>
<li>⚠️ Derivatives must use same license</li>
</ul>
<h3>CC-BY-NC (Non-Commercial)</h3>
<ul>
<li>❌ Cannot use commercially</li>
<li>✅ Can use in free games</li>
<li>⚠️ Check if your game has ads/IAP</li>
</ul>
<h3>Editorial Use Only</h3>
<ul>
<li>❌ Cannot use commercially</li>
<li>✅ News, education, commentary only</li>
<li>⚠️ Common on TurboSquid for branded items</li>
</ul>
<p><strong>Tip:</strong> When possible, prefer CC0 to avoid attribution requirements in your game credits. Royalty-Free is also safe for commercial games.</p>
<hr>
<h2>Workflow Tips</h2>
<h3>1. Check the license first</h3>
<p>Before downloading, verify the license allows your intended use.</p>
<h3>2. Optimize for web</h3>
<ul>
<li>Keep models under 100K polygons</li>
<li>Use compressed textures (JPG for diffuse, PNG for transparency)</li>
<li>Audio: Use MP3 or OGG, not WAV for production</li>
<li>Run heavy models through a <a href="/tools/glb-optimizer">GLB optimizer</a> to compress geometry and resize textures before you ship</li>
</ul>
<h3>3. Organize your assets</h3>
<pre><code>assets/
├── models/
│   ├── characters/
│   └── props/
├── textures/
│   ├── environment/
│   └── ui/
├── audio/
│   ├── music/
│   └── sfx/
└── sprites/
</code></pre>
<h3>4. Keep attribution records</h3>
<p>Even for CC0, it's nice to track where assets came from:</p>
<pre><code>CREDITS.md
- Spaceship model: Quaternius (CC0)
- Wood texture: Poly Haven (CC0)
- Laser sound: Freesound user &quot;xyz&quot; (CC-BY)
</code></pre>
<h3>5. Test performance</h3>
<p>Load assets in your game early to check:</p>
<ul>
<li>File sizes (affects load time)</li>
<li>Polygon counts (affects FPS)</li>
<li>Texture resolutions (affects memory)</li>
</ul>
<p>You can read all three off a downloaded model in a <a href="/tools/glb-viewer">glTF inspector</a> before it ever reaches your project.</p>
<hr>
<h2>Summary Table</h2>
<table>
<thead>
<tr>
<th>Provider</th>
<th>Types</th>
<th>License</th>
<th>Best For</th>
<th style="text-align:center">In Cinevva</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Poly Haven</strong></td>
<td>Models, Textures, HDRIs</td>
<td>CC0</td>
<td>Professional quality</td>
<td style="text-align:center">✅</td>
</tr>
<tr>
<td><strong>Kenney</strong></td>
<td>Models, Sprites, Audio, UI</td>
<td>CC0</td>
<td>Game-ready assets</td>
<td style="text-align:center">✅</td>
</tr>
<tr>
<td><strong>Quaternius</strong></td>
<td>Models</td>
<td>CC0</td>
<td>Stylized low-poly</td>
<td style="text-align:center">✅</td>
</tr>
<tr>
<td><strong>Poly Pizza / Icosa</strong></td>
<td>Models</td>
<td>CC-BY / CC0</td>
<td>Low-poly, Google Poly archive</td>
<td style="text-align:center">-</td>
</tr>
<tr>
<td><strong>Synty POLYGON</strong></td>
<td>Models, Characters</td>
<td>Royalty-Free</td>
<td>Consistent stylized art</td>
<td style="text-align:center">✅</td>
</tr>
<tr>
<td><strong>Sketchfab</strong></td>
<td>Models</td>
<td>Various</td>
<td>Wide variety</td>
<td style="text-align:center">✅</td>
</tr>
<tr>
<td><strong>BlenderKit</strong></td>
<td>Models, Materials, HDRIs</td>
<td>Royalty-Free / CC0</td>
<td>Big in-app library</td>
<td style="text-align:center">✅</td>
</tr>
<tr>
<td><strong>Fab (Epic)</strong></td>
<td>Models, Materials, VFX, Audio</td>
<td>Standard / CC</td>
<td>Free Megascans, game-ready assets</td>
<td style="text-align:center">-</td>
</tr>
<tr>
<td><strong>CGTrader</strong></td>
<td>Models</td>
<td>Royalty-Free</td>
<td>Marketplace variety</td>
<td style="text-align:center">✅</td>
</tr>
<tr>
<td><strong>AmbientCG</strong></td>
<td>Textures, HDRIs</td>
<td>CC0</td>
<td>PBR materials</td>
<td style="text-align:center">✅</td>
</tr>
<tr>
<td><strong>OpenGameArt</strong></td>
<td>2D, Audio, Textures</td>
<td>Various</td>
<td>Community content</td>
<td style="text-align:center">✅</td>
</tr>
<tr>
<td><strong>Freesound</strong></td>
<td>Audio</td>
<td>Various</td>
<td>Sound effects</td>
<td style="text-align:center">✅</td>
</tr>
<tr>
<td><strong>Sonniss GDC</strong></td>
<td>Audio</td>
<td>Royalty-Free</td>
<td>Pro sound effects in bulk</td>
<td style="text-align:center">✅</td>
</tr>
<tr>
<td><strong>Jamendo</strong></td>
<td>Music</td>
<td>CC personal / paid sync</td>
<td>Discovering music (paid for commercial)</td>
<td style="text-align:center">✅</td>
</tr>
<tr>
<td><strong>TurboSquid</strong></td>
<td>Models</td>
<td>Royalty-Free</td>
<td>Professional quality</td>
<td style="text-align:center">-</td>
</tr>
<tr>
<td><strong>Mixamo</strong></td>
<td>Animations</td>
<td>Free</td>
<td>Character animations</td>
<td style="text-align:center">-</td>
</tr>
<tr>
<td><strong><a href="http://itch.io">itch.io</a></strong></td>
<td>Sprites, Various</td>
<td>Various</td>
<td>Indie art styles</td>
<td style="text-align:center">-</td>
</tr>
<tr>
<td><strong>BlendSwap</strong></td>
<td>Blender Models</td>
<td>Various</td>
<td>Complex models</td>
<td style="text-align:center">-</td>
</tr>
<tr>
<td><strong>Three.js Examples</strong></td>
<td>Code/Shaders</td>
<td>MIT</td>
<td>Three.js features</td>
<td style="text-align:center">-</td>
</tr>
<tr>
<td><strong>Shadertoy</strong></td>
<td>Shaders</td>
<td>Various</td>
<td>Visual effects</td>
<td style="text-align:center">-</td>
</tr>
</tbody>
</table>
<hr>
<p>The providers marked ✅ are searchable directly through Cinevva's integrated asset library. Open the Assets panel to search across all of them at once. The rest are external sources worth bookmarking for assets Cinevva doesn't index yet.</p>
<h2>Common Questions</h2>
<h3>Where can I find free 3D models for games?</h3>
<p>Poly Haven, Kenney, and Quaternius are the best starting points for free, game-ready 3D models, all under CC0 so you can use them commercially with no attribution. For more variety, Sketchfab and BlendSwap have huge libraries under mixed licenses. Always check the license on the individual model before shipping.</p>
<h3>Are free game assets okay to use in commercial games?</h3>
<p>Most are, but it depends on the license. CC0 assets (Poly Haven, Kenney, Quaternius, AmbientCG) are public domain and free for commercial use with no attribution. CC-BY requires crediting the creator. CC-BY-NC and Editorial-Only assets cannot be used in commercial games. The License Guide section above breaks down each one.</p>
<h3>What is the best site for free game sound effects?</h3>
<p>Freesound has the largest library of free sound effects, though licenses vary per clip, so check each one. Kenney offers smaller but fully CC0 audio packs that are safe for any commercial project with zero attribution requirements.</p>
<h3>Where can I get free character animations?</h3>
<p>Mixamo is the go-to source for free character animations and auto-rigging. Upload or pick a character, choose from thousands of motion-capture animations, and export them ready for your engine, all free with an Adobe account. The Quaternius Universal Animation Library is the CC0 alternative, with 250+ retargetable clips and no redistribution limits. If you'd rather stay in the browser and keep everything CC0, our <a href="/tools/rigger">Auto Rigger</a> fits the skeleton and our <a href="/tools/animations">character animation library</a> retargets 260 free clips onto your own rigged model.</p>
<h3>Which free game asset sites are CC0?</h3>
<p>Poly Haven, Kenney, Quaternius, KayKit, and AmbientCG publish everything under CC0, so nothing from them needs attribution even in a commercial game. Freesound is about 52% CC0 as of September 2026 and OpenGameArt, Sketchfab, and BlenderKit each have a CC0 filter, so you can restrict those to CC0 results too. Everything else on this page (<a href="http://itch.io">itch.io</a> packs, Fab, CGTrader, TurboSquid, Mixamo) is per-item or royalty-free rather than CC0, which is fine for shipping a game but not for redistributing the files.</p>
<p><BuildCta
  title="Or describe the game and get the assets placed for you"
  desc="Cinevva searches free CC0 packs and drops the props into a playable scene."
  prompt="Build a low poly dungeon crawl using free 3D props with torches and treasure" /></p>
<h2>Related</h2>
<ul>
<li><a href="/game-assets/">Free game assets by category</a>: 35 browsable pages of CC0 and Creative Commons models, textures, sprites, sounds and HDRIs</li>
<li><a href="/guides/free-3d-model-sites">Best Free 3D Model Sites for Games</a>: the 3D sources in depth</li>
<li><a href="/guides/sketchfab-polyhaven-kenney">Sketchfab vs Poly Haven vs Kenney</a>: the three big free 3D sources head to head</li>
<li><a href="/guides/free-2d-sprites-tilesets">Free 2D Sprites, Pixel Art and Tilesets</a>: the 2D sources in depth</li>
<li><a href="/guides/free-textures-hdris-materials">Free PBR Textures, Materials and HDRIs</a>: the texture sources in depth</li>
<li><a href="/guides/free-sound-effects-music">Free Sound Effects and Music for Games</a>: the audio sources in depth</li>
<li><a href="/guides/free-character-animations-rigging">Free Character Animations and Auto-Rigging</a>: Mixamo and its alternatives</li>
<li><a href="/guides/ai-3d-model-generators">Best AI 3D Model Generators</a>: generate models instead of searching</li>
<li><a href="/guides/ai-asset-generators-games">Best AI Asset Generators for Games</a>: the full generation pipeline across 3D, textures, and audio</li>
<li><a href="/guides/vibe-coding-game-prompts">100 AI Game Prompt Ideas You Can Build in One Click</a>: steal an idea and have it playable in about a minute</li>
<li><a href="/guides/game-asset-licenses">Game Asset Licenses Explained</a>: understanding CC0, CC-BY, Royalty-Free, and other licenses</li>
<li><a href="/guides/game-dev-courses">Online Game Development Courses</a>: courses on 3D modeling in Blender and game art</li>
<li><a href="/tutorials/pixel-art-rendering">Pixel art rendering</a>: rendering sprite sheets and pixel art in the browser</li>
<li><a href="/tutorials/streaming-asset-loading">Streaming asset loading</a>: loading and caching game assets progressively</li>
<li><a href="/guides/threejs-usdc-tech-report">Three.js + USDC in the Browser</a>: loading USD 3D assets in Three.js</li>
</ul>
<style scoped>
.sample-sheet { margin: 1.25rem 0; }
.sample-sheet > a { display: block; }
.sample-sheet img { width: 100%; border-radius: 10px; border: 1px solid var(--vp-c-divider); display: block; }
.sample-sheet figcaption { font-size: 0.9rem; color: var(--vp-c-text-2); margin: 0.5rem 0 0; }
</style>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Best Online Game Development Courses (2026 Guide)]]></title>
            <link>https://app.cinevva.com/guides/game-dev-courses</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/game-dev-courses</guid>
            <pubDate>Sun, 18 Jan 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[The best online game development courses in 2026 for Unity, Unreal, Godot, game design, art, and audio, with credibility checks, student reviews, and pricing.]]></description>
            <content:encoded><![CDATA[<h1>Best Online Game Development Courses (2026 Guide)</h1>
<p>Online courses for learning game development. This guide covers engine-specific courses, game design theory, specialized skills (art, audio), and platform comparisons, with credibility assessments, student reviews, and pricing details.</p>
<p>::: tip Looking for Free Assets Instead?
Check out our <a href="/guides/game-assets-guide">Where to Find Free Game Assets</a> guide for 3D models, textures, audio, and more.
:::</p>
<h2>Quick Reference</h2>
<table>
<thead>
<tr>
<th>Goal</th>
<th>Best Option</th>
<th>Price Range</th>
<th>Rating</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Unity Beginner</strong></td>
<td><a href="http://GameDev.tv">GameDev.tv</a> Complete Unity 3D (Udemy)</td>
<td>$12–30 (sale)</td>
<td>⭐ 4.7/5</td>
</tr>
<tr>
<td><strong>Unity Formal Credential</strong></td>
<td>Michigan State Specialization (Coursera)</td>
<td>$49/month</td>
<td>⭐ 4.7/5</td>
</tr>
<tr>
<td><strong>Unreal Engine C++</strong></td>
<td>Stephen Ulibarri UE5 Course (Udemy)</td>
<td>$15–30 (sale)</td>
<td>⭐ 4.8/5</td>
</tr>
<tr>
<td><strong>Godot Engine</strong></td>
<td>GDQuest Bundles</td>
<td>$84–216</td>
<td>⭐ 4.8/5</td>
</tr>
<tr>
<td><strong>Game Design Theory</strong></td>
<td>Harvard CS50 Game Dev (archived, free)</td>
<td>Free</td>
<td>⭐ 4.6/5</td>
</tr>
<tr>
<td><strong>3D Modeling for Games</strong></td>
<td>Complete Blender Creator (Udemy)</td>
<td>$15–30 (sale)</td>
<td>⭐ 4.7/5</td>
</tr>
<tr>
<td><strong>Game Audio</strong></td>
<td>Berklee Game Audio Certificate</td>
<td>~$4,500</td>
<td>⭐ 4.8/5</td>
</tr>
<tr>
<td><strong>Free Official Training</strong></td>
<td>Unity Learn Pathways</td>
<td>Free</td>
<td>⭐ 4.5/5</td>
</tr>
</tbody>
</table>
<hr>
<h2>Game Engine Courses</h2>
<h3>Unity</h3>
<h4><a href="http://GameDev.tv">GameDev.tv</a> Complete Unity Developer 3D</h4>
<p><strong>Best for:</strong> Beginners wanting hands-on project-based learning</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Platform</strong></td>
<td>Udemy</td>
</tr>
<tr>
<td><strong>Price</strong></td>
<td>$139 list / <strong>$12–30 on sale</strong></td>
</tr>
<tr>
<td><strong>Duration</strong></td>
<td>~27 hours video + projects</td>
</tr>
<tr>
<td><strong>Rating</strong></td>
<td>⭐ 4.7/5 (460,000+ students)</td>
</tr>
<tr>
<td><strong>Last Updated</strong></td>
<td>Unity 6 (2025)</td>
</tr>
</tbody>
</table>
<p><strong>What You'll Build:</strong></p>
<ul>
<li>5 complete games from scratch</li>
<li>Fundamentals of C# programming</li>
<li>3D physics, AI, and game mechanics</li>
</ul>
<p><strong>Strengths:</strong></p>
<ul>
<li>✅ Excellent for absolute beginners</li>
<li>✅ Project-based learning (you build real games)</li>
<li>✅ Large community for Q&amp;A support</li>
<li>✅ Updated regularly for new Unity versions</li>
<li>✅ Lifetime access once purchased</li>
</ul>
<p><strong>Weaknesses:</strong></p>
<ul>
<li>⚠️ Some sections can feel slow-paced</li>
<li>⚠️ Full price is overpriced (always buy on sale)</li>
<li>⚠️ Less depth on advanced topics like optimization</li>
</ul>
<p><strong>Student Reviews:</strong></p>
<blockquote>
<p>&quot;Great course for beginners. I went from knowing nothing to having a portfolio of games.&quot; — Reddit r/unity</p>
</blockquote>
<blockquote>
<p>&quot;Instructor explains concepts clearly. The project approach keeps you motivated.&quot; — Udemy review</p>
</blockquote>
<p><strong>Credibility:</strong> <a href="http://GameDev.tv">GameDev.tv</a> is one of the most established game development education providers. Founded by Ben Tristem and Rick Davidson, they've trained over 2 million students. They're transparent about retiring outdated courses and maintain active community forums.</p>
<hr>
<h4>Michigan State Game Design and Development with Unity Specialization</h4>
<p><strong>Best for:</strong> Those wanting university credentials and structured learning</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Platform</strong></td>
<td>Coursera</td>
</tr>
<tr>
<td><strong>Price</strong></td>
<td>Free to audit / <strong>$49/month for certificate</strong></td>
</tr>
<tr>
<td><strong>Duration</strong></td>
<td>~2 months (10 hrs/week)</td>
</tr>
<tr>
<td><strong>Rating</strong></td>
<td>⭐ 4.7/5</td>
</tr>
<tr>
<td><strong>Institution</strong></td>
<td>Michigan State University</td>
</tr>
</tbody>
</table>
<p><strong>Curriculum (five courses, built in Unity):</strong></p>
<ul>
<li>Game Design and Development 1: 2D Shooter</li>
<li>Game Design and Development 2: 2D Platformer</li>
<li>Game Design and Development 3: 3D Shooter</li>
<li>Game Design and Development 4: 3D Platformer</li>
<li>Capstone Project</li>
</ul>
<p><strong>Strengths:</strong></p>
<ul>
<li>✅ University-backed credential</li>
<li>✅ Hands-on: you build five complete Unity game projects</li>
<li>✅ Can audit for free (no certificate)</li>
<li>✅ Rigorous academic approach</li>
<li>✅ Includes business/entrepreneurship module</li>
</ul>
<p><strong>Weaknesses:</strong></p>
<ul>
<li>⚠️ Slower paced than Udemy courses</li>
<li>⚠️ Less hands-on coding than other options</li>
<li>⚠️ Certificate requires paid subscription</li>
</ul>
<p><strong>Best For:</strong> Career changers who need formal credentials, or those who prefer structured academic learning.</p>
<hr>
<h4>Unity Learn Pathways</h4>
<p><strong>Best for:</strong> Budget learners wanting official Unity training</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Platform</strong></td>
<td>Unity Learn (<a href="http://learn.unity.com">learn.unity.com</a>)</td>
</tr>
<tr>
<td><strong>Price</strong></td>
<td><strong>Free</strong></td>
</tr>
<tr>
<td><strong>Pathways</strong></td>
<td>Junior Programmer, Creative Core, VR Development</td>
</tr>
<tr>
<td><strong>Format</strong></td>
<td>Self-paced tutorials + projects</td>
</tr>
</tbody>
</table>
<p><strong>Available Pathways:</strong></p>
<ul>
<li><strong>Junior Programmer</strong> — Complete beginner to job-ready</li>
<li><strong>Creative Core</strong> — Art and design focus</li>
<li><strong>Unity Essentials</strong> — Quick fundamentals overview</li>
<li><strong>VR Development</strong> — Virtual reality specialization</li>
</ul>
<p><strong>Strengths:</strong></p>
<ul>
<li>✅ Completely free</li>
<li>✅ Official Unity content (always up-to-date)</li>
<li>✅ Project-based with portfolio pieces</li>
<li>✅ Built-in progress tracking</li>
<li>✅ Unity certifications available</li>
</ul>
<p><strong>Weaknesses:</strong></p>
<ul>
<li>⚠️ Less engaging than video courses</li>
<li>⚠️ Requires more self-discipline</li>
<li>⚠️ Community support less active than paid courses</li>
</ul>
<hr>
<h3>Unreal Engine</h3>
<h4>Stephen Ulibarri's UE5 C++ Developer Course</h4>
<p><strong>Best for:</strong> Serious developers wanting C++ mastery</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Platform</strong></td>
<td>Udemy</td>
</tr>
<tr>
<td><strong>Price</strong></td>
<td>$175 list / <strong>$15–30 on sale</strong></td>
</tr>
<tr>
<td><strong>Duration</strong></td>
<td>~50+ hours</td>
</tr>
<tr>
<td><strong>Rating</strong></td>
<td>⭐ 4.8/5</td>
</tr>
<tr>
<td><strong>Project</strong></td>
<td>Complete Action-RPG</td>
</tr>
</tbody>
</table>
<p><strong>What You'll Learn:</strong></p>
<ul>
<li>Unreal Engine 5 from scratch</li>
<li>C++ programming for games</li>
<li>Blueprints visual scripting</li>
<li>Advanced gameplay systems (combat, AI, inventory)</li>
</ul>
<p><strong>Strengths:</strong></p>
<ul>
<li>✅ Deep C++ coverage (rare for game dev courses)</li>
<li>✅ Builds a substantial portfolio project</li>
<li>✅ Well-paced for intermediate learners</li>
<li>✅ Covers both Blueprints AND C++</li>
</ul>
<p><strong>Weaknesses:</strong></p>
<ul>
<li>⚠️ Assumes some programming background</li>
<li>⚠️ Very long course (commitment required)</li>
<li>⚠️ UE versions change frequently</li>
</ul>
<p><strong>Student Reviews:</strong></p>
<blockquote>
<p>&quot;Best Unreal course I've found. Stephen explains the 'why' not just the 'what'.&quot; — Udemy</p>
</blockquote>
<blockquote>
<p>&quot;Finally understand C++ in Unreal after struggling with other resources.&quot; — Reddit r/unrealengine</p>
</blockquote>
<hr>
<h4>Coursera Unreal Engine for Beginners Specialization</h4>
<p><strong>Best for:</strong> Complete beginners wanting structured intro</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Platform</strong></td>
<td>Coursera</td>
</tr>
<tr>
<td><strong>Price</strong></td>
<td>$199 (sale) / $399 regular</td>
</tr>
<tr>
<td><strong>Duration</strong></td>
<td>3 courses, ~4 weeks each</td>
</tr>
<tr>
<td><strong>Certificate</strong></td>
<td>Yes</td>
</tr>
</tbody>
</table>
<p><strong>Course Sequence:</strong></p>
<ol>
<li>World Building in Unreal</li>
<li>Characters &amp; Interiors</li>
<li>Cameras &amp; Production</li>
</ol>
<p><strong>Strengths:</strong></p>
<ul>
<li>✅ Beginner-friendly (no coding required initially)</li>
<li>✅ Focuses on visual/creative aspects</li>
<li>✅ Good for artists entering game dev</li>
<li>✅ University-style certificate</li>
</ul>
<p><strong>Weaknesses:</strong></p>
<ul>
<li>⚠️ Less programming depth</li>
<li>⚠️ More expensive than Udemy alternatives</li>
<li>⚠️ Better for environment artists than programmers</li>
</ul>
<hr>
<h4>LinkedIn Learning: Unreal Engine 5 Essential Training</h4>
<p><strong>Best for:</strong> Quick skill refreshers</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Platform</strong></td>
<td>LinkedIn Learning</td>
</tr>
<tr>
<td><strong>Price</strong></td>
<td>Subscription (~$30/month) / Free trial available</td>
</tr>
<tr>
<td><strong>Duration</strong></td>
<td>~3 hours</td>
</tr>
<tr>
<td><strong>Rating</strong></td>
<td>⭐ 4.8/5</td>
</tr>
</tbody>
</table>
<p><strong>Strengths:</strong></p>
<ul>
<li>✅ High production quality</li>
<li>✅ Great for quick overviews</li>
<li>✅ Covers UE5.6 features</li>
<li>✅ Certificate adds to LinkedIn profile</li>
</ul>
<p><strong>Weaknesses:</strong></p>
<ul>
<li>⚠️ Too short for deep learning</li>
<li>⚠️ Subscription model (not lifetime access)</li>
<li>⚠️ Better as supplement than primary learning</li>
</ul>
<hr>
<h3>Godot Engine</h3>
<h4>GDQuest Study Programs</h4>
<p><strong>Best for:</strong> Serious Godot learners wanting structured training</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Platform</strong></td>
<td><a href="http://school.gdquest.com">school.gdquest.com</a></td>
</tr>
<tr>
<td><strong>Price</strong></td>
<td>$84–216 (bundles)</td>
</tr>
<tr>
<td><strong>Format</strong></td>
<td>Interactive courses + community</td>
</tr>
<tr>
<td><strong>Rating</strong></td>
<td>⭐ 4.8/5</td>
</tr>
</tbody>
</table>
<p><strong>Available Bundles:</strong></p>
<ul>
<li><strong>Starter Kit</strong> (~$84) — 2D and 3D basics</li>
<li><strong>From Zero to Pro</strong> (~$216) — Complete learning path</li>
</ul>
<p><strong>Strengths:</strong></p>
<ul>
<li>✅ Highest quality Godot-specific courses</li>
<li>✅ Interactive exercises (not just videos)</li>
<li>✅ Updated for Godot 4.x</li>
<li>✅ Strong Discord community</li>
<li>✅ Created by well-known Godot contributors</li>
</ul>
<p><strong>Weaknesses:</strong></p>
<ul>
<li>⚠️ More expensive than Udemy alternatives</li>
<li>⚠️ Smaller community than Unity/Unreal courses</li>
</ul>
<p><strong>Credibility:</strong> GDQuest team are recognized Godot contributors and educators. They've created official Godot documentation and are respected in the community.</p>
<hr>
<h4>Complete Godot 4 Beginner Course (Udemy)</h4>
<p><strong>Best for:</strong> Budget-conscious beginners</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Platform</strong></td>
<td>Udemy</td>
</tr>
<tr>
<td><strong>Price</strong></td>
<td>$80–100 list / <strong>$15–25 on sale</strong></td>
</tr>
<tr>
<td><strong>Duration</strong></td>
<td>~20 hours</td>
</tr>
<tr>
<td><strong>Projects</strong></td>
<td>Space shooter, platformer, top-down zombie game</td>
</tr>
</tbody>
</table>
<p><strong>Strengths:</strong></p>
<ul>
<li>✅ Affordable during sales</li>
<li>✅ Builds 3 complete games</li>
<li>✅ GDScript focused (Godot's native language)</li>
<li>✅ Good for total beginners</li>
</ul>
<p><strong>Weaknesses:</strong></p>
<ul>
<li>⚠️ Less depth than GDQuest</li>
<li>⚠️ Smaller support community</li>
</ul>
<hr>
<h4>Godot Dev Academy</h4>
<p><strong>Best for:</strong> Ongoing learners wanting subscription access</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Platform</strong></td>
<td><a href="http://godotdevacademy.com">godotdevacademy.com</a></td>
</tr>
<tr>
<td><strong>Price</strong></td>
<td><strong>$19.99/month</strong></td>
</tr>
<tr>
<td><strong>Access</strong></td>
<td>All courses included</td>
</tr>
</tbody>
</table>
<p><strong>Includes:</strong></p>
<ul>
<li>2D platformer courses</li>
<li>RPG development</li>
<li>Mobile game dev</li>
<li>Free beginner courses available</li>
</ul>
<p><strong>Best For:</strong> Those who plan to take multiple courses over time. Good value if you're committed to learning Godot long-term.</p>
<hr>
<h2>Game Design Theory</h2>
<h3>Harvard CS50's Introduction to Game Development</h3>
<p><strong>Best for:</strong> Foundational understanding of game programming concepts</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Platform</strong></td>
<td><a href="http://cs50.harvard.edu/games">cs50.harvard.edu/games</a> (archived)</td>
</tr>
<tr>
<td><strong>Price</strong></td>
<td><strong>Free</strong></td>
</tr>
<tr>
<td><strong>Duration</strong></td>
<td>12 weeks</td>
</tr>
<tr>
<td><strong>Status</strong></td>
<td>Archived (materials available, no new submissions)</td>
</tr>
</tbody>
</table>
<p><strong>What You'll Learn:</strong></p>
<ul>
<li>2D and 3D graphics fundamentals</li>
<li>Animation and sound design</li>
<li>Collision detection and physics</li>
<li>Multiple engines: LÖVE2D, Unity, Lua</li>
</ul>
<p><strong>Games You'll Clone:</strong></p>
<ul>
<li>Pong, Flappy Bird, Breakout</li>
<li>Super Mario Bros., Legend of Zelda</li>
<li>Angry Birds, Pokémon</li>
<li>3D helicopter game, Portal</li>
</ul>
<p><strong>Strengths:</strong></p>
<ul>
<li>✅ Harvard-quality instruction</li>
<li>✅ Completely free</li>
<li>✅ Excellent theory and fundamentals</li>
<li>✅ Multiple engine exposure</li>
<li>✅ All materials still accessible</li>
</ul>
<p><strong>Weaknesses:</strong></p>
<ul>
<li>⚠️ Course officially retired (June 2024)</li>
<li>⚠️ No new certificates or grading</li>
<li>⚠️ Some technology dated (older Unity versions)</li>
<li>⚠️ Requires self-direction</li>
</ul>
<p><strong>Note:</strong> Harvard has launched a new course, CS50's Introduction to 2D Game Development (CS50 2D), replacing the retired version. It focuses on 2D games built with Lua and the LOVE 2D framework (Pong, Flappy Bird, Breakout, Match 3, Super Mario Bros., Legend of Zelda, Angry Birds, Pokemon). Lectures are posted on YouTube and you can register for a certificate at <a href="http://cs50.edx.org/2d">cs50.edx.org/2d</a>. Sessions run on a rolling basis, so check the course page for current dates.</p>
<p><strong>Student Reviews:</strong></p>
<blockquote>
<p>&quot;One of the best introductions to game programming I've seen. Covers fundamentals that transfer to any engine.&quot; — Reddit r/cs50</p>
</blockquote>
<blockquote>
<p>&quot;Even without the certificate, the knowledge gained is worth it.&quot; — Course review</p>
</blockquote>
<hr>
<h3>West Virginia University M.A. in Game Design (Online)</h3>
<p><strong>Best for:</strong> Formal graduate education</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Platform</strong></td>
<td>WVU Online</td>
</tr>
<tr>
<td><strong>Price</strong></td>
<td>~$22,650 total</td>
</tr>
<tr>
<td><strong>Duration</strong></td>
<td>2 years (flexible)</td>
</tr>
<tr>
<td><strong>Format</strong></td>
<td>Fully asynchronous online</td>
</tr>
<tr>
<td><strong>Credential</strong></td>
<td>Master's Degree</td>
</tr>
</tbody>
</table>
<p><strong>Curriculum Highlights:</strong></p>
<ul>
<li>Game Theory (cultural and aesthetic analysis)</li>
<li>Game Narrative and Storytelling</li>
<li>Player Experience Design</li>
<li>Capstone game prototype</li>
</ul>
<p><strong>Best For:</strong> Those seeking academic credentials for teaching, research, or leadership positions in game development.</p>
<hr>
<h2>Specialized Skills</h2>
<h3>3D Modeling for Games</h3>
<h4>Complete Blender Creator (<a href="http://GameDev.tv">GameDev.tv</a>)</h4>
<p><strong>Best for:</strong> Beginners learning Blender for game asset creation</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Platform</strong></td>
<td>Udemy</td>
</tr>
<tr>
<td><strong>Price</strong></td>
<td>$140 list / <strong>$15–30 on sale</strong></td>
</tr>
<tr>
<td><strong>Duration</strong></td>
<td>~30 hours</td>
</tr>
<tr>
<td><strong>Rating</strong></td>
<td>⭐ 4.7/5 (200,000+ students)</td>
</tr>
<tr>
<td><strong>Updated</strong></td>
<td>Blender 4.4 (2025)</td>
</tr>
</tbody>
</table>
<p><strong>What You'll Learn:</strong></p>
<ul>
<li>Blender fundamentals</li>
<li>3D modeling techniques</li>
<li>UV unwrapping and texturing</li>
<li>Basic animation</li>
<li>Exporting to game engines</li>
</ul>
<p><strong>Strengths:</strong></p>
<ul>
<li>✅ Massive student community</li>
<li>✅ Project-based approach</li>
<li>✅ Regularly updated for new Blender versions</li>
<li>✅ Great for complete beginners</li>
</ul>
<p><strong>Weaknesses:</strong></p>
<ul>
<li>⚠️ Very general (not game-specific pipeline)</li>
<li>⚠️ Long course commitment</li>
</ul>
<hr>
<h4>Blender 3D Modeling for Games — Complete Workflow (Udemy)</h4>
<p><strong>Best for:</strong> Game-specific asset pipeline</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Platform</strong></td>
<td>Udemy</td>
</tr>
<tr>
<td><strong>Price</strong></td>
<td>$15–40 on sale</td>
</tr>
<tr>
<td><strong>Focus</strong></td>
<td>Game-ready asset workflow</td>
</tr>
</tbody>
</table>
<p><strong>What You'll Learn:</strong></p>
<ul>
<li>Block-out to final asset</li>
<li>Game-optimized topology</li>
<li>Texturing and materials</li>
<li>Engine export workflow</li>
</ul>
<p><strong>Best For:</strong> Those specifically targeting game asset creation rather than general Blender skills.</p>
<hr>
<h3>Game Audio &amp; Sound Design</h3>
<h4>Berklee Online: Game Audio Design Certificate</h4>
<p><strong>Best for:</strong> Professional-level game audio training</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Platform</strong></td>
<td>Berklee Online</td>
</tr>
<tr>
<td><strong>Price</strong></td>
<td>$4,725 total (or $4,253 paid in full) / $1,575 per course, plus $175 registration</td>
</tr>
<tr>
<td><strong>Duration</strong></td>
<td>3 courses, 12 weeks each</td>
</tr>
<tr>
<td><strong>Start Date</strong></td>
<td>Term-based enrollment (sessions run on a rolling basis, check the course page for current dates)</td>
</tr>
</tbody>
</table>
<p><strong>Curriculum:</strong></p>
<ul>
<li>Game Audio 101 — Fundamentals</li>
<li>Sound production and dialogue</li>
<li>Audio integration and interactive scoring with Wwise</li>
<li>Building a professional demo reel</li>
</ul>
<p>Berklee's certificate is now structured as three courses: Game Design Principles, Game Audio 101, and Game Audio Production with Wwise (9 credits total).</p>
<p><strong>Strengths:</strong></p>
<ul>
<li>✅ Industry-recognized credential</li>
<li>✅ Learn industry-standard tools (Wwise, FMOD)</li>
<li>✅ Berklee reputation in music education</li>
<li>✅ Portfolio-building focus</li>
</ul>
<p><strong>Weaknesses:</strong></p>
<ul>
<li>⚠️ Expensive</li>
<li>⚠️ Time-intensive (professional commitment)</li>
</ul>
<p><strong>Best For:</strong> Those pursuing game audio as a career.</p>
<hr>
<h4>Game Audio Essentials (Udemy)</h4>
<p><strong>Best for:</strong> Budget-friendly introduction to game audio</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Platform</strong></td>
<td>Udemy</td>
</tr>
<tr>
<td><strong>Price</strong></td>
<td>$50–100 list / <strong>$15–25 on sale</strong></td>
</tr>
<tr>
<td><strong>Duration</strong></td>
<td>~10 hours</td>
</tr>
<tr>
<td><strong>Updated</strong></td>
<td>July 2025</td>
</tr>
</tbody>
</table>
<p><strong>What You'll Learn:</strong></p>
<ul>
<li>Foley and sound effect creation</li>
<li>Audio integration in Unity/Unreal/Godot</li>
<li>Looping and spatial audio</li>
<li>Practical sound design techniques</li>
</ul>
<p><strong>Strengths:</strong></p>
<ul>
<li>✅ Affordable</li>
<li>✅ Hands-on practical skills</li>
<li>✅ Covers multiple game engines</li>
<li>✅ Good for indie developers</li>
</ul>
<hr>
<h4>Domestika: Designing Video Game Soundtracks</h4>
<p><strong>Best for:</strong> Composers wanting to enter game music</p>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Platform</strong></td>
<td>Domestika</td>
</tr>
<tr>
<td><strong>Price</strong></td>
<td>$10–60 (varies with sales)</td>
</tr>
<tr>
<td><strong>Duration</strong></td>
<td>~3 hours</td>
</tr>
<tr>
<td><strong>Focus</strong></td>
<td>Music composition for games</td>
</tr>
</tbody>
</table>
<p><strong>Best For:</strong> Musicians wanting to transition into game soundtrack composition.</p>
<hr>
<h2>Platform Links</h2>
<table>
<thead>
<tr>
<th>Platform</th>
<th>URL</th>
<th>Best For</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Udemy</strong></td>
<td><a href="https://www.udemy.com/">udemy.com</a></td>
<td>Affordable courses on sale, wide selection</td>
</tr>
<tr>
<td><strong>Coursera</strong></td>
<td><a href="https://www.coursera.org/">coursera.org</a></td>
<td>University courses, formal credentials</td>
</tr>
<tr>
<td><strong>Unity Learn</strong></td>
<td><a href="https://learn.unity.com/">learn.unity.com</a></td>
<td>Free official Unity training</td>
</tr>
<tr>
<td><strong>GDQuest</strong></td>
<td><a href="https://school.gdquest.com/">school.gdquest.com</a></td>
<td>Godot-focused courses from core contributors</td>
</tr>
<tr>
<td><strong>Pluralsight</strong></td>
<td><a href="https://www.pluralsight.com/">pluralsight.com</a></td>
<td>Technical depth, skill assessments</td>
</tr>
<tr>
<td><strong>Skillshare</strong></td>
<td><a href="https://www.skillshare.com/">skillshare.com</a></td>
<td>Creative/design focus, affordable subscription</td>
</tr>
<tr>
<td><strong>Berklee Online</strong></td>
<td><a href="https://online.berklee.edu/">online.berklee.edu</a></td>
<td>Professional game audio certification</td>
</tr>
<tr>
<td><strong>edX / Harvard CS50</strong></td>
<td><a href="https://cs50.harvard.edu/games/">cs50.harvard.edu/games</a></td>
<td>Free game development fundamentals</td>
</tr>
<tr>
<td><strong>Domestika</strong></td>
<td><a href="https://www.domestika.org/">domestika.org</a></td>
<td>Affordable creative courses</td>
</tr>
<tr>
<td><strong>LinkedIn Learning</strong></td>
<td><a href="https://www.linkedin.com/learning/">linkedin.com/learning</a></td>
<td>Professional development, Unreal Engine</td>
</tr>
<tr>
<td><strong>Blender</strong></td>
<td><a href="https://www.blender.org/">blender.org</a></td>
<td>Free 3D modeling software</td>
</tr>
</tbody>
</table>
<hr>
<h2>Platform Comparison</h2>
<h3><a href="https://www.udemy.com/">Udemy</a></h3>
<table>
<thead>
<tr>
<th>Pros</th>
<th>Cons</th>
</tr>
</thead>
<tbody>
<tr>
<td>✅ Massive course selection</td>
<td>⚠️ Quality varies widely</td>
</tr>
<tr>
<td>✅ Lifetime access</td>
<td>⚠️ List prices are inflated</td>
</tr>
<tr>
<td>✅ Frequent sales ($10–30)</td>
<td>⚠️ Some courses become outdated</td>
</tr>
<tr>
<td>✅ 30-day refund policy</td>
<td>⚠️ No formal credentials</td>
</tr>
<tr>
<td>✅ Large Q&amp;A communities</td>
<td>⚠️ No live instruction</td>
</tr>
</tbody>
</table>
<p><strong>Buying Tip:</strong> NEVER pay full price on Udemy. Sales occur every few weeks with discounts of 80–90%.</p>
<hr>
<h3>Coursera</h3>
<table>
<thead>
<tr>
<th>Pros</th>
<th>Cons</th>
</tr>
</thead>
<tbody>
<tr>
<td>✅ University partnerships</td>
<td>⚠️ Subscription model for certificates</td>
</tr>
<tr>
<td>✅ Formal credentials</td>
<td>⚠️ Slower paced</td>
</tr>
<tr>
<td>✅ Free audit option</td>
<td>⚠️ Less hands-on than Udemy</td>
</tr>
<tr>
<td>✅ Structured learning paths</td>
<td>⚠️ Can be more expensive</td>
</tr>
<tr>
<td>✅ Academic rigor</td>
<td></td>
</tr>
</tbody>
</table>
<p><strong>Best For:</strong> Those who need credentials for employment or prefer structured academic learning.</p>
<hr>
<h3>Pluralsight</h3>
<table>
<thead>
<tr>
<th>Pros</th>
<th>Cons</th>
</tr>
</thead>
<tbody>
<tr>
<td>✅ Technical depth</td>
<td>⚠️ Subscription only (~$29/month)</td>
</tr>
<tr>
<td>✅ Learning paths with assessments</td>
<td>⚠️ Some outdated content</td>
</tr>
<tr>
<td>✅ Unity partnership</td>
<td>⚠️ Less beginner-friendly</td>
</tr>
<tr>
<td>✅ Skill assessments</td>
<td>⚠️ Less community interaction</td>
</tr>
</tbody>
</table>
<p><strong>Best For:</strong> Intermediate developers wanting technical depth and career-focused learning paths.</p>
<hr>
<h3>Skillshare</h3>
<table>
<thead>
<tr>
<th>Pros</th>
<th>Cons</th>
</tr>
</thead>
<tbody>
<tr>
<td>✅ Affordable (~$168/year)</td>
<td>⚠️ Variable course quality</td>
</tr>
<tr>
<td>✅ Creative/design focus</td>
<td>⚠️ Less technical depth</td>
</tr>
<tr>
<td>✅ Good for beginners</td>
<td>⚠️ No formal credentials</td>
</tr>
<tr>
<td>✅ Short, digestible courses</td>
<td>⚠️ Subscription frustrations reported</td>
</tr>
</tbody>
</table>
<p><strong>Best For:</strong> Hobbyists and creative-focused learners exploring multiple topics.</p>
<hr>
<h3>Unity Learn</h3>
<table>
<thead>
<tr>
<th>Pros</th>
<th>Cons</th>
</tr>
</thead>
<tbody>
<tr>
<td>✅ Completely free</td>
<td>⚠️ Less engaging format</td>
</tr>
<tr>
<td>✅ Official and up-to-date</td>
<td>⚠️ Requires self-discipline</td>
</tr>
<tr>
<td>✅ Unity certification path</td>
<td>⚠️ Limited community support</td>
</tr>
<tr>
<td>✅ Project-based</td>
<td></td>
</tr>
</tbody>
</table>
<p><strong>Best For:</strong> Self-motivated learners on a budget wanting official Unity training.</p>
<hr>
<h2>Instructor Credibility Guide</h2>
<h3>Highly Regarded Instructors</h3>
<table>
<thead>
<tr>
<th>Instructor</th>
<th>Platform</th>
<th>Specialty</th>
<th>Why Trusted</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Ben Tristem / <a href="http://GameDev.tv">GameDev.tv</a></strong></td>
<td>Udemy</td>
<td>Unity, Unreal, Blender</td>
<td>1M+ students, transparent about course updates</td>
</tr>
<tr>
<td><strong>Stephen Ulibarri</strong></td>
<td>Udemy</td>
<td>Unreal C++</td>
<td>Deep technical knowledge, excellent explanations</td>
</tr>
<tr>
<td><strong>GDQuest Team</strong></td>
<td>GDQuest</td>
<td>Godot</td>
<td>Official Godot contributors</td>
</tr>
<tr>
<td><strong>Michigan State Faculty</strong></td>
<td>Coursera</td>
<td>Game Design</td>
<td>Academic credentials, research background</td>
</tr>
<tr>
<td><strong>Berklee Faculty</strong></td>
<td>Berklee Online</td>
<td>Game Audio</td>
<td>Industry professionals, Berklee reputation</td>
</tr>
</tbody>
</table>
<h3>Red Flags to Watch For</h3>
<ul>
<li>❌ Courses not updated in 2+ years</li>
<li>❌ Low ratings with specific complaints about outdated content</li>
<li>❌ Instructors with no visible portfolio or credentials</li>
<li>❌ Aggressive marketing without substance</li>
<li>❌ Courses that promise &quot;complete mastery&quot; in unrealistic timeframes</li>
</ul>
<hr>
<h2>Learning Path Recommendations</h2>
<h3>Complete Beginner → Job Ready (Unity)</h3>
<ol>
<li><strong>Start:</strong> Unity Learn Junior Programmer Pathway (Free)</li>
<li><strong>Build Skills:</strong> <a href="http://GameDev.tv">GameDev.tv</a> Complete Unity 3D ($20)</li>
<li><strong>Specialize:</strong> Choose focus area (2D, 3D, mobile)</li>
<li><strong>Portfolio:</strong> Build 3–5 complete games</li>
<li><strong>Credential (Optional):</strong> Unity Certification or Coursera Specialization</li>
</ol>
<p><strong>Estimated Cost:</strong> $20–150<br>
<strong>Timeframe:</strong> 6–12 months (part-time)</p>
<hr>
<h3>Artist → Game Developer</h3>
<ol>
<li><strong>Start:</strong> Complete Blender Creator (Udemy) — $20</li>
<li><strong>Game Pipeline:</strong> Blender for Games workflow course — $20</li>
<li><strong>Engine Basics:</strong> Unity/Unreal beginner course — $20</li>
<li><strong>Integration:</strong> Learn to import and use assets in-engine</li>
</ol>
<p><strong>Estimated Cost:</strong> $60–100<br>
<strong>Timeframe:</strong> 4–8 months</p>
<hr>
<h3>Programmer → Game Developer</h3>
<ol>
<li><strong>Start:</strong> Choose engine (Unity C# or Unreal C++)</li>
<li><strong>Foundation:</strong> Intermediate-level engine course</li>
<li><strong>Deep Dive:</strong> Advanced gameplay systems</li>
<li><strong>Portfolio:</strong> Build a substantial game project</li>
</ol>
<p><strong>Estimated Cost:</strong> $40–100<br>
<strong>Timeframe:</strong> 3–6 months (if already programming)</p>
<hr>
<h3>Hobbyist on Budget</h3>
<ol>
<li><strong>Start:</strong> Unity Learn or CS50 Game Dev (Free)</li>
<li><strong>Next Step:</strong> Wait for Udemy sale, buy one focused course ($15)</li>
<li><strong>Practice:</strong> Build small games, join game jams</li>
<li><strong>Community:</strong> Join Discord servers for feedback</li>
</ol>
<p><strong>Estimated Cost:</strong> $0–30<br>
<strong>Timeframe:</strong> Learn at your own pace</p>
<hr>
<h2>Price Comparison Summary</h2>
<table>
<thead>
<tr>
<th>Platform</th>
<th>Model</th>
<th>Typical Cost</th>
<th>Value Rating</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Unity Learn</strong></td>
<td>Free</td>
<td>$0</td>
<td>⭐⭐⭐⭐⭐</td>
</tr>
<tr>
<td><strong>CS50 Games</strong></td>
<td>Free (archived)</td>
<td>$0</td>
<td>⭐⭐⭐⭐</td>
</tr>
<tr>
<td><strong>Udemy</strong></td>
<td>One-time (sales)</td>
<td>$12–30</td>
<td>⭐⭐⭐⭐⭐</td>
</tr>
<tr>
<td><strong>GDQuest</strong></td>
<td>One-time</td>
<td>$84–216</td>
<td>⭐⭐⭐⭐</td>
</tr>
<tr>
<td><strong>Skillshare</strong></td>
<td>Subscription</td>
<td>$168/year</td>
<td>⭐⭐⭐</td>
</tr>
<tr>
<td><strong>Pluralsight</strong></td>
<td>Subscription</td>
<td>$349/year</td>
<td>⭐⭐⭐</td>
</tr>
<tr>
<td><strong>Coursera</strong></td>
<td>Subscription + courses</td>
<td>$49/month</td>
<td>⭐⭐⭐⭐</td>
</tr>
<tr>
<td><strong>LinkedIn Learning</strong></td>
<td>Subscription</td>
<td>$360/year</td>
<td>⭐⭐⭐</td>
</tr>
<tr>
<td><strong>Berklee Online</strong></td>
<td>Per course</td>
<td>$1,500+</td>
<td>⭐⭐⭐⭐ (professional)</td>
</tr>
<tr>
<td><strong>University Degrees</strong></td>
<td>Degree programs</td>
<td>$20,000+</td>
<td>Career-dependent</td>
</tr>
</tbody>
</table>
<hr>
<h2>Tips for Choosing Courses</h2>
<h3>1. Check the &quot;Last Updated&quot; Date</h3>
<p>Game engines evolve rapidly. A Unity 2020 course in 2026 will have significant differences from current versions. Look for courses updated within the last 12 months.</p>
<h3>2. Watch Free Preview Content</h3>
<p>Most platforms offer free previews. Evaluate:</p>
<ul>
<li>Teaching style and pace</li>
<li>Audio/video quality</li>
<li>Whether explanations make sense to you</li>
</ul>
<h3>3. Read Recent Reviews</h3>
<p>Sort reviews by most recent. Old 5-star reviews don't reflect current content quality.</p>
<h3>4. Verify Project Quality</h3>
<p>Look at what students build. Are the projects impressive? Would they work in a portfolio?</p>
<h3>5. Consider Community</h3>
<p>Courses with active Q&amp;A sections, Discord servers, or forums provide better support when you get stuck.</p>
<h3>6. Match Your Learning Style</h3>
<ul>
<li><strong>Visual learner:</strong> Video courses (Udemy, YouTube)</li>
<li><strong>Reader:</strong> Unity documentation, written tutorials</li>
<li><strong>Hands-on:</strong> Project-based courses, game jams</li>
<li><strong>Structured:</strong> University courses, specializations</li>
</ul>
<hr>
<h2>Summary Table</h2>
<table>
<thead>
<tr>
<th>Course</th>
<th>Platform</th>
<th>Price</th>
<th>Best For</th>
<th>Rating</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="http://GameDev.tv">GameDev.tv</a> Unity 3D</td>
<td>Udemy</td>
<td>$12–30</td>
<td>Unity beginners</td>
<td>⭐ 4.7</td>
</tr>
<tr>
<td>Michigan State Specialization</td>
<td>Coursera</td>
<td>$49/mo</td>
<td>Formal credentials</td>
<td>⭐ 4.7</td>
</tr>
<tr>
<td>Unity Learn Pathways</td>
<td>Unity</td>
<td>Free</td>
<td>Budget learners</td>
<td>⭐ 4.5</td>
</tr>
<tr>
<td>Stephen Ulibarri UE5</td>
<td>Udemy</td>
<td>$15–30</td>
<td>Unreal C++</td>
<td>⭐ 4.8</td>
</tr>
<tr>
<td>Coursera UE Specialization</td>
<td>Coursera</td>
<td>$199</td>
<td>UE beginners</td>
<td>⭐ 4.6</td>
</tr>
<tr>
<td>GDQuest Bundles</td>
<td>GDQuest</td>
<td>$84–216</td>
<td>Godot learners</td>
<td>⭐ 4.8</td>
</tr>
<tr>
<td>Godot Beginner Course</td>
<td>Udemy</td>
<td>$15–25</td>
<td>Budget Godot</td>
<td>⭐ 4.5</td>
</tr>
<tr>
<td>Harvard CS50 Games</td>
<td>edX (archived)</td>
<td>Free</td>
<td>Fundamentals</td>
<td>⭐ 4.6</td>
</tr>
<tr>
<td>Complete Blender Creator</td>
<td>Udemy</td>
<td>$15–30</td>
<td>3D modeling</td>
<td>⭐ 4.7</td>
</tr>
<tr>
<td>Berklee Game Audio</td>
<td>Berklee Online</td>
<td>$4,500</td>
<td>Pro audio</td>
<td>⭐ 4.8</td>
</tr>
<tr>
<td>Game Audio Essentials</td>
<td>Udemy</td>
<td>$15–25</td>
<td>Budget audio</td>
<td>⭐ 4.4</td>
</tr>
</tbody>
</table>
<hr>
<p>Ready to start learning? Pick a course that matches your budget, skill level, and preferred engine. The most important step is to <strong>start building games</strong>. Courses are just tools to help you get there faster.</p>
<h2>Common Questions</h2>
<h3>What is the best free game development course?</h3>
<p>The two strongest free options are Unity Learn Pathways and Harvard's CS50 game development courses. Unity Learn's Junior Programmer and Creative Core pathways are official, always current, and project-based, taking you from beginner toward job-ready at no cost. Harvard's CS50 Introduction to Game Development teaches fundamentals that transfer to any engine, and its materials stay free even though the original is archived, with a new CS50 2D course replacing it. Both are genuinely free, not trials.</p>
<h3>Is a game development degree worth it in 2026?</h3>
<p>It depends on your goal. A formal degree like WVU's online M.A. in Game Design (around $22,650) makes sense if you want academic credentials for teaching, research, or leadership roles. For landing a developer job, hiring usually comes down to your portfolio, and you can build one with Udemy courses on sale ($12 to $30), free Unity Learn pathways, and shipped projects for a tiny fraction of degree cost. The degree buys structure and credentials, not a guaranteed job.</p>
<h3>How long does it take to learn game development?</h3>
<p>Plan on several months of consistent effort rather than weeks. The learning paths here put a complete beginner going from zero to job-ready in Unity at roughly 6 to 12 months part-time. If you already program, 3 to 6 months is realistic. Coming from art, budget 4 to 8 months to add the engine and pipeline skills. The fastest way through is project-based: build small games and join game jams instead of only watching lectures.</p>
<h3>Should I learn Unity or Unreal first?</h3>
<p>For most beginners, Unity is the gentler starting point. It uses C#, has the deepest set of beginner courses (<a href="http://GameDev.tv">GameDev.tv</a>, the Michigan State specialization, and free Unity Learn pathways), and a huge community for when you get stuck. Unreal is worth starting with if you're aiming at high-fidelity 3D or console-style visuals, or if you already know C++. Stephen Ulibarri's UE5 course is the standout there, though it assumes some programming background. You can't go wrong either way, so pick the one whose courses and target games match what you want to build.</p>
<p>For more resources, check out:</p>
<ul>
<li><a href="/guides/game-assets-guide">Where to Find Free Game Assets</a></li>
<li><a href="/guides/game-jams-hackathons">Game Jams &amp; Hackathons Guide</a> — the best way to learn is to ship under pressure</li>
<li><a href="/guides/itch-io-launch-guide">How to Launch Your Game on itch.io</a></li>
<li><a href="/guides/web-game-engines-comparison">Web Game Engines Comparison</a> — picking the right engine before choosing a course</li>
<li><a href="/guides/game-asset-licenses">Game Asset Licenses Explained</a> — understanding licenses before using assets from courses</li>
<li><a href="/tutorials/canvas-2d-game-loop">Canvas 2D game loop</a> — start building without a course, free tutorial</li>
</ul>
<p><BuildCta
  title="The best first lesson is shipping something"
  desc="Make a game today, then take the course to understand what happened."
  prompt="Make my first game: a rolling ball maze with three levels" /></p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Game Jams & Hackathons Guide]]></title>
            <link>https://app.cinevva.com/guides/game-jams-hackathons</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/game-jams-hackathons</guid>
            <pubDate>Sun, 18 Jan 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Complete guide to game jams and hackathons - what they are, major events, why web games excel, and how Cinevva helps you launch your jam game]]></description>
            <content:encoded><![CDATA[<h1>Game Jams &amp; Hackathons Guide</h1>
<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;border-radius:8px;margin:1.5rem 0">
<iframe src="https://www.youtube.com/embed/btOlp4_d1tc" style="position:absolute;top:0;left:0;width:100%;height:100%;border:0" allow="accelerometer;autoplay;clipboard-write;encrypted-media;gyroscope;picture-in-picture" allowfullscreen></iframe>
</div>
<p style="font-size:0.9rem;color:var(--vp-c-text-2);margin-top:-0.5rem">5 tips to win game jams like GMTK and Ludum Dare</p>
<p>Game jams are where indie games are born. You create a game in 48-72 hours, get immediate feedback from thousands of players, and sometimes launch something that becomes a real hit. This guide covers what you need to know.</p>
<h2>What's a Game Jam?</h2>
<p>A game jam is a time-limited event where you create a game from scratch, usually around a theme announced at the start. Think of it as a hackathon for game developers. They typically last 48 hours to 30 days, with teams of one to four people, and the goal is a playable prototype.</p>
<p>Game jams aren't about creating polished, commercial products. They're about experimentation, creative problem-solving under constraints, and building something fun in a short time.</p>
<h2>Why They Matter</h2>
<p>For new developers, nothing beats shipping a complete game, even a small one. Imperfection is expected, so it's safe to experiment. Other participants play and rate your game, giving you instant feedback. And a finished jam game shows you can execute, not just talk.</p>
<p>For experienced developers, jams let you test ideas fast and validate concepts before committing months. Constraints spark creativity and break creative blocks. You meet collaborators, publishers, and players. And many successful indie games started as jam entries.</p>
<p>Celeste began as a Ludum Dare game. Superhot started as a 7-day prototype. Hollow Knight evolved from a jam concept. Minit originated from a 48-hour jam. Papers, Please was built for Ludum Dare 29.</p>
<h2>Major Game Jams in 2026</h2>
<h3>Global Events</h3>
<table>
<thead>
<tr>
<th>Event</th>
<th>When</th>
<th>Format</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Global Game Jam</strong></td>
<td>Late January</td>
<td>48 hours, local &amp; remote sites</td>
<td>Largest jam, 40,000+ participants worldwide. The 2026 edition (Jan 26-Feb 1) is where GGJ crosses 500,000 lifetime participants since it started, across roughly 800 sites in more than 100 countries.</td>
</tr>
<tr>
<td><strong>Ludum Dare</strong></td>
<td>April, October (approx.)</td>
<td>48h solo / 72h team</td>
<td>One of the oldest and most respected jams</td>
</tr>
<tr>
<td><strong>GMTK Game Jam</strong></td>
<td>Summer</td>
<td>48 hours</td>
<td>Huge viewership, 7,000+ entries typical</td>
</tr>
<tr>
<td><strong>js13kGames</strong></td>
<td>August-September</td>
<td>13KB limit, 30 days</td>
<td>Best for web developers</td>
</tr>
<tr>
<td><strong>Gamedev.js Jam</strong></td>
<td>April 13-26, 2026</td>
<td>13 days, HTML5 only</td>
<td>Prizes, accessible format</td>
</tr>
</tbody>
</table>
<h3>Ongoing &amp; Regular Jams on <a href="http://itch.io">itch.io</a></h3>
<table>
<thead>
<tr>
<th>Jam</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Brackeys Game Jam 2026.2</strong></td>
<td>7 days, thousands of participants, Aug 23-30, 2026</td>
</tr>
<tr>
<td><strong>Pirate Software Game Jam 18</strong></td>
<td>14 days, ~600+ participants</td>
</tr>
<tr>
<td><strong>Finally Finish Something 2026</strong></td>
<td>January, for completing WIPs</td>
</tr>
<tr>
<td><strong>2026 Annual Jam</strong></td>
<td>Year-long, relaxed rules</td>
</tr>
<tr>
<td><strong>Retro Game Jam 2026</strong></td>
<td>Feb 8-14, retro aesthetic focus</td>
</tr>
</tbody>
</table>
<p><strong>Find more:</strong> <a href="https://itch.io/jams">itch.io/jams</a> lists hundreds of active and upcoming jams.</p>
<hr>
<h2>Why Web Games Win Jams</h2>
<p>If you can make a browser-playable game, you have a massive advantage.</p>
<h3>Zero Friction</h3>
<p>Jam judges play dozens of games. With a downloadable game, they click download, wait for it, extract or install, find the executable, and launch. That's 5-10 minutes before they even start playing. With a web game, they click play and wait 2-5 seconds. They're already playing.</p>
<p>Every second of friction costs you plays, ratings, and rankings.</p>
<h3>Works Everywhere</h3>
<p>Web games run on Windows, Mac, Linux, and ChromeOS. They work on mobile if you support touch. You never have to write &quot;Sorry, Windows only&quot; in your description. You maximize your potential audience.</p>
<h3>Easy to Share</h3>
<p>You get a direct link to play. You can embed in tweets, Discord, and blogs. No sketchy &quot;Download from Google Drive&quot; links. Better for social media virality.</p>
<h3>Instant Updates</h3>
<p>Bug fix? Deploy in seconds. Found a balance issue? Patch it live. No &quot;v1.1 uploaded, please re-download&quot; messages.</p>
<h3>Technical Capabilities</h3>
<p>WebGL and WebGPU give you GPU-accelerated graphics. Web Audio API provides full sound support. LocalStorage and IndexedDB let you save games without a server. Service Workers make offline play possible. WebSockets enable multiplayer.</p>
<h2>Getting Your Jam Game Discovered</h2>
<p>Game jams generate thousands of games. After a jam, your game competes with thousands of other entries on <a href="http://itch.io">itch.io</a>, an overwhelming &quot;New&quot; feed, and players with limited time who skim.</p>
<p>Traditional solutions don't work well. Screenshots don't show gameplay. Trailers take hours to make and you're exhausted. Marketing requires energy you don't have.</p>
<h3>Short-Form Gameplay Works</h3>
<p>Record 15 seconds of gameplay showing the best moment, the core loop, the hook. Post it as a short-form video on TikTok, Reels, or YouTube Shorts and link back to where the game plays. Players scroll, watch, click, and play instantly, especially when the game itself runs in the browser.</p>
<p>Your game gets judged by its gameplay, not your marketing skills. You don't need time for trailers because 15-second clips are enough. You don't need to compete with AAA marketing because gameplay speaks for itself. And players don't need to download because web games play instantly.</p>
<h3>The Workflow</h3>
<p>During the jam, focus on making your game. If you're racing the clock or want a playable base fast, Cinevva can turn a prompt into a playable 3D web game in your browser that you publish as a shareable link, which you can embed or link from your <a href="http://itch.io">itch.io</a> page. In the last hour, record 2-3 quick gameplay clips.</p>
<p>After submission, submit to the jam normally, post your clips to social media, share the direct play link, and watch real players discover and play your game.</p>
<h2>Success Strategies</h2>
<h3>Before the Jam</h3>
<p>Prepare your tools. Test your engine, IDE, and art tools. Set up version control with Git. Have a project template ready. Practice importing assets and building basic mechanics.</p>
<p>Prepare yourself. Sleep well the night before. Stock up on food and drinks. Clear your schedule. Tell family or roommates you're going to be busy.</p>
<p>If you have a team, agree on communication (Discord works well), assign rough roles, and set expectations for availability.</p>
<h3>During the Jam</h3>
<p>In the first 2 hours, brainstorm and plan. Generate multiple ideas and pick the most achievable. Scope ruthlessly and cut by 50%. Document your core loop. Agree on visual style.</p>
<p>From hours 2 to 20, build the core. Get the main mechanic working first. Placeholder art is fine. No polish until the core works. Commit frequently.</p>
<p>From hours 20 to 40, make it playable. Add content like levels and enemies. Build basic UI with menu and game over screens. Add sound effects and music. Keep testing constantly.</p>
<p>In the final 8 hours, polish and ship. Fix critical bugs only. Do a final art pass. Write your description. Capture screenshots and a GIF. Submit early because you don't want to miss the deadline.</p>
<h3>After the Jam</h3>
<p>Immediately, rest because you earned it. Share on social media. Thank your teammates.</p>
<p>Within a week, play and rate other entries, respond to comments, collect feedback, and record gameplay clips.</p>
<p>Later, decide if you want to continue development, write a post-mortem devlog, and connect with people you met.</p>
<h3>Common Mistakes</h3>
<p>Scope creep happens from excitement. Write your features list early and stick to it. No sound happens when you leave it for last. Add placeholder sounds early. Unclear controls come from developer blindness. Include instructions and test with others. Broken builds come from rushing. Test exports early in the jam. Bad descriptions come from exhaustion. Draft yours before you're too tired.</p>
<h2>Making Web Games for Jams</h2>
<p>For 2D games, Phaser is the most popular HTML5 game framework. Pixi.js is a fast 2D renderer you can pair with your own logic. Godot has excellent HTML5 export.</p>
<p>For 3D games, Three.js is the most flexible WebGL library. Babylon.js is a full-featured 3D engine. PlayCanvas is web-native with a built-in editor.</p>
<p>For no-code or low-code, GDevelop is a visual game maker with web export. Construct makes powerful no-code HTML5 games.</p>
<h3>Optimization</h3>
<p>Keep loading time under 10 seconds by compressing assets and lazy loading. Show loading progress so players don't abandon. Test on Chrome, Firefox, and Safari because browser quirks exist. Make it mobile-friendly if possible with touch controls and responsive layout. Provide a fullscreen button for immersion. Include a sound toggle since not everyone can have sound on.</p>
<p>For <a href="http://itch.io">itch.io</a> embed settings, use 960px width (or your native resolution), 540px height for 16:9, enable mobile-friendly if responsive, enable the fullscreen button, and disable scrollbars.</p>
<h2>After the Jam</h2>
<p>In the first week, respond to all feedback to build goodwill and learn. Play and rate other entries because community matters. Post a devlog sharing your experience and what worked or didn't. Upload gameplay clips to get more eyes on your game.</p>
<p>In the first month, fix bugs players reported, make minor polish improvements that are low-effort but high-impact, and share your jam story on social media with GIFs.</p>
<p>Long-term, if the game has potential, collect feedback themes to see what players consistently liked or disliked. Assess whether there's a larger game here. Plan a post-jam version that's expanded and polished. Consider monetization through PWYW on <a href="http://itch.io">itch.io</a> or a Steam release.</p>
<p>Signs your jam game could be more: players asking for more content, streamers picking it up, high ratings relative to similar games, you're still excited about it weeks later, and there's a clear path to 10x the content.</p>
<h2>Resources</h2>
<p>For communities, check <a href="https://reddit.com/r/gamejams">r/gamejams</a> for active jam discussion, <a href="https://reddit.com/r/ludumdare">r/ludumdare</a> for LD-specific talk, <a href="https://itch.io/jams">itch.io Jams</a> to find and join jams, and <a href="https://gamedevjs.com">Gamedev.js</a> for the JavaScript game dev community.</p>
<p>For tools, <a href="https://kenney.nl">Kenney Assets</a> has free game assets, <a href="https://opengameart.org">OpenGameArt</a> has CC-licensed art and audio, <a href="https://freesound.org">Freesound</a> has sound effects, and <a href="https://itch.io/docs/butler/">itch.io Butler</a> is a CLI for fast uploads.</p>
<p>For learning, check <a href="/tutorials/">Cinevva Tutorials</a> for web game development guides, <a href="/guides/web-game-engines-comparison">Web Game Engines Comparison</a> to choose your tools, and <a href="/guides/itch-io-launch-guide">How to Launch on itch.io</a> to optimize your game page.</p>
<h2>Your Next Jam</h2>
<p>Before the jam, install and test your tools, prepare a template project, gather asset packs if allowed, assemble your team or decide to go solo, and block your calendar.</p>
<p>During the jam, brainstorm on theme for 30 minutes max, prototype the core mechanic first, test early and often, add sound before the final day, and leave at least an hour for submission.</p>
<p>After the jam, submit to the jam page, upload gameplay clips, play and rate other entries, respond to feedback, and write a devlog about your experience.</p>
<h2>Get Started</h2>
<p>Browse upcoming jams at <a href="https://itch.io/jams">itch.io/jams</a>. Pick one that fits your schedule and interests. Prepare your tools using this guide. Make something awesome in 48-72 hours. Share it and watch players discover it.</p>
<p>Game jams are where indie games are born. Your next jam game could be the start of something big.</p>
<h2>Common Questions</h2>
<h3>Which game jams are best for beginners?</h3>
<p>Start with a jam that has a big, welcoming community and flexible rules, because that's where a rough first entry feels safe. Global Game Jam is the friendliest on-ramp, with local and remote sites, mentors on hand, and no expectation of polish. Ludum Dare is nearly as beginner-friendly and runs twice a year with a huge base of players who rate every entry. If you're a web developer, Gamedev.js Jam and js13kGames give you generous timelines and an HTML5-only field, and <a href="http://itch.io">itch.io</a>'s &quot;Finally Finish Something&quot; is built around getting something across the line rather than winning. Pick a longer jam for your first one so you're not fighting the clock while you're still learning.</p>
<h3>How long do game jams last?</h3>
<p>It ranges from a few hours to a full month, but the famous ones cluster around a weekend. Global Game Jam and GMTK run 48 hours, and Ludum Dare gives you 48 hours solo or 72 hours as a team. Longer formats exist for when you want breathing room: Pirate Software Game Jam runs 14 days, js13kGames spans 30 days, and some <a href="http://itch.io">itch.io</a> jams are relaxed year-long events. Match the length to your schedule and experience, since a 48-hour sprint and a two-week jam ask for very different pacing.</p>
<h3>Do jam games actually get players?</h3>
<p>Yes, more than you'd expect during the rating window. In a jam with thousands of participants, everyone is playing and rating each other's entries, so a solid game can pull hundreds of plays in the first week without any outside marketing. Web games do best here because judges click once and play instead of downloading. The catch is that attention fades fast after the rating period closes, so the plays you get come from submitting on time, rating other entries to earn eyes on yours, and posting a short gameplay clip while the jam is fresh. Plenty of hits started this way, from Celeste to Superhot.</p>
<h3>What engine should you use for a 48-hour jam?</h3>
<p>The one you already know. A 48-hour jam rewards familiarity over raw power, so this is not the weekend to learn a new engine. Whatever you pick, favor one that exports clean web builds, because a browser-playable entry gets far more plays and ratings than a download. For 2D, Godot, Phaser, and Pixi.js all export to the web well. For 3D, Three.js, Babylon.js, and PlayCanvas are solid. If you'd rather not code, GDevelop and Construct make no-code HTML5 games, and a prompt-based tool like Cinevva can hand you a playable 3D web game to build on in minutes.</p>
<p><BuildCta
  title="Practice your jam speed right now"
  desc="A playable prototype in minutes is a good warm-up for a 48-hour jam."
  prompt="Make a game jam prototype where gravity flips every 10 seconds" /></p>
<h2>Related</h2>
<ul>
<li><a href="/guides/game-assets-guide">Where to Find Free Game Assets</a> — CC0 asset packs ready for jam games</li>
<li><a href="/tutorials/agentic-code-tools">Agentic AI code tools</a> — using Claude Code, Cursor, and Copilot to build faster during jams</li>
<li><a href="/guides/kickstarter-for-indie-games">Kickstarter for Indie Games</a> — turning a successful jam game into a funded project</li>
<li><a href="/guides/co-op-game-design">Co-op Game Design</a> — co-op jam games get more attention and ratings</li>
<li><a href="/tutorials/canvas-2d-game-loop">Canvas 2D game loop</a> — the simplest foundation for a 48-hour jam game</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How to Launch Your Game on itch.io (2026 Guide)]]></title>
            <link>https://app.cinevva.com/guides/itch-io-launch-guide</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/itch-io-launch-guide</guid>
            <pubDate>Sun, 18 Jan 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[How to launch, market, and grow your indie game on itch.io in 2026 - page setup, pricing, tags, devlogs, and getting discovered.]]></description>
            <content:encoded><![CDATA[<h1>How to Launch Your Game on <a href="http://itch.io">itch.io</a> (2026 Guide)</h1>
<p><em>Last updated: September 2026.</em></p>
<p>This guide covers everything I've learned about launching games on <a href="http://itch.io">itch.io</a>. From page setup to pricing to visibility, these are the strategies that actually work. The short version: upload a browser-playable HTML5 build, finish the page before you publish, price it pay-what-you-want with a suggested amount, and bring your own traffic through devlogs, jams, and social posts.</p>
<h2>Why <a href="http://itch.io">itch.io</a>?</h2>
<p><a href="http://itch.io">itch.io</a> is where indie games thrive. There's almost no gatekeeping, so anyone can publish. One caveat: <a href="http://itch.io">itch.io</a> tightened its content-policy rules in 2025, and the <a href="#getting-indexed">Getting Indexed</a> section below covers how that affects indexing. For everything else, publishing is as open as ever. Pricing is flexible: free, fixed, or pay-what-you-want. You set your own revenue share, even 0% if you want to keep everything. Web games run natively in the browser. The community actively seeks out indie games. And the game jam ecosystem gives you built-in visibility and feedback.</p>
<p>It's not Steam, and that's the point. <a href="http://itch.io">itch.io</a> rewards experimentation and rewards developers who engage with the community.</p>
<h2>Before You Publish</h2>
<p>You need a few things ready before you hit publish. At minimum, you need a playable game (downloadable or browser-playable), a cover image at 630×500 pixels, at least 3 screenshots, a description, and genre/tags selected.</p>
<p>For a better launch, add a trailer or gameplay GIF, a detailed description with features, a press kit, social media accounts, and optionally a Discord server.</p>
<p>For the best results, plan your devlog posts in advance, prepare an influencer and press outreach list, draft your launch announcement, and build community before you launch.</p>
<h2>Your Page Is Your Storefront</h2>
<p>The page is where people decide whether to play your game. Every element matters.</p>
<h3>Cover Image</h3>
<p>Your cover image is the most important visual. It shows up in browse pages, search results, collections, and social media embeds. At 630×500 pixels (or 315×250 minimum), it needs to work at thumbnail size.</p>
<p>Make sure it's legible when small. Test it at thumbnail scale. Show your game's vibe through art style, mood, and genre cues. Include the title and make it readable. Use bold colors and a clear focal point to stand out in a grid of other games.</p>
<h3>Screenshots and Media</h3>
<p>You need 3-5 screenshots at minimum for credibility. A GIF showing gameplay in motion helps a lot. For serious launches, add a 30-90 second trailer.</p>
<p>For screenshots, show actual gameplay, not menus. Capture exciting moments. Keep a consistent aspect ratio. Include UI if it's attractive.</p>
<p>For GIFs, aim for 5-15 seconds of action. Keep them under 10MB so they load fast. Show the core gameplay loop. Make them loop smoothly.</p>
<h3>Description</h3>
<p>Structure your description for people who skim. Lead with a catchy one-liner that hooks them. Follow with a sentence explaining the genre, what you do, and the goal. Add 2-3 sentences expanding on the concept. Then list features, controls, and credits.</p>
<p>Don't write walls of text. Don't start with &quot;This is my first game...&quot; or be overly humble. And don't forget to explain what the game actually is. People need to understand what they're getting into.</p>
<h3>Tags</h3>
<p>Tags determine where your game appears in Browse. Use all relevant tags. Be specific: not just &quot;action&quot; but &quot;top-down-shooter.&quot; Include accessibility tags if applicable. Add multiplayer or local-coop tags if relevant. Use popular tags your game genuinely fits.</p>
<p>High-value tags to consider: specific genres like roguelike, metroidvania, or visual-novel. Art styles like pixel-art, low-poly, or hand-drawn. Themes like horror, cozy, or atmospheric. Multiplayer modes like local-multiplayer or online-co-op. Accessibility features like colorblind-friendly or one-button.</p>
<h3>Metadata</h3>
<p>Fill in everything. Genre, engine/tools used, as many relevant tags as possible, all supported languages, accessibility features like configurable controls, and multiplayer mode (single-player, local, online). The more complete your metadata, the more discoverable your game becomes.</p>
<h2>Pricing</h2>
<p><a href="http://itch.io">itch.io</a> gives you three pricing models: free, pay-what-you-want, and fixed price. Each works for different situations.</p>
<p><a href="http://itch.io">itch.io</a> runs an <a href="https://itch.io/updates/introducing-open-revenue-sharing">open revenue-share model</a>: the default cut is 10%, but you choose the percentage, anywhere from 0% to 100%. Payment processing is separate and runs about 2.9% plus $0.30 per transaction, per the <a href="https://itch.io/docs/creators/payments">payments docs</a>. Several times a year, typically on a Friday, <a href="http://itch.io">itch.io</a> also runs <a href="https://itch.io/updates/what-is-creator-day">Creator Day</a>, a 24-hour event where it waives its platform fee entirely so you keep 100% of sales (after payment-processor fees and taxes). It's worth timing a sale or launch announcement around one. The most recent ran November 28, 2025, and as of early September 2026 <a href="http://itch.io">itch.io</a> hadn't announced a 2026 date yet, so keep an eye on its blog.</p>
<h3>Pay-What-You-Want Works Best for Most Games</h3>
<p>PWYW with a $0 minimum typically outperforms fixed pricing for indie games. Developers who share their numbers in postmortems often report more downloads than fixed pricing, with a minority of downloaders choosing to pay, and total revenue that still ends up higher despite the lower per-buyer average. Those are patterns from shared postmortems, not official <a href="http://itch.io">itch.io</a> stats, so treat them as direction rather than a promise. The one official number worth knowing: <a href="http://itch.io">itch.io</a>'s own <a href="https://itch.io/docs/creators/pricing">pricing docs</a> say about 30% of all money spent on the platform is paid above the minimum price.</p>
<p>To optimize PWYW, set a suggested price to anchor expectations. For short games under 30 minutes, suggest $2-5. For medium games of 1-3 hours, suggest $5-10. For full games over 5 hours, suggest $10-20.</p>
<p>Explain why support helps. Something like &quot;This game is pay-what-you-want! Any support helps me make more games and keeps updates coming.&quot; And offer incentives for paying: bonus content, soundtrack, behind-the-scenes PDF, or name in credits.</p>
<h3>When Fixed Pricing Makes Sense</h3>
<p>Use fixed pricing when you have an established audience, when the game is highly polished, when there's significant content (5+ hours), or when you need predictable revenue.</p>
<p>For price points, $2-5 works for short games and prototypes. $5-10 for medium games with niche appeal. $10-20 for full games with high polish. $20+ for large games from established developers.</p>
<h3>Free Games Still Make Money</h3>
<p>For portfolio pieces, game jam entries, experimental projects, or building audience for future paid games, free makes sense. But even free games get donations. <a href="http://itch.io">itch.io</a>'s <a href="https://itch.io/docs/creators/pricing">pricing docs</a> put roughly 30% of all spending on the platform above the minimum price, so leave the donation door open.</p>
<h2>Getting Discovered</h2>
<p><a href="http://itch.io">itch.io</a> doesn't have Steam's algorithmic promotion. You drive your own visibility, and our guide to <a href="/guides/get-more-plays-itch-io">getting more plays on itch.io</a> goes deeper on how.</p>
<p>Discovery works through search (driven by tags, title, description), Browse Popular (driven by downloads, ratings, recency), Browse New (driven by publish date), collections (players adding your game), devlogs (your updates), and occasional editorial features (staff picks, mostly luck).</p>
<h3>Getting Indexed</h3>
<p>Your game must be indexed to appear in search and browse. You need to be published publicly (not unlisted), have playable or downloadable content, have a cover image, not be a placeholder page, and follow content guidelines.</p>
<p>Things that prevent indexing: external-link-only pages, no downloads or playable content, unlisted visibility setting, and missing cover images. One policy note: since its <a href="https://itch.io/updates/update-on-nsfw-content">July 2025 update</a>, <a href="http://itch.io">itch.io</a> applies extra indexing rules to projects that fall under its adult-content policy (a content-warning step, and paid projects in that category stay out of browse and search while <a href="http://itch.io">itch.io</a> works with its payment processors). If that doesn't describe your game, nothing changes for you.</p>
<p>One more thing if you're selling for the first time: new seller accounts go through a short review queue before their first paid project gets indexed, usually a few business days. Established sellers skip this. If your launch date matters, publish or set up your seller account early enough to clear the queue.</p>
<h3>Know Your Target Audience on <a href="http://itch.io">itch.io</a></h3>
<p><a href="http://itch.io">itch.io</a>'s target audience is not Steam's. The people browsing it came for indie and experimental games: jam entries, short narrative pieces, roguelikes, horror, visual novels, tools and asset packs. They read pages, they leave comments, and they follow creators. That shapes three decisions. Tags should describe your game the way that audience searches, so borrow the exact tags the top-rated games in your genre use rather than inventing your own. Your description should say in the first two lines what the game is and how long it takes, because this audience tries many small games and decides fast. And your price should match what the genre's players expect on <a href="http://itch.io">itch.io</a> specifically, which is usually free or pay-what-you-want for a first release. Spend twenty minutes reading the comments on five games like yours before you publish. That is the cheapest audience research you will ever do.</p>
<h3>The &quot;Most Recent&quot; Boost</h3>
<p>When you first publish, you appear in &quot;Most Recent&quot; which gives a small visibility boost. This only happens once, so timing matters.</p>
<p>Publish when your page is complete. Don't publish early then update because you only get one &quot;new&quot; boost. Avoid weekends when more games release. Consider the timezone of your target audience.</p>
<h3>Devlogs Are Your Secret Weapon</h3>
<p>Devlogs show in followers' feeds, appear in &quot;Recent Devlogs&quot; sections, signal active development, build community trust, and help with SEO.</p>
<p>Post during development to build anticipation. Post at launch for the announcement. Post after launch for updates and new features. Aim for 1-2 per month during active development.</p>
<p>Good topics include behind-the-scenes process, new features and content, responses to player feedback, technical challenges you solved, art and music showcases, and sales milestones (thank your players).</p>
<h2>Game Jams</h2>
<p>Game jams are the single best way to get visibility on <a href="http://itch.io">itch.io</a>. You get a built-in audience with thousands of views in days, a dedicated gallery where your game is browseable, feedback through ratings and comments, networking with other developers, portfolio pieces that show your range, and low stakes to prototype freely.</p>
<h3>Jam Strategy</h3>
<p>For choosing jams, large ones like Ludum Dare and GMTK bring more traffic but more competition. Small or niche jams give you a better chance to stand out. Theme-aligned jams let you play to your strengths.</p>
<p>During the jam, post progress on social media, use jam hashtags, document your process, and engage with other participants.</p>
<p>For your jam page, polish it even for a jam game. Good screenshots matter. Write a clear description of what the game is. Include controls.</p>
<p>After the jam, play and rate other entries for networking. Respond to all feedback. Consider post-jam updates. Write a devlog about what you learned.</p>
<p>If you host a jam yourself, the jam theme editor got a serious upgrade in July 2026: Google Fonts, independent button and link colors, corner radius and background image controls, and themes you can copy between jams as JSON. A hosted jam page can now look as polished as a game page.</p>
<h3>Jam Games Can Become Real Games</h3>
<p>Many successful indie games started as jam entries. Celeste started as a jam game. Superhot began as a 7-day prototype. Hollow Knight evolved from a jam concept.</p>
<p>The path is: collect feedback, identify what worked, polish and expand, then re-release as standalone.</p>
<h2>Marketing Without Money</h2>
<p>You don't need a budget to market on <a href="http://itch.io">itch.io</a>. You need consistency. For the wider zero-dollar playbook, including Steam wishlists and streamer outreach, see <a href="/guides/promote-indie-game-no-budget">how to promote an indie game with no budget</a>.</p>
<h3>Social Media</h3>
<p>Be on Twitter/X for the largest gamedev community. Use Reddit, specifically r/indiegaming, r/playmygame, and genre-specific subreddits. Try TikTok for short gameplay clips. Build a Discord server and join relevant communities. Post devlogs and trailers on YouTube.</p>
<p>For a content calendar, post weekly for Screenshot Saturday and progress updates. Post bi-weekly devlogs. Announce bigger milestones monthly.</p>
<p>Post GIFs of gameplay, behind-the-scenes process, development challenges, before/after comparisons, memes about your game, and player reactions.</p>
<h3>Reaching Out to Influencers</h3>
<p>Micro-influencers with 1K-50K followers are your friends. Find them by searching &quot;[your genre] indie games&quot; on YouTube, looking for streamers playing similar games, and checking who covered games like yours.</p>
<p>When you reach out, personalize each email. Show you know their content. Make it easy by including all the links. Be brief. Don't mass email, don't demand coverage, don't be pushy about timing. Follow up once, politely.</p>
<p>A simple template works: introduce yourself, mention you noticed they cover your genre, describe your game in one sentence, explain what makes it unique, offer a free key with no pressure, and include links to your page and press kit.</p>
<h3>Press</h3>
<p>For bigger launches, contact indie game press like IndieGamesPlus, Rock Paper Shotgun, Kotaku's indie section, and genre-specific sites. Same principles as influencer outreach: personalize, be brief, make their job easy.</p>
<h2>Launch Timeline</h2>
<p>Three to six months before launch, start your social media presence, join relevant communities, begin devlog posts, and build followers.</p>
<p>One to two months before, finalize page assets like screenshots and trailer, prepare your press kit, draft your influencer and press list, and announce your release date.</p>
<p>One to two weeks before, send keys to influencers and press, schedule your launch posts, prepare your launch devlog, and give your page a final polish.</p>
<p>On launch day, publish the game, post your launch announcement everywhere, engage with all comments, monitor for bugs, and thank early players.</p>
<p>During the first week after launch, respond to all feedback, fix critical bugs immediately, post an update devlog, and share positive reviews.</p>
<p>Ongoing after launch, keep releasing regular updates, engage with the community, plan future content, and consider sales and bundles.</p>
<h2>Common Mistakes</h2>
<p>For page mistakes, don't publish before your page is ready. Don't skip the cover image or use a bad one. Don't write wall-of-text descriptions. Don't launch without screenshots. Don't use wrong or missing tags.</p>
<p>For marketing mistakes, don't wait until launch to start marketing. Don't just post &quot;game is out&quot; once. Engage with the community. Don't expect <a href="http://itch.io">itch.io</a> to do the marketing for you. Don't ignore feedback.</p>
<p>For pricing mistakes, don't set a high price without an established audience. Don't undervalue your work at $0.99 for 10+ hours of content. Always set a suggested price on PWYW. Run sales occasionally.</p>
<p>For development mistakes, don't let scope creep delay your launch forever. Don't wait for &quot;perfect&quot; instead of shipping. Collect early feedback. Don't abandon the game after launch.</p>
<h2>Analytics</h2>
<p>Track page views (how many found your page), downloads (how many tried your game), conversion rate (views to downloads), ratings count (engagement level), rating average (quality perception), revenue, and referrers (where traffic comes from).</p>
<h3>Diagnosing Problems</h3>
<p>If you have low views, it's a marketing problem. Post more on social media, try new communities, use better hashtags, write more devlogs.</p>
<p>If you have high views but low downloads, it's a page problem. Improve your cover image, get better screenshots, write a clearer description, check your pricing.</p>
<p>If you have high downloads but low ratings, it's a game quality problem. Fix bugs, improve the tutorial and onboarding, address common complaints.</p>
<h2>Long-Term Growth</h2>
<h3>Building an Audience</h3>
<p><a href="http://itch.io">itch.io</a> followers are valuable. They get notified of new releases, they see your devlogs, and they're likely to buy future games.</p>
<p>Grow followers by asking at the end of your games, mentioning it in devlogs, linking from social media, and focusing on quality over quantity.</p>
<p>If you run a Patreon, <a href="http://itch.io">itch.io</a>'s Patreon integration was rebuilt in July 2026 on Patreon's newer API. Access to your games is now granted by membership tier instead of pledge amount, which fixes the old currency-mismatch problems. It's a clean way to give supporters early builds directly on <a href="http://itch.io">itch.io</a>.</p>
<h3>Your Catalog Compounds</h3>
<p>Your second game is easier to launch than your first. You have existing followers, you can cross-promote between games, you have an established reputation, and you've learned skills.</p>
<p>The strategy is: launch first game and collect followers, promote game 2 to game 1 players, bundle games together, and let each game grow your audience.</p>
<h3>Sales and Bundles</h3>
<p>For running sales, 20-50% off is common. Time them around holidays. Announce on social media. Update your devlog.</p>
<p>Seasonal site-wide sales are worth joining too. As of the 2026 Summer Sale, <a href="http://itch.io">itch.io</a> ships a Sale Explorer that lets players browse sale games with price filters, tag exclusions, staff picks, and personalized recommendations, so being in the sale actually gets you browsed. Joining is one click: your creator dashboard shows a prefilled link to add a promotion during active site-wide sales.</p>
<p>For joining bundles, they increase exposure, bring new players, and work well for older games. <a href="http://itch.io">itch.io</a> sometimes organizes charity bundles worth joining. Bundle hosting got a big revamp in July 2026: hosts can bulk-import games from jam or collection URLs and reorder projects by drag and drop, which makes community bundles easier to organize than they used to be.</p>
<h2>Web Games on <a href="http://itch.io">itch.io</a></h2>
<p>HTML5 and WebGL games have advantages on <a href="http://itch.io">itch.io</a>. Instant play with no download barrier. Mobile-friendly if you support touch. Easy to share with direct links. Great for jams because they're quick to try.</p>
<p>For optimization, loading time matters so keep the initial load small. Show a loading bar or percentage. Test on Chrome, Firefox, Safari, and Edge. Add touch support if feasible. Provide a fullscreen button.</p>
<p>For embed settings, use 960px width (or your game's native) and 540px height for 16:9. Enable mobile-friendly if responsive. Enable the fullscreen button. Disable scrollbars.</p>
<p>Know the upload limits before you build. Per <a href="http://itch.io">itch.io</a>'s <a href="https://itch.io/docs/creators/html5">HTML5 docs</a>, your zip must extract to no more than 1,000 files, 500MB total, and 200MB for any single file, with file paths under 240 characters. If your build blows past that, trim assets or move heavy content behind lazy loading rather than asking for a limit increase. If your game needs WebGPU, players can confirm their browser has it with our <a href="/tools/webgl-webgpu-checker">WebGL/WebGPU checker</a> before they blame your loading screen.</p>
<p>For performance, lazy-load assets, compress textures, minimize your JavaScript bundle, use WebGL efficiently, and test on lower-end devices.</p>
<h2>Resources</h2>
<p>For official documentation, check the <a href="https://itch.io/docs/creators/">itch.io Creator Docs</a>, <a href="https://itch.io/docs/creators/getting-indexed">Getting Indexed guide</a>, and <a href="https://itch.io/docs/creators/pricing">Pricing Guide</a>.</p>
<p>For communities, visit the <a href="https://itch.io/community">itch.io Community Forums</a>, <a href="https://reddit.com/r/itchio">r/itchio</a>, <a href="https://reddit.com/r/indiegaming">r/indiegaming</a>, and <a href="https://reddit.com/r/IndieDev">r/IndieDev</a>.</p>
<p>For tools, <a href="https://itch.io/docs/butler/">itch.io Butler</a> handles uploads with patch-based diffs, so updates only transfer what changed. Since May 2026 you don't even need the command line: the itch app (version 26.12.0 or later) has an Upload section that wraps butler in a GUI, with a preview of changed files before each push. The app kept moving through the summer, reaching 26.20.0 in September 2026 with Steam shortcuts and headless launching, per the <a href="https://itch.io/updates">itch.io updates feed</a>. <a href="https://dopresskit.com/">Presskit()</a> generates press kits.</p>
<h2>The Short Version</h2>
<p>Before launch, make sure your game is playable and polished enough, your page has a great cover image, you have 3+ screenshots and ideally a GIF or trailer, your description is clear and scannable, all relevant tags are selected, you've decided on pricing, you've started your social media presence, and you've posted devlogs.</p>
<p>At launch, your page should be 100% complete, published publicly, announced everywhere, and you should be engaging with comments.</p>
<p>After launch, respond to feedback, fix bugs quickly, keep posting devlogs, and build toward your next release.</p>
<p>Most successful indie games took years and multiple releases to find their audience. Your first game probably won't be a hit, and that's fine. Each release teaches you, grows your audience, and brings you closer to the game that breaks through.</p>
<p>Ship it. Learn. Repeat.</p>
<hr>
<h2>Common Questions</h2>
<h3>How do I get my game noticed on <a href="http://itch.io">itch.io</a>?</h3>
<p>Tags are the biggest lever most people ignore. <a href="http://Itch.io">Itch.io</a>'s browse pages are organized by tags, and that's how most players find new stuff. Pick every relevant tag, not just the obvious ones. After that, it's devlogs. Each devlog post bumps your game in feeds and gives search engines more content to index. Participate in game jams too, they're the fastest way to get eyeballs when you're starting from zero. And make your cover image count. It's the first thing people see when scrolling, and most of them decide in under a second whether to click.</p>
<h3>Who is the target audience on <a href="http://itch.io">itch.io</a>?</h3>
<p>Players who want indie and experimental games they can't find on Steam: game-jam entries, short narrative and horror games, roguelikes, visual novels, and free or pay-what-you-want releases. Developers are a big part of the audience too, since <a href="http://itch.io">itch.io</a> is also where they buy tools and asset packs. Games that lean into a clear genre tag and a short, honest description do best with this crowd.</p>
<h3>Can you make money on <a href="http://itch.io">itch.io</a>?</h3>
<p>You can, but set your expectations accordingly. <a href="http://Itch.io">Itch.io</a> uses a &quot;pay what you want&quot; model by default, and the platform lets you keep up to 100% of revenue (you choose how much to share, and the default cut is 10%). Some developers do well with premium games priced at $5-15, especially after building an audience through free releases and jam entries. The platform won't make you rich overnight, but it's one of the few places where you keep full control of pricing and payouts with basically no gatekeeping. For sourced earnings ranges across <a href="http://itch.io">itch.io</a> and the ad portals, see our <a href="/guides/web-game-monetization">web game monetization guide</a>.</p>
<h3>How does <a href="http://itch.io">itch.io</a> work?</h3>
<p><a href="http://itch.io">itch.io</a> is an open marketplace: you create a free account, make a project page, upload a build (a downloadable file or an HTML5 zip that runs in the browser), pick a price model, and hit publish. There's no approval queue for free games. Buyers pay you either directly through your own PayPal or Stripe account, or through <a href="http://itch.io">itch.io</a>'s collected-payouts mode, where <a href="http://itch.io">itch.io</a> is the merchant of record and you request a payout once funds clear a 7-day hold, per the <a href="https://itch.io/docs/creators/payments">payments docs</a>. Players find games through tags, browse pages, jams, and collections, and can follow you to get notified about updates. If you don't have a game yet, you can <a href="/create#prompt=Make%20a%20short%20browser%20puzzle%20game%20I%20can%20publish%20on%20itch.io">build one from a prompt</a> and export the HTML5 build.</p>
<h3>How much does it cost to put a game on <a href="http://itch.io">itch.io</a>?</h3>
<p>Nothing up front. Hosting and publishing are free, and <a href="http://itch.io">itch.io</a>'s <a href="https://itch.io/updates/introducing-open-revenue-sharing">open revenue sharing</a> means you pick what cut it takes from paid sales, anywhere from 0% to 100%, with a default of 10%. On top of that, payment processing runs about 2.9% plus $0.30 per transaction, and the collected-payouts mode carries a one-time $3 tax identity verification fee, per the <a href="https://itch.io/docs/creators/payments">payments docs</a>. A free game with donations turned off costs you exactly zero.</p>
<h3>Do io games make money?</h3>
<p>Two different questions hide in that phrase. If you mean .io-style multiplayer browser games (the <a href="http://agar.io">agar.io</a> lineage), yes: they earn through ad revenue share on portals like CrazyGames and Poki, and the play volume they generate is exactly what those portals pay for. Our <a href="/guides/web-game-monetization">web game monetization guide</a> has the sourced rates. If you mean games on <a href="http://itch.io">itch.io</a>, also yes, but the median is small. <a href="http://itch.io">itch.io</a> is a storefront, not an ad network, so revenue comes from sales and donations, and most projects earn little until they find an audience.</p>
<h3>Can I play <a href="http://itch.io">itch.io</a> games on a Chromebook?</h3>
<p>Yes, as long as the game runs in the browser. HTML5 games on <a href="http://itch.io">itch.io</a> play directly in Chrome on a Chromebook with nothing to install, which is why a web build is the most Chromebook-friendly thing you can ship. Downloadable Windows and Mac builds won't run, and the itch desktop app only ships for Windows, macOS, and Linux per the <a href="https://itch.io/app">app page</a>, so a Linux build inside ChromeOS's Linux environment is the only download route. If a game uses WebGPU, our <a href="/tools/webgl-webgpu-checker">WebGL/WebGPU checker</a> will tell you whether the Chromebook's browser supports it.</p>
<h3>Can I download <a href="http://itch.io">itch.io</a> games on an iPad?</h3>
<p>Not the desktop builds. There's no <a href="http://itch.io">itch.io</a> app for iPadOS, and Windows, Mac, and Linux downloads won't run on an iPad. What does work is browser play: HTML5 games open in Safari on iPad, and on mobile devices <a href="http://itch.io">itch.io</a> launches them fullscreen on tap, per the <a href="https://itch.io/docs/creators/html5">HTML5 docs</a>. Developers need to have ticked &quot;Mobile Friendly&quot; and built touch controls for it to feel right, so if you're the one publishing, test on a tablet before you promise mobile support.</p>
<h3>Why can't I upload my game to <a href="http://itch.io">itch.io</a>?</h3>
<p>The usual causes are limits. HTML5 zips must extract to no more than 1,000 files, 500 MB in total, and 200 MB for any single file, with file paths under 240 characters, per the <a href="https://itch.io/docs/creators/html5">HTML5 docs</a>. Downloadable builds hit a per-file size cap on the web uploader that <a href="http://itch.io">itch.io</a> will raise if you ask support, per the <a href="https://itch.io/docs/creators/faq">creator FAQ</a>. For anything large, push with <a href="https://itch.io/docs/butler/">butler</a> instead of the browser: it resumes, uploads only what changed, and per the <a href="https://itch.io/docs/butler/pushing.html">butler docs</a> only rejects builds over 30 GB uncompressed. If an upload stalls rather than fails, a browser extension or a flaky connection is the next thing to rule out.</p>
<h3>Is <a href="http://itch.io">itch.io</a> good for browser games?</h3>
<p>It's one of the best places for them, honestly. Browser games get played more on <a href="http://itch.io">itch.io</a> because there's no download friction. Players click, they're in. The platform supports HTML5/WebGL embeds natively, so your game shows up right on the page. For game jams especially, browser games get way more ratings than downloadable ones because judges can try them instantly. Keep your initial load under a few MB and show a progress bar, and you'll hold more players than you'd expect.</p>
<hr>
<p><BuildCta
  title="Need something to launch?"
  desc="Build a web game and export it as a self-contained HTML5 build for itch.io."
  prompt="Make a polished endless runner I can export and publish on itch.io" /></p>
<h2>Related</h2>
<ul>
<li><a href="/guides/game-jams-hackathons">Game Jams &amp; Hackathons</a>: jams are the fastest way to build an <a href="http://itch.io">itch.io</a> audience</li>
<li><a href="/tutorials/iframe-embedding-games">Iframe embedding games</a>: technical guide to embedding browser games in iframes</li>
<li><a href="/tutorials/ship-web-game-fast">Ship a web game that loads fast</a>: optimize load times for <a href="http://itch.io">itch.io</a> embeds</li>
<li><a href="/guides/steam-next-fest-strategy">Steam Next Fest Strategy</a>: if you're considering multi-platform launch</li>
<li><a href="/guides/web-game-monetization">Web Game Monetization: What the Data Actually Says</a>: honest earnings data across <a href="http://itch.io">itch.io</a> and the portals</li>
<li><a href="/guides/publish-game-poki">How to Get Your Game on Poki</a>: the curated portal route, compared to <a href="http://itch.io">itch.io</a>'s open one</li>
<li><a href="/guides/publish-game-crazygames">How to Publish Your Game on CrazyGames</a>: another big curated portal for reach beyond <a href="http://itch.io">itch.io</a></li>
<li><a href="/guides/publish-game-discord-activities">How to Publish a Game on Discord Activities</a>: shipping the same web build into Discord</li>
<li><a href="/guides/web-game-engines-comparison">Web Game Engines Comparison</a>: picking an engine that exports clean web builds</li>
<li><a href="/guides/get-more-plays-itch-io">How to Get More Plays on itch.io</a>: driving traffic once the page is live</li>
<li><a href="/guides/publish-web-game">Best Places to Publish a Web Game in 2026</a>: <a href="http://itch.io">itch.io</a> compared with the portals and self-hosting</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Three.js + USDC in the Browser]]></title>
            <link>https://app.cinevva.com/guides/threejs-usdc-tech-report</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/threejs-usdc-tech-report</guid>
            <pubDate>Sun, 18 Jan 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[How to load USD binary files in Three.js without WASM or native code]]></description>
            <content:encoded><![CDATA[<h1>Three.js + USDC in the Browser</h1>
<p>So you've got a <code>.usdc</code> file from Maya or Houdini, and you want to show it in a Three.js scene. I've been there. Until recently, your choices weren't great. You could convert to glTF offline, spin up a WASM build of OpenUSD, or just give up and use a different format.</p>
<p>This guide shows you how to parse USDC directly in JavaScript using <code>@cinevva/usdjs</code>, and how to get that data into Three.js.</p>
<h2>What's USDC?</h2>
<p>USD files come in three flavors. USDA is the text version, human-readable and easy to debug but verbose. USDC (sometimes called &quot;Crate&quot;) is the binary format that production pipelines actually use because it's compact and loads fast in native tools. USDZ is a zip archive containing USDC plus textures, which Apple uses for AR Quick Look.</p>
<p>Here's the catch: USDC is a proprietary binary format. Pixar wrote the reference implementation in C++, and until now there wasn't a pure JavaScript way to read it. That's starting to change: in December 2025 the Alliance for OpenUSD published Core Specification 1.0, the first ratified standard documenting how OpenUSD scene data is structured, composed, and exchanged, with a 1.1 revision already in progress. The reference implementation still lives in Pixar's C++ codebase, though, so a separate reader is still the practical way into the format from JavaScript.</p>
<h2>Why You Might Care</h2>
<p>If you're building 3D web apps that need to work with content from film or VFX pipelines, you're going to run into USD. Artists export from Maya, Houdini, or Blender, and those exports are often USDC.</p>
<p>Before <code>@cinevva/usdjs</code>, you had three options. You could run <code>usdcat</code> to convert USDC to text format, which adds a build step and loses the binary format's compactness. You could compile OpenUSD or TinyUSDZ to WebAssembly, which adds megabytes to your bundle and needs special server headers for threading. Or you could use Three.js's built-in USDLoader, which handles USDZ but has limited USDC support and minimal composition.</p>
<p>Now there's a fourth option: parse USDC natively in JavaScript.</p>
<h2>How It Works</h2>
<p>The <code>@cinevva/usdjs</code> library reimplements USD's core functionality in TypeScript. I built the USDC parser by reading Pixar's C++ source code and translating the Crate format specification into JavaScript. When there's ambiguity in behavior, we match what OpenUSD does.</p>
<p>In practice, it looks like this:</p>
<pre><code class="language-typescript">import { parseUsdcToLayer } from '@cinevva/usdjs';

// Fetch the USDC file
const response = await fetch('/model.usdc');
const buffer = await response.arrayBuffer();

// Parse it
const layer = parseUsdcToLayer(buffer, { identifier: 'model.usdc' });

// Now you have a structured layer with prims, properties, and metadata
console.log(layer.pseudoRoot.children);
</code></pre>
<p>No WASM. No native code. Just JavaScript reading bytes and building a structured representation.</p>
<h2>Wiring It Into Three.js</h2>
<p>Parsing USD is only half the problem. You also need to convert USD concepts (prims, transforms, mesh schemas) into Three.js objects.</p>
<p>Here's a minimal example that loads a USDC file and creates Three.js meshes:</p>
<pre><code class="language-typescript">import * as THREE from 'three';
import { UsdStage, parseUsdcToLayer } from '@cinevva/usdjs';

async function loadUsdcToThree(url: string, scene: THREE.Scene) {
  // 1. Fetch and parse
  const buffer = await fetch(url).then(r =&gt; r.arrayBuffer());
  const layer = parseUsdcToLayer(buffer, { identifier: url });
  
  // 2. Create a stage (handles composition if there are references)
  const stage = UsdStage.open(layer);
  
  // 3. Walk the prim tree
  for (const prim of stage.traverse()) {
    // Skip non-geometry
    if (prim.typeName !== 'Mesh') continue;
    
    // Get geometry data
    const points = prim.getAttribute('points')?.value;
    const faceVertexIndices = prim.getAttribute('faceVertexIndices')?.value;
    const faceVertexCounts = prim.getAttribute('faceVertexCounts')?.value;
    
    if (!points || !faceVertexIndices || !faceVertexCounts) continue;
    
    // Convert to Three.js geometry
    const geometry = new THREE.BufferGeometry();
    geometry.setAttribute('position', 
      new THREE.Float32BufferAttribute(points.flat(), 3)
    );
    
    // USD uses faceVertexCounts + faceVertexIndices, Three.js wants a flat index array
    // For triangulated meshes, this is straightforward:
    geometry.setIndex(Array.from(faceVertexIndices));
    geometry.computeVertexNormals();
    
    // Create mesh
    const material = new THREE.MeshStandardMaterial({ color: 0x888888 });
    const mesh = new THREE.Mesh(geometry, material);
    
    // Apply transform
    const xform = getWorldTransform(prim);
    mesh.matrix.fromArray(xform);
    mesh.matrixAutoUpdate = false;
    
    scene.add(mesh);
  }
}

function getWorldTransform(prim): number[] {
  // Simplified: in practice you'd compose parent transforms
  const xformOp = prim.getAttribute('xformOp:transform');
  if (xformOp?.value) {
    return xformOp.value.flat();
  }
  return [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1];
}
</code></pre>
<p>This example is simplified. Real code needs to handle transform stacking (USD prims can have multiple <code>xformOp</code> attributes that compose together), subdivision surfaces (meshes with <code>catmullClark</code> subdivision need actual subdivision), materials (<code>UsdPreviewSurface</code> parameters map to Three.js <code>MeshStandardMaterial</code>), textures (asset paths need resolution and loading), and skeletal animation (<code>UsdSkel</code> bindings need conversion to <code>SkinnedMesh</code>).</p>
<p>If you want to see how all of this works together, check out <code>@cinevva/usdjs-viewer</code>. It's a complete reference implementation.</p>
<h2>Composition Matters More Than You'd Think</h2>
<p>Parsing a single USDC file is the easy part. Real USD scenes use composition, which means sublayers, references, payloads, and variants all working together.</p>
<p>Picture a car model. The body references <code>body.usdc</code>, the wheels reference <code>wheel.usdc</code>, and there are variants for &quot;sport&quot; and &quot;sedan&quot; configurations. The final scene is assembled from all these pieces at runtime.</p>
<p>Here's how you handle that:</p>
<pre><code class="language-typescript">import { UsdStage, parseUsdcToLayer, FetchResolver } from '@cinevva/usdjs';

// Create a resolver that knows how to fetch referenced files
const resolver = new FetchResolver({
  baseUrl: '/assets/',
});

// Open with composition
const stage = UsdStage.open(rootLayer, { resolver });

// Set a variant selection
stage.setVariantSelection('/Car', 'bodyStyle', 'sport');

// Now traverse the composed scene
for (const prim of stage.traverse()) {
  // You'll see resolved references and the selected variant
}
</code></pre>
<p>The resolver fetches referenced USDC files on demand. Composition happens in JavaScript, producing the flattened scene you'd get from <code>usdcat --flatten</code>.</p>
<h2>Performance</h2>
<p>Let's be honest: parsing USDC in JavaScript is slower than native C++. That's the trade-off for skipping WASM and build steps.</p>
<p>In practice, for typical web use cases with models under 10MB and less than 100K triangles, parsing takes 50-200ms on modern hardware. That's fine for initial load if you show a loading indicator.</p>
<p>You can make it faster. Don't load the entire scene upfront. Load the root layer, render what you can, then fetch payloads on demand. Move parsing to a Web Worker so the UI stays responsive. Cache parsed layers in IndexedDB so return visits are instant. Show a low-res preview while the full scene streams in.</p>
<p>Here's a Web Worker setup:</p>
<pre><code class="language-typescript">// worker.ts
import { parseUsdcToLayer } from '@cinevva/usdjs';

self.onmessage = async (e) =&gt; {
  const { buffer, identifier } = e.data;
  const layer = parseUsdcToLayer(buffer, { identifier });
  
  // Serialize layer data (not the methods)
  const data = serializeLayer(layer);
  self.postMessage(data);
};

// main.ts
const worker = new Worker(new URL('./worker.ts', import.meta.url));

worker.postMessage({ buffer, identifier: 'model.usdc' });
worker.onmessage = (e) =&gt; {
  const layerData = e.data;
  // Build Three.js scene from layerData
};
</code></pre>
<h2>What Works and What Doesn't</h2>
<p>Most of the common stuff works. Geometry (meshes, points, curves) parses correctly, including compressed vertex arrays. Transforms work with full <code>xformOp</code> stacking. Materials map from <code>UsdPreviewSurface</code> to PBR. Composition handles sublayers, references, payloads, variants, and inherits. Textures resolve and load if you provide a resolver. Basic skeletal animation works for common character rigs.</p>
<p>There are gaps though. This isn't a Hydra implementation, so you're responsible for converting USD data to whatever rendering engine you're using. There are no typed schema APIs like <code>UsdGeomMesh</code> with convenience methods. You work with generic prims and attributes. Some composition features like specializes, relocates, and value clips aren't implemented yet. Complex material networks beyond simple <code>UsdPreviewSurface</code> need custom handling.</p>
<h2>When to Use This</h2>
<p>This makes sense when you need to load USD files in a web app without a WASM build step, when your pipeline outputs USDC and you don't want to convert to glTF, when you're building a USD viewer or editor for the browser, or when you want to inspect USD structure rather than just render it.</p>
<p>Use something else if you need full OpenUSD parity with every edge case, if your scenes are huge (100MB+) and need native performance, or if you're already using a WASM build and the complexity is acceptable for your project.</p>
<h2>Resources</h2>
<p>The three packages are <code>@cinevva/usdjs</code> for core parsing and composition, <code>@cinevva/usdjs-viewer</code> for a Three.js-based browser viewer, and <code>@cinevva/usdjs-renderer</code> for headless PNG rendering in tests.</p>
<p>For documentation, check the <a href="https://cinevva-engine.github.io/usdjs/API">usdjs API Reference</a>, the <a href="https://openusd.org/release/index.html">Pixar OpenUSD Specification</a>, and the <a href="https://threejs.org/docs/">Three.js Documentation</a>.</p>
<p>If you want to understand how the USDC parser maps to Pixar's implementation, look at <code>src/usdc/PIXAR_PARITY.md</code> in the usdjs repo.</p>
<h2>Try It</h2>
<p>The fastest way to see this working is to visit the <a href="https://cinevva-engine.github.io/usdjs-viewer/">usdjs-viewer demo</a> and drop a USDC file onto it.</p>
<p>To integrate into your own project, install the package and start with the code examples above:</p>
<pre><code class="language-bash">npm install @cinevva/usdjs
</code></pre>
<p>USD in the browser is possible. It's not always the right choice, but when you need it, pure JavaScript parsing means one less build step and one less dependency to think about.</p>
<h2>Related</h2>
<ul>
<li><a href="/tutorials/webgl-fundamentals-for-games">WebGL fundamentals for game developers</a> — the rendering API powering Three.js scenes</li>
<li><a href="/guides/web-games-stack-2026">Web Games Tech Stack in 2026</a> — where Three.js fits in the WebGL/WebGPU/Wasm landscape</li>
<li><a href="/guides/browser-3d-open-world-tech">Browser 3D Open World Tech</a> — streaming 3D assets including USD for open worlds</li>
<li><a href="/guides/game-assets-guide">Where to Find Free Game Assets</a> — sources for 3D models compatible with Three.js</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[11 Best Web Game Engines for 2026, Ranked and Compared]]></title>
            <link>https://app.cinevva.com/guides/web-game-engines-comparison</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/web-game-engines-comparison</guid>
            <pubDate>Sun, 18 Jan 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[We compared 11 web game engines on build size, load time, 2D vs 3D, WebGPU, and cost. See which one wins for your project, from Unity and Godot to PlayCanvas, Defold, and Phaser.]]></description>
            <content:encoded><![CDATA[<h1>Best Web Game Engines for 2026 (Compared)</h1>
<p><em>Last updated: September 2026.</em></p>
<p>Building a game for the web? Your choice of engine determines everything: build size, load time, visual fidelity, and how much of your audience can actually play.</p>
<p>This guide compares the best web game engines available in 2026, from full-featured engines like Unity and Godot to lightweight JavaScript frameworks like Phaser and PixiJS.</p>
<p><strong>What changed in 2026:</strong> WebGPU is finally shippable everywhere. Safari 26 (September 2025) added WebGPU on macOS, iPadOS, iOS, and visionOS, closing the last major holdout, so the old &quot;stick to WebGL because of Safari&quot; advice is dead. Three.js ships a zero-config WebGPU renderer with automatic WebGL2 fallback, and PlayCanvas has the most mature WebGPU path of the bunch. Godot's web export still targets WebGL 2.0 only, though Godot 4.7 (June 2026) added wasm64 exports that lift the old 4 GB memory ceiling. WebGPU is still opt-in or experimental in most engines rather than the default, but the browser support that was blocking it is now in place.</p>
<p><BuildCta
  title="Just want to make a game, not study engines?"
  desc="Type one sentence and Cinevva builds a playable 3D web game around it while you read this guide."
  prompt="Make a 3D platformer with moving platforms and a timer" /></p>
<h2>Compare engines for your actual game</h2>
<p>Use the categories below to narrow the field, then test a representative scene on the devices you want to support. Build size and load time depend on assets, export settings, hosting and hardware; figures in this guide are examples rather than results from one controlled benchmark across all engines. Cinevva publishes this guide and develops a browser game platform. For evidence of what people build with it, browse the <a href="/arcade">Arcade</a> and read about the <a href="/engine">Cinevva engine</a>.</p>
<h2>Best Web Game Engines for 2026: Quick Picks</h2>
<p>Short on time? Here's where each engine wins in 2026.</p>
<h3>Best 3D web game engines</h3>
<p>PlayCanvas leads for browser-first 3D: a 1-2 MB runtime, the most production-ready WebGPU renderer of any web engine, and a collaborative cloud editor. Godot and Cocos Creator are strong free alternatives, and Unity WebGL works if you also need native builds and can accept an 8 MB+ download.</p>
<h3>Top 2D game engines for 2026</h3>
<p>Defold and Phaser are the picks for 2D. Defold ships the smallest builds (~1.14 MB) and loads fastest; Phaser gives you a full batteries-included framework with the biggest community. For non-coders, Construct and GDevelop build 2D games visually with no programming. For the full breakdown, see <a href="/guides/best-2d-game-engines-2026">best 2D game engines for 2026</a>.</p>
<h3>Best Wasm game engines</h3>
<p>If WebAssembly performance is the priority, Godot (Wasm + SIMD by default), Defold (Wasm runtime), and Cocos Creator (Wasm physics with 5-9x gains) compile to fast, compact web builds. Wasm is what lets these engines run near-native speed inside the browser.</p>
<h3>Best HTML5 game engines</h3>
<p>If you're searching for HTML5 game engines, this is the same list seen from the browser's side. Phaser, PixiJS and Excalibur.js are HTML5 game engines in the strict sense: plain JavaScript that draws through Canvas or WebGL with no plugin and no compile step. Construct and GDevelop export the same kind of HTML5 build from a visual editor, and Defold, Godot and Unity reach the browser through WebAssembly wrapped in an HTML5 page. For small 2D games that must load in a second, Phaser or Defold. For a no-code HTML5 game, Construct.</p>
<h3>Best free and open-source web game engines</h3>
<p>Godot, Phaser, PixiJS, Defold, and Excalibur.js are all free and open-source, so there are no license fees or revenue thresholds. Godot is the most complete free engine for both 2D and 3D.</p>
<h2>The Ranking</h2>
<p>This order is for web-first work specifically, weighing build size, load time, and how web-native each engine really is. If your project puts native, mobile, or console first, the order shifts and the heavy engines climb.</p>
<ol>
<li><strong>PlayCanvas</strong>: best for browser-first 3D, with the smallest runtime and the most mature WebGPU path.</li>
<li><strong>Defold</strong>: best for the smallest, fastest-loading web builds.</li>
<li><strong>Phaser</strong>: best for code-first 2D with the biggest HTML5 community.</li>
<li><strong>Godot</strong>: best for a free, open-source engine that does both 2D and 3D.</li>
<li><strong>Cocos Creator</strong>: best for mini-games and the Asian web market.</li>
<li><strong>Construct</strong>: best for no-code 2D that still ships clean web builds.</li>
<li><strong>GDevelop</strong>: best for free, open-source no-code across 2D and light 3D.</li>
<li><strong>PixiJS</strong>: best for custom 2D rendering at the smallest footprint.</li>
<li><strong>Excalibur.js</strong>: best for TypeScript 2D with more structure than a bare renderer.</li>
<li><strong>Unity</strong>: best when web is secondary to desktop, mobile, or console.</li>
<li><strong>Unreal</strong>: best for high-fidelity visualization via Pixel Streaming, not real web games.</li>
</ol>
<h2>Quick Reference Table</h2>
<table>
<thead>
<tr>
<th>Engine</th>
<th>Type</th>
<th>Web Tech</th>
<th>Build Size (empty)</th>
<th>Best For</th>
<th>Cost</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="https://unity.com/"><strong>Unity</strong></a></td>
<td>Full engine</td>
<td>WebGL</td>
<td>~8 MB</td>
<td>3D games, cross-platform</td>
<td>Free &lt; $200K; Pro $2,310/yr</td>
</tr>
<tr>
<td><a href="https://godotengine.org/"><strong>Godot</strong></a></td>
<td>Full engine</td>
<td>WebGL + Wasm</td>
<td>~9 MB (24 MB uncompressed)</td>
<td>2D/3D indie games</td>
<td>Free (MIT)</td>
</tr>
<tr>
<td><a href="https://www.unrealengine.com/"><strong>Unreal</strong></a></td>
<td>Full engine</td>
<td>Pixel Streaming only</td>
<td>N/A (server-side)</td>
<td>High-fidelity visualization</td>
<td>Free &lt; $1M revenue</td>
</tr>
<tr>
<td><a href="https://www.cocos.com/en/creator"><strong>Cocos Creator</strong></a></td>
<td>Full engine</td>
<td>WebGL + WebGPU + Wasm</td>
<td>~2-4 MB</td>
<td>2D/3D, mini-games (Asia)</td>
<td>Free</td>
</tr>
<tr>
<td><a href="https://playcanvas.com/"><strong>PlayCanvas</strong></a></td>
<td>Web-first 3D</td>
<td>WebGL2 + WebGPU</td>
<td>~1-2 MB</td>
<td>Interactive 3D, web apps</td>
<td>Free tier; paid plans</td>
</tr>
<tr>
<td><a href="https://defold.com/"><strong>Defold</strong></a></td>
<td>Web-first 2D/3D</td>
<td>WebGL + Wasm</td>
<td>~1.14 MB</td>
<td>Casual/mobile web games</td>
<td>Free</td>
</tr>
<tr>
<td><a href="https://www.construct.net/"><strong>Construct</strong></a></td>
<td>Visual 2D</td>
<td>WebGL + WebGPU</td>
<td>~1-2 MB</td>
<td>2D games, non-coders</td>
<td>Subscription</td>
</tr>
<tr>
<td><a href="https://gdevelop.io/"><strong>GDevelop</strong></a></td>
<td>Visual 2D/3D</td>
<td>WebGL</td>
<td>~2-3 MB</td>
<td>Beginners, rapid prototyping</td>
<td>Free tier; paid plans</td>
</tr>
<tr>
<td><a href="https://phaser.io/"><strong>Phaser</strong></a></td>
<td>JS framework</td>
<td>WebGL/Canvas</td>
<td>~500 KB</td>
<td>2D games, rapid prototyping</td>
<td>Free (MIT)</td>
</tr>
<tr>
<td><a href="https://pixijs.com/"><strong>PixiJS</strong></a></td>
<td>JS renderer</td>
<td>WebGL</td>
<td>~200 KB</td>
<td>Custom 2D rendering</td>
<td>Free (MIT)</td>
</tr>
<tr>
<td><a href="https://excaliburjs.com/"><strong>Excalibur.js</strong></a></td>
<td>JS framework</td>
<td>WebGL</td>
<td>~300 KB</td>
<td>TypeScript 2D games</td>
<td>Free (BSD)</td>
</tr>
</tbody>
</table>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 452" role="img" aria-label="Empty web build sizes by engine, smallest to largest: PixiJS about 0.2 MB, Excalibur.js 0.3 MB, Phaser 0.5 MB, Defold 1.14 MB, PlayCanvas and Construct 1 to 2 MB, GDevelop 2 to 3 MB, Cocos Creator 2 to 4 MB, Unity about 8 MB, Godot about 9 MB gzipped" style="width:100%;height:auto;max-width:720px;margin:1.5rem auto;display:block;border-radius:14px">
  <rect width="720" height="452" rx="14" fill="#0b1020"/>
  <text x="32" y="44" font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif" font-size="20" font-weight="800" fill="#e8edf5">Empty build size by engine</text>
  <text x="32" y="68" font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif" font-size="13" fill="#9aa7b4">Sizes are approximate empty-build downloads, engine docs and community measurements.</text>
  <g font-family="Inter,Segoe UI,Helvetica,Arial,sans-serif">
    <text x="180" y="115" text-anchor="end" font-size="13" font-weight="700" fill="#e8edf5">PixiJS</text>
    <rect x="190" y="100" width="10" height="20" rx="5" fill="#6ee7b7"/>
    <text x="208" y="115" font-size="12" font-weight="700" fill="#9aa7b4">~0.2 MB</text>
    <text x="180" y="147" text-anchor="end" font-size="13" font-weight="700" fill="#e8edf5">Excalibur.js</text>
    <rect x="190" y="132" width="16" height="20" rx="5" fill="#6ee7b7"/>
    <text x="214" y="147" font-size="12" font-weight="700" fill="#9aa7b4">~0.3 MB</text>
    <text x="180" y="179" text-anchor="end" font-size="13" font-weight="700" fill="#e8edf5">Phaser</text>
    <rect x="190" y="164" width="26" height="20" rx="5" fill="#6ee7b7"/>
    <text x="224" y="179" font-size="12" font-weight="700" fill="#9aa7b4">~0.5 MB</text>
    <text x="180" y="211" text-anchor="end" font-size="13" font-weight="700" fill="#e8edf5">Defold</text>
    <rect x="190" y="196" width="60" height="20" rx="5" fill="#7dd3fc"/>
    <text x="258" y="211" font-size="12" font-weight="700" fill="#9aa7b4">~1.14 MB</text>
    <text x="180" y="243" text-anchor="end" font-size="13" font-weight="700" fill="#e8edf5">PlayCanvas</text>
    <rect x="190" y="228" width="78" height="20" rx="5" fill="#7dd3fc"/>
    <text x="276" y="243" font-size="12" font-weight="700" fill="#9aa7b4">~1-2 MB</text>
    <text x="180" y="275" text-anchor="end" font-size="13" font-weight="700" fill="#e8edf5">Construct</text>
    <rect x="190" y="260" width="78" height="20" rx="5" fill="#7dd3fc"/>
    <text x="276" y="275" font-size="12" font-weight="700" fill="#9aa7b4">~1-2 MB</text>
    <text x="180" y="307" text-anchor="end" font-size="13" font-weight="700" fill="#e8edf5">GDevelop</text>
    <rect x="190" y="292" width="131" height="20" rx="5" fill="#c8a8ff"/>
    <text x="329" y="307" font-size="12" font-weight="700" fill="#9aa7b4">~2-3 MB</text>
    <text x="180" y="339" text-anchor="end" font-size="13" font-weight="700" fill="#e8edf5">Cocos Creator</text>
    <rect x="190" y="324" width="157" height="20" rx="5" fill="#c8a8ff"/>
    <text x="355" y="339" font-size="12" font-weight="700" fill="#9aa7b4">~2-4 MB</text>
    <text x="180" y="371" text-anchor="end" font-size="13" font-weight="700" fill="#e8edf5">Unity</text>
    <rect x="190" y="356" width="418" height="20" rx="5" fill="#fb7185"/>
    <text x="616" y="371" font-size="12" font-weight="700" fill="#fb7185">~8 MB</text>
    <text x="180" y="403" text-anchor="end" font-size="13" font-weight="700" fill="#e8edf5">Godot</text>
    <rect x="190" y="388" width="470" height="20" rx="5" fill="#fb7185"/>
    <text x="652" y="403" text-anchor="end" font-size="12" font-weight="800" fill="#0b1020">~9 MB gzipped</text>
  </g>
</svg>
<h2>Full-Featured Game Engines</h2>
<h3><a href="https://unity.com/">Unity</a> (WebGL)</h3>
<p>The industry workhorse. Unity's WebGL export produces playable web builds, but with significant trade-offs. Unity 6.6 (August 2026) is the current release. Unity 6.5 (June 2026) deprecated the old Built-in Render Pipeline (supported through Unity 6.7 LTS), so new projects should start on URP, and 6.6 moved WebGPU out of experimental and lifted the web Wasm memory ceiling to 16 GB.</p>
<p><strong>Strengths:</strong></p>
<ul>
<li>Mature ecosystem with extensive Asset Store</li>
<li>Advanced rendering, physics, animation tools</li>
<li>Strong documentation and community</li>
<li>Cross-platform: same codebase deploys to desktop, mobile, console, and web</li>
</ul>
<p><strong>Web Limitations:</strong></p>
<ul>
<li>Large build sizes (~8+ MB minimum)</li>
<li>Slower load times compared to web-native engines</li>
<li>Performance lags behind native builds</li>
<li>WebGPU backend left experimental in Unity 6.6 (August 2026) and is now fully supported, though still off by default, with Graphics Device Filtering to fall back to WebGL2 per device</li>
<li>Memory overhead can be problematic on mobile browsers</li>
</ul>
<p><strong>Pricing (2026):</strong></p>
<ul>
<li>Personal: Free up to $200K revenue</li>
<li>Pro: $2,310/seat/year (a 5% increase landed January 2026)</li>
<li>Runtime fee cancelled in late 2024</li>
</ul>
<p><strong>When to use:</strong> You're building a complex 3D game that also needs to ship on other platforms. Web is secondary.</p>
<p><strong>Links:</strong> <a href="https://unity.com/">Unity</a> · <a href="https://docs.unity3d.com/Manual/webgl.html">WebGL Docs</a> · <a href="https://assetstore.unity.com/">Asset Store</a></p>
<hr>
<h3><a href="https://godotengine.org/">Godot</a> (HTML5)</h3>
<p>Open-source and rapidly improving. Godot 4.7 (June 2026, at 4.7.2 since August 2026 with 4.8 in dev snapshots) is the current stable release, and it includes WebAssembly SIMD by default plus a new wasm64 web export option, boosting performance without code changes.</p>
<p><strong>Strengths:</strong></p>
<ul>
<li>Completely free and open-source (MIT license)</li>
<li>Lightweight editor</li>
<li>Excellent 2D support with dedicated renderer</li>
<li>GDScript is beginner-friendly</li>
<li>WebAssembly + SIMD for better performance</li>
<li>Active, growing community</li>
</ul>
<p><strong>Web Limitations:</strong></p>
<ul>
<li>C# projects cannot export to web (GDScript only)</li>
<li>Web export is WebGL 2.0 only (the Compatibility renderer); Forward+/Mobile and WebGPU aren't supported in the browser (a community WebGPU fork is in public beta, but it's unofficial)</li>
<li>Safari/iOS support is problematic</li>
<li>Empty builds ~24 MB uncompressed (~9 MB gzipped)</li>
<li>Some 3D rendering features lag behind Unity</li>
</ul>
<p><strong>Threading:</strong></p>
<ul>
<li>Requires COOP/COEP headers for SharedArrayBuffer</li>
<li>Single-threaded is now the default (avoids header complexity)</li>
</ul>
<p><strong>When to use:</strong> You want open-source, prioritize 2D, or want full control without licensing concerns.</p>
<p><strong>Links:</strong> <a href="https://godotengine.org/">Godot Engine</a> · <a href="https://docs.godotengine.org/en/stable/tutorials/export/exporting_for_web.html">Web Export Docs</a> · <a href="https://github.com/godotengine/godot">GitHub</a></p>
<hr>
<h3><a href="https://www.unrealengine.com/">Unreal Engine 5</a></h3>
<p>Unreal dropped native HTML5 export with UE 4.24. In UE5, browser delivery requires <strong>Pixel Streaming</strong>, rewritten as Pixel Streaming 2 in UE 5.7. UE 5.8 (June 2026), the last planned UE5 release before UE6, doesn't change the web story.</p>
<p><strong>How Pixel Streaming Works:</strong></p>
<ul>
<li>Game runs on a server with GPU</li>
<li>Frames streamed to browser via WebRTC</li>
<li>Input sent back from browser</li>
<li>One UE instance per user typically required</li>
</ul>
<p><strong>Strengths:</strong></p>
<ul>
<li>Full UE5 visual fidelity in browser</li>
<li>No client-side hardware requirements</li>
<li>Works on any device with a browser</li>
</ul>
<p><strong>Limitations:</strong></p>
<ul>
<li>Requires server infrastructure (expensive to scale)</li>
<li>Latency depends on network</li>
<li>Video compression artifacts</li>
<li>Not suitable for traditional &quot;web games&quot;: more for visualizations, configurators, showcases</li>
</ul>
<p><strong>Community HTML5 efforts exist</strong> (WebAssembly/WebGPU forks like SimplyStream) but are experimental and limited.</p>
<p><strong>When to use:</strong> High-fidelity architectural visualization or product configurators where server costs are acceptable. Not practical for games targeting mass web audiences.</p>
<p><strong>Links:</strong> <a href="https://www.unrealengine.com/">Unreal Engine</a> · <a href="https://dev.epicgames.com/documentation/en-us/unreal-engine/pixel-streaming-in-unreal-engine">Pixel Streaming Docs</a></p>
<hr>
<h3>Cocos Creator</h3>
<p>A full-featured engine with exceptional web and mini-game platform support, particularly popular in Asia.</p>
<p><strong>Strengths:</strong></p>
<ul>
<li>Dual-core architecture: Web3D core (TypeScript) optimized for web/mini-games</li>
<li>WebGPU support (still experimental as of 3.8.8, Dec 2025; requires the new custom render pipeline, and 3.8.8 added WebGPU MSAA)</li>
<li>WebAssembly for physics (Box2D, Bullet) with 5-9× performance gains</li>
<li>Excellent mini-game platform support (WeChat, TikTok, Taobao)</li>
<li>Custom Render Pipeline (CRP) for optimization control</li>
<li>Spine 4.2 support with WASM runtime</li>
<li>Package size trimming and Brotli compression</li>
<li>Completely free</li>
</ul>
<p><strong>Web Limitations:</strong></p>
<ul>
<li>Smaller Western community (documentation primarily in Chinese)</li>
<li>Initial load can be heavy with all features enabled</li>
<li>Fallback to WebGL1/asm.js on older browsers degrades performance</li>
</ul>
<p><strong>Recent additions (2025-2026):</strong></p>
<ul>
<li>WebGPU backend</li>
<li>WASM physics modules by default</li>
<li>Custom Render Pipeline via RenderGraph</li>
<li>ASTC texture compression for mini-games</li>
<li>Significant package size reductions</li>
</ul>
<p><strong>When to use:</strong> Mini-game platforms (WeChat, TikTok), mobile web games targeting Asian markets, or when you need strong 2D/3D web performance with a free engine.</p>
<p><strong>Links:</strong> <a href="https://www.cocos.com/en/creator">Cocos Creator</a> · <a href="https://docs.cocos.com/creator/manual/en/">Documentation</a> · <a href="https://github.com/cocos/cocos-engine">GitHub</a></p>
<hr>
<h2>Web-First Engines</h2>
<p>These engines are built specifically for web delivery.</p>
<h3><a href="https://playcanvas.com/">PlayCanvas</a></h3>
<p>A cloud-based 3D engine designed for the web from the ground up.</p>
<p><strong>Strengths:</strong></p>
<ul>
<li>WebGL2 + WebGPU (beta) support</li>
<li>Collaborative cloud editor</li>
<li>Small runtime (~1-2 MB)</li>
<li>PBR rendering, post-processing, GPU particles</li>
<li>Compute shaders via WebGPU</li>
<li>3D Gaussian Splatting support</li>
<li>Efficient asset compression (Basis Universal, WebP)</li>
</ul>
<p><strong>Recent additions (2025-2026):</strong></p>
<ul>
<li>Engine V2 with WebGPU support</li>
<li>Compute shaders</li>
<li>Multi-draw for reduced draw call overhead</li>
<li>HDR support in viewer</li>
<li>Improved glTF export</li>
<li>Engine v2.20 extended the high-performance WebGPU renderer, including a compute-based WebGPU path for 3D Gaussian splats. v2.22.0 (September 2026) is current, with a physics backend abstraction and KTX2 cubemaps landing in 2.21</li>
</ul>
<p><strong>Limitations:</strong></p>
<ul>
<li>WebGPU still in beta (some features missing like runtime lightmapping)</li>
<li>Cloud-based workflow may not suit all teams</li>
<li>Less suited for complex 2D games</li>
</ul>
<p><strong>Pricing:</strong></p>
<ul>
<li>Free tier available</li>
<li>Paid plans for private projects, storage, support</li>
</ul>
<p><strong>When to use:</strong> Interactive 3D web experiences, product configurators, web-based games where small download size matters.</p>
<p><strong>Links:</strong> <a href="https://playcanvas.com/">PlayCanvas</a> · <a href="https://developer.playcanvas.com/">Documentation</a> · <a href="https://github.com/playcanvas/engine">GitHub</a></p>
<hr>
<h3><a href="https://defold.com/">Defold</a></h3>
<p>A lightweight engine from King (Candy Crush) with exceptional web performance. Defold 1.13.0 (June 2026) dropped the legacy asm.js (js-web) target, so web builds are Wasm-only now, and it added glTF morph targets as part of a growing 3D feature set that 1.13.1 (August 2026) extended with first-class light components.</p>
<p><strong>Strengths:</strong></p>
<ul>
<li>Tiny runtime: ~1.14 MB (gzipped, empty build)</li>
<li>WebAssembly by default</li>
<li>Excellent load times</li>
<li>Built-in publishing to Poki and other platforms</li>
<li>HTML5 performance profiler</li>
<li>GPU skinning with 30-50% performance improvements in recent versions</li>
<li>WebGPU experimental support</li>
</ul>
<p><strong>Limitations:</strong></p>
<ul>
<li>Smaller community than Godot/Unity</li>
<li>Debug builds significantly slower</li>
<li>256 MB default heap (needs tuning for larger games)</li>
<li>Learning curve for Lua scripting</li>
</ul>
<p><strong>Performance comparison:</strong></p>
<ul>
<li>Empty build: Defold ~1.14 MB vs Unity ~8 MB vs Godot ~9 MB</li>
<li>Among the fastest-loading engines in studies of top web games</li>
</ul>
<p><strong>When to use:</strong> Mobile-first web games, casual games, any project where load time is critical.</p>
<p><strong>Links:</strong> <a href="https://defold.com/">Defold</a> · <a href="https://defold.com/manuals/html5/">HTML5 Docs</a> · <a href="https://github.com/defold/defold">GitHub</a></p>
<hr>
<h3><a href="https://www.construct.net/">Construct</a></h3>
<p>Visual event-based development. Perfect for non-programmers.</p>
<p><strong>Strengths:</strong></p>
<ul>
<li>No coding required (event sheets)</li>
<li>WebGPU renderer enabled by default (where supported)</li>
<li>Rapid iteration and prototyping</li>
<li>55 releases in 2025 alone</li>
<li>TypeScript support in editor</li>
<li>Built-in asset browser, debugger improvements</li>
</ul>
<p><strong>Limitations:</strong></p>
<ul>
<li>2D focused (minimal 3D support)</li>
<li>Subscription model</li>
<li>Less control than code-based engines</li>
<li>May hit walls on complex game logic</li>
</ul>
<p><strong>When to use:</strong> 2D games, rapid prototyping, education, or if you're not a programmer.</p>
<p><strong>Links:</strong> <a href="https://www.construct.net/">Construct</a> · <a href="https://www.construct.net/en/make-games/manuals/construct-3">Documentation</a></p>
<hr>
<h3><a href="https://gdevelop.io/">GDevelop</a></h3>
<p>Open-source visual game engine with growing 3D support.</p>
<p><strong>Strengths:</strong></p>
<ul>
<li>Event-based, no-code development</li>
<li>Native 3D support (added in 5.3)</li>
<li>Real-time 3D editor (5.6)</li>
<li>Jolt Physics for 3D</li>
<li>Built-in profiler</li>
<li>Real-time multiplayer support (2-8 players)</li>
<li>Free tier available</li>
</ul>
<p><strong>Limitations:</strong></p>
<ul>
<li>Exported code includes engine libraries (Pixi.js, Three.js, Howler.js)</li>
<li>Build size larger than minimal frameworks</li>
<li>Editor can slow with many objects/scenes</li>
<li>Performance depends heavily on optimization techniques</li>
</ul>
<p><strong>When to use:</strong> Beginners, educational contexts, rapid prototyping, smaller 2D/3D games.</p>
<p><strong>Links:</strong> <a href="https://gdevelop.io/">GDevelop</a> · <a href="https://wiki.gdevelop.io/">Documentation</a> · <a href="https://github.com/4ian/GDevelop">GitHub</a></p>
<hr>
<h2>JavaScript Frameworks</h2>
<p>For developers who want maximum control and minimal overhead.</p>
<h3><a href="https://phaser.io/">Phaser</a> (v4)</h3>
<p>The most popular HTML5 game framework. Version 4 shipped stable in April 2026, a ground-up rebuild of the WebGL renderer with a new node-based render architecture while keeping the v3 API. Point releases have come fast since, with v4.2 &quot;Giedi&quot; landing in June 2026 and a 4.2.1 patch in July. Note that Phaser 4 is a WebGL2 rewrite, not a WebGPU engine; WebGPU is future groundwork, not a shipping feature.</p>
<p><strong>Strengths:</strong></p>
<ul>
<li>Full game framework: physics, input, audio, scenes, asset loading</li>
<li>Arcade Physics and Matter.js built-in</li>
<li>Massive community, tutorials, examples</li>
<li>WebGL + Canvas renderers</li>
<li>Templates for bundlers and desktop wrappers</li>
</ul>
<p><strong>Limitations:</strong></p>
<ul>
<li>Larger bundle than minimal libraries (~500 KB)</li>
<li>Performance in sprite-heavy scenarios lags PixiJS</li>
<li>More opinionated architecture</li>
</ul>
<p><strong>When to use:</strong> Standard 2D games where you want batteries-included but still write code.</p>
<p><strong>Links:</strong> <a href="https://phaser.io/">Phaser</a> · <a href="https://phaser.io/learn">Documentation</a> · <a href="https://github.com/phaserjs/phaser">GitHub</a></p>
<hr>
<h3><a href="https://pixijs.com/">PixiJS</a> (v8)</h3>
<p>High-performance 2D rendering library.</p>
<p><strong>Strengths:</strong></p>
<ul>
<li>Exceptional rendering performance</li>
<li>Tiny footprint (~200 KB)</li>
<li>Powerful WebGL rendering pipeline</li>
<li>Great for custom rendering, visualizations</li>
<li>New &quot;gl2D&quot; scene format and game engine library in development</li>
</ul>
<p><strong>Limitations:</strong></p>
<ul>
<li>Not a game engine: no physics, audio, scene management</li>
<li>More setup required</li>
<li>You build (or integrate) game logic yourself</li>
</ul>
<p><strong>When to use:</strong> Graphics-heavy applications, custom rendering needs, performance-critical projects, or when building your own engine.</p>
<p><strong>Links:</strong> <a href="https://pixijs.com/">PixiJS</a> · <a href="https://pixijs.com/guides">Documentation</a> · <a href="https://github.com/pixijs/pixijs">GitHub</a></p>
<hr>
<h3><a href="https://excaliburjs.com/">Excalibur.js</a></h3>
<p>TypeScript-first 2D game engine with ECS architecture.</p>
<p><strong>Strengths:</strong></p>
<ul>
<li>Built in TypeScript</li>
<li>Entity-Component-System architecture</li>
<li>Tilemaps, nine-slice sprites, GPU particles</li>
<li>HTML-based UI that scales with canvas</li>
<li>Good balance of features and control</li>
</ul>
<p><strong>Limitations:</strong></p>
<ul>
<li>Pre-1.0 (some APIs may change)</li>
<li>Smaller ecosystem and fewer tutorials</li>
<li>Physics and lighting still being built out</li>
</ul>
<p><strong>When to use:</strong> TypeScript developers building 2D games who want more structure than PixiJS but less overhead than Phaser.</p>
<p><strong>Links:</strong> <a href="https://excaliburjs.com/">Excalibur.js</a> · <a href="https://excaliburjs.com/docs/">Documentation</a> · <a href="https://github.com/excaliburjs/Excalibur">GitHub</a></p>
<hr>
<h2>Decision Guide</h2>
<h3>By Project Type</h3>
<table>
<thead>
<tr>
<th>Project</th>
<th>Recommended Engine</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Casual 2D mobile web game</strong></td>
<td>Defold, Phaser, Construct</td>
</tr>
<tr>
<td><strong>Complex 2D with custom needs</strong></td>
<td>PixiJS, Excalibur.js</td>
</tr>
<tr>
<td><strong>3D web game</strong></td>
<td>PlayCanvas, Godot (Compatibility), Cocos Creator</td>
</tr>
<tr>
<td><strong>Cross-platform (web + native)</strong></td>
<td>Unity, Godot, Cocos Creator</td>
</tr>
<tr>
<td><strong>Mini-game platforms (WeChat, TikTok)</strong></td>
<td>Cocos Creator</td>
</tr>
<tr>
<td><strong>High-fidelity visualization</strong></td>
<td>Unreal (Pixel Streaming), PlayCanvas</td>
</tr>
<tr>
<td><strong>No-code / beginner</strong></td>
<td>Construct, GDevelop</td>
</tr>
<tr>
<td><strong>Open-source required</strong></td>
<td>Godot, Phaser, PixiJS, Excalibur.js, Cocos (engine)</td>
</tr>
</tbody>
</table>
<h4>Or skip the engine for a first playable</h4>
<p>Every option above needs installing, configuring, and learning before you see anything move. If what you actually want is a playable build of your idea today, describe it and Cinevva writes the browser game around it. Pick the project type you landed on above and it opens with the idea already typed:</p>
<div class="prompt-grid">
<div class="prompt-card">
<strong>Casual 2D mobile web game</strong>
<p>One-thumb controls, short loop, tuned for a phone browser.</p>
<a class="prompt-go" href="/create?utm_source=guides&utm_medium=content&utm_campaign=engine_picker#prompt=Make%20a%20one%20thumb%20endless%20runner%20that%20speeds%20up%20as%20I%20score">Build it free →</a>
</div>
<div class="prompt-card">
<strong>Complex 2D with custom needs</strong>
<p>Procedural rooms, upgrades, and systems that talk to each other.</p>
<a class="prompt-go" href="/create?utm_source=guides&utm_medium=content&utm_campaign=engine_picker#prompt=Make%20a%202D%20roguelike%20with%20procedural%20rooms%20and%20upgrades%20between%20runs">Build it free →</a>
</div>
<div class="prompt-card">
<strong>3D web game</strong>
<p>Real 3D in the browser with no WebGL setup of your own.</p>
<a class="prompt-go" href="/create?utm_source=guides&utm_medium=content&utm_campaign=engine_picker#prompt=Make%20a%203D%20platformer%20collecting%20stars%20across%20floating%20islands">Build it free →</a>
</div>
<div class="prompt-card">
<strong>No-code / beginner</strong>
<p>No editor to learn. Change it by saying what you want different.</p>
<a class="prompt-go" href="/create?utm_source=guides&utm_medium=content&utm_campaign=engine_picker#prompt=Make%20a%20simple%203D%20maze%20game%20where%20I%20collect%20keys%20to%20open%20doors">Build it free →</a>
</div>
</div>
<p>Worth being straight about the limits: this is a browser-game route, so it doesn't cover the cross-platform native builds Unity and Godot give you, the mini-game platform exports Cocos handles, or an open-source licensing requirement. For those, the engines in the table remain the right answer.</p>
<h3>By Priority</h3>
<table>
<thead>
<tr>
<th>Priority</th>
<th>Best Options</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Smallest build size</strong></td>
<td>Defold, PixiJS, Excalibur.js</td>
</tr>
<tr>
<td><strong>Fastest load time</strong></td>
<td>Defold, Phaser, vanilla JS</td>
</tr>
<tr>
<td><strong>Best 3D support</strong></td>
<td>PlayCanvas, Unity, Cocos Creator</td>
</tr>
<tr>
<td><strong>Best 2D support</strong></td>
<td>Godot, Phaser, Construct, Cocos Creator</td>
</tr>
<tr>
<td><strong>Free &amp; open-source</strong></td>
<td>Godot, Phaser, PixiJS, Defold, Cocos (engine)</td>
</tr>
<tr>
<td><strong>WebGPU support</strong></td>
<td>PlayCanvas (most mature), Three.js (opt-in), Construct, Cocos Creator</td>
</tr>
<tr>
<td><strong>Mobile browser performance</strong></td>
<td>Defold, Phaser, PlayCanvas, Cocos Creator</td>
</tr>
<tr>
<td><strong>Mini-game platforms</strong></td>
<td>Cocos Creator</td>
</tr>
</tbody>
</table>
<hr>
<h2>The Reality of Web Game Performance</h2>
<p>No matter which engine you choose, these factors matter more:</p>
<ol>
<li><strong>Asset size</strong>: Compress textures, audio, minimize dependencies</li>
<li><strong>First scene</strong>: Make initial download small, stream the rest</li>
<li><strong>Draw calls</strong>: Batch sprites, use texture atlases</li>
<li><strong>Device testing</strong>: Test on actual mobile devices, not just desktop Chrome</li>
</ol>
<p>Start here: <a href="/tutorials/ship-web-game-fast">Ship a web game that loads fast</a></p>
<hr>
<h2>Browser Compatibility Notes</h2>
<table>
<thead>
<tr>
<th>Feature</th>
<th>Chrome</th>
<th>Firefox</th>
<th>Safari</th>
<th>Mobile</th>
</tr>
</thead>
<tbody>
<tr>
<td>WebGL 2.0</td>
<td>✅</td>
<td>✅</td>
<td>✅</td>
<td>✅</td>
</tr>
<tr>
<td>WebGPU</td>
<td>✅</td>
<td>✅ Windows/macOS</td>
<td>✅ Safari 26+</td>
<td>✅ iOS/iPadOS 26+</td>
</tr>
<tr>
<td>SharedArrayBuffer</td>
<td>✅ (COOP/COEP)</td>
<td>✅ (COOP/COEP)</td>
<td>⚠️</td>
<td>⚠️</td>
</tr>
<tr>
<td>Wasm SIMD</td>
<td>✅</td>
<td>✅</td>
<td>✅</td>
<td>✅</td>
</tr>
</tbody>
</table>
<p>Safari 26 (September 2025) finally shipped WebGPU across macOS, iPadOS, iOS, and visionOS, so cross-browser WebGPU is now a reality rather than a Chrome-only feature. Firefox is the remaining laggard: WebGPU shipped on Windows in Firefox 141 and reached macOS in Firefox 145, but Linux and Android builds still carry it in Nightly only, with Mozilla targeting both for 2026. SharedArrayBuffer is still the trickier dependency on Safari, so always test on Safari/iOS if you rely on threading or target broad audiences.</p>
<hr>
<h2>Common Questions</h2>
<h3>What is the best game engine for browser games?</h3>
<p>There's no single answer because it depends on what you're building. For 2D games, Phaser and Defold are hard to beat. They're lightweight, well-documented, and produce small builds that load fast. For 3D in the browser, PlayCanvas and Three.js give you the most control without the bloat of a full desktop engine. If you need cross-platform and web is secondary, Unity or Godot can export to WebGL, but expect larger downloads. We built <a href="/engine">Cinevva Engine</a> on Three.js because we wanted open-source and web-first from day one.</p>
<h3>Can Unity export to the web?</h3>
<p>Yes, Unity can export WebGL builds. It works, but with trade-offs. Minimum build size is around 8 MB even for an empty project, load times are noticeably slower than web-native engines, and mobile browser support can be iffy due to memory overhead. If your game already exists in Unity and you want a web version, it's fine. If you're starting fresh and targeting web specifically, a web-native engine will give you better results.</p>
<h3>Is Godot good for web games?</h3>
<p>Godot's HTML5 export is solid and improving. The engine itself is free and open-source, which is a big draw. Build sizes start around 9 MB uncompressed (smaller with gzip), and you get proper 2D and 3D support. The main gotcha is SharedArrayBuffer, which requires specific server headers and can cause issues on some hosting setups. For indie devs who want one codebase across desktop and web, Godot is a strong pick.</p>
<h3>What's the smallest web game engine?</h3>
<p>PixiJS comes in at roughly 200 KB, which is tiny. It's a 2D renderer though, not a full engine, so you'll be writing more code yourself. Excalibur.js is around 300 KB with more built-in game features. Phaser sits at about 500 KB and gives you a full 2D game framework. For 3D, PlayCanvas and Defold hover around 1-2 MB. The real question isn't just engine size though. It's total build size including your assets, and that's where optimization matters more than engine choice.</p>
<h3>Which is the best game engine for 2026?</h3>
<p>It depends on what you're shipping. For web-first 3D, PlayCanvas is the strongest pick in 2026. For 2D, Defold and Phaser lead on load time and community. If you need one codebase for web and native, Godot (free) or Unity (larger builds) make sense. There's no universal &quot;best&quot; engine, only the best fit for your build size, platform, and skill level. We built <a href="/engine">Cinevva Engine</a> on Three.js because we wanted open-source and web-first from the start.</p>
<h3>What are the top 2D game engines for 2026?</h3>
<p>Defold, Phaser, and Construct are the top 2D engines for web in 2026. Defold produces the smallest, fastest-loading builds. Phaser is the most popular HTML5 framework with the largest ecosystem. Construct lets you build 2D games visually with no code. For custom rendering, PixiJS and Excalibur.js give you more control at a smaller footprint.</p>
<h3>What is a Wasm game engine?</h3>
<p>A Wasm game engine compiles your game to WebAssembly, a low-level binary format that runs at near-native speed in the browser. Godot, Defold, and Cocos Creator all use WebAssembly for their web exports, which is why they perform far better than older JavaScript-only engines. Wasm is now the standard for serious browser games in 2026.</p>
<h3>What are the most popular game engines in 2026?</h3>
<p>By install base and job demand, Unity and Unreal are the industry-standard engines in 2026, with Godot the fastest-growing open-source alternative. For games that run in the browser, Phaser is the most popular 2D framework and PlayCanvas leads web-first 3D. A bigger community means more tutorials, plugins, and answers when you get stuck, but the most popular engine isn't always the best fit for a web project, where build size and load time decide who can actually play.</p>
<h3>What are the best free game engines in 2026?</h3>
<p>Godot is the most complete free engine for 2026. It's fully open-source under the MIT license with no revenue caps or seat fees, and it handles both 2D and 3D. For web specifically, Phaser, PixiJS, Defold, and Excalibur.js are all free and open-source too. Unity and Construct have free tiers with limits, and Unreal is free until $1M in revenue. If you want zero cost and no strings, Godot or one of the open-source JavaScript frameworks is the pick.</p>
<h3>What's the best game engine for beginners in 2026?</h3>
<p>For beginners in 2026, GDevelop and Construct are the easiest starting points because you build games visually with little or no code. If you want to learn programming alongside game design, Godot has a gentle scripting language and a huge library of free tutorials. For 2D web games specifically, Phaser is approachable once you know some JavaScript. Start with whichever matches how much code you want to write, then move up as your projects grow.</p>
<hr>
<h2>Summary</h2>
<ul>
<li><strong>For most web games</strong>: Start with Defold, Phaser, or PlayCanvas depending on 2D vs 3D needs</li>
<li><strong>For cross-platform</strong>: Unity, Godot, or Cocos Creator, accepting larger builds</li>
<li><strong>For mini-game platforms</strong>: Cocos Creator (WeChat, TikTok, Taobao)</li>
<li><strong>For maximum control</strong>: PixiJS or Excalibur.js</li>
<li><strong>For non-programmers</strong>: Construct or GDevelop</li>
<li><strong>For high-fidelity 3D</strong>: PlayCanvas or Pixel Streaming</li>
</ul>
<p>The best engine is the one that ships your game. Start small, profile early, and optimize for load time above all else.</p>
<p><BuildCta
  title="Don't want to pick an engine at all?"
  desc="Describe your game in one sentence and play it in about a minute, free."
  prompt="Make a 3D platformer with moving platforms and a timer" /></p>
<h2>Related</h2>
<ul>
<li><a href="/guides/vibe-coding-game-prompts">100 AI Game Prompt Ideas You Can Build in One Click</a> — steal an idea and have it playable in about a minute</li>
<li><a href="/guides/godot-vs-unity-web-games">Godot vs Unity for Web Games</a> — the two big full engines, head to head on web</li>
<li><a href="/guides/unity-alternatives-web-games">Unity Alternatives for Web Games</a> — leaving Unity? pick a web engine by why you're switching</li>
<li><a href="/guides/open-source-game-engines-2026">Best Open-Source Game Engines for 2026</a> — free, no-fee engines you can fork and ship</li>
<li><a href="/guides/best-2d-game-engines-2026">Best 2D Game Engines for 2026</a> — if your game is 2D, start here</li>
<li><a href="/guides/playcanvas-vs-threejs">PlayCanvas vs Three.js</a> — engine vs library for web 3D</li>
<li><a href="/guides/threejs-vs-babylonjs">Three.js vs Babylon.js</a> — the two big web 3D libraries</li>
<li><a href="/guides/construct-vs-gdevelop">Construct vs GDevelop</a> — the no-code 2D matchup</li>
<li><a href="/guides/web-games-stack-2026">Web Games Tech Stack in 2026</a> — WebGL vs WebGPU vs Wasm at the API level</li>
<li><a href="/tutorials/canvas-2d-game-loop">Canvas 2D game loop</a> — build a game without any engine at all</li>
<li><a href="/guides/game-jams-hackathons">Game Jams &amp; Hackathons</a> — choosing an engine for 48-hour jam constraints</li>
<li><a href="/tutorials/game-physics-libraries">Game physics libraries</a> — physics engines that plug into any of these frameworks</li>
<li><a href="/guides/frontier-gen-ai-models">Best Open-Source Gen AI Models for Games</a> — AI models for generating 3D, art, and audio assets for whichever engine you pick</li>
<li><a href="/guides/itch-io-launch-guide">How to Launch Your Game on itch.io</a> — web game distribution after you've picked your engine</li>
</ul>
<style scoped>
.prompt-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
  gap: 16px;
  margin: 24px 0;
}
.prompt-card {
  border: 1px solid var(--vp-c-divider);
  border-radius: 12px;
  padding: 18px;
  display: flex;
  flex-direction: column;
  gap: 6px;
  background: var(--vp-c-bg-soft);
}
.prompt-card strong { font-size: 1.05rem; }
.prompt-card p { margin: 0; color: var(--vp-c-text-2); font-size: 0.9rem; flex: 1; }
.prompt-go {
  margin-top: 10px;
  font-weight: 600;
  color: var(--vp-c-brand-1);
  text-decoration: none;
}
.prompt-go:hover { text-decoration: underline; }
</style>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Web Games Tech Stack in 2026]]></title>
            <link>https://app.cinevva.com/guides/web-games-stack-2026</link>
            <guid isPermaLink="true">https://app.cinevva.com/guides/web-games-stack-2026</guid>
            <pubDate>Sun, 18 Jan 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[A practical guide to WebGL, WebGPU, and WebAssembly for web game developers, with real code examples and decision frameworks.]]></description>
            <content:encoded><![CDATA[<h1>Web Games Tech Stack in 2026</h1>
<p>Three technologies power web games: WebGL, WebGPU, and WebAssembly. The best modern stack for a high-performance browser game in 2026 is a renderer that does both WebGL2 and WebGPU (Three.js or Babylon.js), Wasm for physics (Rapier), and static hosting, with WebGPU on for the roughly 87% of browsers that have it and WebGL2 for the rest. Each technology solves different problems and comes with different trade-offs. This guide helps you pick based on what you're actually building, not what's getting the most hype, with browser support checked as of September 2026.</p>
<h2>The Quick Answer</h2>
<p>WebGL 2.0 works everywhere and handles most games just fine. Use it when you need broad compatibility, especially on mobile. WebGPU gives you compute shaders and better performance, but you'll lose users on older browsers and devices. WebAssembly makes your CPU code faster, so it's useful for physics and pathfinding, but it won't help if your bottleneck is the GPU.</p>
<p>Most games in 2026 ship WebGL with optional WebGPU for capable browsers. Wasm gets used selectively for hot code paths, not the whole game.</p>
<h2>WebGL 2.0: The Boring Choice That Works</h2>
<p>WebGL 2.0 has been stable since 2017. Every modern browser supports it. Your game runs on Chrome, Firefox, Safari, and Edge going back 5+ years. It works on iOS Safari 15+, Chrome for Android, and Samsung Internet. It even runs in console browsers like Xbox Edge and PlayStation's browser.</p>
<p>Here's what a basic WebGL 2 setup looks like:</p>
<pre><code class="language-javascript">const canvas = document.getElementById('game');
const gl = canvas.getContext('webgl2');

if (!gl) {
  // Fallback to WebGL 1 or show error
  const gl1 = canvas.getContext('webgl');
  if (!gl1) {
    showError('Your browser does not support WebGL.');
    return;
  }
}

// Now you have a GL context
gl.clearColor(0.1, 0.1, 0.1, 1.0);
gl.clear(gl.COLOR_BUFFER_BIT);
</code></pre>
<h3>What You Get</h3>
<p>WebGL 2 gives you instanced rendering so you can draw thousands of objects with one draw call. It has transform feedback for GPU-side particle systems and simulations. You get multiple render targets for deferred rendering and G-buffers, 3D textures for volumetric effects, and integer textures for precise data storage.</p>
<pre><code class="language-javascript">gl.drawArraysInstanced(gl.TRIANGLES, 0, vertexCount, instanceCount);
</code></pre>
<h3>What You Don't Get</h3>
<p>You can't run compute shaders for general-purpose GPU compute. There's no bindless textures, so you're limited by texture unit count. No persistent mapping or explicit memory control. No mesh shaders or modern geometry pipeline.</p>
<p>For most 2D games and many 3D games, these limitations don't matter. WebGL 2 shipped some of the most successful web games ever made.</p>
<h2>WebGPU: When You Need More</h2>
<p>WebGPU is designed around how modern GPUs actually work. Chrome shipped it in May 2023, and by late 2025 all major browsers had support. Chrome 113+, Safari 26+, and Edge 113+ all work, and Firefox enabled it in 141+ on Windows (since July 2025) and 145 for Apple Silicon macOS, with Linux and Android still rolling out. Chrome Android supports it on recent devices, and iOS Safari 26+ supports it too.</p>
<p>Here's the support matrix as of September 2026, from the <a href="https://github.com/gpuweb/gpuweb/wiki/Implementation-Status">gpuweb implementation status</a> page and each browser's release notes.</p>
<table>
<thead>
<tr>
<th>Browser</th>
<th>Shipped on by default</th>
<th>Not yet</th>
</tr>
</thead>
<tbody>
<tr>
<td>Chrome / Edge</td>
<td>113+ on Windows, macOS, and ChromeOS. Linux from 144 (Intel Gen12+) and 147 (NVIDIA on Wayland). Chrome for Android 121+ on Android 12+</td>
<td>Windows on ARM (behind a flag)</td>
</tr>
<tr>
<td>Safari</td>
<td>26 on macOS Tahoe, iOS, iPadOS, and visionOS (September 2025, per <a href="https://webkit.org/blog/17333/webkit-features-in-safari-26-0/">WebKit</a>)</td>
<td>Older macOS versions</td>
</tr>
<tr>
<td>Firefox</td>
<td>141 on Windows (July 2025), 145 on Apple Silicon Macs running macOS 26, <a href="https://www.firefox.com/en-US/firefox/147.0/releasenotes/">147 on all macOS versions with Apple Silicon</a> (January 2026)</td>
<td>Linux and Android (Nightly only, Linux targeted for 2026)</td>
</tr>
<tr>
<td>Samsung Internet</td>
<td>24+</td>
<td></td>
</tr>
</tbody>
</table>
<p>That works out to roughly 87% of global page views on caniuse's count, which is why the engines have moved. Unity 6.6 (August 2026) made WebGPU a <a href="https://discussions.unity.com/t/webgpu-out-of-experimental-in-unity-6-6/1734694">fully supported web graphics API</a> with automatic WebGL2 fallback, Three.js r185 and Babylon.js 9.25 both run WebGPU renderers that fall back on their own, PlayCanvas 2.22 has a mature WebGPU path, and Godot 4.7 and Phaser 4 are still WebGL2 only in the browser. See our <a href="/guides/webgpu-vs-webgl-games">WebGPU vs WebGL for games</a> guide for the rendering trade-offs, and run the <a href="/tools/webgl-webgpu-checker">WebGL and WebGPU checker</a> to see what a given device reports.</p>
<p>The catch is that the remaining devices and browsers don't have it, so you need a fallback strategy.</p>
<h3>What You Get</h3>
<p>Compute shaders let you run general-purpose GPU compute for physics, particles, AI, and image processing.</p>
<pre><code class="language-javascript">// A compute shader that processes data in parallel
const computeShaderCode = `
@group(0) @binding(0) var&lt;storage, read_write&gt; data: array&lt;f32&gt;;

@compute @workgroup_size(64)
fn main(@builtin(global_invocation_id) id: vec3&lt;u32&gt;) {
  data[id.x] = data[id.x] * 2.0;
}
`;
</code></pre>
<p>You also get explicit resource management which means fewer performance surprises, render bundles to pre-record draw calls for repeated use, and WGSL as a modern shader language designed for GPUs rather than a C-like hack.</p>
<h3>Practical WebGPU Setup</h3>
<p>Here's how to initialize WebGPU with a WebGL fallback:</p>
<pre><code class="language-javascript">async function initGraphics(canvas) {
  // Try WebGPU first
  if (navigator.gpu) {
    const adapter = await navigator.gpu.requestAdapter();
    if (adapter) {
      const device = await adapter.requestDevice();
      const context = canvas.getContext('webgpu');
      
      context.configure({
        device,
        format: navigator.gpu.getPreferredCanvasFormat(),
      });
      
      return { type: 'webgpu', device, context };
    }
  }
  
  // Fall back to WebGL 2
  const gl = canvas.getContext('webgl2');
  if (gl) {
    return { type: 'webgl2', gl };
  }
  
  // Last resort: WebGL 1
  const gl1 = canvas.getContext('webgl');
  if (gl1) {
    return { type: 'webgl', gl: gl1 };
  }
  
  throw new Error('No graphics API available');
}
</code></pre>
<h3>When It Actually Helps</h3>
<p>WebGPU shines when you need compute shaders to update millions of particles without CPU round-trips, GPU-accelerated collision detection and cloth simulation, procedural generation of terrain or textures or meshes, complex post-processing effects like SSAO, bloom, and depth of field, or when you want to run trained models for NPC behavior or image effects.</p>
<p>If you're making a puzzle game or a visual novel, WebGPU won't help you. If you're making a particle-heavy action game or a complex 3D world, it might be worth the compatibility trade-off.</p>
<h2>WebAssembly: Fast CPU Code</h2>
<p>WebAssembly runs compiled code at near-native speed. It's not about graphics. It's about making your CPU code faster.</p>
<h3>When It Helps</h3>
<p>Wasm works well for physics engines (Box2D, Bullet, and Rapier all have Wasm builds), pathfinding on large grids, asset decompression, emulating old game consoles, and porting existing C++ or Rust codebases to the web.</p>
<h3>When It Doesn't Help</h3>
<p>Your GPU doesn't care whether draw calls come from JavaScript or Wasm, so rendering won't be faster. I/O bound code like fetching assets or network requests won't benefit either. And if your JavaScript already runs in under a millisecond, Wasm won't save you.</p>
<h3>A Practical Wasm Example</h3>
<p>Here's a minimal Rust function compiled to Wasm for physics:</p>
<pre><code class="language-rust">// src/lib.rs
#[no_mangle]
pub extern &quot;C&quot; fn step_physics(dt: f32) {
    // Your physics code here
}
</code></pre>
<p>Compile with:</p>
<pre><code class="language-bash">wasm-pack build --target web
</code></pre>
<p>Use in JavaScript:</p>
<pre><code class="language-javascript">import init, { step_physics } from './physics_bg.wasm';

await init();

function gameLoop(dt) {
  step_physics(dt); // Runs at near-native speed
  render();
  requestAnimationFrame(gameLoop);
}
</code></pre>
<h3>Threading Gets Complicated</h3>
<p>Wasm can use threads for parallel processing, but it requires <code>SharedArrayBuffer</code>, which means you need cross-origin isolation headers on your server:</p>
<pre><code>Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Embedder-Policy: require-corp
</code></pre>
<p>These headers break things. Third-party iframes without CORP headers stop working, some analytics scripts break, and OAuth popups can fail. You can use <code>credentialless</code> instead of <code>require-corp</code> to reduce the damage, but it's still messy.</p>
<p>If you can't set these headers because you're on shared hosting or <a href="http://itch.io">itch.io</a>, you can't use Wasm threads. Single-threaded Wasm still works fine though.</p>
<h2>Real Decisions for Real Games</h2>
<p>If you're making a 2D platformer, use WebGL 2 through something like Phaser or PixiJS. Skip WebGPU because it's overkill and skip Wasm because JavaScript is fast enough for 2D physics. Broad compatibility matters more than the latest features, and your bottleneck is content, not technology.</p>
<p>If you're making a 3D open world, start with WebGL 2 but design for a WebGPU upgrade path. Consider Wasm for physics using Rapier or Bullet. You want the broadest reach now, but compute shaders would help with foliage, particles, and LOD later. Physics in Wasm keeps the CPU budget low.</p>
<p>If you're porting a C++ engine, use Wasm through Emscripten. Graphics will be WebGL 2 by default, or WebGPU if your engine supports it. You already have the code and Emscripten handles the translation.</p>
<p>If you're making a puzzle game, use Canvas 2D or WebGL 2 through Phaser. Skip everything else. Simple games should stay simple.</p>
<p>If you absolutely need maximum performance and you're willing to lose some users on older browsers, go with WebGPU plus Wasm. Just measure the actual impact on your audience before committing.</p>
<h2>What Actually Makes Games Fast</h2>
<p>Here's what determines if your web game runs well, in order of importance.</p>
<p>Asset size accounts for about half of perceived performance. A 2MB game that loads in 1 second feels faster than a 50MB game with better FPS. Compress everything, and for 3D models a <a href="/tools/glb-optimizer">glTF optimizer</a> will do the Meshopt pass and texture resizing in one go. Lazy-load what you can.</p>
<p>Draw calls matter a lot for 3D games, maybe 30% of your performance budget. Batch your geometry. Use texture atlases. Instance repeated objects. This matters way more than WebGL vs WebGPU.</p>
<p>JavaScript performance is maybe 15%. Avoid allocation in hot loops. Use typed arrays. Profile before you optimize.</p>
<p>Graphics API choice? Honestly, maybe 5%. For most games, the API matters less than how you use it.</p>
<p>If your game is slow, check whether you're loading too much upfront. Then check if you're issuing too many draw calls. Then check if your JavaScript is doing something dumb in the game loop. Only after all that should you ask whether a different graphics API would help.</p>
<h2>What I'd Actually Use</h2>
<p>For a new web game starting today, I'd use Three.js (r185, July 2026) or Babylon.js (9.x) for rendering since they abstract away WebGL and WebGPU. For physics, Rapier (Rust compiled to Wasm) if I need 3D physics, or just the engine's built-in 2D physics for simpler games. Howler.js or the Web Audio API directly for audio. Vite for building because it's fast in dev and produces good production builds. And static hosting on Netlify, Vercel, GitHub Pages, or <a href="http://itch.io">itch.io</a>.</p>
<p>This stack ships games that work on 98%+ of devices while being ready for WebGPU when it becomes the default.</p>
<h2>Test Before You Commit</h2>
<p>Before you lock in a tech stack, build a tiny prototype and actually test it. Check load time on 3G using Chrome DevTools throttling. Your game should be playable in under 5 seconds on a slow connection. Test performance on a low-end Android phone, either borrow one or use BrowserStack. If it runs there, it runs everywhere. Test on Safari specifically because it's different enough to cause surprises. And if your game will be on Newgrounds or Kongregate, test it in an iframe.</p>
<p>These tests catch more real problems than debating WebGL vs WebGPU ever will.</p>
<h2>Common Questions</h2>
<h3>What's the best modern tech stack for a high-performance browser game?</h3>
<p>A renderer that speaks both APIs, Wasm where the CPU is the bottleneck, and a small build. Concretely: Three.js or Babylon.js (WebGPU with automatic WebGL2 fallback), Rapier compiled to Wasm for 3D physics, Howler.js or raw Web Audio for sound, Vite for builds, KTX2 textures and Meshopt-compressed glTF for assets, and static hosting behind a CDN. If you'd rather start from a full engine, PlayCanvas and Unity 6.6 both give you WebGPU with fallback, and Godot gives you a small WebGL2 build. The <a href="/guides/web-game-engines-comparison">web game engines comparison</a> ranks all of them on build size and load time.</p>
<h3>Is WebGL still worth using in 2026?</h3>
<p>Yes, and it's still the baseline. WebGL 2.0 runs on every browser and device your players own, including the Firefox builds on Linux and Android and the older phones that still don't have WebGPU. Nothing about WebGPU shipping makes WebGL builds stop working, and for 2D games and most 3D games WebGL2 was never the bottleneck. Ship WebGL2, add WebGPU as an upgrade where the renderer gives it to you for free, and spend your effort on asset size and draw calls instead.</p>
<h3>Can I build simple games with WebGPU?</h3>
<p>You can, but you rarely need to. A puzzle game, a platformer, or a card game won't run any better on WebGPU than on WebGL2, and you'll lose the players whose browsers don't have it yet. Where WebGPU earns its place in a simple game is when a single effect needs compute: thousands of particles, a fluid or cloth toy, a GPU-driven crowd. In that case use a library that falls back automatically (Three.js or Babylon.js) rather than writing raw WebGPU, or <a href="/create#prompt=Make%20a%203D%20physics%20playground%20with%20stacks%20of%20crates%20to%20knock%20over">describe the game and let Cinevva build it on WebGPU for you</a>. Our <a href="/tutorials/webgpu-getting-started">WebGPU getting started tutorial</a> covers the raw API if you want it.</p>
<h2>More Reading</h2>
<p><a href="/guides/web-game-engines-comparison">Web Game Engines Comparison</a> covers full engines if you don't want to build from scratch. <a href="/guides/threejs-usdc-tech-report">Three.js + USDC in the Browser</a> shows how to load USD assets in Three.js. <a href="/guides/itch-io-launch-guide">How to Launch on itch.io</a> covers publishing once you've built something.</p>
<p>For hands-on tutorials that go deeper into each API:</p>
<ul>
<li><a href="/tutorials/webgl-fundamentals-for-games">WebGL fundamentals for game developers</a>: shaders, buffers, textures, and the render loop</li>
<li><a href="/tutorials/webgpu-getting-started">WebGPU getting started</a>: device setup, pipelines, and WGSL shaders</li>
<li><a href="/tutorials/web-workers-game-logic">Web Workers for game logic</a>: offloading work to background threads</li>
<li><a href="/tutorials/coop-coep-sharedarraybuffer">COOP/COEP and SharedArrayBuffer</a>: headers required for Wasm threading</li>
<li><a href="/tutorials/game-physics-libraries">Game physics libraries</a>: Rapier, Cannon-es, Ammo.js, Matter.js, and more</li>
</ul>
<p>The right tech stack is the one that ships your game. Pick what you know, test early, and optimize later.</p>
<p><BuildCta
  title="Skip the stack, keep the result"
  desc="WebGL, physics, and asset pipeline handled. You just describe the game."
  prompt="Make a 3D physics playground with stacks of crates to knock over" /></p>
]]></content:encoded>
        </item>
    </channel>
</rss>
