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 development 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.
Explore deeper into Godot's 3D capabilities with Food Fight! Learn to craft a third person action game with mouselook, projectiles and character customisation.
(Our ref: FF_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 frantic third person action game
1 Create the Food Fight project in Godot 2 Download and install our assets
Get our assets ready and have a quick look at what's included
1 Set up a basic level 2 Add a camera, some lighting and a simple piece of furniture
How to fix center of gravity problems in a RigidBody
1 Create a Character Scene 2 Create a Player Scene 3 Basic Player movement and rotation
How to set up a character with a Skeleton, Mesh and AnimationPlayer
1 Animate the PC when the player moves 2 Have the PC move from one animation to another smoothly
How to blend animations with AnimationTreePlayer
1 Capture and free the mouse 2 Implement Mouselook
How to rotate the camera and player with the mouse
1 Introduce Matrices, Basis and Transforms 2 Identify how these concepts will apply to Player Movement
Identify how to move the Player Character relative to the Camera on the Horizontal axis
1 Add Jumping 2 Change movement so that it works relative to the Camera's horizontal axis 3 Add acceleration and deceleration
Use Transforms and basis to create 3D movement with Mouselook
1 Figure out if GridMaps are right for Food Fight 2 Create some architecture 3 Map out a simple level
Determine if GridMaps are the right choice for your assets
1 Create a template for projectiles 2 Spawn a projectile 3 Have a projectile move whichever way the character is facing
Be able to spawn and fire a projectile in a 3D environment
1 Add food types as ammunition 2 Create a script to scan a directory for files 3 Fire food!
How to scan a directory for files and return the contents as a dictionary
1 Make sure we can only fire once every x seconds 2 Give food a wooshing sound 3 Enable the Doppler effect
How to use the Doppler effect in 3D
1 Create bystanders 2 Create a spawner to fire bystanders across the level 3 Have bystanders vanish when hit by food
How to use has_method()
and VisibilityNotifier nodes
1 Create Robot NPCs 2 Detect the PC with a Raycast 3 Limit how many times Robots fire each second
Adding Adversaries!
1 Create a Pause menu 2 Pause the game 3 Unpause the game! 4 Toggle Fullscreen
Learn how to pause and unpause a game in Godot and a cool way to toggle boolean values
1 Create Static furniture 2 Make invisible walls to contain the player
Start filling our level with static furniture
1 Create movable furniture 2 Add one-way transparency to the walls so that the camera can see through them
Fill our level with moveable furniture!
1 Limit Player Ammo 2 Create an ammo refill system
Limit player ammo
1 Add animations for throwing food and reloading 2 Add a Blend3 node in our AnimationTreePlayer 3 layer blending nodes
Layer multiple blend nodes in AnimationTreePlayer
1 Add lives to all characters 2 Have characters remove themselves when they run out of lives 3 disable friendly fire
Making and using enums
1 Create a GUI 2 Display player lives 3 Show how long before the next piece of ammo is collected
Displaying how long we have left to wait in a TextureProgress node
1 Create Game Over and Victory Scenes 2 Display an animated 3D Robot npc within a 2D scene
How to use ViewportContainer nodes to have multiple Viewports in a single scene
1 Display Robot lives in 3D space 2 Allow the game to load the Victory and Game Over screens
Counting lives as objects in the scene and using Sprite3D nodes
1 Create a PlayerTemplate Scene 2 Create a second Player Character
Creating templates from existing scenes
1 Creating a Player Customisation Scene
Better Lighting Techniques
1 Creating a Player Customisation guide 2 Applying textures to meshes at runtime 3 Cycling through lists
How to apply a texture to a mesh at runtime
1 Apply PC customisation to other scenes 2 Have a default setting if the player skips customisation 3 Make sure we don't load a scene in a paused state
Storing and applying player customisation
1 Create a start screen 2 Add music to the game 3 Finish Food Fight 4 Celebrate!
Create the perfect arena for fighting robots with food!