Pepper.SFX
All Guidance pages

Guidance / Manual

Best Practices

11.1 Project Organization

Recommended Folder Structure:

Assets/Audio/
├── Resources/Audio/
│   ├── Events/
│   │   ├── UI/
│   │   ├── Player/
│   │   ├── Enemies/
│   │   ├── Ambience/
│   │   └── Music/
│   └── States/
│       ├── Gameplay/
│       └── Location/
├── Containers/
│   ├── UI/
│   ├── Footsteps/
│   ├── Weapons/
│   ├── Impacts/
│   ├── Ambience/
│   └── Music/
├── Buses/
└── AudioClips/
    ├── SFX/
    │   ├── UI/
    │   ├── Footsteps/
    │   └── Weapons/
    ├── Music/
    └── VO/

11.2 Naming Conventions

Containers:

Format: Category_Description_Type

Examples:
Weapon_RifleShot_RnC       (Random Container)
UI_ButtonClick_RC          (Routing Container)
Music_MainTheme_BC         (Blend Container)
Footsteps_Switch_SwC       (Switch Container)
Alarm_Sequence_SeqC        (Sequence Container)

Events:

Format: Action_Description

Examples:
Play_WeaponRifleShot
Play_UIButtonClick
Start_MusicMainTheme
Trigger_DuckForDialogue
Set_StateUnderwater

Buses:

Format: Category_Bus or Category_Subcategory_Bus

Examples:
Master_Bus
SFX_Bus
SFX_Weapons_Bus
Music_Bus
Dialogue_Bus

11.3 Bus Hierarchy Design

Typical Structure:

Master (-3 dB)
├── SFX (0 dB)
│   ├── Player (0 dB)
│   │   ├── Footsteps (-6 dB)
│   │   └── Weapons (0 dB)
│   ├── Enemies (-3 dB)
│   ├── UI (0 dB)
│   └── Ambience (-6 dB)
├── Music (-6 dB)
│   ├── Gameplay (0 dB)
│   └── Menu (-3 dB)
├── Dialogue (0 dB)
└── VO (-3 dB)

Guidelines:

  • 3-4 levels max - Don’t over-complicate
  • Leave headroom - Master at -3 to -6 dB
  • Group by function - Not by asset type
  • Plan for ducking - Dialogue should duck Music/SFX

11.4 Container Design

Variation Counts:

Footsteps: 6-8 variations minimum
Weapon fire: 3-5 variations
Impacts: 4-6 per material
Voice lines: 10+ (more is better)
UI clicks: 2-3 variations

Randomization Guidelines:

Subtle:
  Volume: ±1-2 dB
  Pitch: ±50-100 cents
  Use for: Footsteps, UI

Moderate:
  Volume: ±3-4 dB
  Pitch: ±100-200 cents
  Use for: Weapons, impacts

Dramatic:
  Volume: ±5-6 dB
  Pitch: ±200-400 cents
  Use for: Explosions, special effects

Repeat Avoidance:

Frequent sounds (footsteps): avoidRepeatLast = 2-3
Weapons: avoidRepeatLast = 1-2
Voice lines: avoidRepeatLast = 3-5

11.5 Event Design

Instance Limits:

Explosions: 5-10
Gunshots: 8-12
Footsteps: 4-6
UI clicks: 2-3
Dialogue: 1
Music: 1

Priority Assignment:

Critical (255):
  - UI feedback
  - Dialogue
  - Tutorial VO

High (128):
  - Player footsteps
  - Player weapons
  - Important pickups

Medium (64):
  - Enemy sounds
  - Environmental feedback
  - Non-critical UI

Low (0):
  - Distant ambience
  - Background loops
  - Decorative sounds

Cooldowns:

UI clicks: 0.05-0.1s
Footsteps: Usually handled by animation
Weapon fire: Usually handled by game logic
Repeated impacts: 0.05-0.1s

11.6 State Design

State Group Organization:

Location:
  - Normal
  - Underwater
  - Cave
  - Indoor
  - Outdoor

GameplayState:
  - Menu
  - Playing
  - Paused
  - GameOver

CombatState:
  - Calm
  - Alert
  - Combat

Transition Times:

Fast (0.1-0.3s):
  - Pause/Unpause
  - UI state changes
  - Instant feedback

Medium (0.5-1.0s):
  - Entering water
  - Room changes
  - Combat state changes

Slow (1.5-3.0s):
  - Time of day
  - Weather changes
  - Gradual transitions

11.7 Common Pitfalls

DON’T:

❌ Post events every frame

// BAD
void Update()
{
    if (isWalking)
        footstepEvent.Post();  // Spam!
}

// GOOD
public void PlayFootstep()  // Called from animation event
{
    footstepEvent.Post();
}

❌ Forget instance limits

// Without maxInstances, this spams audio
for (int i = 0; i < 100; i++)
    explosionEvent.Post();

❌ Over-use 3D spatialization

Use 2D for: UI, music, non-positional SFX
Use 3D for: Positioned sounds only

❌ Set all buses to 0 dB

Leaves no headroom → clipping when many sounds play
Always leave -3 to -6 dB on Master

❌ Ignore variation

Single clip footsteps → machine gun effect
Always use RandomContainer with 4+ clips

DO:

✅ Use cooldowns

Event cooldown prevents spam automatically

✅ Add variations

6-8 clips + randomization = natural sound

✅ Profile voice count

Monitor regularly, adjust maxInstances

✅ Organize assets

Consistent folder structure
Clear naming conventions

✅ Leave headroom

Master: -3 to -6 dB
Prevents clipping

From the Pepper.SFX 3.1 guides (USER_GUIDE.md). Something wrong or unclear? Tell me.