Category: Game Development

  • How to Debug Godot Plugins and @tool Scripts

    There’s a little-known feature in Godot that allows you to debug editor-only plugins and @tool scripts. It’s briefly mentioned in the official docs. You can use either the Godot editor or an external IDE to debug these scripts. This post describes two approaches to debugging these editor-only scripts: Using the Godot Editor With this approach,…

  • How to Save HDR Screenshots in Godot

    Godot 4.7 introduces support for HDR output. You may want to take screenshots of your game running in HDR mode and share them on the web. This post describes how to get screenshots like the following that work well in almost any browser that isn’t Firefox. (Firefox doesn’t support HDR at the time of writing…

  • An Adjustable Tonemapping Curve for Variable / Extended Dynamic Range

    This post provides an adjustable filmic tonemapping curve that is designed for use with variable / extended dynamic range (EDR, HDR, and SDR). It has been developed for use in the Godot game engine and released as open source with attribution required under the MIT license. Overview  This curve is a piecewise function composed of…

  • Resource Remaps Plugin for Godot

    I just finished work on a plugin for Godot that allows remapping of resources in a project based on feature tags. I expect this to be a very valuable tool for porting Godot projects. Resource Remaps plugin on the Godot Asset Library Source code and example project on GitHub And here is a video tutorial…

  • Godot Porting Guide

    Background and Goals Note: This post is a work in progress. Please let me know if you have experience or expertise to share! I helped port Keep Talking and Nobody Explodes to 8 platform targets with 6 optional VR APIs and multiple storefronts with different services. We did this with the Unity game engine from…

  • Godot Script Execution Order and Lifecycle

    Overview This post describes the initialization and execution order of scripts that are attached to Nodes in the Godot game engine. I created a GitHub repository that logs these notifications and I recommend playing around with a similar project to familiarize yourself. Initialization Member initialization happens in this order: Notifications Most execution is done from…

  • How to Enforce Static Typing in GDScript

    This post is written for programmers who have experience working with statically typed languages and want a similar experience when working with GDScript. It supplements the official Godot docs page on Static typing in GDScript. Index Project and Editor Settings Godot 4.2 introduces a valuable way to disable dynamic typing features in GDScript by enforcing…

  • Two Game Messaging Systems using Observer and Visitor Patterns

    Maximum output for minimum input. …That’s the idea behind Juicifying Your Game. But this can lead to some pretty messy code if you start injecting extra code at every event that happens in your game. This is where messaging/event systems come in handy to ensure that every component of the game is given an opportunity…

  • Post-Grad Talk at Carleton University

    Last week I was given an opportunity to join my manager at Magmic in a panel for a fourth year class in IMD to discuss my experience after graduating and joining the game development industry. This was the same class that I developed Hideout! for and I was happy to pass on some knowledge that…