This system uses the Hive blockchain as a heartbeat mechanism for time-based game events, eliminating the need for traditional server-side timers.
Overview
Instead of using traditional heartbeat functions or server-side timers, this system leverages the Hive blockchain's natural flow of operations and blocks to trigger time-based events. Each block on the Hive blockchain represents approximately 3 seconds of real time, providing a reliable and decentralized timing mechanism.
How It Works
Blockchain Listening: The system listens to new blocks on the Hive blockchain
Time Event Registration: Rooms can be registered for time-based events with specific intervals
Phase Management: Each time event has multiple phases that cycle based on the configured interval
Dynamic Updates: Room exits and descriptions change automatically based on the current phase
Ferry Room Example
The ferry room demonstrates this system with 6 phases:
Docked at Port A - Players can exit north to Port A or board the ferry
Departing Port A - Ferry is leaving, only boarding available
At Sea - Ferry is sailing, only boarding available
Arriving at Port B - Ferry is approaching Port B, only boarding available
Docked at Port B - Players can exit south to Port B or board the ferry
Departing Port B - Ferry is returning to Port A, only boarding available
Usage
For Players
Navigate to a ferry room (e.g., ferry-port-a, ferry-port-b, ferry-interior)
The room's exits will change automatically based on the ferry's current phase
Wait for the ferry to dock at your desired port before attempting to exit
For Builders
Click the "Time Events" button in the sidebar (requires builder permissions)
Create new ferry rooms with custom configurations:
Room Permlink: The unique identifier for the room
Title: Display name for the ferry
Description: Description of the ferry
Interval Blocks: How many blocks between phase changes (default: 100 blocks ≈ 5 minutes)
Start Phase: Which phase to begin with (0-5)
For Developers
Creating Custom Time Events
// Register a room for time-based eventsconsttimeEventConfig:TimeEventConfig={type:'ferry',// or 'market', 'weather', 'custom'intervalBlocks:100,// Change every 100 blockslastChangeBlock:0,// Will be set automaticallycurrentPhase:0,phases:[{phase:0,name:"Phase 1",description:"Description for phase 1",exits:{"north":"destination-1","south":"destination-2"},duration:100},// ... more phases]};gameState.registerTimeEventRoom('my-room-permlink',timeEventConfig);
Listening for Time Events
// The system automatically emits 'timeEventDetected' eventshiveClient.on('timeEventDetected',(timeEvent:BlockchainTimeEvent)=>{console.log('Time event detected:',timeEvent);// Handle the phase change});
Technical Details
Block Timing
Hive Block Time: ~3 seconds per block
Default Ferry Interval: 100 blocks ≈ 5 minutes
Customizable: Any interval can be set based on game needs
Event Types
ferry: Transportation between locations
market: Trading and commerce events
weather: Environmental changes
custom: User-defined events
Phase Structure
Each phase includes:
phase: Numeric identifier
name: Display name for the phase
description: Description shown to players
exits: Available exits during this phase
duration: How long this phase lasts (in blocks)
Benefits
Decentralized: No central server required for timing
Reliable: Uses blockchain's immutable time flow
Scalable: Can handle multiple time events simultaneously
Transparent: All timing is based on public blockchain data