Build a game with the manual faculty template
Use the free manual template for your own question content. It shares the maintained Composer game engine, all ten modes, accessibility controls, adaptive practice, save/resume and local game data downloads.
Start with these files
- Blank faculty game HTML — your production starting file. It deliberately contains no questions and blocks modes until their required banks are ready.
- Working starter game and its question package — synthetic numeracy examples for testing every mode, including an embedded bar chart. These are demonstrations, not a ready course assessment.
- Blank question package — the structure to fill.
- Question bank validator — checks JSON directly, or converts copied rows from the optional drafting workbook.
Customize and validate
- Save the blank HTML under a new course-specific filename. Open it in a plain-text editor. Search for
MANUAL SETTINGS. Edit title, slug, compositionId and saveKeyNamespace. Give each distinct game a unique save namespace to avoid loading another game's progress. - Choose your supportedModes from the existing ten names. Keep timing, wager and sampling settings at their defaults unless you understand the mode. Guide text and visualTheme slots are optional; the Composer is the easier route for curated themes and assets. The manual template has no separate subtitle or topic-list setting. Use your title, guide text, tags and objectiveLabels.
- Fill a question package. Questions go in banks.easy, medium, hard, elite, legendary, easyBoss, mediumBoss, finalBoss and legendaryBoss. Adaptive items go in repairQuestions and bridgeQuestions. Match each main question's repairSkill with its repair and bridge primarySkill. Skill-keyed microSkillRepairPools, skillRepairSeedPools and microSkillBridgePools are also supported.
- Run the validator. Fix errors; review warnings and mode readiness. Download the checked JSON, which safely escapes less-than characters for pasting into HTML.
- Search the HTML for
MANUAL PACKAGE START. Replace only the JSON between that marker andMANUAL PACKAGE END. Keep the surrounding assignment, semicolon and markers. Do not paste a JavaScript const statement or an external question-pool script. - Save, reopen and complete the checklist below. Preserve the protected engine, transport, storage, completion and verification-code code.
Question fields
Each question requires a unique id (string or number), q, exactly four nonempty string options, a numeric a from 0–3 or a valid published aHash, tag, type, objective, primarySkill, repairSkill and feedback. Main and boss questions also require a difficulty matching their pool: easy, medium, hard, elite or legendary. Repair/bridge difficulty is optional. Boss difficulty is never “boss”; easyBoss is easy, mediumBoss is medium, finalBoss is hard and legendaryBoss is legendary.
{
"id": "course-001", "q": "What is 2 + 2?",
"options": ["4", "3", "5", "6"], "a": 0,
"tag": "addition", "type": "calculation", "objective": "LO1",
"difficulty": "easy", "primarySkill": "addition",
"repairSkill": "addition", "feedback": "Two plus two equals four."
}
Supported aliases are questionId, questionType, outcomeIds[0] or conceptId, skillId, repairSkillId and canonicalDifficulty. Type accepts a nonempty text label; there is no closed list. Optional hint, commonError, conceptCluster, secondarySkills and bossStage may be used. Boss stages may be 1, 2, 3, opening, middle or final. Pool membership selects boss/adaptive eligibility; a bossEligible flag is not a substitute. Numeric ID ranges are a personal convention, not a requirement.
Use objectiveLabels to give LO codes readable names. Custom objectives do not automatically connect to the Composer's curated Concept Review PDFs or LO manifest. Use the Composer for that integration; put any separate course readings in your LMS or course hub.
Graphs and other images
Set image to a relative filename such as sample-bars.svg. Keep the image at that path beside the HTML, or embed it under the same key in embeddedQuestionAssets as a base64 image data URL. SVG, PNG, JPEG, GIF and WebP can be used. Do not use remote URLs in this local-only starter. Add questionAssetMetadata under the same path with a short imageAlt and a full graphDescription describing relevant axes, values and relationships without depending on color. Metadata belongs in the package map, not only on the question.
Set graphRequired to true for Trial by Graph eligibility. The validator checks metadata and path safety; it cannot inspect a local file that you have not supplied. Open the actual game and verify the image and its enlargement dialog. The working starter embeds its sample, so it needs no adjacent asset file.
Mode readiness
| Mode | Minimum content to launch |
|---|---|
| Standard and Score | 6 each easy, medium, hard; 3 each easyBoss, mediumBoss, finalBoss; 1 repair and 1 bridge. |
| Timed, Exam and Unlimited | 6 each easy, medium, hard; 1 repair and 1 bridge. |
| Quiz | 5 each easy, medium and hard. |
| Legendary | 6 legendary and 3 legendaryBoss. |
| Trial by Graph | At least 10 graphRequired main questions with images and descriptions. |
| Fading Fortune and Risk and Reward | At least 10 main questions with four options. |
Special modes offer 10, 15 or 20 questions; provide enough eligible questions for the chosen target. These are launch minimums, not recommended bank sizes. Use a larger bank and cover every taught skill. Standard includes checkpoint commitment and adaptive repair → bridge → retest; the engine controls completion behavior. Do not edit completion logic to compensate for missing banks.
Data and privacy
The free manual template is local-only. Remote anonymous telemetry remains OFF by default, and the standalone template contains no remote collection adapter. Keep allowAnonymousDataCollection false; changing it alone does not install collection. Public polished games also remain local-only. The Composer can explicitly create an optional operational telemetry build under its approved disclosure and governance controls; operational telemetry is not research by default.
Progress and local activity data are stored in this browser. Save/resume requires the same browser and game identity; private browsing or clearing browser storage can remove progress. Download Game Data creates a local file that the user chooses whether to share. Application telemetry does not intentionally include names, email addresses, LMS account identifiers, university identifiers or free-text responses. Do not put student identifiers into question/configuration metadata. Remote images or added scripts can make network requests; they are outside this starter workflow.
Test before sharing
- Start each offered mode and test correct and incorrect answers, feedback, checkpoints and the repair/bridge path. Finish at least one full run and inspect completion and any verification code.
- Save, refresh and resume. Confirm the current question and progress are retained. Download Game Data and inspect the local CSV.
- Navigate using Tab, Enter and Space. Check visible focus, status messages, graph descriptions and Escape to close dialogs. Test a narrow phone-size window.
- Open the browser console and network panel. Resolve question and asset errors; confirm there are no remote telemetry requests. Run the validator after your last edit.
- Share your customized HTML and any adjacent image files together. Retest the delivered copy. Do not distribute the blank or demonstration as a finished course game.
If the game will not load after an edit, validate the JSON and check the package markers and configuration syntax. If one mode is blocked, read its missing-pool message. If an image is missing, check exact spelling and relative folders. The validator's structural pass does not certify answer accuracy, instructional quality or every browser behavior.