Complete step-by-step instructions for creating educational games in CourseBuilder
CourseBuilder uses a shared assets + unique configurations architecture. This means:
Assets are reusable visual and audio files used across all your games:
| Asset Type | Description | Recommended Size | Format |
|---|---|---|---|
| Characters | Player sprites, NPCs, enemies | 64x64 px or 128x128 px | PNG (transparent) |
| Objects | Trees, rocks, interactive items | 64x64 px to 256x256 px | PNG (transparent) |
| Obstacles | Fences, walls, barriers | 128x64 px to 256x128 px | PNG (transparent) |
| Decorations | Flowers, grass, visual elements | 32x32 px to 128x128 px | PNG (transparent) |
| Backgrounds | Scene backgrounds | 1920x1080 px | PNG or JPG |
| Audio | Background music, sound effects | < 5 MB | MP3 or OGG |
Option A: Use Free Asset Tools
Option B: AI-Generated Assets (Recommended!)
Our team creates all game assets using AI tools. This is fast, cost-effective, and produces high-quality results!
Using Leonardo.ai (leonardo.ai):
Leonardo.ai Prompt Examples:
Using ChatGPT (OpenAI):
ChatGPT Image Prompt Examples:
Post-Processing Steps:
CourseBuilder now has built-in AI background removal! When uploading game assets, simply check the "Remove Background" option and our AI will automatically remove the background for you.
๐ค How It Works:
/root/.u2net/u2net.onnx (176 MB)/var/www/EECourses/scripts/remove-bg.pyโ Benefits:
๐ Technical Details:
When to Use Background Removal:
If Background Removal Fails:
/var/www/EECourses/logs/coursebuilder-error.logAlternative Solutions:
Option C: Traditional Asset Libraries (if you prefer pre-made)
Via Game Builder Interface:
Upload Form Example:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Upload New Asset โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Name: [Math Teacher NPC ] โ
โ Type: [Character โผ] โ
โ Category: [characters โผ] โ
โ Tags: [teacher, npc, math ] โ
โ File: [Choose File] teacher.png โ
โ โ
โ โ Remove Background (AI-powered) โ
โ Automatically remove background โ
โ and convert to transparent PNG โ
โ โ
โ [Cancel] [Upload Asset] โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
/uploads/shared/game/[category]/removeBackground=true flag/var/www/EECourses/scripts/remove-bg.py/root/.u2net/u2net.onnx (176 MB, cached)backgroundRemoved: true๐ง Technical Components:
/var/www/EECourses/scripts/remove-bg.py/var/www/EECourses/backend/services/fileUploadService.js (processImage function)/var/www/EECourses/backend/controllers/assetController.js (uploadAssets function)/uploads/shared/game/[category]/ and available to ALL users and courses.
Game Definition (1 per course)
โโโ Area (e.g., "Starting Village")
โโโ Scene 1: "Village Center" (default)
โโโ Scene 2: "General Store"
โโโ Scene 3: "Teacher's House"
Area: A themed zone with a specific learning concept (e.g., "Addition Village", "Multiplication Mountains")
Scene: A specific location within an area (e.g., "Main Square", "Shop Interior")
This creates an empty game attached to your course. You only do this once per course.
Standard Areas (Pre-configured):
Or Create Custom Area:
"isDefault": true. This is where players spawn when entering the area.
What is Parallax?
Parallax scrolling creates depth by moving background layers at different speeds. Far layers move slowly, close layers move faster - just like looking out a car window!
Setting Up Parallax Backgrounds:
Option 1: Simple Background (Current Default)
{
"visualConfig": {
"backgroundColor": "#87CEEB",
"backgroundImage": "/uploads/shared/game/backgrounds/village.png" โ Single image
}
}
Option 2: Parallax Layers (NEW!) โญ
{
"visualConfig": {
"backgroundColor": "#87CEEB",
"backgroundLayers": [
{
"imageUrl": "/uploads/shared/game/backgrounds/cave-far.png",
"depth": 0, // Furthest back
"scrollFactor": 0.2, // Moves SLOWLY (20% of camera speed)
"zIndex": -100,
"parallaxEnabled": true
},
{
"imageUrl": "/uploads/shared/game/backgrounds/cave-mid_no_bg.png",
"depth": 50, // Mid distance
"scrollFactor": 0.5, // Moves MEDIUM speed (50% of camera)
"zIndex": -50,
"parallaxEnabled": true
},
{
"imageUrl": "/uploads/shared/game/backgrounds/cave-near_no_bg.png",
"depth": 100, // Closest
"scrollFactor": 0.8, // Moves FAST (80% of camera)
"zIndex": -10,
"parallaxEnabled": true
}
]
}
}
| Layer | Depth | Scroll Factor | What to Include | Background Removal? |
|---|---|---|---|---|
| Layer 1 (Far) | 0 | 0.1 - 0.3 | Sky, distant mountains, far walls | โ No (solid background) |
| Layer 2 (Mid) | 50 | 0.4 - 0.6 | Trees, buildings, mid-distance objects | โ Yes (transparent PNG) |
| Layer 3 (Near) | 100 | 0.7 - 0.9 | Grass, rocks, foreground elements | โ Yes (transparent PNG) |
Creating Parallax Layers with Leonardo.ai:
Uploading via Game Builder UI:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Background Section โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Background Type: โ
โ โ Simple (1 Image) โ
โ โ Parallax (Layers) โ Select this โ
โ โ
โ Layer 1 - Deep Background * โ
โ [Upload cave-far.png] โ
โ Speed: [Slow (0.2) โผ] โ
โ โ
โ Layer 2 - Mid Background (Optional) โ
โ [Upload cave-mid.png] โ
โ Speed: [Medium (0.5) โผ] โ
โ โ Remove Background (AI) โ
โ โ
โ Layer 3 - Foreground (Optional) โ
โ [Upload cave-near.png] โ
โ Speed: [Very Fast (0.8) โผ] โ
โ โ Remove Background (AI) โ
โ โ
โ [Upload Parallax Layers] โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Assets are placed by referencing shared assets and specifying their position:
(0, 0) โโโโโโโโโโโโโโโโโโโโโโโโโโโ (1920, 0)
โ โ
โ Your Scene Canvas โ
โ โ
โ (960, 540) = Center โ
โ โ
โ โ
(0, 1080) โโโโโโโโโโโโโโโโโโโโโโโ (1920, 1080)
X-axis: Left (0) โ Right (1920)
Y-axis: Top (0) โ Bottom (1080)
NPC = Non-Player Character
NPCs are interactive characters that:
| Property | Description | Example |
|---|---|---|
id |
Unique identifier for this NPC placement | "npc_teacher_1" |
type |
Object type (always "npc") | "npc" |
name |
Display name shown to player | "Ms. Johnson - Math Teacher" |
sprite |
Path to character image | "/uploads/shared/game/characters/teacher.png" |
position |
X,Y coordinates on canvas | { "x": 600, "y": 400 } |
size |
Width and height in pixels | { "width": 64, "height": 64 } |
challengeId |
Links to a challenge question | "68e1234..." (ObjectId) |
dialogue |
Text shown when player interacts | "Hello! Ready for a challenge?" |
interactionRadius |
Distance in pixels player can interact from | 80 (player must be within 80px) |
This will return a challenge with an _id. Save that ID!
Update the NPC's challengeId field:
interactionRadius)| Problem Type | Description | Use Case |
|---|---|---|
multiple_choice |
Select one answer from 2-4 options | Basic math, reading comprehension |
numeric_input |
Type in a number | Math problems requiring exact answers |
drag_drop |
Drag items to correct positions | Matching, sorting, sequencing |
draw |
Draw shapes or solutions | Geometry, art activities |
array_builder |
Build visual arrays | Multiplication, grouping |
number_line |
Place numbers on a line | Number sense, fractions |
word_problem |
Multi-step problem solving | Real-world math applications |
fact_family |
Related math facts | Addition/subtraction relationships |
Portals are interactive zones that transport the player to a different scene (like doors, stairs, or teleporters).
| Property | Description | Options/Example |
|---|---|---|
id |
Unique portal identifier | "portal_to_shop" |
name |
Display name shown to player | "General Store Entrance" |
targetSceneId |
Scene to transport to | "shop_interior" |
position |
X,Y coordinates | { "x": 500, "y": 300 } |
size |
Interaction hitbox size | { "width": 150, "height": 200 } |
triggerType |
How portal activates | "click" | "proximity" | "both" |
sprite |
Visual representation | "/uploads/.../door.png" |
requiresCompletion |
Lock until challenges done? | true | false |
requiredChallenges |
Array of challenge IDs needed | ["68e123...", "68e456..."] |
The targetSceneId must exist! Create it first:
To unlock a portal only after completing specific challenges:
When a player approaches this portal:
| Trigger Type | Behavior | Best For |
|---|---|---|
"click" |
Must click portal to activate | Explicit choices, important transitions |
"proximity" |
Auto-activates when player walks near | Automatic transitions, seamless movement |
"both" |
Click OR walk near to activate | Most common - flexible interaction |
Example: Multi-Scene Game Flow
โโโโโโโโโโโโโโโโโโโ
โ Village Square โ (Default scene - players spawn here)
โ โ
โ ๐ช โ Shop โ (Portal: click door to enter)
โ ๐ช โ School โ
โ ๐ฒ๐ฒ โ Forest โ (Portal: walk to edge, auto-transition)
โโโโโโโโโโโโโโโโโโโ
โ (Portal)
โโโโโโโโโโโโโโโโโโโ
โ General Store โ
โ โ
โ ๐ค Shopkeeper โ (NPC with challenge)
โ ๐ช โ Exit โ (Return portal to village)
โโโโโโโโโโโโโโโโโโโ
Every challenge must be linked to your course structure:
Course
โโโ Module: "Introduction to Math"
โโโ Lesson: "Addition Basics"
โโโ Challenge: "What is 2 + 2?"
Best Practices:
Hints unlock progressively if student struggles:
| Difficulty | Gems Awarded | Reasoning |
|---|---|---|
| Easy | 5-10 gems | Simple recall, basic concepts |
| Medium | 15-25 gems | Multi-step problems, applying concepts |
| Hard | 30-50 gems | Complex word problems, synthesis |
| Bonus | 100+ gems | Optional challenges, mastery demonstrations |
Question Audio: Record narration of the question
Question Visual: Diagram or illustration
/uploads/shared/game/ (sprites, backgrounds)/uploads/courses/{courseId}/game/ (challenge media)Open the preview URL with your course ID:
| Test Item | What to Check | How to Test |
|---|---|---|
| Background Removal | Assets have transparent backgrounds | Check sprites have no white/colored boxes around them |
| Movement | Player can move smoothly | Use arrow keys, check all directions |
| NPCs | NPCs are visible and interactive | Walk near NPC, look for (!) indicator, press SPACE |
| Dialogue | Dialogue text displays correctly | Click NPC, read dialogue, press SPACE to close |
| Challenges | Questions load and are readable | Interact with NPC, verify question text/images |
| Answers | Correct answer awards gems | Select correct answer, watch gem count increase |
| Feedback | Feedback is specific and helpful | Try wrong answers, verify feedback messages |
| Portals | Portals transport to correct scenes | Walk through portal, verify new scene loads |
| Return Portals | Can get back to previous scenes | Use return portal, confirm you're back |
| Locked Portals | Locked until requirements met | Try portal before completing challenges |
| Progress | Sidebar updates correctly | Complete challenge, check gems/progress % |
| Audio | Background music and narration work | Unmute browser, verify audio playback |
| Assets | All images load correctly | Look for broken image icons |
| Problem | Cause | Solution |
|---|---|---|
| NPC not visible | Wrong position or sprite path | Check position is within canvas bounds (0-1920, 0-1080) |
| Can't interact with NPC | No challengeId linked | Verify challengeId is set and valid |
| Portal doesn't work | Target scene doesn't exist | Create target scene first, verify sceneId matches |
| Stuck in scene | No return portal | Add return portal in target scene |
| Image not loading | Wrong file path | Check path starts with /uploads/ |
| Gems not awarded | Wrong answer marked correct | Verify only ONE answer has isCorrect: true |
Run this to create a test course instantly:
This creates:
Once you've tested your game and it works perfectly:
Follow the instructions in the ZIP file to import into the production EmpowerEd platform.
# Assets
POST /api/game/assets/upload Upload shared asset
GET /api/game/assets List all assets
# Game Definition
POST /api/courses/{id}/game Create game
GET /api/courses/{id}/game Get game
PUT /api/courses/{id}/game Update game
# Scenes
POST /api/courses/{id}/game/areas/{areaId}/scenes Add scene
PUT /api/courses/{id}/game/areas/{areaId}/scenes/{sceneId} Update scene
# Challenges
POST /api/courses/{id}/game/challenges Create challenge
GET /api/courses/{id}/game/challenges List challenges
PUT /api/courses/{id}/game/challenges/{challengeId} Update challenge
# Preview & Export
GET /preview.html?courseId={id} Test game
GET /api/export/{id} Export package
| Key | Action |
|---|---|
| Arrow Keys | Move player character |
| SPACE | Interact with nearby NPC/portal |
| E | Interact (alternative to SPACE) |
| ESC | Close dialogue/challenge UI |
| Click | Interact with NPC/portal/answer |
CourseBuilder integrates with Leonardo.ai to generate high-quality characters and backgrounds with ControlNet precision and character consistency. No drawing skills required!
1. Go to https://leonardo.ai
2. Sign up for a free account
3. Choose a subscription plan (starts at $12/month for 8,500 credits)
1. Go to Settings โ API Access
2. Click "Generate API Key"
3. Copy your key (format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
4. Keep it secure - you'll use it in the Depth Map Builder
The Depth Map Builder is a visual tool that lets you control exactly where features appear in your generated scenes - without needing to draw or sketch anything!
Click here: Open Depth Map Builder
Option A: Use a Built-In Template
Click any template to load it instantly!
Option B: Draw Your Own
Once your depth map is ready:
After generation completes:
Leonardo.ai's Character Reference feature ensures the same character appears consistently across all your scenes.
Go to Leonardo.ai Web Interface
Once you have your base character image:
After generating character images:
Use the same depth map with different prompts to create 3 parallax layers:
| Layer | Depth Map Focus | Prompt Focus | Example |
|---|---|---|---|
| Layer 1 (Far) | Black regions | Sky, distant mountains, atmospheric | "Sunset sky with distant snow peaks, soft focus, atmospheric perspective" |
| Layer 2 (Mid) | Gray regions | Mid-ground features, moderate detail | "Rocky cliffs and pine trees, medium distance, moderate detail" |
| Layer 3 (Near) | White regions | Foreground elements, sharp detail | "Stone path with grass edges, close-up detail, sharp focus" |
| Task | Credits | Cost (Artisan Plan) |
|---|---|---|
| 1024x1024 image (Kino XL, Alchemy ON) | ~5 credits | ~$0.007 |
| 4 variations (recommended) | ~20 credits | ~$0.028 |
| Complete parallax scene (3 layers, 4 variations each) | ~60 credits | ~$0.084 |
| 10 unique characters | ~200 credits | ~$0.28 |
Artisan Plan ($12/month): 8,500 credits = ~425 high-quality images
Maestro Plan ($30/month): 25,000 credits = ~1,250 high-quality images
CourseBuilder includes a complete Audio Library with AI-powered voice generation, sound effects, and support for background music. All courses share a global audio library for consistency and efficiency.
Access the Audio Library from the Game Builder:
๐ต Open Audio Library
The Audio Library has 6 tabs:
Character voices ensure the same character sounds the same everywhere they appear. For example, if "Wizard Merlin" appears in 5 different courses, he always uses the same voice.
1. Go to Audio Library โ Character Voices tab
2. Click "Create Character Voice"
3. Fill out the form:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Create Character Voice โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Character Name: [Wizard Merlin ] โ
โ Description: [Wise old wizard, mentor ] โ
โ โ
โ ElevenLabs Voice: [Adam (Deep) โผ] โ
โ โ
โ Voice Settings (Advanced): โ
โ Stability: [โโโโโโโโบโโ] 0.5 โ
โ Similarity: [โโโโโโโโโโ] 0.75 โ
โ Style: [โโบโโโโโโโโ] 0.0 โ
โ โ Use Speaker Boost โ
โ โ
โ [Cancel] [Create Character] โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Voice variations let you temporarily change a character's voice for special situations:
1. Go to Audio Library โ Generate Speech tab
2. Fill out the form:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Generate Text-to-Speech โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Audio Name: [Wizard Greeting ] โ
โ โ
โ Character Voice: [Wizard Merlin โผ] โ
โ Voice Variation: [Default โผ] โ
โ โ
โ Text to Speak: โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Greetings, young adventurer! โ โ
โ โ I have a riddle for you. Are you โ โ
โ โ ready to test your wits? โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ Characters: 94 / 5000 โ
โ โ
โ [Cancel] [Generate Speech] โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
3. Click "Generate Speech"
4. Wait 2-5 seconds for ElevenLabs to generate audio
5. Play the preview to verify it sounds correct
6. Audio is automatically saved to the library
1. Go to Audio Library โ Sound Effects tab
2. Fill out the form:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Generate Sound Effect โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Effect Name: [Correct Answer Chime ] โ
โ โ
โ Description: โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Bright magical chime sound, โ โ
โ โ triumphant, success, bell-like โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โ Duration: [โโโโโบโโโโโ] 2.0 seconds โ
โ โ
โ [Cancel] [Generate SFX] โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
For background music, we recommend Mubert.com - an AI music generator that creates royalty-free tracks perfectly suited for game soundtracks.
1. Go to Mubert Render
2. Sign up for a free account or log in
3. Choose your music generation method:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Mubert Render Options โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ 1. Select Genre/Mood โ
โ โข Ambient, Chill, Cinematic, Electronicโ
โ โข Fantasy, Adventure, Mystery, Peacefulโ
โ โ
โ 2. Choose Duration โ
โ โข 30 sec - 25 minutes โ
โ โข Recommended: 2-3 minutes (loops) โ
โ โ
โ 3. Generate Track โ
โ โข AI creates unique track โ
โ โข Download as MP3 โ
โ โข Royalty-free for your project โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
| Scene Type | Mubert Genre/Mood | Why It Works |
|---|---|---|
| Starting Village | Peaceful, Ambient, Chill | Non-distracting, calming, helps focus |
| Forest/Nature | Nature, Cinematic, Ambient | Immersive, atmospheric |
| Cave/Dungeon | Dark Ambient, Mystery, Suspense | Creates tension, engaging |
| Castle/Palace | Classical, Cinematic, Epic | Majestic, motivating |
| Boss Challenge | Epic, Dramatic, Intense | Builds excitement, focus |
| Shop/Town | Upbeat, Cheerful, Folk | Friendly, welcoming atmosphere |
After downloading your music from Mubert:
1. Go to Audio Library โ Background Music tab
2. Drag and drop your MP3 file, or click to browse
3. Fill out the metadata:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Upload Background Music โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Track Name: [Village Peaceful Theme ] โ
โ Genre: [Ambient โผ] โ
โ Mood: [Peaceful, Calm, Educational ] โ
โ โ
โ โ Loop this track โ
โ (Recommended for background music) โ
โ โ
โ File: village_theme.mp3 (2.4 MB) โ
โ Duration: 2:45 โ
โ โ
โ [Cancel] [Upload] โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
1. Open Game Builder
2. Select your scene
3. Scroll to the "Audio" section in the sidebar
4. Configure scene audio:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Scene Audio Configuration โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Background Music: โ
โ [Village Peaceful Theme โผ] โ
โ Volume: [โโโโโโโโบโโ] 0.5 โ
โ โ
โ Ambient Sound (Optional): โ
โ [Forest Birds Chirping โผ] โ
โ Volume: [โโโโบโโโโโโ] 0.3 โ
โ โ
โ Sound Effects: โ
โ Correct Answer: [Magical Chime โผ] โ
โ Wrong Answer: [Soft Buzzer โผ] โ
โ Portal Activate: [Whoosh SFX โผ] โ
โ โ
โ Master Volume: โ
โ Music: [โโโโโโโโบโโ] 0.7 โ
โ SFX: [โโโโโโโโโบโ] 0.8 โ
โ Voice: [โโโโโโโโโโ] 1.0 โ
โ โ
โ [๐ต Open Audio Library] โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
When creating or editing an NPC:
The Audio Library automatically tracks where each audio file is used:
Audio Asset: "Wizard Greeting"
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Used In: 3 places โ
โ โ
โ 1. Scene: Village Square (Main Area) โ
โ NPC: Wizard Merlin โ
โ โ
โ 2. Scene: Magic Tower (Advanced Area) โ
โ NPC: Wizard Merlin โ
โ โ
โ 3. Scene: Final Boss Room (Challenge) โ
โ NPC: Wizard Merlin (variation) โ
โ โ
โ [Cannot delete - in use] โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
You cannot delete audio assets that are currently being used in any course. This prevents accidentally breaking audio in published games. To delete an audio file, first remove it from all scenes/NPCs where it's used.
If you don't want to use Mubert, here are other royalty-free music sources:
| Source | License | Quality | Best For |
|---|---|---|---|
| Incompetech | Free (CC BY) | Good | Classical, cinematic tracks |
| OpenGameArt | Various (mostly free) | Varies | Game-specific loops |
| Freesound | CC licenses | Varies | Sound effects, ambient |
| Pixabay Music | Free | Good | Background music, diverse styles |
| Bensound | Free (attribution) | High | Professional background tracks |
You now have everything you need to create engaging educational games in CourseBuilder. Start by uploading a few assets, creating a simple scene with one NPC and challenge, then test it in preview mode. Build from there!