Think of modules as packages with functions.
Or a table where you can re-use a function.
you get the module (EZShake) by require()ing it.
Then, you use it as you would normally for functions.
For example, when you use player service functions:
but instead, its for the module (you have to read the documentation on the module to know what the functions are)
In this case:
The example code used
local camShake = CameraShaker.new(Enum.RenderPriority.Camera.Value, function(shakeCf)
camera.CFrame = camera.CFrame * shakeCf
-- Explosion shake:
CameraShaker is the module (local CameraShaker = require(locationofmodule)
All the rest are the functions/calls used to create the shake.
local camShake is defining what the shape will be and how it will be (while also including the functions needed)
then, camShake:Start() starts the shake.