Book Image

Godot 4 Game Development Projects - Second Edition

By : Chris Bradfield
5 (1)
Book Image

Godot 4 Game Development Projects - Second Edition

5 (1)
By: Chris Bradfield

Overview of this book

The Godot 4 Game Development Projects book introduces the Godot game engine and its feature-rich 4.0 version. With an array of new capabilities, Godot 4.0 is a strong alternative to expensive commercial game engines. If you’re a beginner, this user-friendly book will help you learn game development techniques, while experienced developers will understand how to use this powerful and customizable tool to bring their creative visions to life. This updated edition consists of five projects with more emphasis on the 3D capabilities of the engine that will help you build on your foundation-level skills by showing you how to create small-scale game projects. Along the way, you’ll gain insights into Godot’s inner workings and discover important game development techniques that you can apply to your own projects. Using a straightforward, step-by-step approach and practical examples, this Godot book covers everything from the absolute basics to sophisticated game physics, animations, and much more. Upon completing the final project, you’ll have a strong foundation for future success with Godot 4.0 and be ready to develop a variety of games and game systems.
Table of Contents (10 chapters)

Player shield

In this section, you’ll add a shield to the player and a display element to the HUD showing the current shield level.

First, add the following to the top of the script:

signal shield_changed
@export var max_shield = 100.0
@export var shield_regen = 5.0
var shield = 0: set = set_shield
func set_shield(value):
    value = min(value, max_shield)
    shield = value
    shield_changed.emit(shield / max_shield)
    if shield <= 0:
        lives -= 1

The shield variable works similarly to lives, emitting a signal whenever it changes. Since the value will be added to by the shield’s regeneration, you need to make sure it doesn’t go above the max_shield value. Then, when you emit the shield_changed signal, you pass the ratio of shield / max_shield rather than...