6.3 KiB
6.3 KiB
Core Mechanics - Neural Nexus
Connection System
Basic Mechanics
The core gameplay revolves around creating connections between nodes by dragging from one node to another. This system is designed to be:
- Intuitive: Natural click/drag or tap/drag interaction
- Responsive: Immediate visual feedback for all actions
- Forgiving: Clear indication of valid targets and actions
- Accessible: Works consistently across all devices and input methods
Node Types and Behavior
Source Nodes (Green - #00ff64)
- Purpose: Starting points for network patterns
- Visual: Bright green color with enhanced glow
- Behavior: Often serve as connection origins in level patterns
- Player Guidance: Usually good starting points for solving puzzles
Normal Nodes (Blue - #333366/#00d4ff)
- Purpose: Standard connection points
- Visual: Blue color that brightens when connected
- Behavior: Can connect to any other node
- Player Guidance: Form the majority of puzzle elements
Target Nodes (Orange - #ff6400)
- Purpose: End points for network patterns
- Visual: Orange color with distinctive glow
- Behavior: Often serve as connection destinations
- Player Guidance: Usually good final connection points
Connection Rules
Valid Connections
// Connection validation logic
function canConnect(nodeA, nodeB) {
return nodeA !== nodeB && // Can't connect to self
!connectionExists(nodeA, nodeB) && // No duplicate connections
nodeA.type !== 'disabled' && // Node must be active
nodeB.type !== 'disabled'; // Target must be active
}
Visual Feedback System
- Hover State: Nodes highlight when mouse/touch approaches
- Drag Preview: Dotted line shows connection being created
- Success State: Solid colored line with particle effects
- Error State: Red flash for invalid connection attempts
- Completion State: Energy flow animation through completed connections
Pattern Matching System
Target Pattern Display
- Visual Representation: Faint dotted white lines (#ffffff with 0.3 opacity)
- Line Style: 5px dash, 5px gap pattern
- Stroke Width: 2px for clear visibility without overwhelming
- Update Frequency: Static display, updates only on level change
Completion Detection
function checkLevelComplete() {
const madeConnections = gameState.connections.map(conn =>
[Math.min(conn.nodeA.id, conn.nodeB.id), Math.max(conn.nodeA.id, conn.nodeB.id)]
);
const targetConnections = gameState.targetPattern.map(([a, b]) =>
[Math.min(a, b), Math.max(a, b)]
);
return targetConnections.every(target =>
madeConnections.some(made => made[0] === target[0] && made[1] === target[1])
);
}
Input Handling
Mouse Events
- mousedown: Initiate connection drag
- mousemove: Update drag preview (throttled to 60fps)
- mouseup: Complete or cancel connection
Touch Events
- touchstart: Begin touch interaction
- touchmove: Update touch drag (with preventDefault)
- touchend: Finalize touch connection
Cross-Platform Considerations
// Unified event handling
function getEventPosition(event) {
const rect = canvas.getBoundingClientRect();
if (event.touches) {
// Touch event
return {
x: event.touches[0].clientX - rect.left,
y: event.touches[0].clientY - rect.top
};
} else {
// Mouse event
return {
x: event.clientX - rect.left,
y: event.clientY - rect.top
};
}
}
Difficulty Progression
Level Generation Algorithm
Node Count Scaling
const nodeCount = Math.min(5 + Math.floor(level * 0.7), 12);
- Level 1-3: 5-6 nodes (learning phase)
- Level 4-10: 6-9 nodes (skill building)
- Level 11-20: 9-12 nodes (challenge phase)
- Level 21+: 12 nodes (mastery phase)
Connection Complexity
const connectionCount = Math.min(
nodeCount - 1 + Math.floor(level / 2),
nodeCount * 2
);
- Early Levels: Minimum spanning tree patterns
- Mid Levels: Additional parallel paths
- Late Levels: Near-complete graphs with strategic complexity
Timing Progression
const timeLimit = Math.max(45, 60 - Math.floor(level / 3) * 2);
- Level 1-2: 60 seconds (generous learning time)
- Level 3-5: 58 seconds (slight pressure introduction)
- Level 6-8: 56 seconds (building urgency)
- Level 9+: Continues decreasing to minimum of 45 seconds
Pattern Design Philosophy
Early Game (Levels 1-5)
- Simple chains: A→B→C linear patterns
- Basic shapes: Triangles and simple stars
- Clear structure: Obvious starting and ending points
- Minimal complexity: 3-5 connections maximum
Mid Game (Levels 6-15)
- Hub patterns: Central nodes with multiple connections
- Parallel paths: Multiple connection chains
- Symmetrical designs: Balanced, aesthetically pleasing patterns
- Moderate complexity: 5-8 connections
Late Game (Levels 16+)
- Complex networks: Interconnected webs of connections
- Strategic puzzles: Require planning and optimization
- Near-complete graphs: Most nodes connect to most others
- High complexity: 8-12 connections
Performance Optimization
Node Rendering Optimization
// Efficient node drawing with minimal canvas operations
function drawNode(node) {
const time = Date.now() * 0.003;
const pulse = Math.sin(time + node.pulsePhase) * 0.2 + 1;
// Pre-calculate positions to avoid repeated math
const x = node.x;
const y = node.y;
const radius = node.radius * pulse;
// Batch similar drawing operations
ctx.save();
drawNodeGlow(x, y, radius, node.type);
drawNodeCore(x, y, radius, node.type);
drawNodeHighlight(x, y, radius);
ctx.restore();
}
Connection System Performance
- Event Throttling: Mouse/touch events limited to 60fps
- Hit Detection: Optimized circle-point collision detection
- Rendering: Batched line drawing operations
- Memory: Reuse connection objects instead of creating new ones
Success Metrics
- Completion Rate: >80% for first 10 levels
- Engagement: Average 5+ minute sessions
- Retention: >60% return for second session
- Performance: 60fps on desktop, 30fps+ on mobile