Tuesday, January 21, 2025
HomeProgrammingDebugging Initiatives in Godot | Kodeco

Debugging Initiatives in Godot | Kodeco


It would come as a shock, however not all code works on the primary strive. (Insert shocked copyright-safe yellow electrical rodent right here)

Because of this, most built-in improvement environments (IDEs) embrace a debugger that enables the developer to identify and clear up points in the course of the a number of improvement iterations. That is illustrated by the next pseudocode:

whereas creating == true:
    code
    check
    debug

When creating a recreation, nevertheless, there are different points to consider, resembling recreation steadiness or verifying behaviors that is likely to be too quick or refined to note throughout gameplay.

Give it some thought. You fastidiously crafted your recreation’s problem degree, so that you need to ensure that it’s as much as the problem. However how are you going to depend the variety of enemies in a recreation after they’re shifting round and taking pictures at you?
You may need to examine the sport steadiness. Is the variety of enemies spawned at a given instantaneous what you count on? Did the power-up add the harm enhance you anticipated?

These are only a few of the questions you may need to reply whereas testing your recreation. That is the place Godot’s debug instruments come in useful, serving to you check and confirm all that.

Getting Began

The instance mission is identical from the Publishing Your Godot Venture to itch.io tutorial. Nevertheless, for this text, the code was modified to reinforce the gameplay expertise. Sadly, the sport broke within the course of and it is advisable discover what’s improper with it utilizing the debug instruments. How handy! :]

You possibly can obtain the mission utilizing the Obtain supplies hyperlinks on the high and backside of this text. Be aware that this mission requires Godot 4.3 or newer to run.

The beginning mission has the identical construction as within the earlier article, however three information have modified: projectile.gd, enemy_ship.gd, and main_game.gd.

Now is an effective time to obtain and run the mission to overview the way it’s working and spot how the bugs affect the sport. The principle difficulty you’ll discover is that it’s inconceivable 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 overview 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 high of the display, this text will deal with the instruments accessible by means of the Debugger panel on the backside of the display, as a result of these are the instruments that collect data when executing the mission by means of the Run the mission button.

Debugger Panel

The debugger panel, positioned on the backside of the display by default, is accessible from the Debugger choice on the backside of the window, to the correct of the Output choice. The next image reveals the debug panel:

The debug panel

On the panel’s high, you’ll be able to see just a few tabs. From left to proper, the tabs are:

  1. 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 study extra about this tab later on this article.
  2. Errors: Exhibits the error and warning messages in the course of the recreation execution.
  3. Profiler: Exhibits which code is working and the way it impacts the sport efficiency. You’ll study extra about this tab later on this article.
  4. Visible profiler: Shows a graph exhibiting which code is working and the way a lot time it takes for execution. You’ll study extra about this tab later on this article.
  5. Displays: Accommodates graphs of recreation data, resembling frames per second (fps), reminiscence utilization, scene nodes, and extra. The info from the debug session is saved even after the session is over, so it’s potential to overview it even after execution.
  6. Video RAM: Exhibits an inventory of assets and the way a lot video RAM they use whereas working, in addition to the grand whole on the high of the panel.
  7. Misc: Displays and identifies the management nodes clicked throughout runtime.
  8. Community Profiler: Accommodates the record of all nodes speaking over Godot’s multiplayer API and the way a lot information every one among them acquired or despatched in the course of the debug session.

This text focuses on tabs 1, 2, 3, 4 and 5. Nevertheless, be at liberty to look at the others utilizing the identical mission. A few of them, resembling Community Profiler received’t have any attention-grabbing data, although, as the sport doesn’t use the multiplayer API in any level.

Utilizing Breakpoints

After executing the sport, it’s best to have observed that the primary difficulty is that it’s inconceivable to destroy the enemy ships. So, logically, there should be an issue with the perform 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 perform that offers harm to the enemies: open projectile.gd and discover the damage_body perform. The perform code is:

func damage_body(physique: Node2D) -> void:
    # 1
    physique.take_damage(3)
    # 2
    create_explosion() 
    # 3
    queue_free()       

This code does the next:

  1. When the bullet collides with the enemy ship, it reduces the ship’s well being by 3 factors;
  2. An explosion seems on the purpose the place the collision occurred;
  3. The bullet is faraway from reminiscence;

This can be a easy perform, and its logic appears to be right. How can it not be working? Wouldn’t or not it’s nice if there was a means 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.

Whenever you outline a breakpoint, Godot is aware of it might want to execute the mission usually as much as that time. After that, it halts execution and means that you can 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 type of summary now, however you’ll see that in observe it’s quite simple and helpful!

RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Most Popular

Recent Comments