Build a turn-based dragon-battle adventure in the style of Pokemon and Prodigy Math, where solving the STEM problem IS the move, not a quiz that earns one. Kids battle each other in fair, accuracy-scored Academy Trials and team up against the villains. It is a web game first - players open a link and play, nothing to install - so it reaches school Chromebooks and iPads; the engine is chosen by a 3-week bake-off between a three.js web app, a Unity 6 Web build and a Godot 4 web build, and Unreal is paused for year 1.
Game styles compared
A turn-based creature battler fits best: kids already love it, it rewards thinking over reflexes, and the STEM problem can be the move itself. Real-time brawlers and kart racers fit worst.
Style | Famous examples | How STEM fits inside | Battles and PvP | Ages | Fit /10 |
|---|---|---|---|---|---|
Turn-based creature-battle adventure | Pokemon (515M+ units), Prodigy Math, Zombie Division (research) | Very strong when the move IS the problem and its power scales with accuracy; in Zombie Division kids learned more and played about 7x longer than with quiz-between-fights | Story battles vs villain pairs; turn-based duels are cheap to network and fair when each child gets their own grade's problems | K-12, sweet spot 3-8 | 9 |
Build-and-test engineering | Poly Bridge (6M+), Kerbal Space Program, Minecraft Education | Excellent for engineering and physics: budgets, loads, fair tests with 3 trials (NGSS 3-5-ETS1-3); an open sandbox alone showed no gain in a large trial | Both sides build in secret, then test side by side; scored on performance + reasoning + honest records | 3-12 | 8 |
Card / deck battler | Good for older kids: arithmetic, probability, expected value; hero cards as STEM methods (Measure, Fair Test, Trace the Source) | Short, turn-based or async matches; unlocks must be earned, never paid random packs | 6-12 (3-card hand for 3-5) | 7 | |
Tower defense | Plants vs. Zombies 2, Bloons TD 6, Blooket Tower Defense | Budgets, rates, ranges, ecosystem placement; fits Plastitide's debris waves and Toxibloom's spreading vines | Mostly co-op against villain waves | 2-8 | 7 |
Puzzle / logic adventure | DragonBox (randomised trial, g = 0.27), Zoombinis, Cut the Rope | Excellent: the maths is the puzzle; needs a "show it on paper" step because game mastery does not always transfer | None on its own; becomes the interaction inside each battle move | K-8+ | 7 |
Code-your-champion arena | CodeCombat AI League, Human Resource Machine, Lightbot | Excellent for computing (loops, conditionals, debugging); fits Lumen and Tavi and the CSTA standards | Your code fights their code; no reflexes | 3-12 | 6 |
Classroom quiz party | Weak: the question sits beside the action, and speed scoring can trigger maths anxiety; borrow only the room-code join | Whole class live; fastest correct answer wins | 2-12 | 5 | |
Real-time brawler or kart racer | Poor: no time to think mid-fight, so STEM becomes pop-up quizzes | Hardest and most expensive to network; reflexes decide, unfair across ages | 3-12 | 3 |
Borrow from the runners-up as modes, not as the core: a build-and-test Fair Test Arena for grades 5-12, and a room-code classroom mode later.
The recommended game: Evidence Duels
Working title "Dragonkeepers of Aethera: Evidence Duels" - a Pokemon-style dragon adventure where your thinking is the attack. It merges the best-scored parts of four concepts judged by a kids' game designer, a learning scientist and an Unreal technical director.
Who the child plays. The five canon hero pairs as a switchable team of up to three: Kairo & Maya, Zephyra & Skye, Marina & Neri, Terra & Rowan, Lumen & Tavi. No new dragon and no sixth hero pair. The collecting hook is an Aethera Field Guide of real things (basalt, cumulus clouds, a lever, a sea star, a pH strip), never new creatures. Villains are never caught; they retreat.
No dragon magically knows. The rider does the STEM tool action (Maya's ruler, Skye's compass, Neri's notebook, Rowan's sample vials, Tavi's wrist tablet); the dragon provides movement and its animated signature action.
Core loop - one incident takes 7-10 minutes; a session is 2-3 incidents, then a story-framed break ("Lumen needs to recharge, and Glarebyte loves it when we forget to rest"). No streaks, no countdown timers pulling kids back.
Explore (1-2 min). Walk, run or fly across a small region hub, starting with Caldera. Glowing curiosity sparks play the dragon's Investigate clip and open a 20-second observation puzzle ("sort these 4 rocks by texture") that fills a Field Guide page. The screen keeps "I see..." (observation) apart from "I think..." (inference).
Investigate (1-2 min). Estimate first, then measure: drag a marker to guess a gap, then the brass cuff on Kairo's LEFT foreleg reads the true value. Measuring turns the villain's vague numbers into exact ones. Skipping it means the battle runs on the guess - Zephyra's canon flaw, acting before enough data, as a game rule.
Evidence Duel (4-6 turns). Each turn: the villain announces its next trick in advance (as in Into the Breach, so every turn is a fair puzzle, no hidden dice) and plays its signature clip; the child picks 1 of 3 Method cards (Measure, Fair Test, Fuel Wheel, Lever, Sort, Trace the Source...); the child solves it with a drag, slider or tap in 5-30 seconds (no timer below grade 6); the hero's signature clip plays and the villain's Mess meter drops in proportion to accuracy.
Debrief (1 min). The Field Notebook lists every trial, including misses ("Do not erase the learning"), rewrites each move in school notation ("6 of 8 wedges = 6/8 = 3/4") and replays one miss beside the right answer - the bridge from game to paper. Stars reward accuracy and honest records, never speed.
Rules that keep it honest. Overshooting has a cost ("a brighter light is not a success if we harm the river", Book 6). Twice per battle Gritsnare-style riders offer a SHORTCUT card that works now but breaks something two turns later. Heroes have no hit points: a maxed Mess meter means "Retreat and Retest" with the logged data as hints, never game over.
Across sessions. A per-skill mastery score picks the next problem's numbers; "Villain Returns" incidents mix old skills in (spaced practice, g = 0.28); moves level up with mastery (Fraction Flame becomes Fraction Flame II) and mastered moves can quick-cast so duels never feel like a worksheet; the type chart comes from each villain sheet's Weaknesses field (Sludgeburn is weak to Measure and Fair Test), so choosing which hero to bring is itself reasoning.
STEM problems as moves: four sample battles
No move has fixed power and there are no random critical hits: power comes from how accurate the child was, every miss shows why it missed, and no power-up ever reveals an answer (hints are tools: "measure again", "show a worked example", "check the source").
A. Grade 1, Dragon Hatchlings - Caldera: Kairo & Maya vs Sludgeburn. Sludgeburn's Stomp broke the cart bridge. Maya (voiced, no reading needed): "The gap is 7 Kairo-paws long. Our planks are 2 paws and 3 paws long. Can you cover it exactly?"
Only 2 + 2 + 3 covers it exactly. 3 + 3 = 6 leaves the wheel dipping into a one-paw hole ("One paw short! Which plank fits?"); 3 + 3 + 2 = 8 leaves a wobbly overhang.
Worked example first, no timer, framed as "Try Again!". Standards: CCSS 1.OA.A.2, 1.MD.A.2.
B. Grade 4, Dragon Explorers - Caldera boss: Kairo & Maya vs Sludgeburn & Gritsnare.
Turn 1, fractions. Sludgeburn announces "Stomp: sludge will rise 2/8 of the gauge." Gritsnare swapped the forge's 4-part fuel wheel for an 8-part one (sabotage by changing the unit), and the vent needs 3/4 burning. Lighting 6/8 blocks the rise; 5/8 gives partial power and an overlay draws 3/4 = 6/8 to show the missing eighth; 7/8 overheats the tower and a crack costs Mess next turn. Standards: 3.NF.A.3b, 4.NF.A.1.
Turn 2, levers. A 6-block stone sits 2 units from the pivot; Kairo pushes with 3 blocks. The child slides the push point: it balances only at 4 units, because 6 x 2 = 3 x 4 = 12. At 3 units the beam tips back and a readout shows 9 vs 12.
Turn 3, the shortcut. Gritsnare offers "Just jam it open! Clears 25 Mess now." Taking it cracks the vent next turn (+35 Mess) and the notebook records "untested build". The honest Fair Test card runs the vent 3 times, compares 3 temperature bars, keeps the design under the red line in all 3 trials, clears 20 Mess and reveals Gritsnare's hidden wedge ("A passing test once is not enough", NGSS 3-5-ETS1-3).
When Mess reaches 0, Kairo Roars and Sludgeburn flies off.
C. Grade 6, Dragon Guardians - Skyreach: Zephyra & Skye vs Heatfang & Smogrift. Smogrift plays "SUNNY FOREVER!"; Heatfang's smog bank will cover the weather station in 40 minutes and Skye must fly the backup sensor there. Zephyra glides at 24 km/h in still air.
Route A: 18 km with a 6 km/h tailwind, 30 km/h, 36 minutes - in time. Route B: 15 km into a 6 km/h headwind, 18 km/h, 50 minutes - too late.
The wind comes from reading the ribbon on Zephyra's RIGHT horn; smog hides one reading, so the child re-measures or flies on a guess. Standard: CCSS 6.RP.A.3b.
D. Grades 9-12, Aethera Academy - Glitterdeep: Lumen & Tavi vs Glarebyte & Scrollshade. Glarebyte floods the crystal network with 12 alerts: "Mine collapse! Evacuate!"
Source Trace: 11 alerts are copies of one post with no time stamp; the 12th is a time-stamped seismic log with normal readings - 2 independent sources, not 12.
Scrollshade offers "Skip verification: +3 Focus now". Lumen's log shows 6 of the last 10 such alerts were fake, each costing 8 Focus. With p = 6/10, skipping is worth 3 - 0.6 x 8 = -1.8 Focus against 1 Focus to verify, so verifying wins on average.
Lumen's hints can be wrong when his input data is bad (the canon rule that AI is never infallible). Standards: HSS-MD.B.5, CSTA Data & Analysis.
Battling other kids, safely
Villain battles are the backbone and kid-vs-kid play is friendly sport, because research finds team play and team competition teach better than 1-vs-1 (Clark et al. 2016; Sailer & Homner 2020).
Academy Trials (1 vs 1 or 2 vs 2, grade 3 and up). Hero-vs-hero sparring, never enmity.
Each round draws one problem template from a shared random seed, and each player gets it at their OWN grade level - a 2nd-grader compares lengths while a 5th-grade sibling estimates in decimals.
Both answer at the same time, in secret, and the answers are revealed together.
Score = accuracy for the player's level + a reasoning bonus (measured first, ran a fair test) + an honest-record bonus. No speed scoring: timed tests are a known maths-anxiety trigger.
Best of 5, about 4 minutes. Peer Review: spend your turn re-testing the opponent's claim; if they were off you take the point, a wrong challenge costs a turn.
"Most Improved" is shown as prominently as the winner. K-2 plays a same-device buddy mode with no scores against other kids.
Fair Test Arena (grade 5 and up, a Poly Bridge-style build duel). Example, the Lava Channel Crossing: the span must be 3 1/4 m; beams are 1/2 m (1 Ember), 3/4 m (2) and 1 1/4 m (3); the budget is 8 Embers; each joint lowers capacity by 5 kg from 40 kg. Design A (1 1/4 + 1 1/4 + 3/4) costs 8, has 2 joints and holds 30 kg; Design B (1 1/4 + four 1/2 m) costs 7 but has 4 joints, holds 20 kg and fails the 30 kg cart. Score = Performance 40 + Reasoning 40 + Honest Record 20 - Book 6's rule, "grade the reasoning and honest records, not which bridge wins".
Co-op.
Couch co-op story battles, one dragon per child, with Combo Solves (Zephyra's wind reading + Kairo's measurement).
Information-gap Villain Raids for 2-5 players (like Keep Talking and Nobody Explodes): each player sees only their own dragon's instrument - wind, pH, signal log, species count, circuit load - so no one wins alone. The first raid is Book 6's Silent Beacon island.
The finale: Nullwyrm's SwallowLight drains a Curiosity meter that only new observations refill; The Dull King's "one perfect answer" button is a confident answer with no evidence, always a trap. Nullwyrm retreats, never destroyed.
Safety ladder (safest first).
Year 1: same-device pass-and-play, then classroom duels joined with a class code through a small turn server (no accounts, no personal data).
Year 2, only after a privacy review: "Guild Night" (the whole class in one arena on the projector, each student on their own device), "Ghost Trials" (play a friend's saved team or design, no live contact), and online play only with parent-approved friend codes.
Always: no free text or voice chat. The only chat is Evidence Cards built from menus ("I MEASURED [gap] = [2 3/4 m]", "I PREDICT [trial 3] will [fail] because [joints]") and preset emotes ("Nice test!", "Show your data!"). Names come from a word list ("Brave Ember 7"). No public leaderboards for K-5.
Levels and progression
It is one game: every move has a problem generator for each of the four book levels, and a parent or teacher (not the player) sets the level. Grades 3-5 is the core audience and the first slice.
Level | Grades | Controls and pacing | STEM content | Teaching approach | Battle modes |
|---|---|---|---|---|---|
Dragon Hatchlings | K-2 | Tap and drag, full voice-over, no reading, no timers | Counting, comparing, sorting sea life by traits, patterns, halves and fourths as pictures, measuring in Kairo-paws | Worked example first (instruction-first beats try-first for young learners) | Co-op only, 2-3 turn duels |
Dragon Explorers | 3-5 | Soft timer, no speed score | Multiplication and division, fractions and decimals, levers, 3-trial fair tests, weather graphs, food webs, safe sampling, step-by-step algorithms | Worked examples fading to independent solves | Full type-chart duels, Academy Trials with Peer Review |
Dragon Guardians | 6-8 | Optional timers | Ratios, unit rate and speed (Zephyra), percent error, food-web cascades (Marina), pH as a scale (Terra), programs with variables (Lumen) | "Try first, explain after" puzzles (conceptual gain g = 0.36) | Fair Test Arena, class-only rankings |
Aethera Academy | 9-12 | Full controls | Equation balancing (Kairo), expected value of villain shortcuts, forecasts with sample-size confidence (Zephyra), population models (Marina), stoichiometry and log-scale pH (Terra), a "Code Your Dragon" script arena (Lumen & Tavi, like CodeCombat AI League) | Open investigations | Guild research raids |
Each level's problem tables carry CCSS, NGSS and CSTA codes taken from the books' existing standards crosswalks, so the teacher guide can list them.
Building it for the web
The game is a web app first: players open a link, nothing to install. Three candidate engines go through a 3-week bake-off on real school devices; Unreal is paused for year 1 because it has no web export of its own.
Candidate | What it is | Strengths | Risks |
|---|---|---|---|
A. TypeScript + three.js, HTML widgets | The 3D stage in three.js, the engine our dragon showcase pages already use (its WebGPU renderer falls back to WebGL 2); the battle UI and the 8 widgets as HTML/CSS/SVG on top | Smallest downloads: each hero's web model is 2.6-2.7 MB, a two-dragon duel about 5.3 MB; free (MIT); web UI makes touch, captions, voice-over and translation easy; TypeScript suits CS students | You build more of the plumbing yourselves (scene loading, audio, saves); low-end Chromebook frame rate untested. Babylon.js 9 (free, Apache-2.0, built-in GUI and audio) is the fuller-engine variant |
B. Unity 6 Web build | Unity's official Web target: WebGL 2 by default, WebGPU fully supported from Unity 6.6 (Aug 2026) but off by default; C# | A full visual editor; the same project can later build Windows, Mac, iPad and Android apps; our Unity FBX files already exist | iPad Safari memory: the web game portal CrazyGames disables Unity games on iOS by default because of memory crashes; bigger downloads; licence settled: the author owns the project personally, so free Unity Personal applies until the game itself earns $200,000 in 12 months |
C. Godot 4.7 web build (GDScript) | Godot's official Web export: WebGL 2 only (no WebGPU yet); the game is written in GDScript, because C# cannot be exported to the web | Completely free and open source (MIT: no fees, no revenue limit, no splash screen); a light editor that runs easily on the 2019 iMac; GDScript is Python-like; imports our glTF dragons directly; the same project can later build Windows, Mac, iPad and Android apps | Godot's docs say Safari has several WebGL 2 issues and recommend Chrome or Firefox, but every iPad browser runs on Safari's engine and iPads are a core target; the docs also say mobile web is 'significantly slower' than native; measured first download for a two-dragon duel about 11 MB (three.js 4.4 MB); open iPad crash reports |
Paused: Unreal 5.8 | No web export since UE 4.24; a browser only via Pixel Streaming (a cloud GPU per player) or a third-party exporter (SimplyStream) | Best-tested with our models so far | Streaming costs about $1.50-$6 per student-hour, needs WebRTC through school firewalls and sends each child's data to a GPU vendor; SimplyStream is one small vendor not endorsed by Epic. May return later as an optional installed edition reading the same problem files |
Bake-off (about 3 weeks). Build the same tiny slice three times (three.js, Unity, Godot) - Kairo vs Sludgeburn, one arena, the Idle / Investigate / Roar clips and the fraction-wheel move - and test on a 4 GB school Chromebook, an older iPad (Safari), a current iPad and the 2019 iMac. Pass: first download about 20 MB or less and playing within 20 seconds, 30+ fps with two dragons on screen, no crash in 10 battles or a 30-minute session with sound on the older iPad, and a new dragon added on the server without rebuilding (full list under Unity vs Godot vs Unreal). Pick by those numbers plus how fast the students built it.
Architecture (any engine). One turn-based battle manager stepping Intro, VillainIntent, PlayerChoose, Solve, Resolve, StatusTick, CheckEnd, Debrief; problems, cards, villain tricks, the type chart and clip names as CSV/JSON you edit as spreadsheets; about 8 reusable widgets (slider estimate, fraction wheel, lever/balance, drag-sort, graph read, number pad, sequence builder, source trace); fractions as exact numerator/denominator pairs; a seeded random stream so every battle replays exactly (teacher replays, research logs, cheat-proof Ghost Trials); a build flag for the quiz-first research variant.
How the dragons plug in. Each dragon exports a web model (GLB: mesh, 56-60 bones, 7 named clips) plus a JPEG texture, already used by the showcase pages. One character record per dragon points at them, so swapping or adding a dragon is a data change. Load only the two duelling dragons per battle.
Networking. Browsers cannot host games for each other, so classroom duels use a small WebSocket server that relays turns by class code - HTTPS/WSS on port 443 only, no UDP, no accounts, no personal data. Same-device play needs no server. Year 2 online play extends the same server with parent-approved friend codes.
Hosting and offline. Static files from a content-delivery network with correct compression headers; an "Add to Home Screen" web-app mode (a PWA with a service worker) keeps cached battles playable on spotty school Wi-Fi; detect when a school has switched WebGL off and show a clear message; give school IT a one-page allowlist (one domain, port 443).
Still missing. 3D riders (2D portraits in year 1); web models for Sludgeburn and the five remaining villains; environments; UI art; voice-over for every rider line (essential for K-2); sound; effects; accessibility options (colour-blind-safe meters, captions, a dyslexia-friendly font).
Cost. three.js, Babylon.js and Godot are free and open source; Unity Personal is free for this project (individual owner; only revenue the game earns counts toward the $200,000 limit); static hosting plus a small turn server costs a few dollars a month (estimate).
Unity vs Godot vs Unreal
Unreal is out for the web game: it has no browser build of its own. Unity and Godot both play in a browser, and neither is proven on school iPads yet, which is what the bake-off decides. Godot's real costs are a bigger first download, a slower start and more memory than three.js; its real strengths are no fees or sign-in, an editor that suits the 2019 iMac, and loading new dragons after release. three.js stays the favourite for a web-first game because it is the smallest and fastest, and its HTML interface works with screen readers. In the measured test below, on a simulated school Chromebook the dragons appeared after 4.8 s with three.js and 10.5 s with Unity 6.3. Unity 6.6 took 11.7 s, and Godot 21.6 s, about four and a half times as long as three.js.
Question | Unity 6 | Godot 4.7 | Unreal 5.8 |
|---|---|---|---|
Plays in a browser, no install | Yes: official Web build, WebGL 2 (WebGPU from 6.6, off by default); iPad/iPhone Safari 15+ officially supported | Yes: WebGL 2 only (no WebGPU); the web game must be written in GDScript | No: only Pixel Streaming, a rented cloud GPU per player (about $1.50-9 per student-hour) |
First download, two-dragon duel | Measured: about 10.4 MB (engine 2.7 MB; the rest is the two dragons) | Measured: about 11.3 MB (engine 7.2 MB) | Nothing to download, but 10-25 s to start each stream |
iPad and Chromebook evidence | The game portal CrazyGames turns Unity games off on iOS by default because of memory crashes | Open iPad crash reports (#110187, #116750) and an iPad touch-position bug (#95941); no Chromebook reports either way | Needs school networks to allow WebRTC video |
Installable apps later | Windows, Mac, iPad/iPhone, Android from one C# project | Windows, Mac, Linux, iOS, Android from one GDScript project | Windows, Mac, iOS, Android, consoles; no web |
Cost for you | Free (Personal) until the game earns $200,000 in 12 months; needs a Unity Hub sign-in | Free forever (MIT): no fees, no account, no splash screen | Free; 5% royalty above $1M per product (from Wikipedia; Epic's page could not be checked) |
Language | C#, plus built-in Visual Scripting | GDScript, Python-like and the easiest start; no visual scripting since 4.0 | C++ and Blueprints (visual); the steepest |
Adding dragons after release | Yes, through Addressables (download on demand) | Yes, tested: Terra's GLB loaded into a running web build, all 7 clips found, Roar played | Needs the third-party glTFRuntime plugin |
Screen readers | Unity's screen-reader API does not cover Web | Experimental since 4.5; web support unverified | Experimental; Windows and iOS only |
Classroom duels in a browser | WebSocket client; Unity Relay free up to 50 average players online (tell Unity first when children use its services) | WebSocket client and WebRTC, with our own small relay server | Not in a browser |
Editor on the 2019 iMac | Runs now, but Unity 6.6 marks Intel Macs "deprecated" (to be removed later) | Runs easily (macOS 10.13+, 4 GB RAM) | No: the 5.8 editor lists Apple silicon Macs only |
Trust and ecosystem | Largest asset store, tutorials and education plans; the Runtime Fee was announced in 2023 and cancelled in 2024 | Community-run under MIT, so the licence cannot be taken back; smaller asset library | Controlled by Epic, which dropped its own web export in 4.24 |
All three engines draw the game onto one web canvas, so a screen reader hears nothing unless the game copies its text into HTML; three.js with an HTML interface avoids that.
Measured on the development PC (2026-09-26; re-run 2026-09-27 with Unity 6.6 added): the same test built four ways - three.js, Unity 6.3, Unity 6.6 and Godot. Kairo and Sludgeburn idle side by side, with a Roar button and a slider. An "Add Zephyra" button loads a third dragon from the server after release. One test program ran each build 5 times per condition (3 times in the Safari-engine test); the table shows the medians from the re-run. For the three builds measured on both days, the Chromebook-proxy starts matched within 2%. Software-graphics and second-visit starts were 16-27% faster in the re-run; only Godot in Safari's engine got slower (7.8 s against 6.6 s). On the first day the villain-dragon renders most likely kept the graphics card (50-96% busy) and the processor busy, which probably explains the gap.
Two-dragon test | three.js | Unity 6.3 Web | Unity 6.6 Web | Godot 4.7.2 Web |
|---|---|---|---|---|
First download | 4.6 MB | 10.4 MB | 11.8 MB | 11.3 MB |
of which engine code | 0.2 MB | 2.7 MB | 4.0 MB | 7.2 MB |
Dragons on screen, fast desktop | 0.5 s | 1.5 s | 1.5 s | 6.7 s |
Dragons on screen, Chromebook proxy (10 Mbit/s, CPU 4x slower) | 4.8 s | 10.5 s | 11.7 s | 21.6 s |
Second visit (files cached), Chromebook proxy | 1.0 s | 2.6 s | 2.7 s | 5.7 s |
Add Zephyra after release, Chromebook proxy | 2.2 s | 2.9 s | 2.8 s | 3.0 s |
Browser memory (page + graphics process), fast desktop | about 190 MB | about 400 MB | about 440 MB | about 450 MB |
Memory the engine sets aside for itself (WebAssembly) | none (uses normal page memory) | 70 MB | 147 MB | 104 MB |
Frame rate with a normal graphics card | 60 fps | 60 fps | 60 fps | 60 fps |
Frame rate with software graphics (weak-GPU proxy) | 14 fps | 4 fps | 4 fps | 6 fps |
Safari's engine (WebKit on Windows) | runs, 0.6 s | runs, 0.9 s | runs, 1.1 s | runs, 7.8 s; repeated WebGL error messages, dragons still drawn |
All four builds loaded Zephyra after release without rebuilding the game (Unity through its glTFast package, Godot through GLTFDocument).
Godot's slow start is one frozen, grey pause of about 6 s while it compiles its shaders in Windows browsers; a warm cache does not shorten it. Macs and iPads take a different graphics path, so the real devices decide.
Most of Unity's download is the two dragons (7.7 MB: the production FBX files and compressed textures), not its engine (2.7 MB). Its desktop texture format is not available on iPads or most ARM Chromebooks, so a school build needs mobile (ASTC) textures. Unity also needs a web host that serves its Brotli-compressed files correctly; it has no fallback.
Unity 6.6 was bigger and slower to start than 6.3 on this test, with the same settings. It needed 1.4 MB more to download and started 12% slower on the Chromebook proxy (11.7 s against 10.5 s); frame rates were the same. It also set aside twice as much memory for itself (147 MB against 70 MB). Most of the extra 1.3 MB of engine code is the PhysX physics engine: 6.6's standard button-and-slider toolkit (uGUI) now depends on physics, although the game uses none. Switching Unity's physics engine to "None" removed PhysX (0.85 MB). With two smaller trims, 6.6's engine code fell to 3.0 MB (6.3: 2.7 MB) and the first download to 10.8 MB. In a separate run this trimmed build started 0.8 s sooner than the plain 6.6 build on the Chromebook proxy, but the memory it set aside stayed at 147 MB. 6.6's own core grew by only 0.06 MB in an empty-scene test. In a default new project with the same buttons, 6.6 was smaller (5.0 MB of engine code against 5.8 MB), which is likely where Unity's "smaller web player" comes from.
Unity 6.6 can also draw with WebGPU, a newer browser graphics system. Our WebGPU build used it in Chromium (the engine inside Chrome) with the graphics card, and switched to WebGL 2 where WebGPU was missing: under software graphics and in the Windows test version of Safari's engine. It adds 0.26 MB of shaders and sets aside more memory (185 MB against 147 MB). In a separate run against the plain 6.6 build, it started about as fast (12.2 s against 11.9 s on the Chromebook proxy), but with the processor slowed 4x it drew a third fewer frames (38 against 56 fps). In one stripped-down test copy of Chromium, WebGPU started but could not finish setting up, and the game then hung at start instead of switching to WebGL 2. So WebGL 2 stays the safe default for schools. Real iPad Safari (version 26 and later) has WebGPU; we have not tested it.
Limits: everything ran on one Windows PC. The Chromebook and weak-GPU rows are simulations, and WebKit on Windows is not iPad Safari. Memory on the graphics card itself was not counted.
Test builds, the test program and every run are kept in the project's work files and are not published on this site.
What every engine must prove in the bake-off, with the same scene on the same web host:
iPad (one older iPad on iPadOS 17 or 18, one on iPadOS 26, in Safari): first load 20 MB or less and playing within about 20 s; 30+ fps; a 30-minute session with sound and 10+ duels without the page reloading; the drag widgets work by touch; Add to Home Screen works.
4 GB Chromebook: the same size and time targets; 30+ fps; memory stays flat over 10 duels; works behind the school web filter and inside a learning-platform page.
2019 iMac: the editor opens, re-imports a dragon and builds the web version in minutes; the game runs at 60 fps in Safari and Chrome.
All three: add Zephyra "after release" by putting her files and one data entry on the server, with no rebuild; a VoiceOver or ChromeVox user hears the question text.
A fair run for each. Godot: 4.7.2 stable, the Compatibility renderer, threads off, dragon textures set to Lossy or VRAM-compressed (the default Lossless makes a dragon 5.6 MB instead of 1.9 MB), Brotli compression, the web-app (PWA) option on, sound playback set to Stream if the iPad crashes with sound, and 3D resolution scale left at 1.0. Unity: 6.3 LTS, the long-term-support version (supported until December 2027), with WebGL 2, ASTC textures for iPads, a set starting memory size, and dragons loaded through Addressables. We chose it over 6.6, which was 1.4 MB bigger and 12% slower to start in our test and only comes close with physics switched off.
When each engine fits. Unity: web plus native apps and the largest ecosystem from one C# project, if it passes the iPad memory test. Godot: free, account-free, light tools that run on the iMac, with native apps from the same project, if a 10 MB start is acceptable and it passes the iPad session test. Unreal: an installed PC, Mac or console showcase edition, built on an Apple-silicon Mac or a strong PC. three.js: web-first with the smallest downloads and an accessible interface, at the cost of building more of the game machinery ourselves.
Sources: Godot web export · Godot runtime file loading · Godot iPad crash #110187 · Godot iOS audio crash #116750 · Godot iPad touch #95941 · Godot licence · Unity Web browser compatibility · Unity system requirements · Unity pricing updates · Unity Addressables · CrazyGames technical requirements · Unreal Pixel Streaming · glTFRuntime · macOS Tahoe compatible Macs
Devices, and the 2019 iMac question
As a web app the game runs in the browser on school Chromebooks, iPads, Windows and Mac computers and Android tablets, with nothing to install; app-store versions are an optional later step.
Device | Plan | Notes |
|---|---|---|
School Chromebooks | Web (Chrome) - the main target | Widely reported as the most common US school device (secondary sources); test on a 4 GB model; handle schools that switch WebGL off by policy |
iPad | Web (Safari); an app-store build only if Safari fails the bake-off | Safari is the main risk: memory crashes for a Unity build, WebGL 2 issues for a Godot build; a home-screen install avoids Safari clearing cached files |
Windows PC, Mac, Android tablet | Web | Any modern browser |
2019 iMac (i5, 16 GB) | Plays it in Safari or Chrome; fine for web development (a code editor plus a browser), and it can run the Unity and Godot editors | It cannot run macOS Tahoe 26 (Apple) and Xcode 27 needs Tahoe, so it can build iPad apps only until Apple next raises the App Store requirement (Xcode requirements, App Store requirements) - which matters only if an app-store build is ever made |
The Unreal-specific notes from the first version of this doc (editor requirements, universal Mac binaries) no longer apply while Unreal is paused.
Roadmap and first playable slice
The first playable slice is "Caldera: The Clogged Forge" for grades 3-5, about 3-4 months for one full-time developer or 4-6 months at part-time pace; the full year-one game is about 12 months. These are estimates, not quotes, assuming the author at about 10 h/week as designer and content lead plus 3-4 student developers at 10-15 h/week.
The slice and each region become data plus art once the battle system exists; regions 2-5 follow as each villain model is finished, and iOS release plus consent and privacy work add about 1-2 months.
The slice contains: one hub (the Blackridge forge yard, 6 curiosity sparks) and one fixed-camera arena; Kairo & Maya playable (Zephyra & Skye as a bench pick once her fix lands) against Sludgeburn & Gritsnare; 3 incidents - Pipe Gap (estimate then measure), Relabelled Wheel (equivalent fractions), Slag Plug (lever) - plus Gritsnare's Shortcut trick; 4 widgets, 6 Method cards, 4 Trick cards; the Field Notebook debrief; hot-seat Academy Trials; one K-2 version of the first battle to prove the levels work; played in the browser on a 4 GB Chromebook, an iPad and a Windows PC.
Slice exit tests:
30+ fps on the Chromebook and the iPad with two dragons on screen, and a first download of about 20 MB or less.
In a playtest with 15-25 third and fourth graders, most finish the duel without adult help in 10 minutes or less.
No miss is ever shown as a text-only "Incorrect".
Kids choose to keep playing in free time (the Zombie Division measure).
A short paper pre/post on equivalent fractions and estimation, as a feasibility signal only.
Risks and kid safety
The biggest risk is a game that feels like homework or drifts into "a quiz with a dragon skin"; the biggest safety rule is no open chat and no strangers for children.
Risk | What could go wrong | Mitigation |
|---|---|---|
Feels like homework | Moves that take 30+ seconds kill the fun | Solves of 5-30 s, quick-cast for mastered moves, a live hub, early pacing playtests |
Quiz with a dragon skin | Card power stops depending on accuracy, and learning drops (Habgood & Ainsworth) | Every card scales with accuracy; every miss explains itself |
Transfer gap | Kids master the tools but not paper problems (DragonBox study) | Standard-notation debrief, teacher-guide worksheets keyed to the same problems, paper items in every pilot |
STEM accuracy | A generator produces a wrong "right answer" | Exact fraction arithmetic, unit tests for every generator, subject-expert review of each simulation |
Assets not ready | Only 6 of 11 dragons finished; riders 2D only | Regions 2-5 wait on the pipeline; a web model for each new dragon |
Content volume | 5 regions x 4 levels x about 10 templates | One row per parameterised template; AI-drafted rows you review |
Cross-age fairness | "I got 6/8 and lost" | Parents or teachers set levels; scores explained in the post-match replay |
Reach | School IT can switch WebGL off or filter a new domain | Detect WebGL-off with a clear message; a one-page allowlist for IT (one domain, port 443); same-device play needs no server |
Pokemon similarity | Lookalike names or icons | Use the genre, avoid capture balls, "trainer" language and icon styles |
Team turnover | Student developers leave | Written battle-manager contract, data-driven content, version control from day 1 |
Evidence claims | Marketing outruns the data (Prodigy's evidence is correlational) | No efficacy claims before a pilot; the DragonBox trial's g = 0.27 is a realistic target |
Kid-safety and privacy must-dos.
Treat the game as child-directed under the amended COPPA Rule (full compliance required since April 22, 2026): minimal data, a written security program, a written retention policy, separate parental consent for any third-party sharing. The year-1 design (hot-seat and LAN, no accounts, word-list names, local saves) keeps most duties out of scope; still publish a privacy policy.
No free text or voice chat by default, and none ever for under-13s - Evidence Cards and preset emotes only. Epic paid $520M partly over Fortnite's default-on chat (FTC).
No stranger matchmaking for under-13s: classroom codes, parent-approved friend codes or ghost opponents, with parental consent through Kids Web Services before any online feature.
Follow Apple's Kids Category rules: no third-party ad or analytics SDKs, a parental gate before any external link or purchase; keep analytics first-party (a teacher-exportable CSV log).
Money: no loot boxes or paid random items (FTC Genshin Impact order), no pay-to-win and no paid "member" gear in class (the core of the complaint against Prodigy); sell as a one-time purchase or school licence.
Healthy design: no streaks or countdowns that pull kids back, story-framed break prompts, no speed scoring, no public leaderboards for K-5, co-op only for K-2.
Outside the US: the UK Age Appropriate Design Code (high-privacy defaults), a UK Online Safety Act children's risk assessment if UK kids can interact, and GDPR-K consent ages of 13-16.
Age-rate the game honestly through IARC/ESRB.
Decisions for the author
Six choices set the engine, every problem table and the first build; each has a recommendation.
First grade band. The series plan puts Books 1-5 in Dragon Hatchlings (K-2), but the V2 manuscripts are labelled grades 3-5 and the K-12 map places the five prototype books mainly in Dragon Explorers. Recommended: build the first region for grades 3-5 with a K-2 version of each move.
Who the child plays. Recommended: the five canon hero pairs as a switchable team; in PvP both players may pick the same pair (Kairo vs Kairo) as Academy training simulations, keeping exactly 11 dragons and 11 riders. The alternative, a dragonless "Academy apprentice", adds a character to canon.
Battle vocabulary. Recommended: villains fill a Mess meter that heroes clean; villains retreat and are never defeated or caught; no hit effects on dragons; Nullwyrm retreats rather than being destroyed. Approve the words (Evidence Duel, Academy Trial, Mess, Retreat and Retest) and say whether "battle" may appear in marketing.
How social year 1 is, and how it is sold. Recommended: same-device play plus class-code duels through a small turn server, with no accounts and no personal data; online friends, Ghost Trials and browser Guild Night in year 2 after a privacy review. A one-time purchase or school licence (free for research pilots), with no ads, loot boxes or in-game currency.
Build priority and the overall goal. Recommended: finish the five remaining villain models and the Zephyra, Marina and Sludgeburn fixes before regions 2-5, with riders staying 2D in year 1. Also decide whether the "failing Balance Engine" on the K-12 map becomes the whole game's goal, and whether Book 6's Silent Beacon island is the first co-op raid.
Engine for the web game. Run the 3-week bake-off (three.js web app vs Unity 6 Web vs Godot 4 web; Godot added at your request on 2026-09-26) on a school Chromebook, an older iPad and the 2019 iMac, then pick. Licence settled: you own the project personally, so Unity Personal is free until the game earns $200,000 in 12 months (if you later publish through a company, that company's total revenue counts instead).
Sources
Research by four parallel researchers and a three-judge panel on 2026-09-25; the device section was checked against Epic and Apple pages the same day.
Learning: Habgood & Ainsworth 2011, Zombie Division · Long & Aleven, DragonBox transfer · DragonBox randomised trial · Clark, Tanner-Smith & Killingsworth 2016 · Sailer & Homner 2020 · spaced practice in maths · worked examples vs try-first · maths anxiety and timed tests · Prodigy JHU study · Pokemon and the brain (Stanford)
Genres and market: Pokemon sales · Prodigy research page · Clash Royale · Marvel Snap · Slay the Spire 2 · Plants vs. Zombies 2 · Poly Bridge 3 · Kerbal Space Program · CodeCombat AI League · Kahoot · NGSS 3-5-ETS1-3 · CSTA standards
Unreal: (first, now paused plan) UE 5.8 release · macOS development requirements · universal binaries for macOS · iOS remote builds from Windows · Cropout sample · Common UI · mobile rendering features · mobile performance guidelines · networking overview · Epic Online Services · Kids Web Services · Unreal licence
Apple and Google: macOS Tahoe compatible Macs · Xcode system requirements · App Store upcoming requirements · iMac 2019 21.5-inch specs · App Review Guidelines (Kids) · Google Play target API · Play Asset Delivery
Safety and law: amended COPPA Rule · FTC Fortnite settlement · FTC Genshin Impact order · Fairplay complaint on Prodigy · UK Age Appropriate Design Code · GDPR Article 8
Web-first (added 2026-09-25): Unity 6.6 WebGPU out of experimental · Unity Web browser compatibility · Unity Web memory · CrazyGames technical requirements · WebGPU browser support (caniuse) · Pixel Streaming overview · Pixel Streaming hosting and networking · Vagon Streams pricing · Eagle 3D Streaming pricing · Babylon.js
Godot (added 2026-09-26): Godot web export · Godot system requirements
Unity licence: Unity Editor Terms of Service (Total Finances for individuals: only the amount generated in connection with your use of Unity; $200,000 over the most recent 12 months) · Unity pricing updates