Hardy World Poker

Inspiration

Hardy World Poker was inspired by the desire to create an immersive, multiplayer poker experience within Horizon Worlds. The goal was to build a fully-featured Texas Hold'em poker game that combines classic card game mechanics with modern UI/UX design, complete with persistent player statistics, leaderboards, and multiple buy-in tiers representing major cities around the world.

What it does

Hardy World Poker is a complete Texas Hold'em poker game featuring:

  • Multi-tiered Buy-In System: Players can choose from 6 different cities with varying buy-in amounts (1K, 5K, 10K, 25K, 50K, 100K), each representing a major world city (Las Vegas, New York, London, Tokyo, Dubai, Monaco)
  • Full Poker Gameplay: Complete Texas Hold'em implementation with betting rounds, blinds, side pots, all-in scenarios, and hand evaluation
  • AI Opponents: Intelligent AI players with different personalities (Tight, Aggressive, Loose, Balanced) that make realistic decisions based on hand strength
  • Persistent Statistics: Player stats are tracked and saved, including hands played, wins, losses, and chip counts
  • Global Leaderboard: Top 10 players are ranked globally based on chip count, stored in world-level persistent storage
  • Beautiful UI: Modern, Instagram-inspired design with smooth animations, gradient effects, and responsive layouts
  • Loading System: Comprehensive loading screen that tracks initialization progress (images, data, player info)
  • Crash Protection: Robust system to prevent chip loss if players exit unexpectedly

How we built it

The project was built using:

  • TypeScript: Core game logic, state management, and AI decision-making
  • NoesisGUI/XAML: UI framework for creating responsive, data-bound interfaces
  • Horizon Worlds API: Network events, persistent storage, and world management
  • Object-Oriented Architecture: Modular design with separate classes for:
    • PokerOverlay: Main game controller and UI management
    • PokerGameState: Game state management (players, pot, betting rounds)
    • PokerActions: Hand evaluation and game controller logic
    • PokerAI: AI decision-making with personality-based behavior
    • ServerManager: Server-side logic for persistent storage and leaderboard management
    • PokerImageLoader: Optimized parallel image loading with exponential backoff
    • PokerTimer: Turn timer with countdown and expiration handling

Key Technical Features:

  • Pre-computed combination indices for fast hand evaluation (40-50% performance improvement)
  • Dynamic AI delays based on decision complexity (40-60% faster turns)
  • Lazy initialization of heavy objects for faster startup
  • Debounced network events to reduce network spam
  • Parallel image loading with retry logic
  • Robust side pot calculation for all-in scenarios
  • Type-safe chip management with validation

Challenges we ran into

  1. Hand Evaluation Performance: Initially, recursive combination generation was too slow. Solved by pre-computing combination indices for 7-card and 6-card hands.

  2. Side Pot Calculation: Complex scenarios with multiple all-in players at different levels required careful algorithm design to correctly distribute pots.

  3. Chip Management: Preventing chip loss on unexpected exits required implementing a crash protection system with periodic syncing of effective total chips.

  4. AI Decision Making: Making AI players feel realistic while maintaining game balance required fine-tuning hand strength assessment and personality-based decision logic.

  5. Network Event Spam: Frequent saves were causing network congestion. Implemented debouncing to batch saves and reduce network calls by 60-80%.

  6. Type Safety: Ensuring chip values were always numbers (not strings) required careful validation throughout the codebase to prevent string concatenation bugs.

  7. Leaderboard Optimization: Limiting leaderboard to top 10 players while efficiently updating required careful threshold calculation and conditional updates.

  8. UI Responsiveness: Ensuring smooth animations and responsive layouts across different screen sizes while maintaining performance.

Accomplishments that we're proud of

  • Complete Poker Implementation: Successfully built a full-featured Texas Hold'em game with all standard rules and edge cases handled
  • Performance Optimizations: Achieved significant performance improvements through algorithm optimization and lazy loading
  • Robust State Management: Implemented reliable game state management that handles complex scenarios like multiple all-ins and side pots
  • Beautiful UI/UX: Created an intuitive, visually appealing interface with smooth animations and clear feedback
  • Persistent Data System: Built a reliable system for saving player stats, chips, and leaderboard data that survives world restarts
  • AI Intelligence: Developed AI players that feel realistic and challenging without being predictable
  • Crash Protection: Implemented a robust system to prevent data loss even if players exit unexpectedly
  • Multi-tier Gameplay: Created an engaging progression system with different buy-in levels representing world cities

What we learned

  • Performance Matters: Pre-computation and caching can dramatically improve performance in computationally intensive operations like hand evaluation
  • Type Safety is Critical: Careful type validation prevents subtle bugs like string concatenation instead of numeric addition
  • Network Optimization: Debouncing and batching network events significantly reduces server load and improves user experience
  • State Management Complexity: Poker game state management requires careful handling of edge cases, especially with all-in scenarios and side pots
  • UI/UX Design: Creating intuitive interfaces requires balancing information density with clarity, and animations can greatly enhance user experience
  • Persistent Storage Patterns: World-level vs player-level storage requires different strategies, and careful design prevents data loss
  • AI Behavior Design: Creating believable AI requires balancing randomness with strategy, and personality traits add depth to gameplay

What's next for Hardy World Poker

  • Tournament Mode: Implement tournament-style gameplay with multiple tables and progressive elimination
  • Player Customization: Allow players to customize their table themes, and card designs
  • Achievement System: Add achievements and badges for various accomplishments (winning streaks, big pots, etc.)
  • Social Features: Implement friend lists, private tables, and chat functionality
  • Advanced Statistics: More detailed stats tracking including VPIP, PFR, aggression factor, and hand history
  • Mobile Optimization: Optimize UI for mobile VR devices
  • Sound Design: Add immersive sound effects and background music
  • Tutorial System: Interactive tutorial for new players to learn poker rules
  • Daily Challenges: Daily challenges and missions to keep players engaged
  • Cross-World Leaderboards: Expand leaderboard system to track players across multiple world instances

Built With

+ 8 more
Share this project:

Updates