
CIELO-G Learning Framework
/ 6 min read
Table of Contents
Overview
The CIELO-G Learning Framework is a flexible, plug-and-play framework for Godot 4 that empowers educators and developers to rapidly create educational mini-games. Designed with modularity at its core, the framework provides three extensible game systems, automatic progress tracking, certificate generation, and a rich dialogue systemโall without requiring advanced programming knowledge.
Background
Developed as part of an NSF-funded research initiative at the CIELO-G Lab (The University of Texas at El Paso), this framework addresses a critical gap in Earth-science education: the absence of modular, reusable gamification tools that can be easily adapted by educators without extensive technical expertise.
Under the mentorship of Dr. Aaron Velasco, Dr. Katalina Salas, and PhD candidate Marc Garcia, I architected this framework to reduce educational game development time from weeks to hours through scene inheritance patterns and plug-and-play architecture.
The Challenge
Creating educational games typically requires:
- Extensive programming knowledge
- Custom implementation of common features (scoring, progress tracking, feedback)
- Significant time investment for each new game
- Lack of standardization across different educational modules
Architecture Design
I engineered the complete software architecture following modular design patterns in Godot 4 (GDScript):
Core Systems
| Component | Purpose | Key Features |
|---|---|---|
| ModuleManager | Flow orchestration | State machine logic, attempt analytics, retry management |
| TransitionManager | Scene management | Shader-based transitions, visual effects |
| MenuBar Component | User interface | Real-time progress, contextual navigation |
Game Systems
I designed four extensible game systems with inheritance-based architecture:
1. Explanation System
Narrative-driven content delivery with rich text formatting and character expression states
var dialogue_items: Array[Dictionary] = [ { "expression": expressions["happy"], "text": "Welcome to the learning module!", "character": bodies["kat"] }]2. Clickable System
Interactive selection elements for formative assessment (multiple choice, true/false)
@export var is_correct: bool = false # Mark as correct answer3. Drag-and-Drop System
Spatial reasoning tasks with kinematic validation (sorting, categorization, placement)
@export var draggables_inside: Array[Area2D] = [] # Expected objects4. Mix-and-Match System
Graph-based relationship mapping for concept association (connecting pairs, network diagrams)
@export var answers: Array[Area2D] = [] # Correct connections@export var max_outgoing: int = 1 # Max connections from this@export var max_incoming: int = 1 # Max connections to thisKey Features
๐ฏ Modular Game Systems
- Three base systems (Clickable, Drag-and-Drop, Mix-and-Match) that can be inherited and customized
- Plug-and-play architecture: create minigames in Play by inheriting from base systems
- Assets folder structure for organized game-specific resources
๐ Built-in Progress Tracking
- Automatic attempt counting and analytics
- First-try success metrics
- Retry functionality with certificate qualification logic
- Real-time progress indicators
๐ Certificate Generation
- Evidence-based mastery learning system
- Criteria: 100% first-attempt success, zero retries
- Performance-based feedback reinforcing learning retention
- Player name customization
๐จ Rich Learning Experience
- Explanation/dialogue system with multiple character support
- Character expression states (happy, sad, angry, regular)
- Rich text formatting (wave, shake,
rainboweffects) - Slide support for instructional content
- Shader-based scene transitions
๐ง Developer-Friendly
- Clean, modular codebase with consistent commenting style
- Comprehensive documentation and API guides
- Scene inheritance patterns for rapid prototyping
- Standardized folder structure
Project Structure
CIELO-G_Learning_Framework/โโโ Global/ # Shared resources and scriptsโ โโโ Assets/ # Fonts, audio, characters, themesโ โโโ Scripts/โ โโโ Managers/ # Core game management (ModuleManager)โ โโโ SetName/ # Player name inputโ โโโ ThankYou/ # Completion screensโ โโโ Transitions/ # Scene transition effectsโโโโ Menu/ # Main menu and navigationโ โโโ Home/ # Home screen with play/learn buttonsโ โโโ MenuBar/ # Progress bar and navigationโโโโ Module/ # Learning module componentsโ โโโ Learn/ # Explanation/dialogue systemโ โโโ Certificate/ # Certificate generationโ โโโ Play/ # ๐ YOUR MINIGAMES GO HERE!โ โโโ Minigame_1/ # First minigame folderโ โ โโโ Assets/ # Minigame-specific visualsโ โ โโโ minigame_1.tscnโโโโ S_Clickable/ # ๐ฏ Clickable game system (BASE)โ โโโ ClickableSystem.tscn # Inherit from thisโ โโโ Prefabs/โโโโ S_DragAndDrop/ # ๐ฏ Drag-and-drop game system (BASE)โ โโโ DragAndDropSystem.tscnโ โโโ Prefabs/โโโโ S_MixAndMatch/ # ๐ฏ Mix-and-match game system (BASE) โโโ MixAndMatchSystem.tscn โโโ Prefabs/Results & Impact
Open Source Publication
- Published on GitHub with MIT License for worldwide educational use
- Comprehensive documentation including README, API guides, and architectural diagrams
- Enables scalable adoption by educators and researchers globally
Development Efficiency
- Educators can create new lessons by simply inheriting scenes and adding content
- No advanced programming requiredโfocus on content, not code
Research Contribution
- Contributes to ongoing research on gamificationโs impact on learner motivation in STEM education
- Provides foundation for measuring learning retention through mastery-based criteria
- Demonstrates domain-agnostic approach applicable beyond Earth science
Educational Applications
| Feature | Benefit |
|---|---|
| Classroom-ready | Immediate deployment without setup |
| Formative assessment | Interactive elements for checking understanding |
| Narrative pedagogy | Story-driven learning through dialogue systems |
| Measurable outcomes | Progress analytics and certificate generation |
Technical Challenges & Solutions
Challenge 1: Creating a Truly Modular System
Problem: How to make game systems work across different game types while maintaining consistency?
Solution: Implemented inheritance-based architecture where all games share core manager logic but customize gameplay through scene overrides
# All systems inherit from the same manager# But customize through exported variables and scene compositionChallenge 2: Progress Tracking Across Minigames
Problem: How to track player progress across multiple minigames and potentially multiple sessions?
Solution: Centralized ModuleManager singleton with state persistence and attempt analytics
# Tracking attempts/resultsvar _attempts: Dictionary = {} # scene_path -> attempts countvar _used_retry: bool = false # any retry pressed?var _first_try_successes: int = 0 # perfect first attemptsvar _completed: int = 0 # finished minigamesChallenge 3: Accessibility for Non-Programmers
Problem: How to make the framework accessible to educators without programming backgrounds?
Solution: Designed intuitive folder structure, export variables for configuration, and comprehensive documentation
Customization Guide
Adding Characters
- Place character images in Characters
- Add to ExplanationSystem.gd:
var bodies := { "kat": preload("res://Global/Assets/Characters/kat.png"), "sophia": preload("res://Global/Assets/Characters/sophia.png"), "new_character": preload("res://Global/Assets/Characters/new.png"),}Adding Expressions
- Place expression images in Expressions
- Reference in dialogue items:
{ "expression": expressions["happy"], "text": "I'm feeling great!", "character": bodies["kat"]}Custom Themes
Modify themes in Theme:
explanation.theme- Learning module thememini_menu.theme- Menu bar theme
Future Enhancements
- Additional game system templates (Quiz, Timeline, Memory Match)
- Multiplayer support for collaborative learning
- Advanced analytics dashboard for educators
- Save/load system for persistent progress across sessions
- Localization support for international adoption
- Mobile touch optimization
- Accessibility features (screen reader, colorblind modes)
Lessons Learned
Throughout this project, I gained valuable insights:
Modularity is key: Designing for extensibility from the start pays dividends when users want to customize
Documentation matters: Clear guides and examples dramatically increase adoption rates
Research context: Understanding pedagogical principles improved design decisions throughout development
Open source impact: Publishing with comprehensive documentation enables community contributions and wider reach
User testing: Early feedback from educators shaped the final architecture significantly
Tech Stack
| Category | Technologies |
|---|---|
| Engine | Godot 4 |
| Language | GDScript |
| Architecture | Singleton pattern, State machine, Scene inheritance |
| Shaders | Custom GLSL for transitions and visual effects |
| Version Control | Git, GitHub |
| Documentation | Markdown, inline code comments |
| Design | Modular design patterns, OOP principles |
Links & Resources
- ๐ฆ GitHub Repository
- ๐ Full Documentation
- ๐ฎ CIELO-G Learning App (Framework in action)
- ๐ฌ NSF-Funded CIELO-G Lab, UTEP
- ๐ Report Issues
Acknowledgments
This project was made possible through:
- NSF Funding: Supporting innovative educational technology research
- CIELO-G Lab: Providing resources and research environment
- Mentorship: Dr. Aaron Velasco, Dr. Katalina Salas, and PhD candidate Marc Garcia
- Godot Community: Open-source engine enabling rapid development
- Kenney.nl: Audio assets used in the framework
Project Timeline: August 2025 - Present
Role: Lead Developer & Architect
Organization: NSF-Funded CIELO-G Lab, UTEP
License: MIT (Open Source)
Status: Active development, v1.0 released