Mini devlog: Unit selection in Unto Deepest Depths
Here’s a brief answer to a viewer question concerning unit selection and movement in Unto Deepest Depths.
Here’s a brief answer to a viewer question concerning unit selection and movement in Unto Deepest Depths.
The demo is now available for Unto Deepest Depths! Battle through the first of five biomes, prepare for the challenging boss that awaits you at the end, and ...
After a bit of prodding, I took some time to find an easy way for me to help demonstrate my typical turn-based setup. I found some early prototype code for U...
Let’s look at how my latest strategy game, Unto Deepest Depths, is designed. I’ll break down the application architecture, how I manage turn order, and show ...
Today, I’m pleased to announce my new game, Unto Deepest Depths! A dark fantasy strategy game with a simple, but challenging premise. Get the details within!
Here’s a collection of miscellaneous tips when working with GDScript to make your life easier. Improve working with the terminal, organizing your code, and l...
It’s been ten years since my first “commercial” game project, so let’s take a look back at what game development was like in 2014. Flash was on the way out, ...
Come hang out, get tech support, or tell me why I’m wrong.
Here’s a look at my entry for The 7DRL Challenge, Par for the Corpse. A mashup of golf game and roguelike, I’ll talk about how the levels are generated and s...
Here’s a look at how I implemented a simple dev console in my game to speed up development. The core functionality is driven by Godot’s Expression class, but...
Here’s a look at some more advanced techniques you can implement in your state machine when you need something a bit more complex than the starter state mach...
Here’s an updated look at how I like to do state machines in Godot 4. I’m going to go over some simpler, starter techniques today, and in the next post I’ll ...
We’ve looked at the high-level design of the game, now let’s talk about how the data behind units is structured, how artwork is implemented, and how I’m hand...
In this devlog of sorts, we’ll look at how I’m structuring the game engine for my future tactics game using Godot. Topics include level structure, unit struc...
For the 57th Godot Wild Jam, I made Flame Forged, an incremental game with a heavy emphasis on lore and atmosphere. Here’s a few interesting things about its...
Setting up volume sliders in Godot quick and simple. Here’s how to do it, and how to divide your audio into buses for a better user experience.
Utility AI is a common technique for creating effective AI across a variety of genres. By turning data about the current game state into numbers, we can allo...
From signal and tween updates, to debugging help, here’s another grab bag overview of some changes to GDScript in Godot 4 that you may want to know about.
Lambda functions are small, anonymous functions that can be declared inline rather than via full function declaration. Let’s take a quick look at how to writ...
Code smells are things in a codebase that imply something may be off with how it has been designed. Here’s a few common ones you may find in your own codebas...
New to Godot 4, the AStarGrid2D class makes solving grid-based layouts a lot easier than the existing AStar2D class while also adding some performance improv...
Graph rewriting is a popular area of study for procedural content generation, and in this post I’m going to give you a quick introduction to the concepts inv...
As I’m going through my Godot content that needs updating, I’ve come across a number of small changes to GDScript 2, which I’ve decided to capture in this po...
Setter and getter functions in Godot 4 have received a nice overhaul. Let’s take a look at what’s new.
A quick update on this site and the Godot 4 beta.
These tips will help you organize your code and write it so that it is modular, flexible, and easy to change.
Let’s take a deep dive into my entry for Mech Jam III, the elemental tactics game Elemechs. Artwork, system design, architecture, and sound will all be cover...
The store page for my third commercial game, and second Steam release, is now up!
Let’s take a moment to look at a few more small, but helpful, tips for working with GDScript.
Using the microphone is fairly straightforward in Godot, though you might not realize it since the information you need is scattered all over the web. This i...
Making a good, satisfying platformer is a lot harder and more involved than throwing a physics body on top of a tilemap and calling it a day, so here’s a few...
Let’s look at how we can use animations, shaders, and other effects to make better scene transitions in Godot.
The observer pattern is everywhere, and with good reason. It makes it easy to let different game objects communicate with one another without coupling your e...
Godot’s OS class offers you direct communication with the user’s operating system, providing a lot of convenience for things like determining the screen reso...
These principles, applicable to any type of software developer, will help you write code that is more readable and more maintainable.
Whether you want accurate collision bodies or pixel-perfect mouse detection on a Sprite, this post is for you. Let’s look at our options using both the edito...
Here’s a handful of settings you’ll want to configure to get the most out of coding with Godot’s built-in editor.
While typically overshadowed in the gamedev world for their two-dimensional cousin, generative grammars should still have a place in your procedural toolbox,...
Using Godot’s built-in OpenSimplexNoise class, we use create smooth, continuous noise to control our camera. Appropriate for both intense screen shaking and ...
We’ve seen how to implement a basic state machine, now let’s look at how hierarchical state machines and dependency injection can help us build it out further.
A few takeaways from my latest game, Kaiju Klash, which was made in two weeks for the Kaiju Jam.
Combining the Line2D node with the Geometry class, we can let players draw their own physics objects in a game.
Let’s take a moment to look at some small, but helpful, tips for working with GDScript.
Using setget, we can write custom logic to run when a variable is set or read.
While primarily used for Zelda-like dungeons, this technique can be used to generate custom worlds, branching dialog, and more.
While functions are not first-class objects in Godot, FuncRefs can help replace some of that missing functionality.
In this follow-up post, we’ll look at how we can take the theory we discussed previously and apply it to Godot.
State machines make it easy to manage the state of your objects and help you write cleaner, more maintainable, and easily expandable code.
This keyword allows for static typing of custom classes without having to litter preload commands everywhere.
The Polygon2D node can be a great way to create and draw custom physics objects in Godot.
It’s not perfect, but it could work for simple games.
Let’s look at different ways of implementing custom cursors in Godot.
You can have your Godot game looking pixel perfect in just a few steps.
Using spritesheets with particles is easy, but not overly obvious.
A small collection of songs I’ve done for game jams.