Welcome! Juicee is intentionally easy to extend — adding a new effect is a single .gd file. No central registry, no enum to bump, no editor changes.
Two ways to share what you build, depending on where you want it to land:
For effects that fit the core philosophy (reactive, triggered-feedback juice — see docs/philosophy.md) and look generally useful to other devs.
- Fork the repo and create a branch:
git checkout -b add-my-cool-effect - Add your effect file:
addons/juicee/effects/my_cool_effect.gd- Follow the 30-line template in
docs/how-to-write-effect.md ## docstringon every@exportproperty- Use
_track()for tweens,JuiceeStateStackfor restorable properties,_cancelledchecks in manual loops - Sensible defaults —
EffectName.new().apply(some_context)should produce a visible result with zero tweaking
- Follow the 30-line template in
- Open a PR against
mainwith:- A short description of what the effect does and when to use it
- A GIF / screenshot showing the effect in action (drag-drop into the PR body)
- Confirm: does it preview correctly in editor? does it stop cleanly via
stop()?
- We'll review, suggest tweaks if needed, and merge.
Once merged, your effect ships in the next release. Updater pulls it down for everyone.
✅ Likely merged
- Visual-feedback effects (screen / camera / object / particle / time / audio)
- Effects with
@export-tweakable parameters - Effects that work in both 2D and 3D (or are clearly named
_3d) - Effects with clean cleanup paths
❌ Better as a Discussion post (not merged)
- Game-specific logic (combat hit reactions, dialog systems, etc.) — too narrow
- Effects requiring scene-tree restructuring of user's project (e.g., must add a SubViewport)
- Effects that depend on external addons / assets
- Stylistic variants of existing effects (skin them via parameters instead)
For:
- Presets — your
JuiceeSequence.tresfor a specific game-feel (e.g., "Vampire Survivors-style enemy hit reaction") - Niche effects — game-specific logic you wouldn't want shipped in core but think others might fork
- Experimental — work-in-progress, asking for feedback before turning into a PR
- Show-and-tell — "here's how I used Juicee in my game" with video/GIF
How:
- Go to the repo's Discussions tab
- Pick the right category:
- 🎬 Show & Tell — your finished work in action
- 💬 Q&A — questions about API, workflow, integration
- 💡 Effect ideas — pitches before you implement, get community input first
- 🎨 Custom effects & presets — paste your
.gdor.trescontent for others to copy
- Use a clear title (
[Preset] Vampire Survivors hit reactionor[Effect] Outline pulse on damage) - Paste the code in a fenced block, add a short description + GIF
No review needed — post and share. Community can star, comment, or fork your snippet.
Use Issues, not Discussions, for:
- Bugs (effect crashes, leak, wrong behavior)
- Feature requests with clear scope ("Add
Camera3D shake support", "Add undo/redo to graph editor") - Documentation gaps you spotted
Use the issue templates if available — they prompt for the info we need to act on it.
- Indentation: tabs (Godot's default — keep editor settings as-is)
class_name JuiceeXxxEffectprefix on every new effect (avoids collisions with other addons / user code)## docstringon every@exportproperty (becomes the tooltip in the JuiceeGraph popup)- No
print()in production code — usepush_warning()/push_error()for real problems
By contributing you agree your work is released under the MIT license, same as the rest of the addon.