Add comprehensive core game mechanics documentation
This commit is contained in:
229
knowledge-base/game-design/core-mechanics.md
Normal file
229
knowledge-base/game-design/core-mechanics.md
Normal file
@@ -0,0 +1,229 @@
|
||||
# Core Game Mechanics Documentation
|
||||
|
||||
## Connection System
|
||||
|
||||
### Basic Mechanics
|
||||
The core gameplay revolves around connecting neural network nodes to form specific patterns. Players click and drag between nodes to create connections that match a target pattern shown as dotted lines.
|
||||
|
||||
### Node Types
|
||||
```javascript
|
||||
const nodeTypes = {
|
||||
normal: {
|
||||
color: '#333366',
|
||||
activeColor: '#00d4ff',
|
||||
description: 'Standard connection points'
|
||||
},
|
||||
source: {
|
||||
color: '#00ff64',
|
||||
description: 'Starting points for network patterns'
|
||||
},
|
||||
target: {
|
||||
color: '#ff6400',
|
||||
description: 'End points for network completion'
|
||||
}
|
||||
};
|
||||
```
|
||||
|
||||
### Connection Rules
|
||||
1. **Valid Connections**: Any node can connect to any other node
|
||||
2. **Bidirectional**: All connections work in both directions
|
||||
3. **No Self-Connection**: Nodes cannot connect to themselves
|
||||
4. **No Duplicates**: Only one connection allowed between any two nodes
|
||||
5. **Visual Feedback**: Invalid attempts show clear feedback
|
||||
|
||||
### Interaction Patterns
|
||||
- **Desktop**: Click and drag between nodes
|
||||
- **Mobile**: Tap and drag with finger
|
||||
- **Feedback**: Immediate visual response to all interactions
|
||||
- **Error Handling**: Graceful handling of invalid connection attempts
|
||||
|
||||
## Level Generation System
|
||||
|
||||
### Difficulty Progression
|
||||
```javascript
|
||||
const difficultyProgression = {
|
||||
beginner: {
|
||||
levels: '1-5',
|
||||
nodes: '3-4',
|
||||
connections: '2-3',
|
||||
timeLimit: '60s',
|
||||
focus: 'Learning basic mechanics'
|
||||
},
|
||||
intermediate: {
|
||||
levels: '6-15',
|
||||
nodes: '4-7',
|
||||
connections: '3-6',
|
||||
timeLimit: '50-60s',
|
||||
focus: 'Pattern recognition skills'
|
||||
},
|
||||
advanced: {
|
||||
levels: '16-25',
|
||||
nodes: '7-10',
|
||||
connections: '6-12',
|
||||
timeLimit: '40-50s',
|
||||
focus: 'Complex network strategy'
|
||||
},
|
||||
expert: {
|
||||
levels: '26+',
|
||||
nodes: '10-12',
|
||||
connections: '8-16',
|
||||
timeLimit: '30-45s',
|
||||
focus: 'Master-level challenges'
|
||||
}
|
||||
};
|
||||
```
|
||||
|
||||
### Pattern Types
|
||||
1. **Linear Chains**: Simple A→B→C→D connections
|
||||
2. **Hub Networks**: Central node connecting to multiple others
|
||||
3. **Parallel Paths**: Multiple independent connection chains
|
||||
4. **Complex Networks**: Intricate interconnected patterns
|
||||
5. **Symmetrical Designs**: Balanced, aesthetically pleasing layouts
|
||||
|
||||
### Algorithm Approach
|
||||
```javascript
|
||||
function generateLevel(levelNumber) {
|
||||
const nodeCount = Math.min(5 + Math.floor(levelNumber / 2), 12);
|
||||
const connectionCount = Math.min(nodeCount - 1 + Math.floor(levelNumber / 3), nodeCount * 2);
|
||||
|
||||
// Place nodes in circular pattern with randomization
|
||||
const nodes = generateNodePositions(nodeCount);
|
||||
|
||||
// Generate valid connection pattern
|
||||
const targetPattern = generateConnections(nodes, connectionCount);
|
||||
|
||||
// Ensure pattern is solvable and engaging
|
||||
return validatePattern(nodes, targetPattern);
|
||||
}
|
||||
```
|
||||
|
||||
## Scoring System
|
||||
|
||||
### Point Calculation
|
||||
```javascript
|
||||
const scoring = {
|
||||
basePoints: {
|
||||
levelComplete: 100,
|
||||
timeBonus: 10, // per second remaining
|
||||
levelMultiplier: 'level * 50'
|
||||
},
|
||||
bonuses: {
|
||||
perfectCompletion: 'no invalid attempts * 50',
|
||||
speedBonus: 'completion under 30s * 100',
|
||||
consecutiveLevels: 'streak multiplier * 25'
|
||||
}
|
||||
};
|
||||
```
|
||||
|
||||
### Example Score Calculation
|
||||
```
|
||||
Level 5 completion in 35 seconds with no mistakes:
|
||||
- Base: 100 points
|
||||
- Time bonus: 25 seconds remaining * 10 = 250 points
|
||||
- Level multiplier: 5 * 50 = 250 points
|
||||
- Perfect bonus: 50 points
|
||||
- Total: 650 points
|
||||
```
|
||||
|
||||
### High Score Tracking
|
||||
- Local storage persistence
|
||||
- Weekly/monthly leaderboards (future)
|
||||
- Achievement system integration
|
||||
- Progress tracking across sessions
|
||||
|
||||
## Timing and Pacing
|
||||
|
||||
### Time Limits
|
||||
```javascript
|
||||
const timingSystem = {
|
||||
baseTime: 60, // seconds for level 1
|
||||
reduction: 2, // seconds reduced every 3 levels
|
||||
minimum: 30, // never less than 30 seconds
|
||||
calculation: 'Math.max(30, 60 - Math.floor(level / 3) * 2)'
|
||||
};
|
||||
```
|
||||
|
||||
### Flow State Management
|
||||
- **Gradual Ramp**: Difficulty increases smoothly
|
||||
- **Recovery Levels**: Occasional easier levels to maintain confidence
|
||||
- **Time Pressure**: Creates urgency without panic
|
||||
- **Clear Progress**: Visual indication of completion status
|
||||
|
||||
## Visual Feedback System
|
||||
|
||||
### Connection States
|
||||
1. **Target Pattern**: Dotted white lines showing required connections
|
||||
2. **Active Connections**: Solid colored lines for completed connections
|
||||
3. **Current Drag**: Semi-transparent preview line during connection creation
|
||||
4. **Invalid Attempts**: Red glow and shake animation for errors
|
||||
5. **Completion**: Particle burst effects and color changes
|
||||
|
||||
### Node Animation
|
||||
```javascript
|
||||
const nodeAnimations = {
|
||||
idle: {
|
||||
pulse: 'breathing effect with sine wave',
|
||||
glow: 'subtle outer glow animation'
|
||||
},
|
||||
hover: {
|
||||
scale: '1.1x size increase',
|
||||
brightness: 'increased luminosity'
|
||||
},
|
||||
connected: {
|
||||
energy: 'flowing particles through connections',
|
||||
color: 'shift to active state'
|
||||
}
|
||||
};
|
||||
```
|
||||
|
||||
## Audio Design Framework (Planned)
|
||||
|
||||
### Sound Categories
|
||||
```javascript
|
||||
const audioDesign = {
|
||||
feedback: {
|
||||
nodeTouch: 'soft electronic blip',
|
||||
connectionMade: 'satisfying snap/lock sound',
|
||||
connectionFailed: 'gentle error tone',
|
||||
levelComplete: 'triumphant harmonic sequence'
|
||||
},
|
||||
ambient: {
|
||||
background: 'subtle electronic atmosphere',
|
||||
nodeHum: 'quiet frequency-based ambience',
|
||||
energyFlow: 'soft electrical crackling'
|
||||
},
|
||||
ui: {
|
||||
buttonPress: 'clean interface sounds',
|
||||
menuTransition: 'smooth whoosh effects'
|
||||
}
|
||||
};
|
||||
```
|
||||
|
||||
### Audio Implementation Principles
|
||||
- **Subtle**: Never overwhelming or distracting
|
||||
- **Responsive**: Immediate feedback for actions
|
||||
- **Contextual**: Different sounds for different game states
|
||||
- **Optional**: Always allow muting for accessibility
|
||||
- **Performance**: Lightweight files, efficient playback
|
||||
|
||||
## Accessibility Considerations
|
||||
|
||||
### Visual Accessibility
|
||||
- **Color Blind Support**: Pattern recognition doesn't rely solely on color
|
||||
- **High Contrast**: Clear visual distinction between elements
|
||||
- **Scalable UI**: Responsive design for different screen sizes
|
||||
- **Clear Typography**: Readable fonts and appropriate sizing
|
||||
|
||||
### Motor Accessibility
|
||||
- **Touch Targets**: Minimum 44px touch areas on mobile
|
||||
- **Drag Tolerance**: Forgiving connection detection
|
||||
- **Alternative Inputs**: Keyboard navigation support (future)
|
||||
- **Timing Options**: Adjustable time limits (future)
|
||||
|
||||
### Cognitive Accessibility
|
||||
- **Clear Instructions**: Obvious gameplay mechanics
|
||||
- **Progressive Disclosure**: Complexity introduced gradually
|
||||
- **Visual Hierarchy**: Important information is prominent
|
||||
- **Consistent Patterns**: Predictable interface behavior
|
||||
|
||||
This documentation serves as the foundation for all game design decisions and should be updated as mechanics evolve.
|
||||
Reference in New Issue
Block a user