A fast-paced mobile trivia game that rewards quick thinking.
The Concept
Most trivia apps feel like homework. Slow, methodical, no energy. Trivia Sprint flips that - it's trivia as a sport. You're racing against the clock, building streaks, and feeling the pressure of each tick. Get it right fast, score big. Hesitate, and watch your bonus evaporate.
Game Modes
Sprint Mode - The core experience. 10 questions, 10 seconds each. Answer correctly to bank points; answer quickly to multiply them. A perfect run with fast answers scores 3x a slow perfect run.
Daily Challenge - One new challenge every day, same questions for everyone. Compare your score on the leaderboard. Miss a day? It's gone forever.
Topic Deep Dive - Pick a category and see how far you can go. Questions get progressively harder. How many can you answer before you miss three?
Progression System
XP & Levels - Every game earns XP. Level up to unlock new topics and cosmetics. Higher levels require more XP, but also show mastery.
Topic Unlocks - Start with General Knowledge, History, and Science. As you level up, unlock specialized topics:
- Level 5: Movies, Music, Sports
- Level 10: Geography, Literature, Art
- Level 15: Technology, Nature, Mythology
- Level 20: Expert packs (harder questions)
Streak Bonuses - Answer multiple questions correctly in a row for escalating multipliers. Miss one and the streak resets. High-risk, high-reward.
Polish & Feel
Audio Feedback - Satisfying sounds for correct answers, gentle buzzes for wrong ones. Music that builds tension as the timer runs low.
Smooth Animations - Cards flip, scores fly, streaks flash. Everything moves at 60fps. The game feels fast.
Offline Play - Questions are downloaded in batches. No internet? No problem. Play on the subway, on a plane, wherever.
Monetization (Fair Model)
Free to Play - All core gameplay is free, forever. No energy systems, no paywalls blocking progress.
Optional Purchases:
- Hint Packs - Get hints on hard questions
- Cosmetics - Custom themes and avatars
- Premium Topics - Niche categories for enthusiasts
- Ad Removal - One-time purchase
Rewarded Ads - Watch an ad, get a free hint. Your choice, never forced.
A React Native game with complex state management, animation systems, and monetization integration.
Architecture
App
|
+-- Navigation (Stack)
| +-- HomeScreen
| +-- GameScreen
| +-- ResultsScreen
| +-- LeaderboardScreen
| +-- ShopScreen
|
+-- State (Zustand)
| +-- gameStore (current game state)
| +-- playerStore (XP, level, unlocks)
| +-- settingsStore (preferences)
|
+-- Services
+-- QuestionService (fetch & cache)
+-- AudioService (sound effects)
+-- AdService (Google Mobile Ads)
+-- PurchaseService (react-native-iap)
Question System
Data Model:
interface Question {
id: string;
text: string;
answers: string[]; // Always 4 options
correctIndex: number;
category: string;
difficulty: 1 | 2 | 3; // Easy, Medium, Hard
explanation?: string; // Shown after answer
}
Batch Loading - Questions downloaded in packs of 100 per category. Stored in AsyncStorage. On game start, random selection from local cache ensures instant load and offline play.
Difficulty Progression - Topic Deep Dive mode uses weighted random selection that shifts toward harder questions as you progress.
Scoring Algorithm
function calculateScore(correct: boolean, timeMs: number, streak: number) {
if (!correct) return 0;
const basePoints = 100;
const timeBonus = Math.max(0, (10000 - timeMs) / 100); // Up to 100 bonus
const streakMultiplier = 1 + (streak * 0.25); // +25% per streak
return Math.round((basePoints + timeBonus) * streakMultiplier);
}
// Fast answer (2s) with 5 streak: (100 + 80) * 2.25 = 405 points
// Slow answer (9s) with no streak: (100 + 10) * 1.0 = 110 points
Animation Implementation
react-native-reanimated 4.x - All animations on UI thread:
// Card flip animation
const flipProgress = useSharedValue(0);
const cardStyle = useAnimatedStyle(() => ({
transform: [
{ perspective: 1000 },
{ rotateY: `${interpolate(flipProgress.value, [0, 1], [0, 180])}deg` }
],
}));
// Trigger flip
flipProgress.value = withSpring(1, { damping: 15 });
Score Fly Animation - Points earned animate from question to score counter using shared element transitions.
Audio System
expo-av for sound management:
class AudioService {
private sounds: Map<string, Audio.Sound>;
async preload() {
// Load all sounds at app start
this.sounds.set('correct', await Audio.Sound.createAsync(correctSfx));
this.sounds.set('wrong', await Audio.Sound.createAsync(wrongSfx));
this.sounds.set('tick', await Audio.Sound.createAsync(tickSfx));
}
play(name: string) {
this.sounds.get(name)?.replayAsync();
}
}
Monetization Integration
Google Mobile Ads:
- Banner ads on results screen
- Rewarded ads for free hints (user-initiated)
- No interstitials (too disruptive for fast gameplay)
react-native-iap for purchases:
- Consumables (hint packs)
- Non-consumables (ad removal, premium topics)
- Receipt validation server-side