It would come as a shock, however not all code works on the primary strive. (Insert shocked copyright-safe yellow electrical rodent right here)
For that reason, most built-in improvement environments (IDEs) embody a debugger that permits the developer to identify and resolve points in the course of the a number of improvement iterations. That is illustrated by the next pseudocode:
whereas creating == true:
code
take a look at
debug
When creating a recreation, nevertheless, there are different points to consider, equivalent to recreation steadiness or verifying behaviors that may be too quick or delicate to note throughout gameplay.
Give it some thought. You rigorously crafted your recreation’s problem degree, so that you need to ensure it’s as much as the problem. However how will you rely the variety of enemies in a recreation once they’re transferring round and capturing at you?
You would possibly need to verify the sport steadiness. Is the variety of enemies spawned at a given prompt what you anticipate? Did the power-up add the harm enhance you anticipated?
These are only a few of the questions you would possibly need to reply whereas testing your recreation. That is the place Godot’s debug instruments turn out to be useful, serving to you take a look at and confirm all that.
Getting Began
The instance undertaking is identical from the Publishing Your Godot Project to itch.io tutorial. Nonetheless, for this text, the code was modified to boost the gameplay expertise. Sadly, the sport broke within the course of and you’ll want to discover what’s incorrect with it utilizing the debug instruments. How handy! :]
You’ll be able to obtain the undertaking utilizing the Obtain supplies hyperlinks on the prime and backside of this text. Word that this undertaking requires Godot 4.3 or newer to run.
The beginning undertaking has the identical construction as within the earlier article, however three recordsdata have modified: projectile.gd, enemy_ship.gd, and main_game.gd.
Now is an effective time to obtain and run the undertaking to evaluate the way it’s working and see how the bugs affect the sport. The principle challenge you’ll discover is that it’s unattainable to destroy the enemy ships, though they will destroy your ship, so it’s debugging time!
Overview of the Debug Instruments
Godot has a set of highly effective debug instruments you need to use to evaluate code for logic errors, or graphics for efficiency points, and even to get an x-ray of how the sport is utilizing its processing time.
Though there’s a Debug menu on the prime of the display screen, this text will give attention to the instruments accessible by way of the Debugger panel on the backside of the display screen, as a result of these are the instruments that collect data when executing the undertaking by way of the Run the undertaking button.
Debugger Panel
The debugger panel, positioned on the backside of the display screen by default, is accessible from the Debugger possibility on the backside of the window, to the suitable of the Output possibility. The next image reveals the debug panel:
On the panel’s prime, you may see a number of tabs. From left to proper, the tabs are:
- Stack hint: Exhibits the execution stack, the context and its variables, and permits for controlling how the sport executes in the course of the debug session. You’ll be taught extra about this tab later on this article.
- Errors: Exhibits the error and warning messages in the course of the recreation execution.
- Profiler: Exhibits which code is operating and the way it impacts the sport efficiency. You’ll be taught extra about this tab later on this article.
- Visible profiler: Shows a graph displaying which code is operating and the way a lot time it takes for execution. You’ll be taught extra about this tab later on this article.
- Screens: Comprises graphs of recreation data, equivalent to frames per second (fps), reminiscence utilization, scene nodes, and extra. The information from the debug session is saved even after the session is over, so it’s attainable to evaluate it even after execution.
- Video RAM: Exhibits a listing of assets and the way a lot video RAM they use whereas operating, in addition to the grand complete on the prime of the panel.
- Misc: Screens and identifies the management nodes clicked throughout runtime.
- Community Profiler: Comprises the listing of all nodes speaking over Godot’s multiplayer API and the way a lot information every certainly one of them obtained or despatched in the course of the debug session.
This text focuses on tabs 1, 2, 3, 4 and 5. Nonetheless, be happy to look at the others utilizing the identical undertaking. A few of them, equivalent to Community Profiler gained’t have any fascinating data, although, as the sport doesn’t use the multiplayer API in any level.
Utilizing Breakpoints
After executing the sport, it is best to have observed that the primary challenge is that it’s unattainable to destroy the enemy ships. So, logically, there have to be an issue with the operate invoked when damaging the enemy ships — perhaps the ships don’t take harm when they need to?
To check if that is true, look at the operate that offers harm to the enemies: open projectile.gd and discover the damage_body operate. The operate code is:
func damage_body(physique: Node2D) -> void:
# 1
physique.take_damage(3)
# 2
create_explosion()
# 3
queue_free()
This code does the next:
- When the bullet collides with the enemy ship, it reduces the ship’s well being by 3 factors;
- An explosion seems on the purpose the place the collision occurred;
- The bullet is faraway from reminiscence;
It is a easy operate, and its logic appears to be right. How can it not be working? Wouldn’t it’s nice if there was a approach of getting a deeper have a look at how the code is working? That’s the place breakpoints are available, permitting you to halt the code execution and dig deeper to find the issue.
Breakpoints
When analyzing code, the error may not be apparent simply by wanting on the code; you may want to take a look on the code throughout runtime. To do exactly that, you’ll want to make use of breakpoints and watches, which work collectively to help and confirm what the code is doing.
Once you outline a breakpoint, Godot is aware of it might want to execute the undertaking usually as much as that time. After that, it halts execution and lets you management how briskly the code ought to execute, and allows you to see which code executes in case of conditionals or loops.
The outline ought to be sort of summary now, however you’ll see that in follow it’s quite simple and helpful!