본문으로 건너뛰기
cccskills
무료GitHub에 공개

uw-game-feel-integrator

Inject juice and game feel into gameplay code using the project's chosen middleware. Use when adding screen shake, tweens, particles, audio feedback, haptics, hitstop, or any form of "juice" to gameplay events. Triggers on requests like "add juice", "make this feel better", "add screen shake", "polish this feature", "add feedback to this action", "make the hit feel impactful", "add particles when", "screen shake on damage", "tween this", "add camera shake", "make this snappy", or any game feel, polish, or feedback work. Always reads ProjectConfig.yaml -> feel_tools and docs/GFD.md Feedback Matrix before generating code.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

설치 방법 보기

포함된 파일(5)

  • SKILL.md6.7 KB
  • references/dotween.md511 B
  • references/gamefeel-theory.md5.5 KB
  • references/primetween.md472 B
  • references/shaders-as-feel.md5.0 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Game Feel Integrator

Apply juice to gameplay events using the GFD Feedback Matrix.

Before You Start

  1. Read docs/ProjectConfig.yaml for:
    • feel_tools.tweening — which tween library ("dotween", "primetween", or "none").
    • feel_tools.feedback_system — feedback framework if any.
    • feel_tools.audio — audio middleware.
    • feel_tools.camera — camera system (Cinemachine, custom, etc.).
    • mcp.unity_mcp — if true, call refresh_unity after creating files.
  2. Read docs/GFD.md for the Feedback Matrix — it defines which events need which feedback channels.
  3. Read docs/CODING_STANDARDS.md for async patterns (Awaitable + CancellationToken) used in middleware-agnostic patterns.

Rule of Three

Every meaningful action needs feedback in at least 3 channels: Visual, Audio, Kinesthetic.

Middleware Reference

Theory & Inspiration

Universal Patterns (middleware-agnostic)

Hitstop

private async Awaitable Hitstop(float duration = 0.05f)
{
    Time.timeScale = 0f;
    await Awaitable.WaitForSecondsAsync(duration);
    Time.timeScale = 1f;
}

Shake Profile

[System.Serializable]
public struct ShakeProfile
{
    public float duration;
    public float magnitude;
    public static ShakeProfile Light => new() { duration = 0.1f, magnitude = 0.1f };
    public static ShakeProfile Medium => new() { duration = 0.2f, magnitude = 0.3f };
    public static ShakeProfile Heavy => new() { duration = 0.35f, magnitude = 0.6f };
}

Object Pooling

Frequently spawned FX (particles, floating text, projectiles) must be pooled to avoid GC spikes:

public class FXPool<T> where T : MonoBehaviour
{
    private readonly Queue<T> _pool = new();
    private readonly T _prefab;
    private readonly Transform _parent;

    public T Get() {
        var item = _pool.Count > 0 ? _pool.Dequeue() : Object.Instantiate(_prefab, _parent);
        item.gameObject.SetActive(true);
        return item;
    }

    public void Return(T item) {
        item.gameObject.SetActive(false);
        _pool.Enqueue(item);
    }
}

Rules: Pool all particles, floating text, projectiles. Return to pool on OnParticleSystemStopped or after tween completes. Pre-warm pools during scene load.

Performance Tips

  • Camera separation: Use separate world + UI cameras so post-processing doesn't affect UI
  • Shaders over CPU animations: For simple repetitive motion (scrolling, pulsing), prefer shader-based animation — runs parallel on GPU, cheaper than DOTween
  • Shared materials enable batching: Use material property blocks to vary parameters without breaking draw call batching
  • Legacy Animation for simple UI: For simple UI animations (fade, slide), Legacy Animation clips are more performant than Animator controllers

Tween Cleanup

Tweens must be killed when their target is destroyed or disabled, otherwise they cause null reference exceptions or operate on stale objects.

DOTween:

private void OnDestroy()
{
    transform.DOKill();  // Kill all tweens on this transform
}

PrimeTween:

private void OnDestroy()
{
    Tween.StopAll(this);  // Kill all tweens targeting this object
}

No middleware (Awaitable): Use CancellationToken linked to destroyCancellationToken:

private async Awaitable FlashAsync()
{
    var ct = destroyCancellationToken;
    // Awaitable work — auto-cancels when MonoBehaviour is destroyed
    await Awaitable.WaitForSecondsAsync(0.1f, ct);
}

Tuning

  • Start exaggerated, then dial back.
  • Always check the GFD Feedback Matrix before implementing.
  • Ensure tweens are killed on object destruction (see Tween Cleanup above).
  • Sync ADSR across channels: Attack and Release timings must match across Visual, Audio, and Kinesthetic. If the SFX fades over 0.5s, particles and shake damping must also fade over 0.5s.
  • Profile feel code: Use Unity Profiler (Timeline view) to check that feel effects don't cause frame drops. Particle bursts, tween cascades, and audio one-shots in the same frame can spike.

Sourcing & Communication

  • Cite your sources: When suggesting a feel pattern, name the reference game. Example: "A swap feel inspired by Royal Match's snappy 0.15s tween" or "Celeste's coyote time approach." This helps the user visualize and verify.
  • Recommend assets: When VFX, SFX, or art assets are needed, reference docs/ASSET_RESOURCES.md for curated free/paid sources.

After Setup

  • Write tests: Use uw-unity-test-runner — test feel parameters (shake profile values, hitstop duration) in EditMode tests.
  • Code review: Use uw-code-review to verify Rule of Three and tween cleanup before committing.
  • UI animation: Use uw-ui-toolkit-binder for UI Toolkit USS transitions. Use game feel patterns here for effects that go beyond USS (complex sequences, screen flash).
  • Debug feel issues: Use uw-unity-debugging if effects aren't triggering or timing feels off.

Rules

  • Rule of Three: every meaningful action needs feedback in at least 3 channels (Visual, Audio, Kinesthetic).
  • Pool all particles, floating text, and projectiles — never Instantiate in hot paths.
  • Kill/stop tweens in OnDestroy or OnDisable to prevent null reference exceptions.
  • Sync ADSR across channels — mismatched timing breaks immersion.
  • [SerializeField] private for shake profiles, tween durations, and other tuning values.
  • All game feel code must live inside an .asmdef.
  • If ProjectConfig.yaml -> mcp.unity_mcp is true, call refresh_unity after creating files.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

adopt

무료

Brownfield onboarding — audits existing project artifacts for template format compliance (not just existence), classifies gaps by impact, and produces a numbered migration plan. Run this when joining an in-progress project or upgrading from an older template version. Distinct from /project-stage-detect (which checks what exists) — this checks whether what exists will actually work with the template's skills.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

IdoCohen560/claude-unity-game-studio222026년 7월 8일 업데이트

Creates an Architecture Decision Record (ADR) documenting a significant technical decision, its context, alternatives considered, and consequences. Every major technical choice should have an ADR.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

IdoCohen560/claude-unity-game-studio222026년 7월 8일 업데이트

Validates completeness and consistency of the project architecture against all GDDs. Builds a traceability matrix mapping every GDD technical requirement to ADRs, identifies coverage gaps, detects cross-ADR conflicts, verifies engine compatibility consistency across all decisions, and produces a PASS/CONCERNS/FAIL verdict. The architecture equivalent of /design-review.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

IdoCohen560/claude-unity-game-studio222026년 7월 8일 업데이트

art-bible

무료

Guided, section-by-section Art Bible authoring. Creates the visual identity specification that gates all asset production. Run after /brainstorm is approved and before /map-systems or any GDD authoring begins.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

IdoCohen560/claude-unity-game-studio222026년 7월 8일 업데이트

Audits game assets for compliance with naming conventions, file size budgets, format standards, and pipeline requirements. Identifies orphaned assets, missing references, and standard violations.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

IdoCohen560/claude-unity-game-studio222026년 7월 8일 업데이트

Generate per-asset visual specifications and AI generation prompts from GDDs, level docs, or character profiles. Produces structured spec files and updates the master asset manifest. Run after art bible and GDD/level design are approved, before production begins.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

IdoCohen560/claude-unity-game-studio222026년 7월 8일 업데이트

IdoCohen560의 스킬 모두 보기

이 스킬의 문제 신고