A real-time multiplayer Rock Paper Scissors game built in Unity with Photon PUN. Supports private matches (room codes) and random matchmaking. Features synchronized animations, particle effects, and a round-based system with health tracking.
Turn-based gameplay: Players choose Rock, Paper, or Scissors simultaneously
Health system: Each player starts with 3 health points; losing a round reduces health by 1
Round-based progression: Best-of-5 format (first to lose all health loses)
Real-time synchronization: All actions synchronized across clients using Photon PUN
Economy system: 10-coin entry fee with coin management and validation
Friends Mode: Create/join rooms with 6-digit room codes
Random Match: Automatic matchmaking with bet-based room filtering
Auto-start countdown: 5-second countdown when 2 players join
Synchronized animations: Hand movements, particle effects, and UI updates synchronized across clients
Visual feedback: Round result text popups, final result panels with win/lose indicators
Particle effects: Rock/Paper/Scissors hit effects with sound integration
Pause system: Leave match functionality with proper disconnection handling
Loading animations: Animated loading indicators during matchmaking
Responsive UI: Panel-based navigation (Main Menu, Join Room, Waiting, Game)
Real-time status updates: Player names, room codes, bet amounts, connection status
Feedback system: Visual and text feedback for player actions
Smooth animations: DOTween-based UI and hand animations
Photon Unity Networking (PUN): Real-time multiplayer synchronization
RPC (Remote Procedure Calls): Synchronized animations and game state
Custom Room Properties: Storing game state, player choices, health, round numbers
Master Client Management: Host migration and room creator tracking
Connection Management: Proper disconnect handling and reconnection logic
Synchronized State Machine: Waiting → RoundActive → Evaluating → GameOver
Choice Synchronization: Dual-check system to prevent race conditions
Health Synchronization: Network-synced health updates across clients
Round Management: Automatic round progression with proper state resets
DOTween Integration: Smooth hand movements and UI animations
Synchronized Animations: Hand movements, text popups, and particle effects
Timing Control: Precise delays ensuring animations complete before state changes
Button State Management: Buttons disabled during animations, enabled only after hands return
Modular Design: Separate managers for UI, Game Logic, Particles, and Networking
Coroutine-based Flow: Sequential game flow using Unity coroutines
Error Handling: Try-catch blocks for audio, network error handling, and fallback logic
Platform Considerations: Android build optimizations and platform-specific code
Real-time multiplayer synchronization using Photon PUN
RPC implementation for cross-client communication
Custom room properties for game state management
Host migration and connection state handling
Network latency mitigation and synchronization strategies
Unity C# scripting and component-based architecture
Coroutine-based game flow management
State machine implementation for game states
Animation integration with DOTween
Particle system integration with sound effects
Panel-based UI navigation system
Real-time UI updates based on game state
Loading animations and visual feedback
Responsive design for different screen sizes
First-round synchronization issues in multiplayer
Race condition handling in network code
Animation timing and sequencing
Button state management during animations
Double-call prevention in coroutine chains
Modular and maintainable code structure
Error handling and edge case management
Code documentation and comments
Performance optimization considerations
Real-time multiplayer synchronization: All game actions synchronized across clients with minimal latency
Robust networking: Handles connection issues, host migration, and player disconnections
Smooth animations: Synchronized hand movements, particle effects, and UI transitions
User experience: Intuitive UI with clear feedback and smooth transitions
Production-ready features: Economy system, matchmaking, room management, and pause functionality
Code quality: Well-structured, documented, and maintainable codebase