- Replace Update_Checker.lsl with enhanced Update_Receiver.lsl - Add Peril_Dice_Updater.lsl external updater box - Integrate 'Check for Updates' into Admin Menu → Troubleshooting - Professional dialog system with Install Update button - Automatic updater box detection within 96m range - Secure PIN-based script installation via llRemoteLoadScriptPin - Manual JSON parsing for LSL 2048-character limit workaround - Maintain backward compatibility with chat commands - Update manifest to v2.8.8 with Update_Receiver.lsl entry New Features: - One-click automatic update installation - Professional user experience matching commercial SL products - External updater architecture for easy distribution - Enhanced GitHub API integration with better error handling
4.8 KiB
4.8 KiB
GitHub-Powered External Updater System
Architecture: GitHub + Automatic Installation
Components:
1. GitHub Integration (Existing)
- ✅ GitHub Releases API for version detection
- ✅ GitHub raw file downloads for script content
- ✅ Zero infrastructure - uses existing GitHub + Jenkins
- ✅ Professional version management
2. Peril_Dice_Updater.lsl (New - External Box)
- Downloads scripts directly from GitHub raw URLs
- Uses GitHub API to get latest release info
- Installs scripts automatically via llRemoteLoadScriptPin()
- Handles the 2048-character LSL limit properly
3. Update_Receiver.lsl (Modified existing Update_Checker)
- Scans for nearby updater boxes
- Still checks GitHub API for version comparison
- Coordinates automatic installation with updater box
- Validates successful updates
User Experience Flow:
Step 1: Get Updater
- User receives "Peril Dice GitHub Updater v2.8.7" box
- Box description: "Automatic GitHub-powered updater for Peril Dice"
Step 2: Check & Install
- User rezzes updater box near their Peril Dice game
- User touches game → Admin Menu → "Check for Updates"
- Game checks GitHub API: "v2.8.7 available!"
- User clicks "Install Update"
- Game connects to nearby updater box
- Updater downloads all needed scripts from GitHub
- Updater installs scripts automatically: "Installing 3 of 17..."
- Game validates: "✅ Update complete! Now running v2.8.7"
- User deletes updater box
Technical Implementation:
GitHub URLs Used:
Version Check: https://api.github.com/repos/RebeccaNod1/Peril/releases/latest
Script Downloads: https://raw.githubusercontent.com/RebeccaNod1/Peril/main/ScriptName.lsl
Script Installation Process:
// In Updater Box:
1. llHTTPRequest() to download script from GitHub
2. llRemoteLoadScriptPin() to install in target game
3. Repeat for all 17 scripts in correct order
// In Target Game:
1. llSetRemoteScriptAccessPin() to allow updater access
2. Validate each script installation
3. Report progress to user
Benefits of This Approach:
✅ GitHub Integration Maintained:
- Same zero-infrastructure benefits
- Automatic version detection
- Professional release management
- Leverages existing CI/CD pipeline
- No separate update server needed
✅ User Experience Improved:
- One-click automatic installation
- No manual copy/paste required
- Progress indicators and feedback
- Impossible to make installation errors
- Professional software-like experience
✅ Creator Benefits:
- Same development workflow (commit → push → tag)
- GitHub releases automatically available
- Single updater box for all users
- Easy to distribute via marketplace/group
Files to Create:
1. Peril_Dice_Updater.lsl
// External updater box script
- GitHub API integration (version checking)
- GitHub raw file downloads (script content)
- Remote script installation
- Progress reporting
- Error handling for network issues
2. Update_Receiver.lsl
// Replace Update_Checker.lsl in main game
- Scan for nearby GitHub updater boxes
- GitHub version checking (same as before)
- Coordinate automatic installation
- Validate successful updates
3. github-manifest.json (in repository)
{
"version": "2.8.7",
"scripts": [
{
"name": "Main_Controller_Linkset.lsl",
"link": 1,
"url": "https://raw.githubusercontent.com/RebeccaNod1/Peril/main/Main_Controller_Linkset.lsl",
"required": true
},
// ... all 17 scripts with GitHub URLs
]
}
Advantages Over Current System:
| Current (Manual) | New (GitHub + Auto) |
|---|---|
| ❌ User copies/pastes each script | ✅ One-click automatic installation |
| ❌ Easy to make mistakes | ✅ Impossible to mess up |
| ❌ Must update all scripts manually | ✅ Updates only changed scripts |
| ❌ No progress indication | ✅ Clear progress and status |
| ✅ Uses GitHub (good!) | ✅ Still uses GitHub (great!) |
Implementation Steps:
Phase 1: Build Core System
- Create
Peril_Dice_Updater.lslwith GitHub integration - Convert
Update_Checker.lsl→Update_Receiver.lsl - Create
github-manifest.jsonlisting all scripts - Test basic single-script updates
Phase 2: Full Integration
- Test complete 17-script updates
- Add progress indicators and error handling
- Test with multiple game instances
- Validate version tracking
Phase 3: Distribution
- Create professional updater box object
- Write user instructions
- Set up distribution (marketplace/group/etc.)
- Create demo videos
This gives you all the benefits of GitHub (zero infrastructure, automatic detection, professional workflow) plus the automatic installation that users expect from professional Second Life products!
Should I start building the GitHub-powered external updater system?