Install Asset
Install via Godot
To maintain one source of truth, Godot Asset Library is just a mirror of the old asset library so you can download directly on Godot via the integrated asset library browser
Quick Information
33 game-feel effects for Godot 4 — screen shake, hit stop, flash, blur, chromatic aberration, particles, slow-mo, rumble, glitch, and more — composable into reusable sequences.Three workflows on the same .tres resources:• Juicee.shake_camera(self, 12, 0.3) singleton — one-liner from any script• JuiceePlayer node + custom Inspector card UI• JuiceeGraph visual editor — wire effects with Trigger/Split/Loop/Random nodesBuilt-in updater (Godot has no native addon updating), concurrent-safe state stack, spam-safe play cancellation, MIT licensed. See README for quickstart.
Juicee — Game Feel Effects for Godot 4
33 game-feel effects with a visual graph editor. Free, MIT.
# It really is this easy:
Juicee.shake_camera(self, 12.0, 0.3)
Juicee.hit_stop(self, 0.08)
Juicee.flash(my_sprite, Color.RED)
Three ways to use the same effect set:
- Inspector — drop a
JuiceePlayernode, build a sequence in the custom card UI - Visual graph editor — wire effects in the JuiceeGraph bottom panel with Trigger / Split / Loop / Random
- Singleton — one-liner from any script (shown above)
All three workflows persist as the same JuiceeSequence.tres.
Install
- Copy
addons/juicee/into your project'saddons/folder - Project → Project Settings → Plugins → enable Juicee
- (Optional) JuiceeGraph panel appears at the bottom of the editor
Requires Godot 4.2+ and the Forward Plus or Mobile renderer (screen shaders use hint_screen_texture).
Updating
Godot has no built-in addon updater. Click ↑ Update in the JuiceeGraph toolbar — it hits the GitHub releases API, shows the latest release notes, and (on confirmation) downloads + extracts the new archive over addons/juicee/. Restart the editor afterwards.
A note on previewing shader effects
Full-screen shader effects (Blur, Chromatic, Glitch, Vignette, Pixelate, Color Grade) sample Godot's SCREEN_TEXTURE, which in editor preview (Inspector ▶ Preview, JuiceeGraph ▶ Test) is clamped to the editor's preview viewport rectangle — the effect will appear bounded to that smaller area.
Run the project (F5 / F6) to see these effects at their true full-screen extent. All other effect categories (Camera, Object, Time, Audio, Physics, Flow) preview accurately in the editor.
Quick start
Singleton (1 line — fastest)
# From any script, anywhere in your game
Juicee.shake_camera(self, 12.0, 0.3)
Juicee.hit_stop(self, 0.08)
Juicee.flash(my_sprite, Color.RED)
Juicee.burst(my_node2d, 20, Color.YELLOW)
Juicee.slow_mo(self, 0.2, 0.5)
Inspector (designer-friendly)
@onready var juicee: JuiceePlayer = $JuiceePlayer
func _on_hit(): juicee.play()
- Add a
JuiceePlayernode to your scene. - Click it in the scene tree.
- The custom Inspector shows an "+ Add Effect" dropdown with all 33 effects.
- Pick effects, tweak sliders, click ▶ Preview Effect.
- Call
juicee.play()from code.
Visual graph editor
- Open the JuiceeGraph bottom panel.
- Right-click in the canvas → search the categorized popup ("Screen" / "Camera" / "Object" / "Time" / …).
- Drop a Trigger node, then effect nodes, wire them up.
- Add Loop / Random / Split to control flow.
- ▶ Test — preview the whole graph, blocks pulse as they fire.
- Save →
.tresgraph; ⤓ Export Sequence → aJuiceeSequence.tresready forJuiceePlayer.sequence.
What's inside
33 effects in 7 categories:
| Category | Effects |
|---|---|
| Screen | Chromatic, Vignette, Blur, Pixelate, Glitch, Color Grade, Screen Tint, Screen Wipe |
| Camera | Shake (2D / 3D), Zoom, FOV 3D, Camera Follow |
| Object | Flash, Modulate, Bounce, Jiggle Physics, Position (2D / 3D), Rotation (2D / 3D), Trail, Burst, Confetti, Light Flash |
| Time | Hit Stop, Time Scale Ramp, Delay |
| Audio | Sound, Music Duck, Rumble |
| Physics | Impulse (RigidBody2D) |
| Flow | Sequence (nested), Property Tween (universal escape hatch) |
Every effect inherits:
chance: float— probability the effect fires when triggereddelay: float— pre-delay before applyingintensity_min/max: float— random intensity multiplier per playcooldown: float— minimum seconds between firesstop()— kills any in-flight tweens + cancels manual-loop effectsis_playing() -> bool— query active state- Signals:
started,finished,stopped
Concurrent effects
If two effects modify the same property at once (e.g., two JuiceeShakeEffects on the same camera), Juicee's ref-counted JuiceeStateStack ensures the camera returns to its TRUE original value when both finish — not a mid-shake snapshot.
Effect A captures cam.offset = (0,0) # true original
Effect B captures cam.offset = (0,0) # gets same baseline (ref-count = 2)
... both shakes run, blending on cam.offset ...
Effect A ends → refs = 1 (no restore yet)
Effect B ends → refs = 0 → cam.offset = (0,0) restored
You don't have to do anything — it just works.
Runtime params (reactive effects)
Pass a dict to play() so effects can react to gameplay state:
# Camera shake biases AWAY from the hit direction
juicee.play({"hit_direction": (hit_position - global_position).normalized()})
Effects access via _runtime_params.get("key", default).
JuiceeShakeEffect ships with hit_direction support — write your own to read whatever your game wants to pass.
See also
docs/how-to-write-effect.md— write a new effect in 30 linesdocs/philosophy.md— when to use Inspector vs Graph vs Singleton, and whyaddons/juicee/examples/effects_showcase.tscn— keyboard-driven demo of every effect (run with F6, press 1–9 / 0 / H / B)
Community
Got a cool effect or preset? Two ways to share:
- Pull Request — if it's broadly useful, ship it in the next release for everyone
- Discussions — for game-specific presets, experimental effects, or just show-and-tell
See CONTRIBUTING.md for both paths.
License
MIT — free for personal and commercial projects.
33 game-feel effects for Godot 4 — screen shake, hit stop, flash, blur, chromatic aberration, particles, slow-mo, rumble, glitch, and more — composable into reusable sequences.
Three workflows on the same .tres resources:
• Juicee.shake_camera(self, 12, 0.3) singleton — one-liner from any script
• JuiceePlayer node + custom Inspector card UI
• JuiceeGraph visual editor — wire effects with Trigger/Split/Loop/Random nodes
Built-in updater (Godot has no native addon updating), concurrent-safe state stack, spam-safe play cancellation, MIT licensed. See README for quickstart.
Reviews
Quick Information
33 game-feel effects for Godot 4 — screen shake, hit stop, flash, blur, chromatic aberration, particles, slow-mo, rumble, glitch, and more — composable into reusable sequences.Three workflows on the same .tres resources:• Juicee.shake_camera(self, 12, 0.3) singleton — one-liner from any script• JuiceePlayer node + custom Inspector card UI• JuiceeGraph visual editor — wire effects with Trigger/Split/Loop/Random nodesBuilt-in updater (Godot has no native addon updating), concurrent-safe state stack, spam-safe play cancellation, MIT licensed. See README for quickstart.