[Beziers] Advanced modular VFX Plugin (10,000+ assets & add-ons)

Introduction


hi, i made this cool VFX Plugin and i want to showcase it here.
It’s like a normal vfx plugin with a module to play VFX in games and all,
except it has way more features, including a library with ~10K os assets, and add-ons.

Asset library supports Textures, Sounds, Meshes, MeshFlipbooks, and Instances (VFX, UI, etc)
Add-ons system works by adding a module as an add-on which will run on the plugin and in-game.

The main module is used in the plugin enviroment only (for plugin UI and stuff)
The module named game under it is synced to the in-game module’s add-ons folder.
AddonFormat

e.g. MeshVFX’s game module simply .add()s an emit function that is called when playing VFX-
which looks for any MeshVFX, and uses it’s attributes to emit it in-game and with the plugin.

Current add-ons: ImpactFrames, CameraShake, ScreenEffects, and MeshVFX (none are paid)

^ a water vfx with only 1 MeshFlipbook (open-sourced in the discord) ^

Discord  |  Website  |  Documentation (unfinished)


Features

Note: this post isn't updated frequently. so scroll down to replies for updates
  • EmitRepeat and EmitRepeatDelay attributes
  • Can emit Sounds and lights [PointLight, SurfaceLight, SpotLight]
  • Enable and Disable system for indefinite durations (with tween in and out)
    • example: an ability that keeps a VFX (beams, sounds, etc) active while holding a button
local API = shared.vfx
ButtonDownEvent:Connect(function()
    API.enable(abilityVFX) -- enables with tween-in
end)

ButtonUpOrNoStaminaEvent:Connect(function()
    API.disable(abilityVFX) -- disables with tween-out
end)
  • TweenIn and TweenOut attributes for lights, beams, sounds, particles, and trails

    • TweenIn happens when enabling vfx with plugin (same for TweenOut when disabling)
    • It goes from TweenStart (default 0), to current properties, to TweenEnd (default 0)
    • Can be used to fade in and out with any properties like size, transparency, volume, rate, ..
    • Defaults for beams are [Width0,1] and for lights [Brightness, Range], for sounds [Volume]
    • Pick the properties with the TweenProperties attribute like “Transparency, Size”
  • ObjectValues can be used to emit/enable anything outside the VFX (with attributes)

    • For example emitting a vignette in the ui with color and time attributes in the ObjectValue
    • Its like calling a function (vfx, vignette, etc) with paramaters (attributes) iykwim
  • Emitting scripts (can be delayed and repeated like normal vfx)

    • Script what you want or use other people’s modules (like a rock module)
    • Script must reset changes and destroy instances. plugin won’t reset anything script does
  • Random emit container: picks 1 or more of its children to emit/enable

    • How to use: add the attribute EmitRandom and set it to the number of children to pick
    • This can be used for things like picking a sound randomly (works for any vfx not just sounds)
  • EmitOnDisable: emits when the parent is disabled (for indefinite durations)

    • How to use: simply name a vfx or container “EmitOnDisable”
    • Use case example: a beam ability that enables for indefinite time and explodes when it ends
  • Normal delay, duration and count attributes but..

    • Duration works with lights, and loops sounds until duration ends
    • EmitDelay on a VFX container (part/attachment/..) will delay everything in it (descendants)
    • (which means u can make parts of a VFX on their own then combine and delay whole parts)
    • You can switch between descendants attributes mode and selected with the keybind [Y]

  • Asset library (mostly for VFX but can be useful for other stuff)
    • UI window can be dragged and resized
    • Inserts into selected container (part/attachment/..)
    • Or replaces selected VFX/Sound’s TextureId/SoundId
    • Supports the new Custom flipbook layout (ex: 4x8, 64x64 flipbooks)
    • If no container or VFX/Sound is selected, it inserts it in a part into workspace
    • Saves as much space as possible by storing only the changes and imported assets
    • Open-source assets (~10,000):
      • 77+ Meshes
      • 925+ Beams
      • 500+ Sounds
      • 39+ MeshFlipbooks
      • 8,336+ Particles & others
  • You can store any instance in the library, including full VFX, UI, Scripts and more!!

  • Flipbook preview (always playing) and you can change the FPS and Grid of any image

  • A keyword system for search (to categorize. like a fire texture that can be used as smoke)

  • Mass Upload: Automatically upload all selected assets (ex: upload all from a VFX, pack, game)*

  • Sliders which can change any property or attribute of all selected VFX instances at once

    • Has Hue, Saturation, Lightness sliders to change colors
    • A UI with a list of all properties and attributes to choose from quickly
    • (u can choose brightness and fully color a VFX without touching color properties)
    • Reset and apply buttons, textboxes to set exact values.
    • Some special options in the list:
      • Retime: perfectly slow or speed up a VFX with [Speed, Rate, Lifetime, EmitDelay.. 9 more]
      • Scale: resize perfectly with [Size, Speed, Volume, Range (lights), Width0&1 (beams)]
      • ScaleModel: scales the VFX along with any parts, meshes, models, and attachments of it.
      • Color3: multiplies Color properties for things like making Decals glow
  • Sequence copier [Size, Squash, Color, Transparency, WidthScale]

  • Trail preview with shape options [Circle, Square, Infinity, Heart] (will add more)

  • An API that can be used in studio in command bar, and other plugins (like moon animator)

-- some api uses (theres more)
local api = shared.fx

-- Emit a VFX
api.emit(your.vfx)

-- Enable/disable a VFX
api.enable(your.vfx)
api.disable(your.vfx)

-- Shifts a Color3's hue, saturation, and lightness
api.adjustColor(Color3, hue, saturation, lightness)

-- Shifts a whole VFX's Hue, Saturation, Lightness (HSL)
api.recolor(your.vfx, hue, saturation, lighness, origins?)

api.add({ -- Adding your own functions (used by add-ons)
    emit = function(vfx, attributes),
    enable = function(vfx, attributes),
    disable = function(vfx, attributes),

    retime = function(vfx, attributes),
    rescale = function(vfx, attributes),
    recolor = function(vfx, attributes);
}, selector?) -- selector for :QueryDescendants()
  • Any attribute can be a NumberRange. use for example 1-10 to randomize between 1 and 10
    Can be used on EmitCount, EmitDelay, EmitDuration, TweenIn/Out, EmitRepeat, EmitRepeatDelay

  • To loop a vfx (repeat forever) use -1 EmitRepeat and enable it (will loop until disabled)

  • Enable & Disable keybind is [T], Emit is [R] (can be changed with studio shortcuts)

  • Emit and Enable are safe to spam (tweens will reset, repeats will stop, etc)

Not enough features?

  • You can also add your own features with add-ons!!!1
    A UI Library to make ui for your add-ons (your own sliders and properties!!1)

  • Create buttons with icon/text, make ui draggable or on the right scroll, closable popups, etc.
    You can add placeholders, hover tooltips on buttons & properties, and more!!

  • You can make any vfx module into an add-on and make it work with plugin and other add-ons
    Emit and enable functions added will repeat, delay and everything just like normal vfx

  • You can publish your add-ons so that anyone can see and use them (open ticket in discord)
    All published add-ons are verified by me to be safe and have no malicious code

  • You can add a canInstall function that must return true for the user to be able to install

    • Can be combined with .okPopup(): boolean to add license/terms that must be agreed on
    • Can also be used to make add-ons paid like check for Roblox inventory for your gamepass

  • Screen effects add-on: (pre-installed)

    • ImpactFrames with tint color, count, contrast, saturation and range settings
    • CameraShake with magnitude, roughness, fade in/out, and Falloff distance range
    • CameraWeldOffset and ViewportScale to put 3D effects (particles and beams) on screen

      (this vfx is open-sourced in the discord server)
  • Mesh VFX add-on:

    • Start/End Format with SpecialMesh, MeshPart, Part and Union support
    • Supports multiple decals, mesh flipbooks, EmitCount, and SpreadAngle
    • RotSpeed, Random Rotation, Speed and Size. (and TweenParams)
    • No need for enable attribute cus can be Enabled with -1 repeat with delay or random delay
  • Animation util add-on:

    • Import animations from blender
    • Spoof animations with their ID
    • Add animation events to keyframes
    • Flip animation on the x-axis (like side dash left → right)
    • (will have an API to play animations for other add-ons to use)
  • Craters (advanced) add-on:

  • Lightning Beams add-on:

    • Supports all part shapes
    • Uses the public lightning beams module by @quasiduck
    • Supports highlights to make a blackflash type effect
    • By vail (@heartsank on discord, @Impermanently on roblox)
    • Has presets including a Blackflash effect
  • if u have any module u want added let me know in the discord :]


  • A Module to play your vfx in game (add-ons’ game modules are synced to it)
local vfxModule = require(game:GetService("ReplicatedStorage").vfx)
-- now shared.vfx and shared.fx are available for all scripts (must require)
-- also anything with the tag 'EnabledVFX' will be .enable()'d on require

vfxModule.emit(vfx)
vfxModule.rescale(vfx, scale)
vfxModule.retime(vfx, timeScale)
vfxModule.recolor(vfx, hue, saturation, lightness)

vfxModule.destroyAfter(vfx, time?)
-- time default is vfxModule.maxLifetime(vfx) (takes delays and durations into account)
-- there are more util functions like .tween and more can't list all here (will be in docs)
  • The plugin only initializes after toggling UI the first time (to save performance when not used)
    • The API is still available before initialization with installed add-ons’ game modules
      (basically will work on command bar and moon even before initialized including add-ons)

Notes:

  • it’s not on the creator store yet (and not anytime soon)
  • you can basically “enable” any emitter with -1 EmitRepeat (loop)
  • there will be docs on how to use the plugin, make add-ons, and more (soon)

You can get the plugin here or in the discord

How to get the plugin

Robux:

  1. Join the verification place
  2. Click the purple button “Buy VFX Plugin”
  3. After buying, a code will show up, copy it and redeem in the website

Currency (paypal/card/etc):

  1. Go to the website (scroll to the bottom)
  2. Enter your Username & choose if you want a redeemable code or not
  3. Click the option that you want to pay with (paypal, card, venmo, etc)

How to gift to someone:

  1. Simply instead of redeeming the code for yourself, give it to them

latest changelog

100 Likes

also working on a bezier add-on with handles rn (for trails & more)


all i have to do is edit the code, and press U (my add-on reload shortcut)

these are the shortcut btw


(pls make and publish add-ons so that i have less work to do :pray:)

14 Likes

10/10 plugin, wow, this is good

4 Likes

nice

6969696969696969696969696969696969696969696969 stupid minimum character limit

2 Likes

sadly its not free ):
would be really happy if you release it for free

12 Likes

This is so cool!
I was about to buy it and realized I was poor :sob:.
I’ll definitely get it when I can!

2 Likes

Omg this plugin is sheldon approved!!!

2 Likes

Version 1.2.0

Some fixes and changes (mostly to module) and docs release

Fixes

  • Fixed emitting scripts yielding whole vfx
  • Fixed an error with mass uploading textures
  • Fixed tweening ColorSequence properties/attributes
  • Fixed ObjectValue emission not emitting with Value with it’s attributes
    • Added attrs._ObjectValue so add-ons & scripts can know what objectvalue is emitting them

Changes

  • GameModule is now cached
  • Emitting scripts now sends arguments: f(attributes, repeating) when return function
  • .recolor() now recolors any attribute named Color under scripts or instances
  • Added util.sampleColor(time, colorSeq) and util.sampleNumber(time, numSeq)
    • (used in the Vignette open-source to support ColorSequence and recoloring it)
  • Working on add-on run priority to support shared dependencies

Add-ons

  • MeshVFX Add-on now has fade in (thanks to @Impermanently)
  • Publishing add-ons is now automated for @Add-on Creators
  • working on a bezier curves add-on + a templates add-on (will support custom)

Documentation: https://vfxer.gitbook.io/plugin (unfinished)

now i can push updates to module & add-ons faster than before
all i have to do is call shared.vfx.publish() in the command bar

there are more changes that i forgot

to update the game module just click the </> button again
to update add-ons just re-install them


1 Like


you are my special

new Lightning Beam VFX add-on (uses Quasiduck’s Lightning Beams Module)
hmm, want the vfx in the video? and the add-on? it’s in the resources channel in the discord server (you do have to have the plugin and add-on installed to work the vfx)

2 Likes

yoo thanks sm
i published your add-on. now everyone can install it and use it!!


will make docs for it too soon!!


Changelog:

Documentation

  • Finished plugin enviroment API docs
  • Finished Create Add-ons page in docs (read to learn add-ons)
  • Added resources page (will upload some resources from discord to it)
  • Added LightningBeams page for @Impermanently’s add-on (empty rn)

  • New LightningBeams add-on made by @Impermanently!!!
  • Fixed recoloring attributes named Color on scripts with sliders


documentation: https://vfxer.gitbook.io/plugin/create-addons
(didnt update website with the updates yet)


thank u and @Quasiduck for this :pray: :pray:

3 Likes

there are many useful resources in the discord, but most of them require the plugin

Finished AssetLibrary docs: https://vfxer.gitbook.io/plugin/lib

Finished Attributes docs: https://vfxer.gitbook.io/plugin/attributes


(these screenshots are just snippets)

Version 1.5.0

- Plugin

  • Fixed another bug with mass uploading
  • Fixed a bug with Plugin UI scale setting
  • Fixed a bug with emitting scripts with plugin
  • Fixed an error that depended on a Roblox plugin that can bug
  • Fixed ScreenEffects recoloring ImpactFrame’s TintColor with sliders
  • Updated website

- Module

  • Fixed an error with NoDelayEmit (right click and shortcut)
  • Highlights are now considered a VFX class (recolorable, and tweenable)

- Documentation

- LightningBeams add-on

  • Fixed lightning not properly being cleaned up

  • New Shape property for the lightning shape

  • New SparkShape property for the lightning sparks shape

  • Sparks module for ImageHandleAdornments and Parts are now 1

  • Now uses plugin’s part pool and is no longer parented to the terrain (now to .temp)

  • All these properties below are now NumberRanges:

    • PartCount, CurveSize0, CurveSize1, Frequency, Speed, PulseSpeed, PulseLength,
    • FadeLength, ContractFrom, MaxSparkCount, SparkRate, DissipateTime, DissipateStrength
  • Shapes are Ball, Cylinder, Block, Wedge, CornerWedge

  • Known bug: parts may tweak when random Lifetime

to update add-on, reinstall it (auto updates for add-ons soon)
get the update from the website


(a bit weird in pic cus shape is CornerWedge)
thanks to @Impermanently for making and updating the add-on :pray:

heres a black flash type vfx with the lightning beams add-on
blackflash.rbxm (1.2 KB)

(requires plugin and lightning beams add-on to emit/enable)

to install add-on just go to Manage Add-ons


then install this

this was open-sourced in the discord a week ago
idk why some aren’t in the discord yet when they have the plugin

make popup that shows up in studio to join the discord and multiplies every time you try and close it

1 Like

if your icon is purple or it says “:x: NOT up-to-date” in home,
then you need to update from the website (click “Already have it”)

older versions will lose support in a few days

or just join the discord to get all the update logs and resources, contribute, report bugs, and more
(there is an update log in the plugin anyway, but ye)

I can see great potential in this plugin!

Just bought it (very smart of you to add a way to buy with Robux) and I loved the impact frame feature, I’ll recommend this plugin to a few VFX artists that I know.

Keep going!!

thanks! i really appreciate this
im working on more features & add-ons rn that i’ll be releasing soon!!
rn there are some features that are only for early-access (must be in discord)
like storing VFX, UI, Scripts or any instances in the library (will release soon too when bug-free)

dang this so cool, do you plan on making a free/lite version in the future (i dont got the money for this rn)