Why Popcorning Guinea Pig
Popcorning Guinea Pig is a minimal C# game engine that targets AAA visual quality at lower system requirements than Unity, Unreal, or Godot's high-end paths. No runtime fee.
This page compares Unity 6 (6.3 LTS / 6.5), Unreal Engine 5.8, Godot 4.7.2, and Popcorning Guinea Pig as of August 2026. Planned work is marked Planned. Features that are out of scope are marked Not a goal.
Versions (August 2026)
| Unity | Unreal | Godot | Popcorning Guinea Pig | |
|---|---|---|---|---|
| Current | 6.3 LTS (supported through Dec 2027); 6.5 Supported stream; latest patch 6000.5.8 (12 Aug 2026) | 5.8 (23 Jun 2026). Last planned UE5 major. UE6 announced, EA ~late 2027 | 4.7.2 stable (18 Aug 2026). 4.8 in development | 1.x NuGet (PopcorningGuineaPig.Engine), .NET 10, Raylib-cs 8 (Raylib 6.0) |
| Language | C# (and visual scripting) | C++ / Blueprints. Verse + Scene Graph coming in UE6 | GDScript, C#, C++. C# desktop/mobile only | C# Only |
| License | Editor subscriptions; runtime terms have changed more than once | Source-available; royalty above a revenue threshold | MIT | Not open source. No runtime fee, no seat tax |
| Editor | Full visual editor, Hub, Asset Store | Full visual editor, Fab, Lore VCS | Full visual editor, ~80 MB download | PGP Editor |
Rendering
| Unity 6 | Unreal 5.8 | Godot 4.7.2 | PGP | |
|---|---|---|---|---|
| Default path | URP / HDRP / Built-in | Lumen + Nanite + Virtual Shadow Maps. TSR / upscalers in the default look | Forward+ / mobile / compatibility | Raylib |
| Ray tracing | Optional (DXR), HDRP-centric | Hardware + software Lumen | Optional (Vulkan RT) | Planned. Optional when the GPU supports it. Not required for the default picture |
| Upscalers | DLSS / FSR / XeSS / STP | TSR, DLSS, FSR | FSR / DLSS plugins | Optional when supported. Not required for the default picture |
| Unique 4K / 8–16 GB texture sets | Common in HDRP samples | Common with virtual texturing + Nanite | Possible, not required | Possible, not required |
| Baked / classic lighting | Lightmaps, probes | GPU Lightmass, plus Lumen | Lightmaps, probes | Yes. Lightmap atlas × albedo; vertex color on .map |
| GPU skinning | Yes | Yes | Yes | Yes |
| Particles | VFX Graph / Shuriken | Niagara | GPU + CPU particles | Yes. CPU ParticlePool. GPU particles planned |
| Sky / atmosphere | HDRP physically based sky | Sky Atmosphere + Exponential Height Fog | Sky / fog nodes | Yes. 5-face skybox. Volumetric clouds / weather planned |
| Post | Long HDRP stacks | Bloom, AO, fog, upscaler | SSAO, SSR, glow | Yes. Short stack (SMAA/TAA, filmic, cheap SSAO) |
| World streaming | Addressables | World Partition | GridMap / custom | Planned. Tile ring, async VFS, far stand-ins (architecture) |
Gameplay systems
| Unity 6 | Unreal 5.8 | Godot 4.7.2 | PGP | |
|---|---|---|---|---|
| Scenes | Scenes + Addressables | Levels / World Partition | Scenes | Yes. Scene / Scene3D / QuakeMapScene / RollbackScene |
| Declarative UI/scenes | UI Toolkit, Prefabs | UMG, Prefabs | .tscn |
Yes. PGPSCN (JSON) |
| 2D UI | uGUI / UI Toolkit | UMG / Common UI | Control nodes | Yes. Hierarchical UI, nine-slice, GridContainer, TabControl |
| Vector UI | — | — | — | Planned. Rive |
| Physics | PhysX / Unity Physics | Chaos | Jolt (default since 4.6) | Yes. Box3D |
| FPS / brushes | ProBuilder, third-party | Geometry Script | CSG | Yes. Quake BSP29 + TrenchBroom .map (Standard and Valve) |
| Animation | Mecanim, Timeline | Motion matching, pose search (5.8) | AnimationTree | Yes. GLB clips, GPU skinning |
| Input | Input System package | Enhanced Input | InputMap | Yes. Context stack, commands |
| Audio | FMOD / Wwise / built-in | Built-in + MetaSounds | Built-in | Yes. OwnAudioSharp / Raylib |
| Localization | Package | Engine | TranslationServer | Engine |
| Tilemaps | 2D Tilemap | Paper2D / PCG | TileMap | Tilemap, TilemapLayer, Tileset, TileGrid, GameTile |
| Cards / 3D UI | Custom | Custom | Custom | Yes. Card3D |
Networking and platforms
| Unity 6 | Unreal 5.8 | Godot 4.7.2 | PGP | |
|---|---|---|---|---|
| Netcode | Netcode for GameObjects / Entities | Replication + Iris | ENet / multiplayer API | Yes. Rollback, master server, game-server library, Steam P2P/lobbies |
| Steam | Facepunch / Steamworks.NET plugin | Online Subsystem Steam | GDSteam / plugins | Yes. Steamworks.NET, avatars, lobbies |
| Discord | Plugin | Plugin | Plugin | Yes |
| Desktop | Win / macOS / Linux | Win / macOS / Linux | Win / macOS / Linux | Yes. Windows, Linux, macOS. Steam and the Epic Games Store |
| Consoles | Licensed | First-class (GDK plugins in 5.8) | Official ports via partners | Not first-class |
| Mobile | First-class | First-class | First-class | Not a goal |
| Web | WebGL / WebGPU | Pixel Streaming | Web (GDScript; C# web still limited) | Yes. Browser rendering ships (WebGL2). Skinned crowd and boids |
| Trim / small package | IL2CPP | Large cooked builds | Small editor, small exports | Yes. Trimmed dotnet publish, CECAL archives |
Performance
Unity / Unreal / Godot distributable sizes below are typical published ranges for an empty or starter player. PGP sizes and first-window times are measured. A same-scene web comparison across all four engines is planned (not present).
| Unity 6 | Unreal 5.8 | Godot 4.7.2 | PGP | |
|---|---|---|---|---|
| System requirements | URP is modest; HDRP is not | High for the default look | Modest on Forward+ | Lower than Unity HDRP and Unreal's default path |
| 1080p / 60 on 8 GB VRAM | URP can; HDRP often cannot without cutting the look | Default look generally cannot | Often can | Yes. That is the design target |
| Hitching | Addressables + sync loads if careless | World Partition helps; shaders still hitch | Sync loads if careless | Sync VFS can hitch. Async VFS planned |
| Empty scene cost | Editor + player + pipeline | Editor + renderer + shaders | Small | Game + Raylib window. No Hub, no shader permutation set |
| Distributable | ~40–150 MB empty Win player | ~1–3 GB cooked starter | ~90 MB default Windows export | 31 MB trimmed runtime. 91 MB Main Menu example (60 MB is bundled fonts). Self-contained win-x64 |
| Time to first window | Not measured | Not measured | Not measured | 2959–4957 ms (Release Main Menu, self-contained win-x64, 3 runs, 2026-08-18) |
| Per-frame CPU | Burst / Jobs (opt-in) | Game thread + render thread | Single-threaded default; more threads opt-in | Single-threaded frame loop. No heap allocations in Update/Draw |
Tooling
| Unity 6 | Unreal 5.8 | Godot 4.7.2 | PGP | |
|---|---|---|---|---|
| Source control | Plastic / Git | Lore / Perforce / Git | Git | Git |
| Asset pipeline | Importers, Addressables | Import, cook, virtual texturing | Import | CECAL + FBX2glTF + Meshy tools |
| Headless / capture | Test Framework | Automation | --headless |
--playtest tape.json |
| Tests | Unity Test Framework | Automation + spec | GUT / GdUnit | xUnit on the engine. --playtest JSON tape |
Planned (not present)
| Work | Notes |
|---|---|
| World streaming | Tile residency, async VFS, far stand-ins, mip budget |
| Async VFS reads | Avoid hitches on large tile loads |
| Far-tile stand-ins + mip budget | Distant geometry without unique resident meshes |
| Volumetric clouds / weather | First-class sky |
| Hardware ray tracing | Optional when the GPU supports it. Default picture does not require it |
| Headless playtest harness | Shipped: --playtest tape.json (#407). Games own tapes. |
| Rive UI | 2D vector UI |
| Same-scene web comparison | One comparable scene in Unity, Unreal, Godot, and PGP, rendered in the browser, to measure frame time and startup |
Who should not use PGP
- You need a licensed console SKU next quarter.
- You need a large visual-scripting team in one editor document.
- You want mobile-first.
Use Unreal or Unity for those jobs.
Who should
You write C# and ship on desktop, Steam, or the Epic Games Store.
You want AAA visual quality on modest hardware.
You want a small engine, a small distributable, and a default path that does not need an upscaler.
World streaming architecture