跳到正文
cccskills
免费在 GitHub 公开

godot-audio

Implement sound effects and music in Godot 4.7. Organize audio into separate channels for music and effects, control volume and mute, crossfade tracks, add positional sound, and synchronize gameplay with musical beats.

中文简介正在准备中。当前显示英语简介。

原文查看原文说明

Play and mix audio in Godot 4.7: AudioStreamPlayer (2D/3D variants), audio buses with volume/mute and effects, music vs SFX routing, db/linear volume, and precise sync-to-beat playback timing. Use when playing sounds or music in a Godot project, routing AudioStreamPlayer nodes to buses, adjusting bus volume via AudioServer, or syncing gameplay to the beat.

实测评分 未实测

查看安装方法

适用场景

  • Add sound effects and background music
  • Create separate music and sound effect volume controls
  • Crossfade between music tracks
  • Synchronize gameplay events with musical beats

包含的文件(2)

  • SKILL.md5.1 KB
  • references/buses-and-effects.md3.5 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

Godot Audio (4.x)

Play SFX and music, route them through buses, control volume in decibels, and time gameplay to the beat. Targets Godot 4.7.

When to use

  • Use when playing sound effects or music, routing audio to buses (Master/Music/SFX), adjusting volume/mute from code, adding bus effects (reverb, compressor), positional 3D audio, or syncing events to music.

When not to use: engine-agnostic audio design (adaptive music structure, mixing philosophy, ducking patterns) → audio-design; importing/encoding assets outside Godot.

Core workflow

  1. Pick the player node:
    • AudioStreamPlayer — non-positional (music, UI, global SFX).
    • AudioStreamPlayer2D / AudioStreamPlayer3D — positional; volume/pan from distance.
  2. Assign an AudioStream to stream (.ogg for music/loops, .wav for short SFX) and play(). Set autoplay for music that starts with the scene.
  3. Route to a bus. Set the player's bus to a named bus (e.g. "Music", "SFX"). Define buses in the Audio panel (bottom dock); each can have volume, mute, solo, and effects.
  4. Control volume in dB, not linear (audio is logarithmic). 0 dB = unchanged, -80 dB ≈ silent. Convert with linear_to_db/db_to_linear.
  5. Drive volume/mute from code with AudioServer by bus index.
  6. For rhythm, compute precise playback time using output latency compensation.

Patterns

1. One-shot SFX (fire-and-forget)

@onready var sfx: AudioStreamPlayer = $Sfx   # stream assigned in the editor

func play_jump() -> void:
    sfx.pitch_scale = randf_range(0.95, 1.05)   # slight variation avoids fatigue
    sfx.play()

# For many overlapping copies, use an AudioStreamPlayer with an
# AudioStreamPolyphonic stream, or spawn short-lived players and free on `finished`.

2. Set a bus's volume and mute via AudioServer

func set_music_volume(linear_0_to_1: float) -> void:
    var bus := AudioServer.get_bus_index("Music")
    # Convert a 0..1 slider to decibels; clamp avoids -inf at 0.
    AudioServer.set_bus_volume_db(bus, linear_to_db(maxf(linear_0_to_1, 0.0001)))

func toggle_sfx(muted: bool) -> void:
    AudioServer.set_bus_mute(AudioServer.get_bus_index("SFX"), muted)

3. Crossfade between two music tracks

@onready var a: AudioStreamPlayer = $MusicA
@onready var b: AudioStreamPlayer = $MusicB

func crossfade_to(stream: AudioStream, secs := 1.5) -> void:
    b.stream = stream
    b.volume_db = -40.0
    b.play()
    var tw := create_tween().set_parallel(true)
    tw.tween_property(a, "volume_db", -40.0, secs)   # fade out current
    tw.tween_property(b, "volume_db", 0.0, secs)     # fade in next
    tw.chain().tween_callback(a.stop)
    var tmp := a; a = b; b = tmp                      # swap roles

4. Beat-accurate timing (compensate for output latency)

@onready var music: AudioStreamPlayer = $Music

func get_playback_time() -> float:
    # Add time since the last audio mix, subtract output latency, for sub-frame accuracy.
    var t := music.get_playback_position() + AudioServer.get_time_since_last_mix()
    return t - AudioServer.get_output_latency()

Pitfalls

  • Treating volume as linear. volume_db/set_bus_volume_db are decibels. Setting volume_db = 0.5 is nearly full volume, not half. Map sliders with linear_to_db.
  • linear_to_db(0.0) is -inf. Clamp the linear value to a small minimum (e.g. 0.0001) before converting, or special-case 0 → mute.
  • Bus name typos fail quietly. get_bus_index("Muisc") returns -1; calls then error or no-op. Match the exact bus name from the Audio panel.
  • Short SFX cut off when the same player is retriggered. Use separate players, an AudioStreamPolyphonic, or AudioStreamPlayer per-shot freed on finished.
  • Music doesn't loop unless the import/stream loop is enabled (.ogg import has a Loop option; AudioStreamWAV has loop_mode).
  • Syncing to get_playback_position() alone is jittery — it updates per audio mix, not per frame; add get_time_since_last_mix() and subtract get_output_latency().
  • 3D audio inaudible → no AudioListener3D/Camera3D to hear it, or max_distance/ attenuation too tight, or wrong bus muted.

References

  • For the bus layout (.tres), adding effects (reverb/compressor/EQ) and side-chain ducking, AudioStreamPolyphonic/AudioStreamInteractive, microphone capture, and procedural audio with AudioStreamGenerator, read references/buses-and-effects.md.

Related skills

  • audio-design — engine-agnostic adaptive music, mixing, and ducking practice.
  • godot-animation — syncing animation/Tween to get_playback_position().
  • godot-ui-control — volume sliders wired to AudioServer.

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

Implement reusable decision systems for game characters using behavior trees, which organize conditional actions, and Utility AI, which scores available choices. Build either approach or combine them to control patrols, combat, targeting, and needs-based behavior.

中文简介正在准备中。当前显示英语简介。

  • Build a reusable behavior tree runtime
  • Choose attacks or targets using action scores
  • Combine patrol and combat trees with Utility AI
gamedev-skills/awesome-gamedev-agent-skills37012026年10月23日 更新

Design game audio with grouped volume controls, music that responds to gameplay, and varied sound effects. Plan how music lowers during dialogue and how events follow the beat, using principles that can be adapted to different game engines.

中文简介正在准备中。当前显示英语简介。

  • Plan grouped volume controls for music, effects, and dialogue
  • Lower background music while dialogue plays
  • Change music layers or segments with gameplay intensity
gamedev-skills/awesome-gamedev-agent-skills37012026年10月23日 更新

bevy-ecs

免费

Build and debug Rust games in Bevy using ECS, a way to separate game data from behavior. Organize apps and plugins, query entities, control execution order, and fix conflicting data access or frame-dependent movement.

中文简介正在准备中。当前显示英语简介。

  • Organizing a Bevy app with plugins
  • Defining components and shared resources
  • Fixing conflicting queries and execution order
gamedev-skills/awesome-gamedev-agent-skills37012026年10月23日 更新

Build and tune game cameras for smooth 2D following and 3D viewing. Covers motion smoothing, look-ahead, level boundaries, wall avoidance, and framing multiple targets, with techniques that apply across engines.

中文简介正在准备中。当前显示英语简介。

  • Smooth player-follow cameras in 2D games
  • Keep the camera view within level boundaries
  • Prevent third-person cameras from clipping through walls
gamedev-skills/awesome-gamedev-agent-skills37012026年10月23日 更新

card-game

免费

Design the core rules of a card game, including decks, hands, discards, drawing, shuffling, turns, and resource costs. Represent card effects as data and define their resolution order so card movement and gameplay outcomes follow explicit rules.

中文简介正在准备中。当前显示英语简介。

  • Building a deckbuilder or trading card game
  • Implementing draws and discard reshuffling
  • Defining turn phases and card costs
gamedev-skills/awesome-gamedev-agent-skills37012026年10月23日 更新

Plan and prepare consistent game artwork, from sprites and backgrounds to UI icons and 3D briefs. Organize asset requirements, generate or source related visuals, standardize files, and check their appearance and technical fit inside the game.

中文简介正在准备中。当前显示英语简介。

  • Create sprites and backgrounds with a consistent visual style
  • Check asset dimensions, transparency, and tile seams
  • Track asset sources and licenses before release
gamedev-skills/awesome-gamedev-agent-skills37012026年10月23日 更新

查看 gamedev-skills 的全部技能

报告此技能的问题