Tumble Guys is a physics-based multiplayer party game where players compete in chaotic obstacle courses, racing against each other to reach the finish line. Inspired by the popular Fall Guys, this Unity3D project features ragdoll physics, networked multiplayer gameplay, and smooth third-person controls.
Built with Unity Netcode for GameObjects and Unity Relay, Tumble Guys provides a seamless multiplayer experience without requiring dedicated serversโperfect for quick matches with friends on both Windows and Android platforms.
- Third-Person Character Controller with smooth movement and camera controls
- Physics-Based Ragdoll System for hilarious tumbles and collisions
- Double Jump Mechanic for enhanced platforming gameplay
- Ground Detection System using sphere casting for accurate collision
- Unity Relay Integration for easy lobby creation and joining
- Client-Authoritative Animation with
OwnerNetworkAnimator - Up to 4 Players per lobby with automatic session management
- Anonymous Authentication for quick player sign-in
- Lobby Code System for easy friend matchmaking
- Universal Render Pipeline (URP) for optimized graphics
- Cinemachine Camera System for dynamic third-person follow
- FPS Counter for performance monitoring
- Skybox and Lighting with customizable environments
| Technology | Purpose |
|---|---|
| Unity 3D | Game Engine |
| C# | Programming Language |
| Netcode for GameObjects | Multiplayer Networking Framework |
| Unity Relay | P2P Connection Service |
| Unity Transport (UTP) | Low-level Network Transport |
| Unity Input System | Modern Input Handling |
| Cinemachine | Camera System |
| Universal Render Pipeline | Rendering Pipeline |
| TextMesh Pro | UI Text Rendering |
- Unity 2021.3 or later
- Unity account (for Relay services)
- Windows PC or Android device
- Clone the repository
git clone https://github.com/AkshayKappala/Tumble-Guys.git
cd Tumble-Guys-
Open in Unity
- Launch Unity Hub
- Click "Add" and select the cloned project folder
- Open the project (Unity will import all dependencies)
-
Configure Unity Services
- Open
Window > General > Services - Link your Unity project ID
- Enable Relay service in Unity Dashboard
- Open
-
Open the Main Scene
- Navigate to
Assets/Scenes/_Multiplayer Demo. unity - Press Play to test locally
- Navigate to
File > Build Settings
Select "PC, Mac & Linux Standalone"
Click "Build" and choose output folderFile > Build Settings
Select "Android"
Switch Platform
Configure Player Settings (minimum API level 21)
Click "Build"Tumble-Guys/
โโโ Assets/
โ โโโ Scenes/ # Game scenes
โ โ โโโ _Multiplayer Demo.unity # Main multiplayer scene
โ โ โโโ Map_01.unity # Game level
โ โโโ Scripts/ # C# game scripts
โ โ โโโ ThirdPersonController.cs # Player movement
โ โ โโโ RelayManager.cs # Multiplayer networking
โ โ โโโ OwnerNetworkAnimator.cs # Animation sync
โ โโโ Prefabs/ # Reusable game objects
โ โโโ Models/ # 3D models and meshes
โ โโโ Materials/ # Textures and materials
โ โโโ Animation/ # Animation controllers
โ โโโ Input Settings/ # New Input System config
โ โโโ Settings/ # URP and quality settings
โโโ Packages/ # Unity package dependencies
โโโ ProjectSettings/ # Unity project configuration
- Launch the game
- Click "Host Game" button
- Share the generated Lobby Code with friends
- Wait for players to join
- Start the match!
- Launch the game
- Enter the Lobby Code in the input field
- Click "Join Game"
- Wait for the host to start
| Input | Action |
|---|---|
| WASD / Arrow Keys | Move Character |
| Space | Jump / Double Jump |
| Hold Ctrl | Free Cursor |
| Mouse | Camera Control |
Edit the movement parameters in ThirdPersonController.cs:
[SerializeField]
private float movementForce = 1f; // Movement acceleration
[SerializeField]
private float jumpForce = 5f; // Jump strength
[SerializeField]
private float maxSpeed = 5f; // Maximum horizontal speed
[SerializeField]
private float downwardGravityBias = 1f; // Falling speed multiplierModify the constant in RelayManager.cs:
const int m_MaxConnections = 4; // Change to desired player countConfigure Unity Transport in the NetworkManager:
- Select
NetworkManagerGameObject in scene - Adjust
UnityTransportcomponent settings - Modify timeout and connection parameters
- Solution: Ensure Unity Services are properly configured and you're connected to the internet
- Verify your Unity project is linked in the Services window
- Check firewall settings aren't blocking Unity connections
- Solution: Verify the lobby code is entered correctly (case-sensitive)
- Ensure the host hasn't reached max player capacity
- Check both players have stable internet connections
- Solution: Verify
OwnerNetworkAnimatorcomponent is attached to player prefab - Ensure animator controller is properly configured
- Check network object ownership settings
- Solution: Verify Input System package is installed
- Check
ThirdPersonActionsAssetis properly configured - Ensure player has ownership of NetworkObject
The project uses the following Unity packages:
- Netcode for GameObjects (1.0+)
- Unity Relay (1.0.3)
- Unity Transport (1.0+)
- Cinemachine
- Input System
- TextMesh Pro
- Universal Render Pipeline
All dependencies are managed through Unity Package Manager.
This project is licensed under the MIT License - see the LICENSE file for details.
Akshay Kappala
- GitHub: @AkshayKappala
- Project Link: https://github.com/AkshayKappala/Tumble-Guys
- Mixamo - Character animations
- FarlandSkies - Skybox assets
- OmniSAR Technologies - FPS Counter utility
- Lunar Console - In-game debug console
- Unity Technologies - Netcode and Relay services
โญ Star this repo if you found it helpful!
Made with โค๏ธ using Unity3D