gameplay-mechanics
38
总安装量
38
周安装量
#5391
全站排名
安装命令
npx skills add https://github.com/pluginagentmarketplace/custom-plugin-game-developer --skill gameplay-mechanics
Agent 安装分布
claude-code
33
opencode
29
gemini-cli
27
codex
27
antigravity
24
github-copilot
19
Skill 文档
Gameplay Mechanics Implementation
Core Mechanics Framework
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â ACTION â EFFECT LOOP â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ¤
â INPUT PROCESS OUTPUT FEEDBACK â
â âââââââ âââââââââââ âââââââââââ âââââââââââ â
â âPressâââââââââValidate ââââââââUpdate ââââââVisual â â
â âButtonâ â& Executeâ âState â âAudio â â
â âââââââ âââââââââââ âââââââââââ âHaptic â â
â âââââââââââ â
â â
â TIMING REQUIREMENTS: â
â ⢠Input â Response: < 100ms (feels responsive) â
â ⢠Animation start: < 50ms (feels instant) â
â ⢠Audio feedback: < 20ms (in sync with action) â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
Feedback Loop Design
FEEDBACK TIMING LAYERS:
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â IMMEDIATE (0-100ms): â
â ââ Button press sound â
â ââ Animation start â
â ââ Screen shake â
â ââ Controller vibration â
â â
â SHORT-TERM (100ms-1s): â
â ââ Damage numbers appear â
â ââ Health bar updates â
â ââ Enemy reaction animation â
â ââ Particle effects â
â â
â LONG-TERM (1s+): â
â ââ XP/Score increase â
â ââ Level up notification â
â ââ Achievement unlock â
â ââ Story progression â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
Combat Mechanics
// â
Production-Ready: Combat State Machine
public class CombatStateMachine : MonoBehaviour
{
public enum CombatState { Idle, Attacking, Blocking, Recovering, Staggered }
[Header("Combat Parameters")]
[SerializeField] private float attackDamage = 10f;
[SerializeField] private float attackRange = 2f;
[SerializeField] private float attackCooldown = 0.5f;
[SerializeField] private float blockDamageReduction = 0.7f;
[SerializeField] private float staggerDuration = 0.3f;
private CombatState _currentState = CombatState.Idle;
private float _stateTimer;
public event Action<CombatState> OnStateChanged;
public event Action<float> OnDamageDealt;
public event Action<float> OnDamageTaken;
public bool TryAttack()
{
if (_currentState != CombatState.Idle) return false;
TransitionTo(CombatState.Attacking);
StartCoroutine(AttackSequence());
return true;
}
private IEnumerator AttackSequence()
{
// Wind-up phase
yield return new WaitForSeconds(0.1f);
// Active hit frame
var hits = Physics.OverlapSphere(transform.position + transform.forward, attackRange);
foreach (var hit in hits)
{
if (hit.TryGetComponent<IDamageable>(out var target))
{
target.TakeDamage(attackDamage);
OnDamageDealt?.Invoke(attackDamage);
}
}
// Recovery phase
yield return new WaitForSeconds(attackCooldown);
TransitionTo(CombatState.Idle);
}
public float TakeDamage(float damage)
{
float finalDamage = _currentState == CombatState.Blocking
? damage * (1f - blockDamageReduction)
: damage;
OnDamageTaken?.Invoke(finalDamage);
if (finalDamage > 5f) // Stagger threshold
{
TransitionTo(CombatState.Staggered);
StartCoroutine(RecoverFromStagger());
}
return finalDamage;
}
private void TransitionTo(CombatState newState)
{
_currentState = newState;
_stateTimer = 0f;
OnStateChanged?.Invoke(newState);
}
}
Resource Economy System
ECONOMY BALANCE FORMULA:
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â INCOME vs EXPENDITURE: â
â â
â Hourly Income = (Enemies/hr à Gold/Enemy) + PassiveIncome â
â Hourly Spend = (Upgrades + Consumables + Deaths) â
â â
â BALANCE RATIO: â
â ⢠< 0.8: Too scarce (frustrating) â
â ⢠0.8-1.2: Balanced (meaningful choices) â
â ⢠> 1.2: Too abundant (no tension) â
â â
â EXAMPLE STAMINA SYSTEM: â
â âââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â Max: 100 â Regen: 20/sec â On Hit: +10 â â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââ⤠â
â â Light Attack: -10 â Heavy Attack: -25 â â
â â Dodge: -15 â Block: -5/hit â â
â â Sprint: -5/sec â Jump: -8 â â
â âââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
Progression Systems
PROGRESSION CURVE:
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â Power â
â â â
â â â±âââââ Late Game â
â â â±âââââ± (slow, goals) â
â â â±âââââ± â
â â â±âââââ± â
â â â±âââââ± Mid Game â
â â â±âââââ± (steady progress) â
â â â±ââââ± â
â ââ± Early Game (fast, hook player) â
â ââââââââââââââââââââââââââââââââââââââââââââââââââ Time â
â â
â XP CURVE FORMULA: â
â XP_needed(level) = base_xp à (level ^ growth_rate) â
â ⢠growth_rate 1.5: Gentle curve (casual) â
â ⢠growth_rate 2.0: Standard curve (balanced) â
â ⢠growth_rate 2.5: Steep curve (hardcore) â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
// â
Production-Ready: Progression Manager
public class ProgressionManager : MonoBehaviour
{
[Header("Progression Config")]
[SerializeField] private int baseXP = 100;
[SerializeField] private float growthRate = 2.0f;
[SerializeField] private int maxLevel = 50;
private int _currentLevel = 1;
private int _currentXP = 0;
public event Action<int> OnLevelUp;
public event Action<int, int> OnXPGained; // current, required
public int XPForLevel(int level)
{
return Mathf.RoundToInt(baseXP * Mathf.Pow(level, growthRate));
}
public void AddXP(int amount)
{
_currentXP += amount;
int required = XPForLevel(_currentLevel);
OnXPGained?.Invoke(_currentXP, required);
while (_currentXP >= required && _currentLevel < maxLevel)
{
_currentXP -= required;
_currentLevel++;
OnLevelUp?.Invoke(_currentLevel);
required = XPForLevel(_currentLevel);
}
}
public float GetProgressToNextLevel()
{
return (float)_currentXP / XPForLevel(_currentLevel);
}
}
Movement Mechanics
PLATFORMER FEEL PARAMETERS:
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â MOVEMENT: â
â ⢠Walk Speed: 5-8 units/sec â
â ⢠Run Speed: 10-15 units/sec â
â ⢠Acceleration: 20-50 units/sec² â
â ⢠Deceleration: 30-60 units/sec² (snappier = higher) â
â â
â JUMP: â
â ⢠Jump Height: 2-4 units â
â ⢠Jump Duration: 0.3-0.5 sec â
â ⢠Gravity: 20-40 units/sec² â
â ⢠Fall Multiplier: 1.5-2.5x (faster fall = tighter) â
â â
â FEEL ENHANCERS: â
â ⢠Coyote Time: 0.1-0.15 sec (jump after leaving edge) â
â ⢠Jump Buffer: 0.1-0.15 sec (early jump input) â
â ⢠Variable Jump: Release = shorter jump â
â ⢠Air Control: 50-80% of ground control â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
Event-Driven Architecture
EVENT SYSTEM PATTERN:
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â ACTION EXECUTED â
â â â
â â¼ â
â âââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â EVENT DISPATCHER â â
â â DamageDealt(amount, position, type) â â
â âââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â â
â ââââ VFX System: Spawn damage numbers â
â ââââ Audio System: Play hit sound â
â ââââ UI System: Update health bar â
â ââââ Camera System: Screen shake â
â ââââ AI System: Alert nearby enemies â
â ââââ Analytics: Log combat event â
â â
â BENEFITS: â
â ⢠Systems don't need direct references â
â ⢠Easy to add/remove observers â
â ⢠Same event triggers multiple effects â
â ⢠Easy networking (replicate events) â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
Balance Iteration
RAPID BALANCE WORKFLOW:
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â 1. PLAYTEST (15-30 min) â
â â Watch players, note friction points â
â â
â 2. ANALYZE (5-15 min) â
â â What felt wrong? Too easy/hard? â
â â Check telemetry data â
â â
â 3. ADJUST (5-10 min) â
â â Change ONE variable at a time â
â â Document the change â
â â
â 4. TEST (5 min) â
â â Verify change has intended effect â
â â
â 5. REPEAT â
â â Target: 4-6 iterations per hour â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
BALANCE SPREADSHEET FORMAT:
ââââââââââââ¬âââââââââ¬ââââââââââ¬ââââââââââ¬âââââââââââ
â Weapon â Damage â Speed â Range â DPS â
ââââââââââââ¼âââââââââ¼ââââââââââ¼ââââââââââ¼âââââââââââ¤
â Sword â 10 â 1.0/sec â 2m â 10.0 â
â Axe â 20 â 0.5/sec â 1.5m â 10.0 â
â Dagger â 5 â 2.0/sec â 1m â 10.0 â
â Spear â 12 â 0.8/sec â 3m â 9.6 â
ââââââââââââ´âââââââââ´ââââââââââ´ââââââââââ´âââââââââââ
ð§ Troubleshooting
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â PROBLEM: Controls feel unresponsive â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ¤
â SOLUTIONS: â
â â Add immediate audio/visual feedback on input â
â â Reduce input-to-action delay (< 100ms) â
â â Add input buffering for combo actions â
â â Check for frame rate issues â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â PROBLEM: One strategy dominates all others â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ¤
â SOLUTIONS: â
â â Nerf dominant option OR buff alternatives â
â â Add situational counters â
â â Create rock-paper-scissors relationships â
â â Add resource costs to powerful options â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â PROBLEM: Players don't understand mechanic â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ¤
â SOLUTIONS: â
â â Add clearer visual/audio feedback â
â â Create safe tutorial space â
â â Use consistent visual language â
â â Add UI hints or tooltips â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â PROBLEM: Progression feels grindy â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ¤
â SOLUTIONS: â
â â Reduce XP requirements â
â â Add more XP sources â
â â Give meaningful rewards more frequently â
â â Add catch-up mechanics for late content â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
Mechanic Comparison
| Mechanic | Skill Floor | Skill Ceiling | Feedback Speed |
|---|---|---|---|
| Button Mash | Low | Low | Instant |
| Timing-Based | Medium | High | Instant |
| Resource Management | Medium | High | Delayed |
| Combo System | High | Very High | Instant |
| Strategic | Medium | Very High | Delayed |
Use this skill: When implementing core mechanics, balancing systems, or designing player feedback.