
Learn to build a complete 2d top-down shooter in Godot four, including main menu, player movement and health, weapons, enemy spawns, and random walk dungeon generation with a mini map.
Targeting beginners with solid Godot knowledge, this course advances you to intermediate projects and a final top-down shooter game, teaching nodes, sprite 2D, area 2D, signals, and classes.
Create a Godot 2D topdown shooter main menu with a settings panel, including music and sound toggles, window mode switch, save data, and a play transition to load next scene.
shader_type canvas_item;
uniform float speed = 0.5;
void vertex() {
UV.x -= speed * TIME;
UV.y += speed * TIME;
}
Create a two-group main menu in Godot, with play and quit in first group and music, sfx, window mode, back in second, using a bbox container and unique textures.
Learn to animate two button groups in a Godot 2D topdown shooter using the tween library to move main buttons down and settings left, with back resets.
shader_type canvas_item;
// Ranges from 0 to 1 over the course of the transition.
// We use this to actually animate the shader.
uniform float progress : hint_range(0, 1);
// Size of each diamond, in pixels.
uniform float diamondPixelSize = 10.0;
float when_lt(float x, float y) {
return max(sign(y - x), 0.0);
}
void fragment() {
float xFraction = fract(FRAGCOORD.x / diamondPixelSize);
float yFraction = fract(FRAGCOORD.y / diamondPixelSize);
float xDistance = abs(xFraction - 0.5);
float yDistance = abs(yFraction - 0.5);
COLOR.a *= when_lt(xDistance + yDistance + UV.x + UV.y, progress * 4.0);
}
Godot 2D academy teaches how to configure settings for a top-down shooter game, including audio buses for music and SFX, UI sound, a global autoload script, and fullscreen/windowed mode.
Save and load user settings in Godot by writing a JSON file to the user data folder and loading it on startup, while toggling music, SFX, and fullscreen.
Build a top-down shooter in Godot by creating a player base and weapon base, adding a pistol, and implementing health bar and mana bar with mouse-driven aiming.
Create a reusable Godot 2D player base, add visuals, collision, and camera, then define a player data resource and a movement script with input and rotation.
Create four player characters (bunny, mouse, cat, dog) with sprites and idle/move/dead animations, add shadows and collision shapes, assign to the player base, and set hp and move speed.
Create a reusable health component for players and enemies in Godot 2D top-down shooter, with current and max health, take damage, heal, die logic, and min-based health clamping via signals.
Create a player UI for health and mana by building an arena scene, adding a canvas layer, texture rects, and a textured health bar and mana bar with proper layout.
Taking damage updates the arena health bar by emitting player health updates through the event bus, syncing current and max health to the health bar.
In Godot 2D academy, create a weapon resource by building a weapon data script with export vars for name, icon, scene, damage, cooldown, mana cost, spread, bullet speed, and description.
Create a base range weapon scene and a pistol variant in Godot, wiring weapon data, pivot-based rotation, and a shared shoot function via a weapon base class.
Hide the default cursor and display a custom sprite via an autoload script, using a canvas layer to track the mouse and swap textures for arena vs menu.
Create a range weapons scene, assign the second sprite as the weapon, and create a weapon usage resource with damage, cooldown, mana cost, spread, and bullet speed for seven weapons.
Create a character selection menu that loads all players and weapons, shows weapon descriptions in a description panel, updates the selector sprites, and saves the chosen player and weapon.
Build a character and weapon selection menu in Godot 2D, with a background, title, player/weapon containers and interactive cards, then add play and back buttons to load selections into arena.
Load data loads player and weapon resources into the character selection menu, creates card instances, and uses set data to update icons.
Design a character selection flow in Godot 2D, storing the chosen player and weapon, loading the arena scene, and playing UI sounds while transitioning between menus.
install a damping asset from the Godot asset library and apply damping animations to UI elements using mouse enter signals, pivot adjustments, and hover sounds for a top-down shooter.
Showcases how to visualize the chosen player and weapon with a selector sprite in Godot 2D, using texture rect nodes, sizing, centering, and script-driven show/hide logic.
Create a reusable description panel with a nine patch rect and label in Godot, shown on hover and updated with player or weapon data, with damped animation.
Fixes a save state bug in the topdown shooter by moving data loading from the main menu to a global auto-load, ensuring the sound setting persists across scenes.
Create bullets and melee weapons with slash effects, collisions, and damage text, and build sword and axe weapon scenes with sprites, hitbox area 2D, and animation.
Create bullets for a Godot 2D topdown shooter, using area 2D collisions, an animated bullet sprite, a bullet scene, and weapon data to fire with cooldown and spread.
Create bullets for all weapons by duplicating the pistol base, adding MP5, sniper, Mac ten, AK 47, and shotgun with 30 fps sprite frames, autoplay, and reuse the collision shape.
Learn to build a melee sword in Godot 2D: set up a weapon scene with pivot, hitbox, collision shape, particles, animations, audio, and a cooldown timer; include idle and slash animations.
Create a sword melee weapon resource with damage, cooldown, and mana cost; wire up sprite, animation, sound, and cooldown logic, then duplicate to an axe with updated stats.
Create a slash particle for melee combat using a four-frame sword slash texture, a gravity-free particle material, one-shot emission, animated frames, and random scale that faces the mouse.
Configure collisions for a top-down shooter by spawning an explosion effect on impact from range weapons, with animated sprite and sound. Track melee hitbox collisions to identify and log enemies.
Create and display damage text in a godot 2d academy topdown shooter by building a damage text UI, instantiating it, and showing floating damage near enemies for 0.5 seconds.
Learn to generate a dungeon using a random walk and coordinates. Store room instances in dictionaries, connect them with corridors, map cells, and spawn enemies and chests.
Create a reusable level one room using tile maps and tilesets in Godot 4.63, adding ground, walls, and four doors, then enable or disable them by dungeon connections.
Learn to create a level data resource in Godot, defining level structure, rooms, walls and doors via connections, and configuring enemy counts and item spawn probabilities.
Generate a coordinate-based layout for a top-down shooter using a random walk from 0,0, producing ten coordinates that map to rooms, preparing the dungeon before room creation.
Discover how to implement select special rooms by finding the farthest room from the start at 0,0, then place a portal that progresses to the next level after layout generation.
Create and connect rooms in a grid-based dungeon by instantiating level rooms for each coordinate, positioning them with room size, and opening walls to link neighboring rooms.
Design horizontal and vertical corridors with tile maps, paint walls, and save them as reusable scenes. Instantiate and position corridors in arena to connect rooms via right and down connections.
Calculate grid cell size by combining room size and corridor size, then update room and corridor placement to connect rooms and separate them, and test the arena.
Instantiate the player in the first room using the marker 2D spawn position and the grid reference. Set the player's global position from the spawn marker and run to verify.
Register tiles by creating a tile map layer, painting tiles, and storing them in a tiles array for enemy or chest placement, then lock and unlock rooms via door checks.
Implements a room lock system using on player room enter signals and the event bus to track the current room, lock new rooms, and unlock the current room with escape.
Design and implement a minimap using a map cell scene for each room, and a map controller to manage cells and the player icon.
Create props in Godot 2D by building a base prop with a sprite and collision shape, then inherit variations and animate with a damped oscillator for a top-down shooter.
Instantiate props in each room of a top-down shooter using Godot 2D academy. Create a create_props function that places props from a data resource on tiles, up to five per room.
Add collisions in a Godot 2D top-down shooter by creating a world physics layer, applying collision shapes to tiles and walls, and testing interactions with player, enemy, bullet, and door.
Develop and manage enemy behavior in a Godot 2D top-down shooter, implementing chase and weapon enemies, a spawner, and combat feedback with damage, effects, and room progression.
Build a reusable enemy scene in Godot using a character body 2d root, sprite 2d, shadow, player detector area 2d, and an enemy script with move and die animations.
Build and duplicate a base enemy into four variants, each with move, hurt, and die animations, colliders, a script that follows and faces the player, and destroys itself after death.
Build an enemy spawner that creates enemies when the player enters a room, using event bus signals for enemy die and room clear, and tracking kills to unlock the room.
Explore adding spawn animations and a dead particle for enemies in a Godot 2D top-down shooter, using a spawn marker, an animation player, and GPU particles 2D.
shader_type canvas_item;
void fragment() {
COLOR = vec4(1.0, 1.0, 1.0, texture(TEXTURE, UV).a);
}
Add enemy avoidance using an area 2D detector to detect overlapping enemies, compute separation vectors, and adjust each enemy’s movement while chasing the player to prevent stacking.
Refactor weapons by modularizing a weapon controller for both players and enemies in a topdown shooter, enabling per-unit weapon handling, data-driven weapon equipping, and shared weapon scenes.
Implement enemy weapons in a Godot 2D top-down shooter by creating a bullet pistol enemy scene, managing cooldown, and enabling player damage through updated weapon data.
Explore Godot 2D top-down shooter enemy behavior, switching between chase and weapon modes, with weapon states finding destination, moving, and attacking.
Add a blood effect by creating an animated sprite from a sprite sheet, configuring frames, and playing once. Instantiate and automatically delete the effect on animation finish when damage occurs.
Add final touches to enemies by enabling animations and heart collision responses. Expand gameplay by introducing idle animations and weapon variants with custom bullets.
We fix an error in the enemy spawner by using a countdown counter: initialize the amount, decrement on each kill, and emit the signal when it reaches zero.
Create and manage four items for a top-down shooter, including health and mana potions and two boost potions. Implement level store data, item economy, coins, chests, and dynamic item spawning.
Create a potion in Godot using an item data resource with icon, id, name, value, price, and rarity, then build a shop item scene that heals the player on purchase.
Add coins in Godot 2D Academy by implementing a coin texture, UI label, animation, collision, and coin pickup logic with signals and sound.
Build a chest in Godot that drops animated coins on player collision, using static body 2D, chest close/open sprites, area 2D detection, and coin scene instantiation with call defer.
Spawn a chest at a random position when clearing a room full of enemies, using a global chest reference, and populate a shop room with randomized items via weighted probabilities.
Expand the game shop in the Godot 2D Academy top-down shooter by adding potions, mana boosts, and speed boosts with descriptions, rarity, price, value, and level-specific store data.
Create a description panel, set its text from data description, hide it by default, and show it on player collision with a damped oscillator animation, using random scale and rotation.
implement mana economy and item effects for a top-down shooter: initialize current mana, spend mana on weapons, improve mana via mana boosts and mana potions, and update the mana bar.
Create a portal in Godot 2D using an Area2D portal scene with animated sprite and collision shape, then emit a portal reach signal on player collision.
Implement level progression by managing level data and sublevels, generating dungeon rooms and corridors, applying transitions to move between levels, and resetting the minimap when levels end.
Reset the minimap by deleting all map cells and resetting minimap data in the map controller, then trigger this reset from arena during dungeon generation.
Display the current level title by updating a Label Title node, fade it in with a tween, and hide it after a delay, refreshing on new sublevels and portal transitions.
shader_type canvas_item;
uniform float outerRadius : hint_range(0.0, 5.0) = 1.0;
uniform float MainAlpha : hint_range(0.0, 1.0) = 1.0;
void fragment() {
float x = abs(UV.x-.5)*2.0;
float y = abs(UV.y-.5)*2.0;
float v = (sqrt((x*x)+(y*y))/outerRadius);
COLOR = vec4(0,0,0,v*MainAlpha);
}
Expand your game by configuring level resources to add new levels, sublevels, rooms, enemies, props, and shop items; reference them in arena and let the dungeon generator advance levels.
Do you already have a good foundation in Godot 4 and want to take the next step toward building more complete and professional games?
Godot 2D Academy: Learn to Create a Top-Down Game is designed for developers who already understand the basics of the engine and want to level up by building more advanced, organized, and reusable systems.
In this course, you will learn how to build the core of a 2D top-down game from scratch, inspired by successful games like Soul Knight and Enter the Gungeon.
During this course, you will learn how to:
Create characters using reusable scenes and scripts
Implement enemies with dynamic behaviors
Build both ranged and melee weapons
Develop a complete item system
Create a dungeon generator using the Random Walk algorithm
Add chests and reward systems
Implement coins to buy items
Add visual effects
Implement sound effects and background music
Learn about the Godot Shaders website and use custom shaders
Write clean and scalable code that you can reuse in your own projects
Master nodes, signals, scene composition, and scene inheritance
Build a solid and flexible game architecture
Each section is carefully designed to strengthen your programming logic and help you understand how to structure Godot projects professionally.
If you already know the basics and are ready to create a complete and polished top-down game, this course will give you the tools you need to make it happen.