Stealth-assessment learning games for K-12 — math, science, applied STEM, and SEL — in the browser.
Five KAPLAY.js games · Evidence-Centered Design analytics · 90,000+ telemetry event sample dataset · Built for KAUST.
EdGame is an EdTech platform that captures cognitive, behavioral, social, and affective signals during normal gameplay — not after a separate test. Where a traditional worksheet records only whether a student answered "correctly," EdGame records why they answered the way they did: the strategies tried, the time spent thinking, the hints requested, the patterns of guessing, the role taken in a team task. These signals translate into actionable, plain-English insights for teachers.
The platform ships five live KAPLAY.js browser games covering math, science, applied STEM, and SEL, all instrumented with the same analytics pipeline grounded in Evidence-Centered Design (ECD) and Bayesian Knowledge Tracing (BKT).
“Assign a 15-minute game, not a worksheet — and capture ~10× more process data per session.”
| Game | Genre | Subject | Primary ECD dimension |
|---|---|---|---|
| Pulse Realms | 3v3 Team Arena | Math & Science | D4 — Social |
| Concept Cascade | Tower Defense | Mathematics | D3 — Strategic |
| Knowledge Quest | Turn-Based RPG | Math & Science | D5 — Affective / SEL |
| Lab Explorer | Virtual Science Lab | Chemistry & Physics | D3 — Strategic |
| Survival Equation | Cooperative Puzzle | Applied STEM | D4 — Social |
Every game tracks all six dimensions (cognitive, engagement, strategic, social, affective, temporal); each has one primary lens.
Each game has:
- A regular play mode (
?no params) - A debug mode (
?debug=1) that opens a second window streaming live ECD profile updates - A bot mode (
?bot=1) that exposeswindow.__edgameBotfor Puppeteer-driven test runs
After deploying (see docs/DEPLOY-RAILWAY.md) you get a URL like https://edgame-production.up.railway.app/ with a landing page linking to all five games. Telemetry runs in offline (localStorage) mode on this static deploy — fine for showcasing, not for real classroom use.
Requirements: Node 20+, pnpm 8+, Python 3.10+ for the doc-gen scripts.
git clone https://github.com/yradwan147/edgame-platform
cd edgame-platform
# 1. Static games only (no dashboard)
npx serve -l 8899 .
# → http://localhost:8899/apps/games/pulse-realms/index.html
# 2. Full stack (Next.js dashboard + games + SurrealDB)
pnpm install
pnpm dev
# → dashboard at http://localhost:3000docker build -t edgame .
docker run -p 8080:8080 edgame
# → http://localhost:8080edgame-platform/
├── apps/
│ ├── games/ # 5 KAPLAY.js game environments
│ │ ├── pulse-realms/ # 3v3 team arena
│ │ ├── concept-cascade/ # Tower defense
│ │ ├── knowledge-quest/ # Turn-based RPG
│ │ ├── lab-explorer/ # Virtual science lab
│ │ └── survival-equation/ # Cooperative puzzle
│ └── web/ # Next.js 14 teacher dashboard + API routes
│
├── packages/
│ ├── shared/ # types, validators, SurrealDB client
│ └── ui/ # shadcn/ui shared components
│
├── db/
│ ├── migrations/ # SurrealQL schema migrations
│ └── seeds/ # seed data for dev / pilot
│
├── docs/
│ ├── README.md # docs index
│ ├── adr/ # architecture decision records
│ ├── assessment/ # ECD docs + coverage matrix (one per game)
│ ├── plans/ # design + execution plans
│ ├── ASSET-CHECKLIST.md # per-game art/audio asset list
│ └── DEPLOY-RAILWAY.md # one-click Railway deploy guide
│
├── reports/
│ ├── business-plan/ # 38-page DOCX + financial model + 12 figures + adversary reviews
│ ├── promo-videos/ # 5 game-promo MP4s (~30-45 s each)
│ ├── sample-telemetry/ # 5 CSVs, 90,593 total rows
│ └── progress-report/ # MD + PDF gameplay-screenshots report
│
├── tools/
│ ├── lib/bot-common.js # shared Puppeteer infrastructure
│ ├── play-and-capture-*.js # 5 game-specific bot drivers
│ ├── promo-sessions/ # per-game scripted UI flows for video capture
│ ├── record-promo-video.js # CDP screencast → ffmpeg pipe
│ ├── business-plan/ # DOCX builder + figures + financial model
│ ├── final-submission/ # TIE 251 spec + TIE 204 impl docs
│ ├── validate-csv.py # Concept Cascade telemetry sanity check
│ └── validate-csv-multi.py # All 5 datasets at once
│
├── docs_markdown/ # editable markdown versions of the PDF specs
├── DesignGuide/ # design language / branding
│
├── EdGame Analytics Blueprint.{md,pdf} # 45 KB research foundation (read this first!)
├── EdGame_Living_Document.docx # company-overview master doc
├── worklog.md # session-by-session engineering journal
├── spec-v1.0.pdf, bom-mvp.pdf, bom-v1.0.pdf, interface-table.pdf, estimation-reasoning.pdf
│
├── Dockerfile, serve.json, index.html # one-click static deploy
├── package.json, pnpm-workspace.yaml, turbo.json, pnpm-lock.yaml
└── README.md (this file)
If you only have time for four:
- EdGame Analytics Blueprint (45 KB) — the research foundation. ECD, BKT, stealth assessment, six dimensions, 50+ metrics.
- Business Plan (DOCX) (38 pages) — investor-ready plan with TAM/SAM/SOM, competitive analysis, 5-year financial model, two-round adversary review (Reach Capital + a16z personas).
- ADR-001: Phase-1 Architecture — the binding tech decisions (KAPLAY, Next.js, SurrealDB, Railway).
- Implementation Details Document — technical deep-dive across all 5 games + analytics engine.
Per-game ECD models live in docs/assessment/ecd/, one PDF + MD per game.
- Each game emits xAPI events (
Actor → Verb → Object) every time a student does something meaningful — answers a question, places a tower, casts a spell, types in chat, completes a puzzle step. - Events are batched every 10 seconds and POSTed to
/api/sessions/<id>/events. - The server validates + stores in SurrealDB; invalid events go to a dead-letter queue.
- A daily cron job rolls up the raw events into per-student aggregate metrics across six ECD dimensions: cognitive, engagement, strategic, social, affective, temporal.
- Bayesian Knowledge Tracing updates per-skill mastery probability after every observed answer. Students with
p(L) < 0.4get scaffolding;0.4 ≤ p(L) ≤ 0.8get targeted practice;p(L) > 0.8advance to the next concept. - The teacher dashboard surfaces top-3 weekly insights per student in plain English: "Maria has mastered Newton's Second Law but shows persistent misconceptions about momentum conservation."
See the Analytics Blueprint for the full framework.
reports/sample-telemetry/ contains five CSVs with 90,593 telemetry events captured by automated Puppeteer bots driving each game through realistic play sessions across six personas (strong_student, average_student, struggling_student, risk_taker, methodical, guesser).
| Game | File | Rows | Sessions |
|---|---|---|---|
| Concept Cascade | telemetry_events.csv |
50,432 | 543 |
| Pulse Realms | pulse_realms_events.csv |
10,018 | 604 |
| Knowledge Quest | knowledge_quest_events.csv |
10,044 | 287 |
| Lab Explorer | lab_explorer_events.csv |
10,019 | 490 |
| Survival Equation | survival_equation_events.csv |
10,075 | 146 |
All five share the same 37-column flat schema; analytics code can pivot freely across games. To regenerate any dataset, run node tools/play-and-capture-<game>.js. To validate, python3 tools/validate-csv-multi.py.
reports/promo-videos/ contains a ~30–45 s MP4 per game (1280×720, h.264, ~30 fps), captured by tools/record-promo-video.js using Chrome DevTools Page.startScreencast piped to ffmpeg. The game UI is driven in real-time by tools/promo-sessions/<game>.js.
# Re-record any promo
node tools/record-promo-video.js --game pulse-realms --duration 45┌─ Tier 1 — Game clients (KAPLAY.js v3001) ──────────────────────────────────┐
│ Pulse Realms · Concept Cascade · Knowledge Quest · Lab Explorer · Survival Equation
└──────────────────────────────────────┬──────────────────────────────────────┘
│ xAPI events (Actor-Verb-Object), batched every 10 s
▼
┌─ Tier 2 — Application server (Next.js 14 App Router) ──────────────────────┐
│ /api/sessions · /api/events · /api/analytics · /api/auth (NextAuth) │
│ ECD Engine + BKT models + metric rollups (cron) │
│ SurrealDB (multi-model, built-in permissions, KSA data-residency-ready) │
└──────────────────────────────────────┬──────────────────────────────────────┘
│
▼
┌─ Tier 3 — Dashboards (React Server Components) ────────────────────────────┐
│ Teacher dashboard Admin console Live ECD-profile viewer Bot drivers │
└──────────────────────────────────────────────────────────────────────────────┘
Full architecture in ADR-001.
EdGame was built as a KAUST capstone project in spring 2026 for:
- TIE 251 — Project Management for Engineers (spec, business plan, financial model)
- TIE 204 — Embedded & Software Systems (implementation details, code, repo)
The final TIE 251 specification + TIE 204 implementation document and this repo are the three official course submissions. Source documents live in docs/ and reports/.
If you reference EdGame in academic or research work:
@misc{edgame2026,
author = {Radwan, Yousef and TIE Venture Team},
title = {EdGame: Stealth-Assessment Learning Games for K-12 Built on Evidence-Centered Design},
year = {2026},
url = {https://github.com/yradwan147/edgame-platform},
note = {KAUST TIE Venture capstone}
}MIT. See LICENSE.
- GitHub Issues — bug reports + feature requests
- Pull Requests — welcome (please open an issue first for non-trivial changes)
- Investor / pilot inquiries — see
reports/business-plan/EdGame_Business_Plan.docx
Built with KAPLAY.js, Next.js, SurrealDB, Railway, and a lot of coffee at KAUST.