Peril_Dice/CHANGELOG_Notecard.txt

542 lines
31 KiB
Text

PERIL DICE CHANGELOG
===================
All notable changes to Peril Dice are documented in this file.
[2.8.2] - 2025-08-21
====================
🔥 CRITICAL SCOREBOARD SPAM FIX
- Eliminated Player Sync Loop: Fixed major bug where eliminated players caused continuous scoreboard update spam
* Main Controller now properly updates peril player variable immediately after player elimination
* Prevents stale sync messages containing eliminated player data from being broadcast repeatedly
* Eliminates infinite scoreboard update loops that occurred when peril player was eliminated
* Fixed root cause where Main Controller kept sending outdated peril player references in sync messages
- Peril Player Validation: Enhanced peril player assignment during elimination sequences
* Checks if eliminated player is currently the peril player before final sync
* Assigns new valid living player as peril player or sets to "NONE" if no players remain
* Ensures updateHelpers() always sends clean game state without stale player references
* Prevents perpetual "Noose the Bunny" style spam messages after player elimination
🎯 PERIL STATUS DISPLAY FIXES (RE-FIXED)
- Enhanced Floater Peril Status: Re-implemented and improved peril status display on floating displays
* Fixed peril status showing "waiting for game to start" during active gameplay (again)
* Enhanced peril player detection logic in floater management
* Improved sync message processing to ensure consistent peril status across all displays
* Better handling of peril player transitions during plot twist scenarios
💖 ELIMINATION HEART DISPLAY FIXES (RE-FIXED)
- 0 Hearts Before Elimination: Re-fixed elimination sequence to properly show 0 hearts before player removal
* Enhanced Main Controller elimination logic to ensure 0 hearts display timing
* Extended display delay to make 0 hearts clearly visible on both scoreboard and floaters
* Improved coordination between heart updates and player cleanup processes
* Fixed race conditions where players were removed before 0 hearts could be displayed
- Visual Elimination Feedback: Strengthened elimination experience for better player feedback
* Players now consistently see their elimination status with 0 hearts before removal
* Scoreboard and floaters maintain synchronized elimination heart display
* Enhanced user experience during elimination events with proper visual timing
🛠️ TECHNICAL IMPROVEMENTS
- Elimination Sequence Enhancement: Improved coordination between player removal and sync message broadcasting
* Added peril player validation step before final updateHelpers() call
* Enhanced elimination handler to prevent sync message corruption during player cleanup
* Better synchronization between Main Controller state updates and helper script notifications
- Display System Reliability: Strengthened display update mechanisms for consistent visual feedback
* Enhanced floater update triggers during game state changes
* Improved peril status determination and heart display coordination
* Better error handling for edge cases during elimination sequences
[2.8.1] - 2025-08-14
====================
🎯 PERIL STATUS DISPLAY FIXES
- Fixed Floater Status Updates: Resolved issue where peril status on floating displays showed "waiting for game to start" during active gameplay
* Enhanced peril status logic in Floater Manager to properly handle active game states
* Added clear "YOU ARE IN PERIL!" messaging for the current peril player
* Improved status display to show "Peril Player: [Name]" for all other players
* Fixed condition checking for peril player status determination
- Real-Time Status Synchronization: Enhanced sync message handling for consistent peril status across all displays
* Added debug logging to track peril player status changes in Floater Manager
* Improved floater update triggers during game state changes
* Enhanced sync message processing to immediately update all floaters when peril status changes
* Fixed "NONE" placeholder handling in peril player sync messages
💖 ELIMINATION HEART DISPLAY FIXES
- 0 Hearts Before Elimination: Fixed elimination sequence to properly show 0 hearts before player removal
* Modified Main Controller elimination logic to set player lives to 0 first
* Added 1-second display delay to make 0 hearts visible on both scoreboard and floaters
* Enhanced elimination flow with proper timing between heart display and player cleanup
* Fixed race condition where players were removed before 0 hearts could be displayed
- Visual Elimination Sequence: Improved elimination experience for better player feedback
* Players now see their elimination status with 0 hearts before floater disappears
* Scoreboard and floaters show elimination hearts consistently
* Better coordination between heart updates and player removal
* Enhanced user experience during elimination events
🐛 BUG FIXES AND IMPROVEMENTS
- Sync Message Debugging: Added comprehensive debug logging for peril player status tracking
* Debug messages show peril player changes from old to new values
* Enhanced visibility into sync message processing
* Better troubleshooting capabilities for peril status issues
- Floater Update Reliability: Improved floater update system for more consistent status display
* Enhanced floater update triggers during game state changes
* Better handling of peril status changes during rounds
* Improved sync message reliability for real-time status updates
- Elimination Timing Fixes: Resolved timing issues in elimination sequence
* Fixed race condition where elimination cleanup occurred before status display
* Added proper delays to ensure visual feedback before player removal
* Enhanced coordination between Main Controller and display systems
🛠️ TECHNICAL IMPROVEMENTS
- Enhanced Floater Manager Logic: Improved peril status determination and display
* Better condition checking for active game states vs. waiting states
* Enhanced handling of "NONE" and empty peril player values
* Improved sync message processing for consistent status updates
- Main Controller Elimination Enhancements: Better elimination sequence coordination
* Added explicit 0 hearts setting before player removal
* Improved helper update timing during elimination
* Enhanced coordination between elimination logic and display updates
- Debug Logging Additions: Added targeted debug messages for key status changes
* Peril player change tracking in Floater Manager
* Elimination sequence logging in Main Controller
* Better visibility into sync message processing
[2.8.0] - 2025-08-12
====================
🔐 GAME LOCKOUT SECURITY SYSTEM
- Owner-Only Access Control: Implemented comprehensive lockout system allowing game owners to restrict all game functionality to owner only
* Complete dialog prevention for non-owners when game is locked
* Visual feedback through floating text showing "🔒 GAME LOCKED" status
* Clear error messaging to non-owners attempting access during lockout
* Lock status persists during gameplay and between sessions
- Dynamic Admin Controls: Added lock/unlock toggle buttons in categorized owner menu
* Lock Game: Restricts access to owner only
* Unlock Game: Restores normal player access
* Visual indicators in admin menu show current lock state
- System Integration: Lockout state synchronized between Main Controller and Dialog Handler
* Lock/unlock commands sent via link messages (9001/9002)
* Floating text updates automatically based on lock state
* Complete access restriction including dialog generation prevention
🔄 AUTOMATIC RESET ON STARTUP SYSTEM
- Clean State Guarantee: Game automatically resets when critical scripts are updated or rezzed
* Main Controller triggers reset on state_entry() for consistent startup state
* Game Manager requests reset on startup to handle core game logic updates
* All game state cleared while preserving historical leaderboard data
- Smart Reset Logic: Automatic reset preserves leaderboard while clearing temporary game state
* Players, lives, picks, ready states cleared on startup
* Win/loss records maintained in leaderboard system
* Scoreboard cleared but leaderboard rankings preserved
- Script Update Protection: Enhanced reliability when game logic is modified
* Prevents stale game states from carrying over after script updates
* Ensures consistent experience for players after system updates
* Eliminates need for manual resets after deployments
👥 ENHANCED PLAYER MANAGEMENT SYSTEM
- Kick Player Functionality: Complete implementation of owner-controlled player removal
* New "Kick Player" option in Player Management admin section
* Smart display name handling with automatic truncation for dialog buttons
* Complete player removal from all game systems (lists, scoreboard, floaters)
* Immediate visual feedback on scoreboard when players are kicked
- Rebuilt Leave Game System: Complete overhaul of voluntary player departure
* Fixed state synchronization issues between Controller and Dialog Handler
* Proper cleanup of player floaters when leaving
* Automatic removal from ready player lists
* Scoreboard updates immediately reflect departing players
- Advanced Name Management: Enhanced handling of long display names
* Automatic truncation to fit within 24-character dialog button limits
* Preservation of original names for game logic while showing truncated versions in UI
* Proper mapping between display names and actual player identities
🎯 CATEGORIZED ADMIN INTERFACE
- Organized Owner Menu: Complete restructure of admin controls into logical categories
* Player Management: Add Test Player, Kick Player functions
* Reset Options: Game reset, Leaderboard reset, Complete reset
* Troubleshooting: Cleanup floaters, Force floaters creation
* Security Controls: Lock/Unlock game prominently displayed
- Improved Navigation: Enhanced menu flow with clear back navigation
* Consistent "Back to Main" options in all sub-menus
* "Back to Game" option to return to player interface
* Context-sensitive menu options based on current state
- Enhanced User Experience: Better organization and discoverability of admin functions
* Security-first design with lock controls prominently featured
* Logical grouping of related functions
* Clear visual indicators for current system state
[2.7.0] - 2025-08-12
====================
🏠 SINGLE LINKSET ARCHITECTURE REVOLUTION
- Complete System Consolidation: Merged all 4 separate objects into single linkset architecture
* Main Controller + Roll Module: Link 1 (root prim)
* Game Scoreboard: Links 2-24 (scoreboard background, actions display, player slots)
* XyzzyText Leaderboard: Links 25-72 (48 prims for text display across 4 banks)
* Dice Display: Links 73-74 (2 prims for XyzzyText dice results)
* Total: 74-prim consolidated linkset replacing 4 separate rezzed objects
- Elimination of Region Chat: Replaced all llRegionSay() communication with llMessageLinked()
* No more channel conflicts or discovery issues between multiple game instances
* Instant, reliable communication within single linkset
* Zero risk of cross-talk between multiple game tables
- Simplified Deployment: Single object rez instead of complex 4-object positioning system
* No more Position Controller/Follower scripts needed
* No more automatic rez positioning coordination
* Instant setup - rez once and play
🎯 DICE TYPE SYNCHRONIZATION FIXES
- Critical Race Condition Resolution: Fixed major bug where Game Manager and Roll Module independently requested dice types
* Eliminated inconsistent dice types between human players and bots (e.g., player rolling d6 when expecting d30)
* Prevented double rolls with different dice types from conflicting module requests
* Removed duplicate dice type calculation across multiple modules
- Targeted Communication System: Calculator sends dice type responses only to requesting module
* Game Calculator responds directly to sender using link numbers
* Eliminated LINK_SET broadcasts that caused race conditions and stale data
* Each module requests dice type independently when needed, preventing conflicts
🔄 CLEAN MODULE COMMUNICATION ARCHITECTURE
- Link Message Routing: Established clear communication paths within linkset
* Main Controller <-> Scoreboard: Link 1 -> Link 2
* Scoreboard -> Leaderboard Bridge: Link 2 -> Link 25
* Roll Module -> Dice Bridge: Link 1 -> Link 73
* All communication uses llMessageLinked() with specific link numbers
- Module Responsibilities:
* Game Calculator: Calculates dice types on request; sends targeted responses only
* Game Manager: Requests dice type for pick phase coordination and dialog building
* Roll Module: Requests dice type independently when performing actual rolls
* Scoreboard Manager: Handles player display and leaderboard formatting
* Bridge Scripts: Handle XyzzyText display distribution for leaderboard and dice
[2.6.0] - 2025-08-09
====================
📡 ADVANCED CHANNEL MANAGEMENT SYSTEM
- Dynamic Channel Calculation: Implemented sophisticated channel assignment system to prevent conflicts
* Channels calculated using combined hash of owner key + object key for uniqueness
* Prevents interference between multiple game tables owned by same person
* Each game instance gets completely unique channel space
* MD5-based hash generation creates 0-255 range offsets for channel distribution
- Multi-Instance Support: Multiple game tables can now operate simultaneously without channel conflicts
- Automatic Channel Assignment:
* Main Controller: ~-78000 range (CHANNEL_BASE - offset - hash)
* Dialog Handler: ~-79000 range
* Roll Module: ~-80000 range
* Bot Manager: ~-81000 range
* Scoreboard: ~-83000 range
* Leaderboard: ~-84000 range
* Position System: ~-85000 range
* Floater Base: ~-86000 range (with per-player offsets)
- Channel Debugging: Owner receives detailed channel assignments on startup for troubleshooting
🧹 DEBUG OUTPUT CLEANUP CAMPAIGN
- Main Controller Noise Reduction: Removed verbose debug messages causing chat spam
* Eliminated touch event logging ("DEBUG: touch_start - sender: X")
* Removed dice type result debug output ("DEBUG: Roll result: X on dY")
* Cleaned up excessive state change notifications
* Preserved essential error messages and critical game flow information
- Floater Manager Debug Cleanup: Significantly reduced verbose owner messages
* Removed detailed picks data logging from getPicksFor() function calls
* Eliminated floater cleanup debug messages (channel, index, player data confirmations)
* Removed sync state debug information showing counts of lives, picks, and names
* Maintained important error reporting for malformed data and critical issues
- Professional Operation Standards: Game now operates with minimal console noise
🎯 ENHANCED USER EXPERIENCE
- Reduced Log Spam: Console output now focuses on meaningful information only
- Essential Information Preserved: Error messages and critical game events still logged
- Clean Monitoring: Easier to spot actual issues without debug noise overwhelming chat
- Multi-Table Deployment: Support for running multiple game instances without interference
🛠️ TECHNICAL INFRASTRUCTURE IMPROVEMENTS
- Performance Enhancement: Reduced string processing overhead from debug output removal
- Memory Optimization: Less memory usage from debug string concatenation and storage
- Channel Architecture: Robust system for managing communication channels across components
- Hash-Based Uniqueness: Cryptographically sound channel assignment preventing collisions
- Maintainability: Cleaner codebase easier to debug when real issues occur
🔧 SYSTEM RELIABILITY
- Conflict Prevention: Eliminates channel conflicts that could cause cross-talk between games
- Instance Isolation: Each game table operates in completely isolated channel space
- Debugging Tools: Built-in channel reporting for troubleshooting communication issues
- Production Ready: Professional-grade logging levels suitable for live deployment
📋 IMPLEMENTATION DETAILS
- Channel Calculation Function: calculateChannel(offset) in all major scripts
- Initialization Reporting: Detailed channel assignments logged on script startup
- Cross-Script Consistency: All components use same channel calculation method
- Owner Transparency: Clear visibility into assigned channels for admin purposes
[2.5.0] - 2025-08-08
====================
🛡️ REGISTRATION SECURITY FIXES
- Duplicate Registration Prevention: Fixed critical bug where players could register multiple times by rapid clicking
* Added pendingRegistrations list to track registration requests in progress
* Prevents duplicate registration messages from being sent while first registration processes
* Automatic cleanup of pending registrations after completion or timeout
- Startup Sequence Protection: Fixed bug allowing player joins during game initialization
* Added gameStarting flag to block registrations immediately when "Start Game" is clicked
* Eliminates timing window between game start and roundStarted flag activation
* Maintains owner exception for admin menu access during gameplay
🎮 IMPROVED GAME FLOW CONTROL
- Enhanced Touch Handler: Better handling of registration status with user feedback
- State Management: Proper cleanup of both gameStarting and pendingRegistrations during reset
- User Experience: Clear messaging when registration attempts are blocked during active periods
🐛 CRITICAL BUG FIXES
- Race Condition Resolution: Eliminated duplicate player entries from rapid multiple touches
- Game Disruption Prevention: Stopped unwanted joins during critical game startup phase
- Consistent Game State: All registration paths now properly validate timing and prevent duplicates
- Duplicate Pick Prevention: Fixed continueCurrentRound() function to properly rebuild globalPickedNumbers with uniqueness checks
- Data Corruption Fix: Resolved issue where globalPickedNumbers could contain duplicates, causing inconsistent bot pick validation
- Delimiter Handling: Enhanced parsing to correctly handle both comma (human) and semicolon (bot) pick delimiters
- Server-Side Pick Validation: Added robust server-side validation in Main.lsl to prevent duplicate picks from being accepted
* Human picks are now validated against globalPickedNumbers before acceptance
* Invalid picks are rejected with clear error messaging to the player
* Player receives new dialog with updated available numbers after rejection
* Eliminates client-side bypass vulnerabilities in duplicate prevention
- Loss Tracking: Fixed missing loss records in leaderboard when players are eliminated
* Added GAME_LOST| message broadcast when players are eliminated
* Eliminated players now properly appear in leaderboard with loss counts
* Provides complete game statistics showing both wins and losses
- Enhanced Display Name Handling: Implemented robust player name resolution with fallback system
* Added getPlayerName(key id) helper function in all scripts (Main.lsl, Dialog Handler, StatFloat)
* Prioritizes modern llGetDisplayName() for better user experience
* Falls back to legacy llKey2Name() when display names are unavailable
* Handles network issues, offline avatars, and viewer compatibility problems
* Ensures no player is ever shown as blank or missing name
* Consistent name handling across all game components and messages
[2.4.0] - 2025-08-08
====================
📍 POSITION MANAGEMENT SYSTEM
- Master-Follower Architecture: Complete position synchronization system for all game components
- Position Controller Script: Main controller object manages movement of scoreboard, leaderboard, and displays
- Follower Script Template: Generic follower script that reads position settings from config notecard
- Config-Based Positioning: Position offsets and rotations defined in "config" notecard for easy customization
- Automatic Movement Sync: When controller moves, all linked objects maintain relative positions
- Position Reset Tools: Built-in recalibration system for repositioning knocked-out components
- Multi-Object Coordination: Seamless movement of entire game system as single unit
🧹 PRODUCTION CODE CLEANUP
- Debug Code Removal: Complete removal of all debug logging statements and test messages
* Removed llOwnerSay("DEBUG: ...) calls throughout Main.lsl (lines 147, 161, 479, 517, 523, 527, 874, 1163)
* Eliminated development-time diagnostic messages and empty debug blocks
* Cleaner, more professional game experience without debug clutter
- Syntax Error Fixes:
* Fixed critical missing closing brace on line 835 in Main.lsl causing compilation failure
* Resolved LSL syntax errors that prevented script execution
* All scripts now compile cleanly without warnings or errors
🛠️ DEVELOPMENT QUALITY IMPROVEMENTS
- Production Readiness: Scripts optimized for live deployment without development artifacts
- Performance Enhancement: Eliminated unnecessary debug output reducing execution overhead
- Memory Optimization: Reduced script memory footprint by removing debug string operations
- Code Maintainability: Cleaner codebase structure for future development
- Professional Polish: Game system ready for production deployment
🔧 TECHNICAL IMPROVEMENTS
- LSL Compliance: All scripts pass Second Life LSL compilation standards
- Execution Efficiency: Faster script performance without debug processing overhead
- Position Synchronization: Robust communication system for coordinated object movement
- Config System: Flexible notecard-based configuration for easy position adjustments
- Error Resolution: Fixed all syntax issues preventing proper game operation
📚 DOCUMENTATION UPDATES
- Position System Guide: Comprehensive instructions for setting up position management
- Reset Tools Documentation: Step-by-step guide for recalibrating positions
- Version Tracking: Updated to semantic versioning 2.4.0
- Change History: Detailed tracking of all modifications and improvements
[2.3.0] - 2025-08-05
====================
🏆 VISUAL SCOREBOARD SYSTEM
- Dynamic Player Grid: Real-time visual scoreboard displaying all players with profile pictures and heart count
- Profile Picture Integration: Automatic fetching of Second Life avatar profile pictures via HTTP requests
- Heart Texture Display: Visual life representation using custom heart textures (3, 2, 1, 0 hearts)
- Bot Profile Support: Special profile texture for TestBot players
- Immediate Updates: Hearts update instantly when lives change, before any dialogs appear
🎭 ENHANCED STATUS DISPLAY SYSTEM
- Visual Status Actions: Large action prim displaying current game status with custom textures
- Specific Status Messages:
* Direct Hit: When peril player picks their own rolled number
* No Shield: When nobody picks the rolled number
* Plot Twist: When peril switches to a new player
* Elimination: When a player is eliminated
* Victory: When someone wins the game
* Peril Selected: When a new peril player is chosen
* Title: Default/idle state
⚡ PERFECT STATUS TIMING
- Protected Display Time: Each status shows for 8 seconds with automatic clearing
- Strategic Delays: 2-second delays after status messages prevent overwriting
- Sequential Flow: Elimination → 6.4s delay → Victory → 9s delay → Reset
- Immediate Visual Feedback: Hearts and status update instantly, delays protect display time
🎯 COMPREHENSIVE LEADERBOARD
- Persistent Win Tracking: Player victories saved across game sessions
- XyzzyText Integration: Three-prim text display system for leaderboard
- Automatic Sorting: Top players by win count with formatted display
- Separate Reset Options: Game reset vs. leaderboard reset vs. complete reset
🎮 ENHANCED USER INTERFACE
- Categorized Owner Menus: Organized into Game Control, Player Management, Reset Options, etc.
- Dialog Recovery: Players can recover lost dialogs by touching the controller
- Admin Menu Access: Owner can access admin functions during gameplay
- Improved Menu Flow: Streamlined navigation with clear categorization
🔧 TECHNICAL IMPROVEMENTS
- Multi-Object Architecture: Scoreboard and leaderboard as separate linked objects
- HTTP Profile Fetching: Robust system for retrieving avatar profile pictures
- Texture Caching: Profile pictures cached to avoid repeated HTTP requests
- Region-Based Communication: Cross-object messaging using llRegionSay
- Elimination Sequence: Visual 0-hearts display before player removal
🐛 CRITICAL FIXES
- Heart Update Timing: Fixed hearts not updating until after next-turn dialog
- Victory Overwriting Elimination: Added proper delay between elimination and victory status
- Status Message Conflicts: All status messages now have protective delays
- Profile Picture Fallbacks: Proper handling of failed HTTP requests
- Scoreboard Reset: Fixed scoreboard not clearing when game resets
[2.2.0] - 2025-08-04
====================
🎭 MAJOR UX/PRESENTATION IMPROVEMENTS
- Dramatic Messaging System: Complete overhaul of game messages with thematic styling
- Public Announcements: Key game events now visible to all players in public chat
- Context-Rich Roll Messages: Dice rolls now show both dice type and result
- Split Hit Messages: Different messages for "picked own doom" vs "no shield" scenarios
🎮 ENHANCED PLAYER EXPERIENCE
- Player Join Messages: "💀 PlayerName has entered the deadly game! Welcome to your potential doom! 💀"
- Ready State Messages:
* "👑 PlayerName steps forward as the game master - automatically ready for the deadly challenge! 👑"
* "⚔️ PlayerName steels themselves for the deadly challenge ahead! ⚔️"
* "🏃 PlayerName loses their nerve and backs away from the challenge! 🏃"
- Pick Announcements: "🎯 PlayerName stakes their life on numbers: 1, 2, 3 🎲"
- Game Start: "⚡ ALL PARTICIPANTS READY! THE DEADLY PERIL DICE GAME BEGINS! ⚡"
🎲 IMPROVED ROLL MESSAGES
- Main Roll: "🎲 THE D6 OF FATE! PlayerName rolled a 5 on the 6-sided die! 🎲"
- Plot Twist: "⚡ PLOT TWIST! PlayerName picked 5 (rolled on d6) and is now in ULTIMATE PERIL! ⚡"
- Direct Hit: "🩸 DIRECT HIT! PlayerName picked their own doom - the d6 landed on 5! 🩸"
- No Shield: "🩸 NO SHIELD! Nobody picked 5 - PlayerName takes the hit from the d6! 🩸"
🔧 CRITICAL BUG FIXES
- StatFloat Duplication: Fixed bug where new StatFloat objects were created on every life loss instead of updating existing ones
- Duplicate Message Handling: Removed duplicate HUMAN_PICKED handlers that caused double processing
- Malformed Entry Warnings: Fixed LSL parsing issues with empty picks entries
- Cleanup Optimization: Reduced excessive StatFloat cleanup messages during reset
🛠️ TECHNICAL IMPROVEMENTS
- Debug Message Cleanup: Removed excessive debug output while preserving essential error reporting
- Message Handler Optimization: Streamlined communication between scripts
- LSL Parsing Fixes: Better handling of trailing empty elements in data parsing
- Memory Management: Improved StatFloat lifecycle management
[2.1.0] - 2025-08-03
====================
✨ MAJOR FEATURES ADDED
- Ready State System: Players must mark themselves ready before games can start
- Game Protection: Prevents players from joining games in progress
- Performance Optimization: Reduced lag by limiting confetti to wins only
- Enhanced Bot Intelligence: Improved bot behavior and duplicate number avoidance
🔧 CORE FIXES
- Complete Game Flow: Fixed end-to-end gameplay from start to finish
- Elimination Logic: Proper handling of player elimination and game continuation
- Win Condition: Fixed victory detection and game ending
- Data Synchronization: Resolved corruption in pick data between scripts
- Peril Player Assignment: Fixed race conditions in peril player transitions
🎮 GAMEPLAY IMPROVEMENTS
- Dynamic Picking: Number of picks now properly based on peril player's lives
- Duplicate Prevention: Enhanced system to prevent duplicate number selection
- Dialog Pagination: Improved number selection interface for d30 dice
- Floater Updates: Real-time HUD updates throughout gameplay
- Bot Continuation: Bots now properly continue games when humans are eliminated
🛠️ TECHNICAL ENHANCEMENTS
- Modular Communication: Improved inter-script messaging system
- Error Handling: Comprehensive validation and error recovery
- Memory Management: Better floater cleanup and channel tracking
- Data Encoding: Fixed CSV conflicts with semicolon encoding system
- State Management: Robust game state synchronization across modules
🐛 BUG FIXES
- Fixed missing pick dialogs after game events
- Resolved duplicate message issues between scripts
- Fixed lives reset problems between rounds
- Corrected floater display inconsistencies
- Fixed bot confusion during player elimination
- Resolved pick data corruption issues
- Fixed peril player variable sync problems
⚡ PERFORMANCE
- Removed confetti from life loss (keeping only victory confetti)
- Optimized debug output to reduce lag
- Improved floater management efficiency
- Enhanced bot processing speed
[2.0.0] - 2024-12-XX
====================
🎉 INITIAL MODULAR RELEASE
- Modular Architecture: Separated functionality into specialized scripts
- Bot System: Added AI players for testing and gameplay variety
- Floating HUD: Real-time player statistics display
- Dynamic Dice: Automatic dice sizing based on player count
- Player Management: Runtime player joining and leaving
- Owner Controls: Administrative functions for game management
🎲 CORE GAME FEATURES
- Pick System: Number selection with validation
- Rolling Mechanism: Automated dice rolling with visual effects
- Life Management: 3-life system with elimination
- Peril Tracking: Dynamic peril player assignment
- Victory Conditions: Last player standing wins
🏗️ ARCHITECTURE
- Main Controller: Central game logic and state management
- Dialog Handlers: User interface and input processing
- Roll Module: Dice mechanics and particle effects
- Bot Manager: AI player behavior and automation
- Floater Manager: HUD display coordination
- Game Helpers: Utility functions and calculations
[1.0.0] - 2025-XX-XX
====================
🌟 ORIGINAL RELEASE
- Basic Peril Dice game implementation
- Manual gameplay mechanics
- Simple player tracking
- Basic dice rolling functionality
---
DEVELOPMENT NOTES
================
KNOWN ISSUES
- Debug Output: Extended games may experience minor lag from comprehensive logging
RECENT FIXES (2025-01-08)
- Bot Race Condition: Fixed critical bug where duplicate message handlers prevented proper globalPickedNumbers updates
- Enhanced Bot Logging: Added detailed pick tracking and duplicate detection in Bot Manager
- Message Handler Separation: Separated bot and human pick handling to prevent conflicts
FUTURE ENHANCEMENTS
- Configurable debug levels
- Additional game modes and variants
- Enhanced visual effects and animations
CREDITS
- Original Game Design: Noose the Bunny (djmusica28) - Second Life
- Automation & Development: Enhanced for automated gameplay
- Architecture: Modular LSL system for scalability and maintainability