Loading...
Loading...
Expert blueprint for educational games including gamification loops (learn/apply/feedback/adapt), progress tracking (student profiles, mastery %), adaptive difficulty (target 70% success rate), spaced repetition, curriculum trees (prerequisite system), and visual feedback (confetti, XP bars). Use for learning apps, training simulations, or edutainment. Trigger keywords: educational_game, gamification, adaptive_difficulty, spaced_repetition, student_profile, curriculum_tree, mastery_tracking.
npx skill4agent add thedivergentai/gd-agentic-skills godot-genre-educationalMANDATORY: Read the appropriate script before implementing the corresponding pattern.
| Phase | Skills | Purpose |
|---|---|---|
| 1. UI | | Readable text, drag-and-drop answers |
| 2. Data | | Student profiles, progress tracking |
| 3. Logic | | Quiz flow (Question -> Answer -> Result) |
| 4. Juice | | Making learning feel rewarding |
| 5. Meta | | Navigating between lessons and map |
# quiz_manager.gd
extends Node
var current_question: QuestionData
var correct_streak: int = 0
func submit_answer(answer_index: int) -> void:
if current_question.is_correct(answer_index):
handle_success()
else:
handle_failure()
func handle_success() -> void:
correct_streak += 1
EffectManager.play_confetti()
StudentProfile.add_xp(current_question.topic, 10)
load_next_question()
func handle_failure() -> void:
correct_streak = 0
# Spaced Repetition: Add this question back to the queue
question_queue.push_back(current_question)
show_explanation()# student_profile.gd
class_name StudentProfile extends Resource
@export var topic_mastery: Dictionary = {} # "math_add": 0.5 (50%)
@export var total_xp: int = 0
@export var badges: Array[String] = []
func get_mastery(topic: String) -> float:
return topic_mastery.get(topic, 0.0)# curriculum_node.gd
extends Resource
@export var id: String
@export var title: String
@export var required_topics: Array[String] # Prereqsfunc get_next_question() -> QuestionData:
var player_rating = StudentProfile.get_rating(current_topic)
# Target a 70% success rate for "Flow State"
var target_difficulty = player_rating + 0.1
return QuestionBank.find_question(target_difficulty)_get_drag_data_drop_dataTranslationServer