-
What do you want to achieve? Keep it simple and clear!
Make Client-Sided VFX in a clean way and not much complicated -
What is the issue? Include screenshots / videos if possible!
I Have questions on
1:How?
2:Where should i store that bunch of local scripts, remotes and VFXs -
What solutions have you tried so far? Did you look for solutions on the Developer Hub?
Yes but i didnt got enough answers.
What I did to make client sided vfx replicated on the server is do the vfx twice. Once on the client and other on the server. I name the server vfx the name of the player and using a local script destroy them. Now it plays on the client without lag and on the server.
You can put scripts in starter character scripts or starter player scripts or starter gui. Remote events belong in replicated storage and scripts in server script service.
If you do not want replication then just don’t?
dang, i didnt understand the part that you created double vfx and then destroyed or smthing like that
ooohhh i get it, so you delete the server vfx from local script, so that the server script can do his work like: damaging players and etc right?
My usual hierarchy:
-
A
Script
containing the server-sided logic, which would include:- Validating the requests sent by the client
- Sending the validated incoming events to other nearby clients
-
A
LocalScript
containing the logic for the client that is trying to enact the VFX, e.g. some tool that tries to shoot a laser beam -
Another
LocalScript
that handles incoming replication events, i.e. the sword-related effects that other clients may be performing -
A
ModuleScript
containing the VFX behaviour, e.g. ‘spawn part here at n time, then play particles at x rate for t seconds’
Then:
-
The client, through the aforementioned
LocalScript
, activates some input action - e.g. tries to swing a sword and starts playing the animation- The client informs the server it has started this action via a
RemoteEvent
- This client plays the associated VFX
ModuleScript
itself - When a client thinks it’s damaged someone, such as during the sword swing, it sends that information to the server
- The client informs the server it has started this action via a
-
The server, through the
Script
, awaits events from the client and validates them:- If the client informs them it has started some action, e.g. the sword swing, it checks to see if that’s valid and then subsequently sends that information to nearby players after sanitation
- If the client requests to damage someone it will perform further validation to confirm, with at least some certainty, that this was actually possible
-
The nearby clients that receive this information, via its replication-related
LocalScript
, awaits events from the server:- When it receives an event to play XYZ effect, it will look up the associated
ModuleScript
and attempt to play that effect
- When it receives an event to play XYZ effect, it will look up the associated
Yes exactly.
tysm for the help, now i know how to make vfx on the client like a pro now
You can have ClientEffectModules that run the actual effect presets, and fire a RemoteEvent to the client similar to:
ClientEffectModule:FireAllClients('ModuleName', 'Func', Params)
For individual particle or sounds, you could write an FX utility handler and do something like
FXUtil:FireAllClients('SFX', {
Sound = Assets.CoolSound,
Parent = Character.PrimaryPart,
PlayOnRemove = true
})
This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.