Independent Learning Paths & Technology Stack¶
Audience
Incoming developers who want to build competency in specific parts of the DeVILSona tech stack.
This page provides a curated, opinionated curriculum for each major technology area. Don't try to learn everything at once—identify the components you'll be working on and focus there first.
How to Use This Guide¶
- Identify your role: Will you primarily work on the UE5 client, the cloud backend, or the web launcher?
- Start with fundamentals: Each section has beginner resources before advanced ones. Don't skip them.
- Build something small first: Theory without practice is useless. Each section contains a suggested mini-project to solidify your learning.
- Ask for code review: Your capstone teammates are the best resource for DeVILSona-specific patterns. Read the existing source code alongside these resources.
Unreal Engine 5 VR Client & AI Interactions¶
Unreal Engine 5 — Core Concepts¶
Why it matters: Understanding UE5's architecture (actors, components, GameInstance lifecycle) is mandatory before touching anything else.
Resources:
Guides and docs:
- Official UE5 Documentation — Programming Guide — Start here. The Actor lifecycle, GameInstance, and GameMode sections are critical.
Videos and courses:
- Unreal Online Learning — Unreal Engine 5 Kickstart — Free official course, excellent for getting oriented
- Alex Forsythe — How Unreal Engine C++ Works (YouTube) — Best free resource for understanding UObject, GC, and UE-specific C++ patterns
Communities:
- Unreal Slackers Discord — The most active UE5 developer community; invaluable for getting unstuck
Suggested Mini-Project: Create a new Actor class in C++ that subscribes to a FTimerHandle and spawns a debug print every 2 seconds. This confirms you understand the Actor lifecycle and UE-flavored C++.
Key Topics for This Project:
- GameInstance vs. GameMode vs. Actor lifecycle
- The role of
BeginPlay(),Tick(), andEndPlay() - How level loading affects persistent objects
- Understanding Output Log and using
UE_LOG()
C++ (Unreal-Specific)¶
Why it matters: The entire AI pipeline is C++. You cannot meaningfully contribute to the core systems without it.
Resources:
Guides and docs:
- Epic's Unreal C++ Coding Standard — The style guide you must follow
- UObject, Object Creation, and Garbage Collection — Understanding
UPROPERTYand GC is critical for avoiding crashes - Unreal Engine Delegates — The event system used throughout the AI pipeline
- Unreal Engine Subsystems Documentation — Directly relevant to DeVILSona's architecture
Videos and courses:
- Ben UI — Unreal C++ Series (YouTube) — Excellent practical tutorials on real UE5 C++ patterns
Suggested Mini-Project: Create a UGameInstanceSubsystem that stores a "message of the day" string, exposes a GetMessage() UFUNCTION, and allows a Blueprint to read it. This validates you understand the subsystem pattern used throughout the codebase.
Common Pitfalls:
- Forgetting
UPROPERTY()onUObject*pointers → garbage collection crash - Not unbinding delegates in
EndPlay()→ crash after Actor is destroyed - Using
new/deleteinstead ofNewObject<>()→ memory management chaos - Calling subsystem methods in constructor (subsystems aren't available yet)
Virtual Reality (VR) Fundamentals¶
Why it matters: VR has unique constraints around rendering performance, stereo geometry, and user comfort that don't exist in flat-screen games.
Resources:
Guides and docs:
- Meta Quest Developer Documentation — The canonical reference for Quest development in UE5
- UE5 VR Best Practices — Performance profiling guide specific to VR
- VR Template Documentation — UE5's built-in VR template explains common patterns
Videos and courses:
- VR Performance Crash Course (Unreal Online Learning) — Why 72fps is non-negotiable and how to achieve it
Key Concepts:
- Fixed Foveated Rendering and why it's essential on standalone hardware
- Single-pass stereo rendering (Mobile Multi-View)
- Why draw calls and overdraw matter much more in VR than PC games
- Tracking origin and floor vs. eye level tracking
- Guardian/boundary system
Meta XR SDK¶
Why it matters: The project uses the Meta XR Plugin, not the generic OpenXR plugin. Meta-specific APIs enable Quest-specific features.
Resources:
Guides and docs:
- Meta XR Plugin for Unreal Engine — Official Docs — The primary reference
- Meta Quest Developer Hub — The profiling and deployment tool for Quest
Videos and courses:
- Meta Horizon Worlds — Unreal Tutorials (official YouTube) — Meta's official development channel
Key Features Used in This Project:
MetaXRControllerInput— Quest controller input handling- Foveated rendering settings
- Android packaging configuration for Quest
OpenAI Realtime API¶
Why it matters: The Realtime API is the most complex external dependency in this project. Misunderstanding its behavior causes subtle, hard-to-debug issues.
Resources:
Guides and docs:
- OpenAI Realtime API Documentation — Read this completely before touching the AI subsystems. The event reference is essential.
- OpenAI Realtime API Reference (Event Catalog) — Every event the server sends and the client can send
- OpenAI Cookbook — Realtime Examples — Practical code examples (JavaScript/Python; adapt the concepts to C++)
Videos and courses:
- Building with the OpenAI Realtime API (OpenAI DevDay 2024 YouTube) — Conceptual walkthrough of the API
Key Concepts for DeVILSona:
- Server-side Voice Activity Detection (VAD) — why you don't control speech boundaries
- Audio format requirements — the strict 24kHz PCM16 mono base64 format
- Session configuration vs. conversation item creation
- Tool calling schema and the function call lifecycle
WebSockets¶
Why it matters: Understanding WebSocket fundamentals prevents you from treating the OpenAI connection like HTTP.
Resources:
Guides and docs:
- MDN WebSockets Guide — Excellent conceptual introduction
- RFC 6455 (WebSocket Protocol) — The protocol spec; read Section 1–5 for the concepts
- UE5 WebSocket Module Documentation — The specific UE5 API used in
WebSocketSubsystem
Key Concepts:
- The HTTP Upgrade handshake
- Full-duplex communication (both sides can send simultaneously)
- Connection lifecycle events:
OnConnected,OnMessage,OnClosed,OnError - Why idle connections can be closed by firewalls/load balancers (keep-alive pings)
Cloud Infrastructure & Backend¶
AWS DynamoDB¶
Why it matters: Student session data lives here. Understanding DynamoDB's data model prevents schema mistakes.
Resources:
Guides and docs:
- AWS DynamoDB Developer Guide — Start with the "Core components" and "Working with items" sections
Videos and courses:
- DynamoDB Crash Course (Fireship — YouTube) — 10-minute introduction to NoSQL thinking
- DynamoDB: From Beginner to Pro (Alex DeBrie) — Deep dive into data modeling patterns
Books:
- The DynamoDB Book (Alex DeBrie) — The definitive resource; expensive but excellent
Key Concepts for DeVILSona:
- Partition key + sort key design (StudentID + SessionID)
PutItem(upsert) vs.UpdateItem(partial update)- NoSQL modeling constraints: you can only query on primary keys or GSIs
begins_within KeyConditionExpression — used by the Login Lambda
AWS API Gateway¶
Why it matters: API Gateway is the public-facing endpoint that the headset talks to. Understanding it helps debug 4xx and 5xx errors.
Resources:
Guides and docs:
- API Gateway HTTP API Developer Guide — DeVILSona uses HTTP API (V2), not REST API (V1)
- API Gateway Payload Format Version 2.0 — Understanding how Lambda receives the event object
Videos and courses:
- AWS API Gateway Tutorial (Traversy Media) — Practical video walkthrough
AWS Lambda¶
Why it matters: The save/load logic runs here. Understanding Lambda execution context helps optimize cold starts and debug errors.
Resources:
Guides and docs:
- AWS Lambda Developer Guide — Execution model, cold starts, environment variables
- AWS SDK for JavaScript V3 — DynamoDB Document Client — The exact SDK used in the Lambda functions
Videos and courses:
- AWS Lambda Tutorial (TechWorld with Nana) — Clear overview of serverless computing concepts
Terraform¶
Why it matters: All AWS resources are managed through Terraform. You cannot safely modify the infrastructure without understanding it.
Resources:
Guides and docs:
- Terraform Official Documentation — The most comprehensive reference
- Terraform AWS Provider Registry — Reference for all AWS resource types used in DeVILSona
Videos and courses:
- Terraform Course for Beginners (freeCodeCamp) — 2-hour comprehensive free course
- Terraform Associate Exam Prep (TechWorld with Nana) — Thorough but practical; worth watching even if not taking the exam
Key Concepts for DeVILSona:
terraform planvs.terraform applyvs.terraform destroyterraform output— retrieving values like API endpoint URLs- Dependency graph — how Terraform knows to create the DynamoDB table before the Lambda that references it
- The
source_code_hashtrick for detecting Lambda code changes
Web-Based Apps (DeVILStarter & DeVILSpectator)¶
React¶
Why it matters: DeVILStarter's UI is React. DeVILSpectator (when completed) is also React.
Resources:
Guides and docs:
- React Official Documentation — The new official docs are excellent; use these, not the old ones
- Wails Documentation — Specific to DeVILStarter's architecture
Videos and courses:
- React Full Course (David Gray — freeCodeCamp) — 9-hour comprehensive free course
- Building Desktop Apps with Wails (YouTube) — Introduction to the Wails framework
Key Concepts for DeVILStarter:
useStateanduseEffecthooks for managing UI state- Event handling from the Go backend (
EventsOnfrom@wailsapp/runtime) - Async/await for calling Go functions
TypeScript¶
Why it matters: All web code is written in strict TypeScript. Type safety prevents an entire class of runtime bugs.
Resources:
Guides and docs:
- TypeScript Official Handbook — Comprehensive official documentation
Videos and courses:
- TypeScript Tutorial (Net Ninja) — Beginner-friendly video series
Books:
- TypeScript Deep Dive (Basarat Ali Syed) — Free online book; excellent for developers coming from JavaScript
Version Control & Deployment Tooling¶
Git & Git LFS¶
Why it matters: Large binary assets (UE5 .uasset files) are stored in Git LFS. Without understanding this, you will corrupt the repository.
Resources:
Guides and docs:
- Git LFS Official Documentation — Essential reading before touching the UE5 repository
- Atlassian Git Tutorials — Excellent written guides for intermediate Git concepts (rebasing, cherry-picking, conflict resolution)
Videos and courses:
- Git LFS Tutorial (GitHub) — Visual explanation of how LFS works
- Git Rebase vs Merge (The Coding Train) — Understanding why this project prefers rebase
Common LFS Mistakes:
- Cloning without LFS installed → all binary files are just text pointers
- Forgetting to run
git lfs track "*.uasset"before adding a new binary file type - Editing binary files in a non-LFS environment → corrupts the pointer
ADB (Android Debug Bridge) & SideQuest¶
Why it matters: Getting your build onto the Quest headset requires ADB knowledge.
Resources:
Guides and docs:
- Android ADB Documentation — Official ADB command reference
- SideQuest Setup Guide — The easiest way to sideload for non-developers
Videos and courses:
- Meta Quest Developer Mode & Sideloading Tutorial (YouTube) — Step-by-step visual walkthrough
Essential ADB Commands for DeVILSona:
adb devices # List connected devices
adb install -r <path/to/app.apk> # Install/update the APK
adb logcat -s LogTemp # View UE5 game logs in real time
adb logcat -c # Clear the log buffer
adb pull /sdcard/UE4Game/ . # Pull all game logs to local directory
adb shell pm list packages | findstr "fse100" # Verify app is installed