
Get started by setting up Unity for your local multiplayer game, join the course community, access the feedback area, and compare your work to the completed game project for reference.
Create a new Unity two-dimensional project, name it, and import course assets to start your local multiplayer setup, exploring key windows like hierarchy, scene, inspector, project, and game views.
Set up a new scene, slice a sprite sheet into 32 by 32 tiles, place the player, and build a basic ground tilemap for movement and physics.
Create a Unity tilemap by importing a tile sheet into a tile palace, painting tiles on a grid, and setting a 1920x1080 view for a basic local multiplayer level.
Set up sorting layers to ensure the player renders above the ground. Define player and ground layers, adjust order in layer, and use minus one for behind effects.
Add 2D physics to the player and map with capsule and composite colliders, then configure rigidbody 2D with zero gravity and rotation constraints.
Build a local multiplayer player controller in Unity by attaching a movement script to a rigidbody, setting move speed and jump force, and testing horizontal input.
Enable jump with an input check and set the rigidbody velocity, adjust jump force and gravity scale for snappy jumps, and use a physics material with continuous collision detection.
Migrate to Unity's new input system by installing the input system package, creating player input actions (move, jump, look, fire), and binding gamepad and keyboard controls for local multiplayer.
Learn to implement player movement in a local multiplayer Unity game using the input system, reading vector2 input, and applying velocity to the rigidbody for left-right control among multiple players.
Update jumping in Unity using the new input system, adding a public jump method and a context check, to enable single jumps and local multiplayer with keyboard and controller.
Enable reliable jumping by implementing a ground check using an invisible circle, a ground check point, and a ground layer mask in Unity, updating isGrounded and jumping only when grounded.
Learn to limit jump height by lowering vertical velocity when the jump button is released, only while moving upward and not grounded.
Learn to add player animations in Unity by using the animation window and record mode to create idle, run, jump, and fall clips, organize them in assets/animations, and manage frames.
Set up the animator to switch between idle, run, jump, and fall using is grounded, speed, and y speed parameters, with zero transition duration.
Control character animations with a player controller by setting animator parameters like is grounded and velocity, and flip the sprite using transform.localScale based on movement.
Use the new input system to allow any keyboard or controller to join players at runtime, spawning prefab copies via the player input manager.
Add a second keyboard player in a Unity game by duplicating the player prefab, enabling keyboard two, and mapping j and l and shift with the new input system.
Add a second keyboard player to your Unity game by implementing a join player keyboard script, instantiating the player on input, and updating the player manager.
Limit local multiplayer in Unity by using a game manager singleton with a max player setting and an active players list to accept or reject joins.
Disable player-to-player collisions in Unity by using the layer collision matrix, allowing characters to run through each other while maintaining four-player testing and design flexibility.
Create a dynamic player spawn effect in Unity using a particle system burst, fixed colors, non looping playback, and destroy-on-stop, instantiated via a prefab linked to the game manager.
Create an attack animation for player prefabs in a multiplayer Unity game, using any-state transitions, a swoosh visual, a trigger parameter, and a 2D box collider as the damage area.
Learn to implement a local multiplayer attack mechanic in Unity by binding attack actions to keyboard and gamepad inputs, triggering an attack animation, and freezing movement during the attack.
Implement a local multiplayer health system in Unity by enabling damage, displaying three hearts above the player, and updating heart sprites via a health controller that uses a heart array.
Learn to implement a damage system in Unity by reducing the player's current health with a damage value, updating the health display, and deactivating the player when defeated.
Align the heart holder's scale with the player by syncing it to the player's local scale with a public heart holder reference, and use LateUpdate to avoid popping during flips.
Implement damage in a local multiplayer Unity game by attaching a damage script to the attack swoosh, using on trigger enter 2D and player tags to damage other players.
Implement an invincibility window after damage using an invincibility timer and counter, and flash hearts above players to indicate invincibility in a local multiplayer Unity game.
Implement a stomp mechanic in a local multiplayer Unity game: damage enemies via health system and bounce the player using a trigger beneath the feet.
Configure the character select arena in Unity using tile maps, a warped zone tile set, a separate background layer, and a portal spawn area to start players.
Learn to implement animation overrides in Unity to support a local multiplayer game by swapping character animations with an animator override controller for a king character.
Enable local multiplayer character switching in Unity by pressing a character select button; jumping onto it swaps the player's animator to the king, with visual button states and cooldown.
Build the character select UI with a canvas and text mesh pro prompts, including a Kenny Pixel countdown, and hide the join prompt when max players are reached.
Prevent damage outside the arena by adding a game manager flag, default false, that enables fighting only when entering the combat area; damage checks respect this can fight flag.
Develop a local multiplayer start zone in Unity by using a trigger area to count players, display a countdown with TextMeshPro, and load the next scene when the countdown ends.
Keep players and the game manager alive across scenes by using don't destroy onload and the instance check to avoid duplicates, so players carry through between scenes.
Set up a fighting arena by creating arena test scenes, a prefab game manager, and layered backgrounds using Sunnyland tiles, then test and iterate with a playable arena.
Enable can fight, activate all players, and refill health at arena startup using an arena manager and a for-each loop in Unity.
Place spawn points under the arena manager and mark them. At startup, the arena manager randomly assigns each active player to a point and removes used points to avoid overlaps.
Learn to determine the round winner by counting active players in the game manager, end the round, and load the next arena.
Select and load a random level from a levels array via the game manager, using Unity's scene manager, while avoiding repeats until all levels have been played.
Learn to fix a scene-transition control bug by reactivating all active players and resetting their health before loading the next level, ensuring consistent character control across scenes.
Implement a delayed round end sequence in a Unity local multiplayer game, displaying round complete and winner UI, and update the winner text using a coroutine and last surviving player.
Track each player's round wins in the game manager, initialize zeros for active players, and increment the winner's round win until the points to win threshold is reached.
Implement a win condition in the game manager that loads the win level when a player's wins reach the points to win and returns to the character select screen.
Create a Unity win screen with a UI canvas, TextMesh Pro win text, and a player image, plus decorative bars and three buttons with sliced sprites and color-tint transitions.
Create a win screen controller in Unity that updates the win text and player image from the game manager, and wires play again, change characters, and main menu actions.
Design engaging arenas by adding hazards like a kill plane that damages players on fall, then test interactions to ensure death triggers work in a local multiplayer Unity game.
Add spikes that damage players with a trigger collider and a damage script, shrink the collider for fair hits, and test damage after placing spikes and adjusting spawn points.
Place a portal with a circle collider trigger and an exit point to teleport the player, then instantiate the warp effect at the portal and at the exit point.
Propel the player with a jump pad bounce pad using a 2D trigger, switch sprites, and apply bounce power via Rigidbody2D velocity; reuse the arena manager prefab across arenas.
Add more arenas and diverse player characters by overwriting animator controllers, fill the scene for a richer battle environment, and extend the course with extra content before future sections.
Learn how to create and program your very own action packed couch multiplayer game using Unity, an industry-standard game development program used by many large gaming studios and indie developers across the world.
In this course you won’t just be learning programming concepts, but tying these concepts to real game development uses. You will have access to a course forum where you can discuss the topics covered in the course as well as the next steps to take once the course is complete.
This course has been designed to be easily understandable to everyone, so whether you’re a complete beginner, an artist looking to expand their game development range or a programmer interested in understanding game design, this course will help you gain a greater understanding of development.
At the end of this course you will have developed the ability to understand such game elements as:
full 2D character movement
how to use Unity’s new input system to support multiple players easily
level design using tilemaps
character switching
victory tracking
full audio systems
Interactive Menus
and much more...
Start learning today and let me help you become a game developer!