Commit
This commit is contained in:
348
old/CHANGELOG_STEAM_ICONS_2025-11-09.md
Normal file
348
old/CHANGELOG_STEAM_ICONS_2025-11-09.md
Normal file
@@ -0,0 +1,348 @@
|
||||
# Summary of Changes - Steam Integration & Icon System
|
||||
|
||||
## Date: November 9, 2025
|
||||
|
||||
---
|
||||
|
||||
## 1. Icon System Implementation
|
||||
|
||||
### Created Icon Directory Structure
|
||||
```
|
||||
images/icons/
|
||||
├── items/ # Item icons (weapons, armor, consumables)
|
||||
├── ui/ # UI elements (buttons, menus)
|
||||
├── status/ # Status indicators (HP, stamina)
|
||||
└── actions/ # Action icons (attack, defend, flee)
|
||||
```
|
||||
|
||||
### Icon Specifications
|
||||
- **Format:** SVG (recommended) or PNG
|
||||
- **Size:** 64x64px standard, 128x64px large, 32x32px small
|
||||
- **Naming:** kebab-case matching item IDs (e.g., `iron-sword.svg`)
|
||||
- **Usage:** Icons referenced via `icon_path` field, emojis kept as fallback
|
||||
|
||||
### Documentation
|
||||
- Created `/images/icons/README.md` with full guidelines
|
||||
|
||||
---
|
||||
|
||||
## 2. Database Migration - Steam Support
|
||||
|
||||
### Migration Script: `migrate_steam_support.py`
|
||||
|
||||
**Added Columns:**
|
||||
```sql
|
||||
ALTER TABLE players ADD COLUMN:
|
||||
- steam_id VARCHAR(255) UNIQUE -- Steam user ID
|
||||
- email VARCHAR(255) -- Required for web users
|
||||
- premium_expires_at TIMESTAMP -- NULL = premium, timestamp = trial end
|
||||
- account_type VARCHAR(20) -- 'web', 'steam', 'telegram'
|
||||
```
|
||||
|
||||
**Removed:**
|
||||
- `telegram_id` column (deprecated, no longer supporting Telegram)
|
||||
|
||||
**Indexes Created:**
|
||||
- `idx_players_steam_id` - Fast Steam ID lookups
|
||||
- `idx_players_email` - Email verification/login
|
||||
|
||||
**Constraints:**
|
||||
- `CHECK (account_type IN ('web', 'steam', 'telegram'))`
|
||||
- Steam ID must be unique
|
||||
- Email used for password reset and communications
|
||||
|
||||
### Migration Results
|
||||
```
|
||||
✅ Added columns successfully
|
||||
✅ Created indexes
|
||||
✅ Updated 5 existing users to 'web' account type
|
||||
✅ Dropped telegram_id column (no legacy users found)
|
||||
✅ Added account_type constraint
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. Premium System Design
|
||||
|
||||
### Account Types
|
||||
|
||||
**Web Users:**
|
||||
- Email/password registration
|
||||
- Free trial: Level 1-10
|
||||
- Premium: Full access after payment
|
||||
|
||||
**Steam Users:**
|
||||
- Auto-authenticated via Steam
|
||||
- Always premium (owns game on Steam)
|
||||
- No email/password needed
|
||||
|
||||
### Premium Logic
|
||||
|
||||
**Premium Status:**
|
||||
```python
|
||||
premium_expires_at == NULL # Lifetime premium (purchased or Steam)
|
||||
premium_expires_at > now() # Active trial/subscription
|
||||
premium_expires_at < now() # Expired, back to free tier
|
||||
```
|
||||
|
||||
**Restrictions for Non-Premium (Level 10+):**
|
||||
- ❌ No XP gain after level 10
|
||||
- ✅ Full map access (naturally gated by difficulty)
|
||||
- ✅ Can party with premium players
|
||||
- ✅ All items/crafting/combat features
|
||||
|
||||
---
|
||||
|
||||
## 4. UI Fixes - Equipment Slots
|
||||
|
||||
### Problem
|
||||
Equipment slots changed size when items equipped due to emoji + button content.
|
||||
|
||||
### Solution
|
||||
**Fixed dimensions in `Game.css`:**
|
||||
```css
|
||||
.equipment-slot {
|
||||
min-height: 100px;
|
||||
max-height: 100px;
|
||||
height: 100px;
|
||||
overflow: hidden; /* Prevent content overflow */
|
||||
}
|
||||
```
|
||||
|
||||
**Reduced button sizes:**
|
||||
```css
|
||||
.equipment-action-btn {
|
||||
padding: 0.2rem 0.4rem;
|
||||
font-size: 0.75rem;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.equipment-emoji {
|
||||
font-size: 1.2rem; /* Reduced from 1.5rem */
|
||||
}
|
||||
```
|
||||
|
||||
**Result:** All equipment slots now same size, whether empty or filled.
|
||||
|
||||
---
|
||||
|
||||
## 5. Comprehensive Planning Document
|
||||
|
||||
### Created: `STEAM_AND_PREMIUM_PLAN.md`
|
||||
|
||||
**Contents:**
|
||||
1. **Account System** - Database schema, account types
|
||||
2. **Distribution Channels** - Web, Steam, Standalone
|
||||
3. **Asset Bundling Strategy** - Hybrid approach for desktop
|
||||
4. **Steam Integration** - Steamworks SDK, authentication flow
|
||||
5. **Build Variants** - Web vs Steam vs Standalone configs
|
||||
6. **Premium Enforcement** - XP restrictions, helper functions
|
||||
7. **Implementation Roadmap** - 5-phase plan
|
||||
8. **Tech Stack Recommendations** - Tauri for desktop client
|
||||
9. **Cost Estimates** - $100 Steam fee + payment processing
|
||||
10. **Monetization Strategy** - Pricing options
|
||||
|
||||
**Key Decisions:**
|
||||
- **Desktop Framework:** Tauri (Rust + WebView)
|
||||
- Smaller than Electron (~5MB vs 100MB+)
|
||||
- Better security
|
||||
- Native performance
|
||||
|
||||
- **Asset Strategy:** Hybrid bundling
|
||||
- Bundle core assets (~50MB)
|
||||
- Lazy load rare content
|
||||
- Cache everything locally
|
||||
|
||||
- **Pricing Model:** Steam-paid, web-freemium
|
||||
- Steam: $14.99 (full game)
|
||||
- Web: Free trial to level 10, $4.99 upgrade
|
||||
|
||||
---
|
||||
|
||||
## 6. Next Steps (Prioritized)
|
||||
|
||||
### Immediate (This Week)
|
||||
1. ✅ Database migration complete
|
||||
2. ✅ Icon folders created
|
||||
3. [ ] Update `/api/auth/register` to require email
|
||||
4. [ ] Add premium check functions (`is_player_premium()`)
|
||||
5. [ ] Implement XP restriction for non-premium level 10+
|
||||
|
||||
### Short Term (Next 2 Weeks)
|
||||
6. [ ] Design and create icon set (replace emojis)
|
||||
7. [ ] Payment integration (Stripe)
|
||||
8. [ ] Email verification system
|
||||
9. [ ] Premium upgrade endpoint
|
||||
10. [ ] Premium status UI indicators
|
||||
|
||||
### Medium Term (Next Month)
|
||||
11. [ ] Set up Steamworks partner account
|
||||
12. [ ] Prototype Tauri desktop app
|
||||
13. [ ] Steam authentication flow
|
||||
14. [ ] Asset bundling system
|
||||
|
||||
### Long Term (2-3 Months)
|
||||
15. [ ] Complete Steam integration
|
||||
16. [ ] Desktop client with auto-updater
|
||||
17. [ ] Beta testing
|
||||
18. [ ] Official launch
|
||||
|
||||
---
|
||||
|
||||
## 7. Required External Setup
|
||||
|
||||
### Steamworks Partner
|
||||
1. Sign up at: https://partner.steamgames.com/
|
||||
2. Pay $100 app submission fee (one-time)
|
||||
3. Create app entry
|
||||
4. Get Steam App ID and Web API Key
|
||||
5. Download Steamworks SDK
|
||||
|
||||
### Payment Processing
|
||||
1. **Stripe Account**
|
||||
- Sign up: https://stripe.com/
|
||||
- Get API keys
|
||||
- Set up webhook for payment events
|
||||
|
||||
2. **PayPal Business** (optional)
|
||||
- Alternative payment method
|
||||
- Popular in some regions
|
||||
|
||||
### CDN for Assets
|
||||
1. **CloudFlare** (recommended, free tier)
|
||||
- Fast global delivery
|
||||
- Free SSL
|
||||
- DDoS protection
|
||||
|
||||
2. **AWS CloudFront** (alternative)
|
||||
- More control
|
||||
- Pay per use (~$0.085/GB)
|
||||
|
||||
---
|
||||
|
||||
## 8. Files Modified
|
||||
|
||||
### New Files
|
||||
- `/images/icons/README.md` - Icon system documentation
|
||||
- `/migrate_steam_support.py` - Database migration script
|
||||
- `/STEAM_AND_PREMIUM_PLAN.md` - Complete implementation plan
|
||||
- THIS FILE - Change summary
|
||||
|
||||
### Modified Files
|
||||
- `/pwa/src/components/Game.css` - Fixed equipment slot sizing
|
||||
- Database: `players` table structure updated
|
||||
|
||||
### New Directories
|
||||
```
|
||||
/images/icons/
|
||||
├── items/
|
||||
├── ui/
|
||||
├── status/
|
||||
└── actions/
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 9. Breaking Changes
|
||||
|
||||
### For Existing Users
|
||||
- ⚠️ `telegram_id` removed (no Telegram users in database)
|
||||
- ✅ Existing users marked as `account_type='web'`
|
||||
- ✅ All existing users start with free tier (can be upgraded)
|
||||
|
||||
### For API Clients
|
||||
- ⚠️ `/api/auth/register` will soon require `email` field (not yet enforced)
|
||||
- ✅ All existing endpoints remain compatible
|
||||
- ✅ New optional fields in player responses
|
||||
|
||||
---
|
||||
|
||||
## 10. Testing Checklist
|
||||
|
||||
### Database Migration
|
||||
- [x] Migration runs without errors
|
||||
- [x] Existing users preserved
|
||||
- [x] Indexes created successfully
|
||||
- [x] Constraints applied
|
||||
|
||||
### UI Changes
|
||||
- [ ] Equipment slots same size empty/filled
|
||||
- [ ] Button text doesn't wrap
|
||||
- [ ] Icons fit within slots
|
||||
- [ ] Mobile responsive
|
||||
|
||||
### Premium System (To Test)
|
||||
- [ ] XP gain stops at level 10 for non-premium
|
||||
- [ ] Premium status displayed correctly
|
||||
- [ ] Steam users auto-premium
|
||||
- [ ] Payment flow works
|
||||
|
||||
---
|
||||
|
||||
## 11. Security Considerations
|
||||
|
||||
### Added
|
||||
- Email field for account recovery
|
||||
- Steam ID validation (external verification)
|
||||
- Account type constraints
|
||||
|
||||
### Todo
|
||||
- Email verification before account activation
|
||||
- Steam ticket validation on server
|
||||
- Rate limiting on premium upgrade attempts
|
||||
- Secure payment token handling
|
||||
|
||||
---
|
||||
|
||||
## 12. Performance Impact
|
||||
|
||||
### Database
|
||||
- **Indexes added:** +2 (steam_id, email) - Minimal impact
|
||||
- **Column additions:** +4 per player - ~100 bytes per row
|
||||
- **Query performance:** Improved (indexed lookups)
|
||||
|
||||
### UI
|
||||
- **Fixed slot heights:** Prevents layout shifts (better CLS)
|
||||
- **Smaller buttons:** Reduced DOM size
|
||||
- **Icon system:** No impact yet (emojis still used)
|
||||
|
||||
---
|
||||
|
||||
## Questions for Product Decision
|
||||
|
||||
1. **Free Tier Level Cap:**
|
||||
- Current: Level 10
|
||||
- Alternative: Level 5? Level 15?
|
||||
- Recommendation: Level 10 (enough to hook players)
|
||||
|
||||
2. **Premium Pricing:**
|
||||
- Web upgrade: $4.99? $9.99?
|
||||
- Steam full game: $14.99? $19.99?
|
||||
- Recommendation: $4.99 web, $14.99 Steam
|
||||
|
||||
3. **Email Verification:**
|
||||
- Required immediately on registration?
|
||||
- Or allow play, verify for premium upgrade?
|
||||
- Recommendation: Optional initially, required for premium
|
||||
|
||||
4. **Steam-Exclusive Features:**
|
||||
- Any features only for Steam users?
|
||||
- Or complete parity with web premium?
|
||||
- Recommendation: Complete parity (fair for web buyers)
|
||||
|
||||
---
|
||||
|
||||
## Contact & Support
|
||||
|
||||
For questions about this implementation:
|
||||
- Steam Integration: See `STEAM_AND_PREMIUM_PLAN.md` Section 4
|
||||
- Database Schema: See `migrate_steam_support.py`
|
||||
- Icon System: See `/images/icons/README.md`
|
||||
- UI Changes: See `pwa/src/components/Game.css` lines 1955-2050
|
||||
|
||||
---
|
||||
|
||||
**Migration Status:** ✅ Complete and Deployed
|
||||
**UI Fixes:** ✅ Complete (Needs Testing)
|
||||
**Planning:** ✅ Complete
|
||||
**Implementation:** 🔄 Ready to Begin
|
||||
Reference in New Issue
Block a user