game-developer
Game Developer & Designer Skill
Build complete, polished games with professional-grade mechanics, visuals, and player experience.
Core Workflow
- Analyze — Understand game type, platform, core loop, target audience
- Design — Define mechanics, progression, visual style, audio needs
- Architect — Plan component structure, state management, game loop
- Implement — Build iteratively: core → polish → juice
- Playtest — Test feel, balance, edge cases
Game Design Fundamentals
The Core Loop
Every game needs a satisfying core loop. Define it explicitly:
Action → Challenge → Reward → Progression → (repeat)
Example (Pong-style): Hit ball → Keep rally → Score point → Level up → Harder AI
Player Experience Pillars
- Agency: Player actions feel meaningful and responsive
- Challenge: Difficulty matches skill, with room to grow
- Reward: Clear feedback for success (visual, audio, progression)
- Flow: Minimize friction between player intent and game response
Platform-Specific Guidance
React Native Games: See references/react-native-games.md Web/HTML5 Games: See references/web-games.md Game Math & Physics: See references/game-physics.md
Implementation Patterns
Game Loop Architecture
// Core game loop pattern
const useGameLoop = (updateFn, isRunning) => {
const frameRef = useRef();
const lastTimeRef = useRef(0);
useEffect(() => {
if (!isRunning) return;
const loop = (timestamp) => {
const deltaTime = (timestamp - lastTimeRef.current) / 1000;
lastTimeRef.current = timestamp;
updateFn(deltaTime);
frameRef.current = requestAnimationFrame(loop);
};
frameRef.current = requestAnimationFrame(loop);
return () => cancelAnimationFrame(frameRef.current);
}, [isRunning, updateFn]);
};
State Management
Separate concerns clearly:
- Game State: Positions, scores, level, entities
- UI State: Menus, modals, settings
- Input State: Current touches, gestures, keys
- Audio State: What's playing, volume levels
Collision Detection
Start simple, optimize only if needed:
// AABB collision (rectangles)
const checkCollision = (a, b) => (
a.x < b.x + b.width &&
a.x + a.width > b.x &&
a.y < b.y + b.height &&
a.y + a.height > b.y
);
// Circle collision
const circleCollision = (a, b) => {
const dx = a.x - b.x;
const dy = a.y - b.y;
const distance = Math.sqrt(dx * dx + dy * dy);
return distance < a.radius + b.radius;
};
Game Feel ("Juice")
Good games feel responsive and alive. Add juice through:
Visual Feedback
- Screen shake on impacts (subtle: 2-5px, dramatic: 10-15px)
- Particle effects for collisions, explosions, trails
- Squash/stretch on bounces and impacts
- Flash effects on damage or scoring
- Trails behind fast-moving objects
Audio Feedback
- Vary pitch slightly on repeated sounds (±10%)
- Layer sounds for impact (hit + whoosh + bass)
- Use rising tones for positive events, falling for negative
- Add subtle ambient soundscape
Timing & Easing
- Use easing functions, never linear motion
- Add anticipation before actions (wind-up)
- Add follow-through after actions (settle)
- Hit-stop/freeze frames on important impacts (16-50ms)
AI Opponent Design
Difficulty Scaling
const AI_CONFIGS = {
easy: {
reactionDelay: 200, // ms before responding
predictionError: 0.3, // randomness in targeting
speedMultiplier: 0.7, // movement speed
mistakeChance: 0.15 // chance to miss intentionally
},
medium: {
reactionDelay: 100,
predictionError: 0.15,
speedMultiplier: 0.9,
mistakeChance: 0.05
},
hard: {
reactionDelay: 50,
predictionError: 0.05,
speedMultiplier: 1.0,
mistakeChance: 0.01
}
};
AI Behavior Patterns
- Reactive: Respond to current ball position
- Predictive: Calculate where ball will arrive
- Adaptive: Adjust strategy based on player patterns
- Personality: Add quirks (aggressive, defensive, erratic)
Level Design & Progression
Difficulty Curve
Levels 1-10: Tutorial zone — Teach mechanics gently
Levels 11-25: Learning zone — Introduce variations
Levels 26-50: Challenge zone — Test mastery
Levels 51-75: Expert zone — Combine mechanics
Levels 76-100: Mastery zone — Peak difficulty
Progression Systems
- Unlocks: New content as reward for progress
- Upgrades: Permanent improvements
- Achievements: Recognition for skill/exploration
- Leaderboards: Social competition
Level Variation Techniques
- Modify parameters (speed, size, count)
- Add/remove elements
- Change layouts
- Introduce new mechanics
- Combine existing mechanics
Visual Style Guidelines
Retro/Arcade (80s)
- Neon colors:
#ff00ff,#00ffff,#39ff14,#ff6b35 - Scanline/CRT effects
- Pixel fonts or bold geometric sans-serif
- Grid backgrounds, glow effects
- High contrast, dark backgrounds
Modern Minimal
- Limited color palette (2-3 colors)
- Clean geometric shapes
- Generous whitespace
- Subtle shadows and depth
- Smooth animations
Pixel Art
- Consistent pixel scale (don't mix sizes)
- Limited palette per sprite
- Clear silhouettes
- Animation principles still apply
Sound Design Checklist
Essential sounds for most games:
- Menu navigation (select, confirm, back)
- Core action sounds (hit, collect, shoot)
- Feedback sounds (success, failure, damage)
- Ambient/background music
- Transition sounds (level start, game over)
Implementation tips:
- Preload all sounds before gameplay
- Use audio sprites for web
- Implement volume controls (music/SFX separate)
- Support mute toggle
- Vary sounds slightly to avoid repetition fatigue
Performance Optimization
Critical for Games
- Target 60 FPS consistently
- Minimize garbage collection (object pooling)
- Use
useMemo/useCallbackfor expensive calculations - Batch state updates
- Profile before optimizing
React Native Specific
- Use
react-native-reanimatedfor animations - Avoid JS thread blocking during gameplay
- Use native driver for animations when possible
- Consider
react-native-game-enginefor complex games
Project Structure Template
game-name/
├── src/
│ ├── components/
│ │ ├── game/ # Game entities (Player, Ball, Enemy)
│ │ ├── ui/ # UI components (Button, Modal, Score)
│ │ └── effects/ # Visual effects (Particles, Glow)
│ ├── screens/ # Full screens (Menu, Game, Settings)
│ ├── hooks/ # Custom hooks (useGameLoop, useSound)
│ ├── context/ # State management
│ ├── utils/ # Helpers (physics, math, collision)
│ ├── config/ # Constants, level data, settings
│ ├── assets/
│ │ ├── sounds/
│ │ ├── images/
│ │ └── fonts/
│ └── types/ # TypeScript definitions
├── App.tsx
└── package.json
Quality Checklist
Before considering a game complete:
Gameplay
- Core loop is satisfying
- Controls feel responsive (<100ms latency)
- Difficulty curve is smooth
- Edge cases handled (pause, background, resume)
Polish
- Visual feedback for all actions
- Sound effects for key events
- Smooth transitions between states
- Loading states where needed
UX
- Clear how to play (tutorial or intuitive)
- Progress is saved
- Settings are accessible
- Pause functionality works
Technical
- Consistent 60 FPS
- No memory leaks
- Handles interruptions gracefully
- Works on target devices/browsers
More from johanruttens/paddle-battle
apple-app-store-agent
Comprehensive agent for preparing and generating all assets needed for Apple App Store submission. Use when user needs to prepare an iOS/iPadOS/macOS app for App Store release, including generating app metadata (descriptions, promotional text, keywords), creating app icons, designing screenshots, preparing privacy policy URLs, and organizing fastlane-compatible folder structures. Triggers on requests like "prepare my app for App Store", "create App Store screenshots", "generate app description", "make app icon", or "set up fastlane metadata".
9skill-writer
Guide users through creating Agent Skills for Claude Code. Use when the user wants to create, write, author, or design a new Skill, or needs help with SKILL.md files, frontmatter, or skill structure.
5rn-security-audit
Security audit skill for React Native applications. Use when reviewing code for vulnerabilities, detecting leaked secrets (API keys, tokens, credentials), identifying exposed personal data (PII), checking insecure storage, validating authentication flows, reviewing network security, and ensuring compliance with mobile security best practices (OWASP MASVS). Covers both JavaScript/TypeScript and native iOS/Android code.
5react-native-expert
Expert guidance for building mobile applications with React Native and Expo. Use when the user asks to create, modify, debug, or architect mobile apps, implement native features (camera, notifications, storage, navigation), set up React Native projects, work with Expo or bare React Native workflows, integrate with device APIs, handle app state management, or optimize mobile performance. Triggers on mobile app development, React Native, Expo, iOS/Android cross-platform development.
5qa-engineer
Expert guidance for software testing and quality assurance. Use when the user asks to write tests, create test plans, review code for bugs, perform code reviews, write test cases, set up testing frameworks, debug issues, validate requirements, create bug reports, perform regression testing, or improve test coverage. Triggers on testing, QA, quality assurance, test cases, bug reports, test automation, unit tests, integration tests, E2E tests, test coverage, debugging, code review.
4rn-visual-testing
Visual testing skill for React Native apps across iPhone models. Use when testing app appearance on iPhone 11 through 17 (all variants including Pro, Pro Max, Plus, Mini, Air, and SE). Covers screenshot capture, simulator configuration, screen dimension validation, safe area handling, Dynamic Island/notch compatibility, and pixel-perfect verification across all iPhone screen sizes and resolutions.
4