Welcome to Raph Koster's personal website: MMOs, gaming, writing, art, music, books.
Welcome to Raph Koster's personal website: MMOs, gaming, writing, art, music, books.

The whole Web
Raph's Website


Essays
These are full-blown essays, papers, and articles.

Presentations
Slideshows and presentation materials from conferences.

Interviews and Panels
Reprints of non-game-specific interviews, and transcripts of panels and roundtables.

Snippets
Excerpts from blog, newsgroup, and forum posts.

Laws
The "Laws of Online World Design" in various forms.

Timeline
A timeline of developments in online worlds.

A Theory of Fun for Game Design
My book on why games matter and what fun is.

Insubstantial Pageants
A book I started and never finished outlining the basics of online world design.

Links
Links to resources on online world design.



Eric Tts Page

input[type="range"] { flex: 1; }

.controls { margin: 20px 0; display: grid; gap: 15px; } eric tts

// Initialize Eric TTS document.addEventListener('DOMContentLoaded', () => { window.ericTTS = new EricTTS(); }); // Save/Load Settings class Settings { saveSettings() { const settings = { rate: document.getElementById('rate').value, pitch: document.getElementById('pitch').value, voice: document.getElementById('voiceSelect').value }; localStorage.setItem('ericTTS_settings', JSON.stringify(settings)); } loadSettings() { const saved = localStorage.getItem('ericTTS_settings'); if (saved) { const settings = JSON.parse(saved); document.getElementById('rate').value = settings.rate; document.getElementById('pitch').value = settings.pitch; document.getElementById('voiceSelect').value = settings.voice; } } } input[type="range"] { flex: 1; }

speak() { const text = this.textInput.value.trim(); if (!text) { this.showNotification('Please enter some text to speak!', 'warning'); return; } // Stop any ongoing speech this.stop(); // Create new utterance this.utterance = new SpeechSynthesisUtterance(text); // Set properties this.utterance.rate = parseFloat(this.rateSlider.value); this.utterance.pitch = parseFloat(this.pitchSlider.value); // Set voice if selected const selectedVoice = this.voiceSelect.value; if (selectedVoice) { const voices = this.synth.getVoices(); const voice = voices.find(v => v.name === selectedVoice); if (voice) this.utterance.voice = voice; } // Event handlers this.utterance.onstart = () => { this.isPlaying = true; this.speakBtn.disabled = true; this.showNotification('🔊 Speaking...', 'info'); }; this.utterance.onend = () => { this.isPlaying = false; this.speakBtn.disabled = false; this.showNotification('✅ Speech completed', 'success'); }; this.utterance.onerror = (event) => { console.error('TTS Error:', event); this.isPlaying = false; this.speakBtn.disabled = false; this.showNotification('Error occurred during speech', 'error'); }; // Speak this.synth.speak(this.utterance); } '#ff9800' : '#2196f3'}

showNotification(message, type = 'info') { // Create notification element const notification = document.createElement('div'); notification.textContent = message; notification.style.cssText = ` position: fixed; bottom: 20px; right: 20px; padding: 12px 20px; background: ${type === 'error' ? '#f44336' : type === 'success' ? '#4caf50' : type === 'warning' ? '#ff9800' : '#2196f3'}; color: white; border-radius: 8px; font-size: 14px; z-index: 1000; animation: slideInRight 0.3s ease-out; `; document.body.appendChild(notification); setTimeout(() => { notification.style.animation = 'slideOutRight 0.3s ease-out'; setTimeout(() => notification.remove(), 300); }, 3000); } }

select, input[type="range"] { width: 100%; padding: 10px; border: 2px solid #e0e0e0; border-radius: 8px; font-size: 14px; }

@media (max-width: 600px) { .tts-card { padding: 20px; }

Child's Play


A Theory of Fun
for Game Design

Cover of A Theory of Fun

Press

Excerpts

Buy from Amazon eric tts


After the Flood

Cover for After the Flood CD

Available on CD
$14.99


More stuff to buy

Gratuitous Penguin 2006 Wall Calendar

Gratuitous Penguin 2006 Wall Calendar
$18.99


Receive CafePress Updates!

LegendMUD

click here to visit the Legend website

"The world the way they thought it was..."