This repository includes assignments, demonstrations, projects, and other resources for teaching Intro Video Game Design in the Godot engine. The Godot projects included were created in Godot 4.x and it is recommended to use the newest version of Godot. The resources here can be used as is, or as a jumping off point for creating derivative assignments. The projects are divided into three categories, coding assignments, engine assignments, and integrated assignments.
This course is constructed with the assumption that it will be divided into 2 parts:
- First Semester: Introduction to the Godot Engine and Foundational Concepts
- Introduction to core 2D concepts in Godot
- Introduction to GDScript
- Covering Game Design concepts: Aesthetics, Genres, Graphics, and Mechanics
- Introduction to frequently used coding patterns in Game Design ie.: State Machines, Singletons
- Culminates in a collective "micro-game" project
- Second Semester: Large Scale Group Project
- Students design and build a large scale (ie. more than 1 screen) game in groups
- Exposure to advanced tools: Plugins, Particle Effects, Ray Casting, etc.
- Students deliver an "alpha" version (mid-semester) and a "beta" or "release" version (end of semester)
At the end of this course students will have:
- Gained/refined coding skills using the GDScript language
- Developed leadership/team skills and learned how to work in a group on a complex project
- Created a "Capstone" level project that shows profeciency in a high-level coding language
- A well documented progression through their project, including pseudo-code and early problem solving
While it is expected that students taking this course have previous coding experience, much of the early material covers foundational coding concepts. Every effort is being made to make the class accessible to students of varying levels of coding experience.
These tours use GDQuest's Godot Tours framework (https://github.com/GDQuest/GDTour). Tours can be used as in-engine assignments or as refreshers for students. These are intended to be self directed, with each tour including at least one quiz that can be checked by a teacher after completion. Currently, the following tours are in a complete state:
- Intro to 3D
- Data Types
- PhysicsBodies
In-progress:
- Variables
- Object-Oriented Programming
Future tour topics:
- Conditionals
- Functions
- Sound
- Animation
If there is a topic that you/your students would like covered please submit an issue to this repository!
This course is designed as a Project Based Learning course, and as such has three main projects for the first semester (two guided and one self-directed). All of these should be completed individually by each student:
- Basket Catch
- Asteroids
- Micro-games
The second half of this course is a semester long group project. A more thorough rubric will be posted in this repository at a later date.
WARNING: Many of the assignments in this course are being migrated over to the Tours format, the below section is being kept to ease transition but will not be updated.
Coding Assignments require the students to write scripts in the GDScript language but do not require students to create nodes or interface with the engine outside of the IDE. These explore foundational coding concepts including:
- Declaring variables
- Typing variables
- Using if, else, and else-if statements
- Data types
- Creating functions
- etc.
And GDScript specific concepts including:
- The process() function
- The ready() function
- Exporting variables
- Creating signals
- etc.
Engine Assignments require the students to create nodes, resources, or other non-scripting resources in the engine. This includes:
- Creating nodes
- Creating and assigning materials
- Organizing files
- Building Scenes
- etc.
This is a catch all category for assignments and projects that require students to script and work in-engine. This includes:
- Large projects
- Signals
- Instancing scenes
- Freeing scenes
- etc*
Certain integrated assignments are only text prompts, such as end of term projects. These categories are not meant to be followed chronologically. Teachers should grab assignments as the topics appear in their curriculum/class progress.