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.
Get to grips with 3D and local multiplayer while we make a simple, fast and fun physics based local multiplayer sportsing* game.
"Sportsing" may not be a real word.
(Our ref: CK_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 your projects folder, then import the project in Godot's launcher.
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 fast, silly local kickabout game
1 Create a new project 2 Download and install the assets 3 Explore the assets
Create the project and familiarise ourselves with the assets we'll be using
1 Working in 3D
2 Creating a MeshInstance
node
3 Creating a simple material
Create simple meshes and apply materials to them
1 How to change a root node in a scene without losing all the work you've done
2 Revisiting the three (?) types of PhysicsBody
in Godot
3 How to pick the right PhysicsBody
for your node
Have basic physics working in our game!
1 Changing the root node in an imported asset 2 Why 3D objects sometimes have blank materials 3 Moving in 3D
Bring in CubeDude and apply basic 3D movement
1 Generating Convex and Trimesh Collision meshes 2 Duplicating materials 3 Applying Emmision to a material
Finish building the pitch using automatically generated collision meshes
1 Set up a WorldEnvironment 2 Set up a DirectionalLight 3 Applying toon shading
Learn the basics of 3D lighting
1 Animate CubeDude 2 Have CubeDude face forwards 3 Make sure diagonal movement isn't faster than cardinal movement
Make CubeDude move in a more natural and predictable way
1 Instance Player 2 into the game 2 Have both players controlled in one script
Concatenate strings to have local multiplayer controls in a single script
1 Detect when a goal is scored 2 Report which player's score has to increase
Using Area nodes with custom bindings to detect goals being scored
1 Freeze the ball and players when a goal is scored 2 Reset the ball and player positions after some time has passed
Using Axis Lock to immobilise objects
1 Add a GUI to our game
How to use 2D nodes in 3D
1 Wire the GUI 2 Get our game to the standard of a Minimum Viable Product
Pass arguments as functions between scripts to track who scored and who won
1 Enhance the Player Experience with background details 2 Adjust materials and the environment
Enhance the game with set dressing
1 Play background music 2 Play a sound effect when a player kicks the ball 3 play a sound effect when a goal is scored
Check for Node types in script and give the player feedback as audio
1 Add 3D particles when a goal is scored 2 Dim the lights a goal is scored 3 Bring up a spotlight aimed at the player that's just scored when a goal happens
Introducing 3D particles and using look_at()
on lights