
Launch a 2D multiplayer arcade twin-stick shooter in Godot 4.4.1, set up the editor, create a new project, write GDScript, and run your first hello world scene.
Create a basic player scene in Godot 4, with a physics body 2D, a sprite and collision shape, and explore scene trees and instancing for a multiplayer top-down twin-stick shooter.
Implement a basic player movement system in Godot 4 by attaching a script, configuring move left/right/up/down actions, calculating a movement vector, and applying velocity with move_and_slide.
Create a basic multiplayer groundwork by building a main menu with host and play buttons, wiring button signals in Godot to prepare for servers and clients.
Learn to set up a basic Godot 4 multiplayer connection by creating a host server and a join client, using port 3000 and localhost, and validating with peer IDs.
Learn how to synchronize host and client scenes in Godot 4 by loading a packed main scene and making the first RPC call to notify readiness.
Replicate a player instance for every connected peer using a custom multiplayer spawner and spawn function, naming each player by its peer ID for consistent RPCs across clients.
Enable server authoritative gameplay by routing player inputs to the server, synchronize movement vectors with a multiplayer synchronizer, and replicate authoritative positions to all peers.
Learn to synchronize player positions across clients in Godot using the multiplayer synchronizer and global position to broadcast server moves to all clients.
Configure Godot's window display to 640 by 360 using viewport width and height, with stretch mode to achieve pixelated rendering; set startup size to 1280 by 720 for testing.
Download the assets, replace the placeholder with player medium.png in entities/player, set nearest texture filtering, and align the feet origin with integer offsets for the host/join test.
Add a weapon to the player, create a weapon root to control aiming, and synchronize the aim direction across clients using the input synchronizer, with server-authority guarding gameplay logic.
Create a bullet shooting system in Godot 4: a bullet scene with constant speed and direction, moved by delta, spawned on attack input at the weapon root, with correct rotation.
Synchronize bullets in a Godot 4 online co-op game by enforcing server-authoritative bullet spawning from the attacking client, and replicating bullets with synchronized global position, rotation, and direction across peers.
Limit bullet creation with a 0.25 second fire rate timer, add a two-second life timer to despawn off-screen, and ensure server authority frees bullets across clients.
Create a basic enemy in Godot 4 by adding an enemy scene under entities/enemy, using a character body 2D with a circle collision shape and a sprite.
Implement basic bullet collision using area 2D with shapes, layers, and masks; detect with area entered signals, print collision, and free the bullet, with server-side authority in multiplayer.
Implement a basic health system for enemies, decrementing health on bullet hits and removing enemies when health reaches zero, with network synchronization of spawn and position.
Import and center the arena asset, then lock it to preserve its position. Add static bodies with collision shapes to bound players, then spawn at the arena spawn marker.
Forge a server authoritative enemy spawner for a complete online co-op multiplayer game in Godot 4, spawning enemies at random positions inside a spawn rect and syncing across clients.
Implement basic AI for enemies in Godot 4 for online co-op multiplayer by targeting the nearest player with a target acquisition timer, using groups and server authority to synchronize movement.
Add a round structure for enemy spawns by implementing a round timer and an enemy spawn timer in the enemy manager, enabling wave-based rounds.
Learn to compose reusable health components for enemies and players in a Godot 4 co-op game, including damage, clamp, and died signal.
Learn to implement a global signals broadcaster with an autoload game events node, emit enemy died, and connect to advance rounds by tracking spawned enemies and the round timer.
Build a reusable hitbox component and hurtbox component to detect bullet and enemy collisions, apply damage via the health component, and enforce multiplayer authority.
Apply a health component to the player and a hurtbox on enemies, configure collision layers and masks, and test that enemy collisions damage and can trigger player death.
Learn to manage Godot 4 warnings by configuring gdscript warnings, fixing shadowing with renamed variables or self, and suppressing unused parameters with underscores to avoid narrowing conversions in debug output.
Implement y sort to change draw order by y position, creating depth so the player appears in front of enemies; set up a y sort root and route, then test.
flip the player by inverting the visuals node's x scale to face the aiming direction, adjusting the weapon root under visuals, and using a normalized aim vector with look at.
Create an animated background in Godot 4 using a texture region, repeat tiling, and a scrolling shader, then auto load the background across scenes for a cohesive look.
Create a weapon fire animation in Godot 4 with an animation player, route the weapon animation for multi-weapon support, and synchronize the fire across the network after server validation.
Synchronize weapon animations across clients by using an authoritative server to trigger visual effects via RPC calls, maintaining consistent node paths and scene structure.
Develop muzzle flash particles for weapon firing in Godot 4 using GPU particles 2D, via a standalone muzzle flash scene with a four-frame texture and color ramp animation.
Learn how to spawn muzzle flash particles in Godot 4 by using an animation player to autoplay emission, instantiate and free the muzzle flash at the barrel position.
Build a visual round timer and round counter in Godot 4 using a themed ui with fonts, canvas layers, and containers, updating via the enemy manager.
Synchronize the round timer in a Godot 4 online game with RPCs, server authority, and a data sync flow to handle initial joins and new rounds.
Implement enemy spawn animation with a tween and spawning state, enable enemy collision on a dedicated layer, and add flip logic and multiplayer target position synchronization.
Explore implementing a callable state machine in Godot 4 to manage enemy behavior with spawn and normal states, enter/exit hooks, and deferred transitions, including target acquisition in multiplayer.
Implement a server dash attack for enemies in a godot 4 co-op game, using a state machine with charge and attack states and timers to synchronize attack indicators across clients.
Add an attack indicator above the enemy head that appears when entering the attack state, implemented on the server side with a tweened scale animation and later synchronized across clients.
Synchronize the enemy state machine from server to all clients by serializing the current state to a string, then deserializing back to a callable on the client.
Handle player death in a multiplayer Godot 4 game by freeing dying players on server, tracking dead peers, and respawning them when the round is completed using multiplayer spawner.
Implement game over handling in a Godot 4 online co-op game by tracking connected peers, determining when all are dead, terminating the server, and returning players to the main menu.
Fix the node not found error by signaling death before freeing the player, use an RPC to trigger the kill, and disable the player input synchronizer to stop inputs.
Handle peer disconnections with server authority in a Godot 4 co-op game by syncing deaths via RPC and mapping peer IDs to players to keep rounds consistent.
Learn to implement a hit flash for enemies using a shader material and a dedicated hit flash component, with per-instance local materials and optional multiplayer RPC.
Add enemy impact particles with a gpu 2d scene and particles.png, spawned via rpc on hurtbox hit, at the enemy's position, and auto-free after a second.
Create persistent ground particles with a gpu 2d system that trigger on enemy hits and deaths, using a sprite clip mask to render them in the arena background.
Add a dedicated camera and implement smooth camera shake in Godot 4 using a noise texture and offset, with a shake trigger on player fire in multiplayer.
Define max rounds as ten and trigger a victory condition by emitting a game completed signal after the tenth round to end the game for all players.
Learn to design and theme game UI in Godot 4 by importing button textures, creating a UI folder, and overriding button styles with a nine-slice texture in the theme file.
Create a multiplayer menu in Godot 4, move host and join actions to a centered margin container, wire buttons and back navigation, and resolve circular dependency with onready loading.
Enhance the multiplayer menu by adding IP address and port fields along with a display name, and improve the layout with margin and vbox containers for centering and unique names.
Build a functional multiplayer menu that configures port, IP address, and display name with validation and error handling, enabling host and join actions only on valid input.
In Godot 4, handle multiplayer connection errors by adding a dynamic error panel with client and server messages, and a connecting state that disables inputs.
Display player names in a Godot 4 multiplayer game by storing the display name in a static config, sending it on spawn, and syncing names via server mappings.
Fixes a single-player bug by replacing null with offline multiplayer peer, preventing 'no multiplayer peer assigned', and hides the display name label when in offline multiplayer mode.
Design and implement a top-left player health bar UI for the currently controlled player in Godot 4, including a portrait, name label, and a styled progress bar, wired with scripts.
Synchronize the player's health value from the health component to the UI in a Godot 4 online co-op game, using a health changed signal to update the health progress bar.
Fix a player name bug by displaying a default player in single player mode and showing the proper player display name in multiplayer, using offline peer checks.
Create a multiplayer pause menu in Godot 4 using a canvas layer, ui design, with a centered paused label and resume and quit buttons, overlaying a background scene.
Create a functional pause menu in a Godot 4 online co-op game, using input mapping and RPCs to pause, unpause, resume, and quit with server authority.
Create a lobby with a ready-up system in Godot 4, using a lobby manager, RPCs, and a deferred signal to start only when all players are ready.
Add a ready-up UI in the game UI to show each player's readiness and the lobby's ready count, while hiding round info until the game starts.
Implement and refine a ready-up UI for a Godot 4 online co-op game by synchronizing peer readiness across clients, handling late joins, and enhancing readability with outlines.
Design and expose upgrade resources in Godot 4, configure a fire rate upgrade and other basic rewards, and implement a server authoritative upgrade system synchronized across all clients.
Synchronize per-client upgrade options in Godot 4 co-op games by generating local upgrades for each connected player and broadcasting upgrade IDs via reliable RPCs, preserving server authority.
Enable client-side upgrade selection within a server-authoritative game, validate upgrades on the server, and communicate selections via signals and RPCs to award upgrades securely.
Implement server-authoritative peer filtering to limit upgrades collisions, passing source peer IDs, filtering hurtboxes, and synchronizing upgrade options across clients to ensure correct multiplayer behavior.
Make the server authoritative for upgrade options, hide non-server options, and use rpc calls to destroy options on clients; restructure upgrade data as dictionaries and group related options for removal.
Implement upgrade functionality in a Godot 4 co-op game by randomizing options, tracking per-peer upgrades, and applying movement speed and damage boosts through a networked upgrade manager.
Explore making upgrades functional by using an upgrade manager and a nested dictionary to track upgrades per pier, applying movement speed, fire rate, and damage modifiers.
Coordinate round progression by tracking peers still upgrading, handling disconnects, and emitting upgrades completed to advance to the next round; synchronize with the enemy manager to begin rounds.
Create upgrade visuals by adding new art, a color palette, and animated spawn, idle, and despawn sequences with particles and hit effects for multiplayer.
Add upgrade tooltips with title and description labels in a vbox, and gate tooltip visibility in multiplayer by disabling activation areas for any client that is not the owner peer.
Learn to implement a shared run animation for player and enemy in Godot 4 by creating animation players, keyframing sprite scale, and syncing movement for multiplayer.
Add acceleration and deceleration to player movement in Godot 4 by lerping the velocity toward a target velocity using delta time for frame rate independence, with smoothing for subtle turning.
Tune enemy attack behavior in Godot 4 by auto triggering attacks when the player is within 16 pixels, avoiding jitter, and resetting the attack cooldown to intensify combat.
Implement a one-hit rule by adding an is_hit_handled flag to the hitbox; the first hurtbox handles the collision, preventing any further hits.
Learn to implement an invulnerability window after damage by disabling hurtbox collisions and flashing visuals with a tween, then synchronize the state across server and clients using RPCs.
Implement player damage feedback in a Godot 4 online co-op game by adding hit effects, blue ground particles, and camera shake limited to the controlling player.
Add a custom mouse cursor in Godot 4 with a crosshair sprite on a top canvas layer, updating its position to the global mouse and hiding the OS cursor.
Learn to add and manage sound effects in Godot 4 for a co-op multiplayer game, including setting up audio buses, randomizing gunfire and hit sounds, and wiring UI button audio.
Learn to add looping background music in Godot 4 by creating a music player autoload, using an audio stream player assigned to a dedicated music bus, and enabling autoplay.
Create a Godot 4 options menu to adjust sfx and music volumes with progress bars and plus/minus buttons, updating bus volumes and integrating with the pause menu.
Export your Godot 4 game to Windows, Linux, macOS, and web by configuring export templates, icons, and assets. Navigate platform-specific steps like RC edit and macOS notarization.
Host and join an exported Godot 4 multiplayer game over the real internet by enabling port forwarding on a home router and using your public IP address.
Explore advanced multiplayer enhancements for Godot 4, including Steam networking, client-side prediction, server reconciliation, and peer-to-peer authority, plus future content ideas and asset references to improve latency and gameplay.
This course teaches you everything you need to know to create a fully playable online cooperative multiplayer game from start to finish using the Godot Engine (version 4.4 or newer).
Core features and mechanics you'll learn include:
Server-authoritative multiplayer architecture
Remote Procedure Calls (RPCs) for state synchronization
Godot’s high-level multiplayer networking system
Twin-stick shooter controls
Modular scene composition
UI layout with Control nodes and theming
Gameplay programming with GDScript
This is just a highlight - check out the full course outline for a complete list of topics covered!
I'm Firebelley. I have over 7 years of experience using the Godot Engine and have published multiple commercial games to Steam. You'll be learning from someone who has used Godot to ship real games. I'm also the instructor behind several other highly-rated Udemy courses.
Whether you're just getting started with Godot or looking to get into online multiplayer game development, this course will walk you through the entire process. By the end, you’ll have a solid understanding of the key concepts and systems needed to build and publish a complete online 2D co-op game.
This course is perfect for you if:
You’re new to Godot and want a hands-on project
You’re interested in building multiplayer games
You have basic programming experience and want to apply it to game dev
Note: This course focuses on building an online multiplayer game in Godot 4.4+. It does not cover programming fundamentals. Familiarity with coding concepts is strongly recommended before enrolling - any programming experience will do. GDScript is easy to learn!
Several lessons are available for free preview - watch them to see if the course pace and teaching style are a good fit for you!