This is GameDev.tv's guide to the free and open source Godot game engine. Learn the free to use, free to modify, free to create engine with one of the most successful online game develeopment educational groups out there.
You're welcome to download, fork or do whatever else legal with all the files! The real value is in our huge, high-quality online tutorials that accompany this repo.
Create a fun word game based on Madlibs while you get to grips with GDScript and the foundations of scripting. (Our ref: HD_GDT)
This is a Godot project. If you're familiar with source control, then "clone this repo". Otherwise download the contents and place them in an empty folder that's in a convenient place. Open Godot, Import Project
and navigate to the folder you just made. select project.godot
and you're good to go.
No compiling necessary! This is Godot, after all.
This branch is the course branch, each commit corresponds to a lecture in the course. The current state is our latest progress.
Here are the lectures of the course for this section...
1 Discuss the game we're making 2 Examine the features we'll need to create
Plan out the central mechanics and feeling of our 2D platformer game!
1 Download and Import the game assets 2 Create a Scripts folder 3 Tour the file structure for Hoppy Days
Understand how to plan the file system for a new project
1 Create a KinematicBody2D
character
2 Define custom player inputs
3 Move the character left and right using player inputs
Know the different kinds of PlayerBody2D
nodes, Understand when to use move_and_collide()
and move_and_slide()
and how to use and
and not
in if statements
1 Create an `AnimatedSprite`` node 2 Set up animations 3 Call animations based on which way the player is going 4 Flip the sprite to match the direction to player is heading in
Learn about AnimatedSprite
nodes, how to set up and call animations in them and how to flip the sprite in the script
1 Instance a scene 2 Apply gravity to the player 3 Allow the player to jump
Learn how to instance a scene, change the main scene of the game, make the player fall and let the player jump!
1 Move the animation logic to the AnimatedSprite
node
2 Explore the concept of Elegant Code
Understand the principle of one script being in charge of one thing
1 Make a Tilemap 2 Make a Camera2D
Learn the awesome power of Tilemaps
Stop Bunny from floating along the ceiling
How to use is_on_ceiling()
1 Create a ParralaxBackground
node
2 Make multiple ParralaxLayer
nodes
3 Tweak the values to fit our game
Learn the secrets of Parallax Background in Godot!
1 Create a Game Over Screen 2 Trigger Game Over when Bunny falls too far 3 Allow the player to start again
Create a game over screen and get a brief introduction to control nodes!
1 Make an Area2D 2 Instance a Spike Scene 3 Make the level challenging
How to use Area2D to make level hazards
1 Use Anchors and Control nodes 2 Make a flexible GUI 3 Change the way Hoppy Days deals with Aspect Ratio
Understand the basics of Control
nodes and some easy tips for flexible GUI
1 The Single Responsibility Principle 2 Create a script to handle the game's rules 3 Call a function from a child node
Learn the Single Responsibility Principle and how to organize your game around it.
1 Create a singleton 2 Move node paths to the singleton 3 Allow nodes to be moved and renamed without breaking anything
Learn how to use a global script to solve the script referencing problem!
1 Create a starting_lives
variable and a lives
variable
2 Update lives
when Bunny is hurt
3 Make bunny jump up when hurt
Add lives to our game!
1 Create an update_GUI() function 2 Display the current number of lives to the player 3 Update the GUI when hurt
Keep the GUI up to date
1 About the AnimationPlayer
Node
2 Introducing Keyframes
3 Calling functions in AnimationPlayer
Use AnimationPlayer to make coins work!
1 Giving the player feedback when coins and lives values change 2 Allowing Bunny to gain extra lives
Control multiple animations in a single function by calling arguments
1 Add background music to our game 2 Add sound effects for jumping, coin pickup and pain
Learn to use AudioStreamPlayer
nodes!
1 Create Jump Pads
2 Use a Timer
node to reset Jump Pads
How to use Timer nodes to trigger events
1 Create a Spikeman NPC
2 Use AnimationPlayer
to bring Spikeman to life
How to use Animaitn Player to create NPC behaviours
1 Stop the Player from picking up the same coin multiple times
How to stop something triggering repeatedly
1 Create an NPC that can fire a projectile
2 Use Raycast2D
nodes
3 Check what body is in an Area2D
How to detect if a player is being aimed at and spawn a projectile at the player
1 Create a Portal to let Bunny win the game
2 Link the Portal to a Victory scene
3 Decorate the Portal with the Particles2D
node
A quick introduction to the Particles2D
node!
1 Make sure the Jump Pad works consistently 2 Limit fall speed
Using clamp()
to keep a value within range