
Set up a Godot C# development workflow by installing the dotnet SDK, configuring VSCode, and creating a new Godot project with a C# script.
Configure Godot to use VS Code as the external editor and switch docs to C# syntax. Enable Pascal casing for scene names and tailor the editor layout.
Explore the Godot editor interface, learn UI elements like the inspector, scene tab, and run bar, and understand how scenes, nodes, and the scene tree connect when running the game.
Create a grid-based puzzle game by writing the first C# script that tracks the mouse, snaps to a 64x64 grid, and moves a cursor sprite to the hovered cell.
Instantiate a building from a packed scene in Godot 4 with C#, placing it at the hovered grid cell on left-click. Organize with a dedicated building scene for easy instantiation.
Introduce signals in Godot by wiring a place-building button to the pressed signal, explain signals as events for observers, and demonstrate two connection approaches for interactive building placement.
Adjust window and viewport settings in project settings to enlarge the game window and apply stretch modes; learn how aspect ratio, canvas items, and viewport scaling keep UI in place.
Learn to implement grid-based building placement in Godot 4 with a tile map layer, display a radius highlight, update it as the cursor moves, and prevent overlaps.
Use a hash set of Vector2 to track occupied grid cells in a Godot 4 C# project, add each placed position, and check contains before placing to prevent overlaps.
Clean up a Godot 4 project in C# by changing the main node from node 2D to node, aligning scripts, and using the hovered grid cell position to place buildings.
Import the Tiny Swords asset pack into Godot, ignore nonessential files with a gd ignore, then enable nearest texture filtering and center the tower on a 64 by 64 grid.
Define buildable tiles with a boolean TileSet custom data and paint it on sand tiles; read this data in Grid Manager via get cell tile data and a bool cast.
For a Godot 4 puzzle game, this lesson adds a base-building that provides an initial build radius and introduces a building component to highlight valid tiles around existing buildings.
Learn to use autoloaded game events and custom signals to update the grid state for building placement, marking occupied tiles and enforcing placement radii.
Maintain a running cache of valid buildable tiles in the grid manager and update it as buildings are placed, enabling precise radius-based placement checks.
Expand the base building radius when placing towers, visualize the expansion with a green highlight, and update the grid logic in Godot 4 using C#.
Import animated tree assets and configure a 3x3 atlas with four animation frames for the tile map. Add a separate resource tile map layer to fix draw order and placement.
Manage multiple tile map layers in Godot 4 by using a depth-first search to determine buildable grid cells, preventing building on trees and improving draw order.
Add village buildings to a grid-based puzzle game in Godot 4 with C#, implementing resource harvesting and a village scene with a building component and place village UI.
Create and use custom resources in Godot 4 with C# to drive building data such as buildable radius and harvest radius, load resources at runtime, and avoid circular dependencies.
Highlight resource tiles in a Godot 4 grid game by using custom data layers (is_buildable, is_wood) and a generic get tiles in radius to reveal wood near villages.
Track collected resource tiles in a grid-based Godot 4 game by updating a collected resource tiles set and emitting a resource tiles updated signal with the count.
Create a dedicated UI scene with control nodes to display resource counts and emit signals when building buttons are pressed, enabling a building placement workflow.
Learn to streamline building placement in Godot 4 with C# by dynamically generating UI buttons from a building resources array, and emit a single signal with the chosen resource.
Create a building manager that controls placement, resource costs, starting resources, available resources, and refunds in a grid-based puzzle game, integrating with the grid manager and user interface.
Create a building placement ghost in Godot 4 by instantiating a building ghost scene and syncing its sprite with tower and village resources using y sort.
Learn to indicate building ghost validity in a Godot 4 grid game by validating tile placement and resources, turning invalid tiles red and valid ones green.
Learn to cancel building placement with right click or escape key by implementing a cancel action in the input map, handling unhandled input, and clearing the building ghost.
Refactor the building manager into states to support placing and destroying buildings, refunding costs on destruction, and manage inputs via a stateful, hover-aware workflow.
Implement building destruction in a grid-based Godot 4 game: refund resources, update grid state, and recalculate valid buildable tiles using signals and the grid manager.
Import and place the gold mine sprite, detect when a buildable area covers its tile, and trigger a win by switching the gold mine to active.
Rename the main scene to base level and use inherited levels to easily create new levels with shared tiles, layers, and UI, including painting tile maps with y sort.
Learn to expand a Godot 4 tileset by importing terrain assets, enable auto tiling for grass and elevation, and paint multi-layer terrain with tile maps.
Add water to the tileset with a water atlas, animate foam, and manage z-index and y sort on base terrain, water, and foam layers for proper rendering.
Add shadow support to your tileset by using a shadow atlas, elevation layers, and multiple shadow map layers; paint edges and corners to achieve automatic neighbor shadows in Godot 4.
Design your first grid-based level by painting sand, elevation, and grass tiles, placing a gold mine, a village, and a tower, and setting starting resources to teach core mechanics.
Add a 2d camera with pan controls (wasd or arrows) and a dedicated camera scene, using the terrain's used rect to bound and get screen center position to clamp movement.
Center the camera on the base at level start to give context, paint grass tiles as buildable with custom data, and expose starting resources as an export for per-level control.
Learn to fix shadow tiles that block building by marking them as ignored with an is_ignored custom data flag in the grid manager, enabling towers and wood harvesting on shadows.
Place the game UI margin container in a canvas layer so the buttons follow the camera and are not affected by it.
Learn to let buildings occupy multiple tiles by defining tile dimensions and a hover grid area, updating placement to rect to I, and improving alignment for two by two buildings.
Replace the base texture with Castle White dot PNG, adjust its transform to five-by-two tiles centered on the door, and add a deletable flag to prevent base deletions.
Fix right-click deletion by allowing deletion of a building when the hovered root cell is within the building's occupied tile area in a Godot 4 C# grid game.
Restrict village placement to a single contiguous elevation layer by introducing an elevation layer node and mapping each tile map layer to its elevation, preventing cross-layer builds.
Explore extension methods in C# to add a new method to a Godot class, enabling easy retrieval of tiles inside a rect from your grid manager.
Turn the building radius from Manhattan distance to a true circle on the grid, handling multi-tile bases with a center-based is inside circle check for natural radii.
Polish the game UI by applying theming with a panel texture, replacing bottom buttons, and laying out a vertical banner with nine-slice regions for dynamic buttons.
Explore creating and applying theme files in Godot 4 to style UI with panel containers, using global themes and a panel container alternate variation for reuse.
Learn to style the building selection UI by dynamically generating a section for each buildable type, displaying name and cost, and wiring a signal to handle selection.
learn to configure pixel fonts in Godot 4 using bit fantasy and set a 16 px default size, then style grid buttons with nine-slice textures, hover, and pressed states.
Improve building sections in your Godot 4 grid-based puzzle game by adding an icon, description, and cost, using atlas textures and thoughtful layout, spacing, and styling.
Add the total resource count to the game UI and wire it to the building manager via a custom signal, updating on available resource count changes.
Build a basic main menu in Godot 4, enable a game loop from menu to level select to the first level, and prepare transitions after puzzle completion.
Create an autoload level manager with a packed scenes array to change levels via get_tree.change_scene_to_packed, enabling play from the main menu and future level selects.
Create a level complete screen in Godot 4 with C#, displaying victory text and a next level button, built as a scroll interface with a ribbon topper and level manager.
Instantiate and display a level complete screen after winning, block input, hide the ui, and transition to the next level using a robust level manager and game events signals.
Design more levels for a grid-based puzzle game in Godot 4 with C#, expanding level 1 into level 2 and 3 using layered terrains, resources, and clear victory conditions.
Fix issues in a grid-based puzzle game in Godot 4 with C# by computing all tiles in building radii and guarding against null keys to ensure correct victory detection.
Create a level select screen in Godot 4 with C#, using a four-column grid to display levels managed by a level manager, with per-level cards showing name and wood resources.
Move level data into a custom level definition resource that stores the starting resource count and a level scene path, enabling dynamic level selects without heavy instantiation.
Update the level manager to use level definition resources with a get level definitions method, and have the level select screen build buttons from definitions to load the chosen level.
Integrate the level select screen with the main menu in Godot 4, toggling visibility of the main menu container and level select, and wire a back button with signals.
Improve the look of building placement in a Godot 4 with C# grid game by adding top-left, top-right, bottom-left, and bottom-right corner highlights and a building ghost with set dimensions.
Learn to use Godot 4's animation player to keyframe sprite positions, set up a reset track, enable autoplay and looping, and tune timing and easing for natural motion.
Animate the building ghost with tweens to smoothly move the tower sprite toward the cursor, implementing a sprite root, tween setup, easing, and y-sort considerations for a polished hover experience.
Center building placement around the mouse by offsetting the hover grid with the building ghost's dimensions, preserving fractional mouse position for precise centering in Godot 4 with C#.
Animate building placement with a Godot 4 tween in a reusable building animator component, preserving y sort via a dedicated animation root node and from-to transitions with ease types.
Expose the building placement animation on demand by using a get first node of type utility to retrieve the building animator component, and call play in animation via optional chaining.
Apply a destruction animation using the building animator component and a tween to wobble, then sink the building, emitting a destroy animation finished signal for cleanup.
Add a mask to building destruction to improve clipping around the base using a sprite 2D mask and a mask texture, applied during the destroy animation.
Create land impact particles for building placement in Godot 4 using gpu particles 2D, a dedicated particle scene, and a particle process material to simulate smoke bursting on impact.
Build a building destruction effect in Godot 4 using GPU particles 2D, unique materials, and a tuned spawn, velocity, gravity, and emission shape, integrated with an animation.
Introduce goblin camps that deny building within a radius and add the barracks, a new player building that destroys camps to reclaim land, adding dimension to grid-based puzzles.
Modify the grid manager to exclude goblin occupied tiles from buildable areas, maintain goblin occupied tiles with danger radius, and highlight those tiles to prevent tower placement inside goblin camps.
Create and integrate a barracks building in Godot 4 with C#, import the asset, configure building resources and attack radius, and wire it into the user interface and level testing.
Update the grid and building logic to allow barracks in goblin camps by introducing a parallel attack tile set and dynamic tile selection for placement and highlighting.
Implement and refine a barracks attack radius highlight to show buildable tiles, exclude occupied tiles, and prevent placing on buildings, enabling destruction of goblin camps and reclaiming space.
Learn how to make barracks destroy goblin camps within their attack radius and free buildable tiles, and restore camps when barracks are destroyed, updating the grid state accordingly.
Enable and disable the goblin camp when a barracks is destroyed, then recalculate the grid to restore buildable tiles for villages and towers.
Learn to prevent invalid building destruction by evaluating dependencies within each building's buildable radius. Ensure remaining structures stay connected to the base and guard tower and village interactions.
fixes bugs in building destruction for a grid-based Godot 4 game with C#, redefining dependent buildings to be fully within the root radius and excluding danger buildings like goblin camps.
Explore how to prevent destroying a barracks when goblin camps would be reactivated, using Godot 4 with C# to track danger buildings, tile areas, and grid management.
Refactor the grid manager by replacing get tile area two tiles with get occupied cell positions and standardizing terminology to danger occupied tiles and danger building destruction.
Add pagination to the level select screen to display six levels per page, sourcing level definitions from the level manager and enabling navigation with previous and next page controls.
Use the NewtonSoft.json NuGet package in a Godot C# project to serialize and deserialize level completion data for UI display, via a save data model and an autoload Save Manager.
Save the level completion state to disk and display a check mark in the level select UI when a level is completed, using the save manager and a completed indicator.
Tune window scaling in Godot 4 with stretch mode disabled to render from a fixed 1280x720 base while the window expands, and enforce a 1280x720 minimum using a settings manager.
Add smooth camera shake to the Godot 4 grid puzzle game using fast noise light to offset the camera, with independent x and y samples and a decaying shake.
Extend barracks placement and destruction particles by adjusting the GPU particle emission box extents, velocity, and amount, and override with barracks specific particle scenes for better coverage.
Add resource indicators on trees harvested by villages using a wood spawn sprite sheet with animation and idle motion. Track collected resource tiles to spawn or remove indicators.
Implement a floating text error system in Godot 4 that animates messages for invalid actions, such as cannot destroy, invalid placement, and cannot afford building.
Create a themed custom cursor in Godot 4 from the tiny swords asset pack, autoload it on a canvas layer, hide the system cursor, and follow the global mouse position.
Learn to add a destruction indicator for the goblin camp by swapping to a destroyed wood tower animation and a fire effect, controlled with signals in Godot 4 using C#.
Add music and sound effects by configuring music and sfx audio buses to the master bus, and implement audio stream players and a randomizer for varied, synchronized destruction sounds.
Add a gold mine position to the grid manager and set it from the goldmine’s world position, so the mine tile highlights as buildable and signals a winning tower.
Create a Godot 4 C# options menu to adjust music and sfx volumes and toggle fullscreen, wired to an autoloaded options helper for bus control and UI updates.
Integrate the options menu with the main menu by instantiating the options scene and hiding the main menu; the menu is self-contained and usable for a pause screen.
Detect the last level in the level complete screen and switch the next level button to return to menu, using static level manager methods to route to the main menu.
Learn to export a Godot 4 C# puzzle game to Windows and Linux, configure export templates, build release binaries, and use feature flags for demos and fullscreen.
Complete your grid-based puzzle game in Godot 4 with C#, then enhance it with an options save system using options.json to restore volume and window mode, plus expanded tile sets.
This course will cover everything you need to know about creating a small 2D grid-based puzzle game from start to finish in the Godot Engine 4.3+ using C# scripting. This course covers many aspects of creating a grid-based puzzle game including:
Building placement on a grid with variable tile sizes
Querying grid state using LINQ with C# data structures like HashSets and Dictionaries
Creating levels using the new Godot 4.3 TileMapLayer, including multi-level maps with y-sorting, animated tiles, and custom tile data
Saving and loading level completion progress
Implementing audio including building placement and destruction effects and music
This list is not exhaustive - please see the course outline for a glimpse into the topics that are covered.
The goal of this course is to show you how to take an empty project and turn it into a small, complete game. In doing so, this course will give you a robust exposure to many aspects of the Godot engine from C# scripting, to input handling, to tile maps, to saving and loading data, to audio, and more. By the time you complete this course, you will feel comfortable working on your own projects in Godot 4.3+ and C#. You will walk away from this course with a solid foundational understanding of making games that are not only functional but also fun.
This course will help you greatly if:
You are ready to dive into a crash course for Godot 4.3+ with C#
You are comfortable in Unity and want to transfer your C# scripting skills to Godot
You have some game development knowledge and want to learn Godot
You have some programming knowledge and want to make games
You struggle to complete games and want to start and finish a project
Please note that this course is focused purely on the start-to-finish process of making a grid-based puzzle game. With that goal in mind, there is no time spent explaining fundamental programming concepts of statically typed languages. Familiarity with programming and statically typed languages is strongly recommended before taking this course.
Several lessons are available to for you to preview for free. Please take a look at those videos before enrolling to determine if the pace of this course is right for you!