Spritely is a plugin designed to make 2D game in Roblox, simple and intuitive. With Spritely, you can draw your own sprites, create custom objects, and bring your 2D game to NEXT LEVEL.
Get Started with Spritely
Install the plugin now and start building your 2D game directly in Roblox Studio with powerful, easy-to-use tools.
About the Beta
Spritely is currently in beta. The editor may still have bugs, and your feedback will help improve its performance and stability. My goal is to make this tool as efficient and user-friendly as possible.
There’s still a lot to refine, but here’s what Spritely already offers:
- Pixel-Based Collision Detection
Accurate collision based on sprite pixels, fully supporting rotation and scaling. - Animation Player
Play animations at your chosen frame rate (FPS). - Sprite and Animation Editor
A built-in editor to draw and animate your own 2D sprites.
Roadmap – What’s Coming Next
- Physics system
- Layer system for the editor
- Improved selection tools
- Normal map support (based on my DepthUI example)
- Interactive lighting
Got suggestions? I’d love to hear them.
IMPORTANT
Free To USE. If you want to donate to me, you can do it
How to Use
The plugin automatically adds a ModuleScript
to your game. This script currently includes four main methods you can use to bring your 2D objects to life.
Module Methods
CreateObject(ImageLabel, SpriteFolder, Frame)
Registers anImageLabel
orImageButton
as a 2D sprite object.ImageLabel
(orImageButton
): The UI instance to register for use with the module.SpriteFolder
: The name of the sprite in the sprite folder (string). If no sprite with that name is found, the method is canceled.Frame
: The initial frame to display. Ifnil
, it defaults to frame 1.
SetFrame(ImageLabel, Frame)
Changes the current frame of a sprite.ImageLabel
(orImageButton
): The UI instance to update.Frame
: A numeric frame index. If the frame doesn’t exist in the animation folder, the function is canceled.
IsTouching(Image1, Image2)
Checks for pixel-perfect collision between two sprite instances.Image1
: The firstImageLabel
orImageButton
.Image2
: The secondImageLabel
orImageButton
.
Note: This method is not optimized for high-resolution images. Alternative collision modes (Box, Radial, Hull) are currently in development.
PlayAnimation(ImageLabel, Properties)
Starts playing the animation of a registered sprite.ImageLabel
: The registered UI instance. If the instance was not created using CreateObject, the animation will not play.Properties
: This is an array with (currently) 3 indices.
[“Loop”]:boolean;
[“Orrevide”]:boolean;
[“FPS”]:number
StopAnimation(ImageLabel)
Stops the animation currently playing on a registered sprite.ImageLabel
: The registered UI instance.
-
ChangeProperties(ImageLabel,Properties)
ImageLabel:
It is the ImageLabel/ImageBUtton that has been registered with the CreateObject function, this will be the instance whose animation properties will be changed.Propierties:
Array with the values ​​you want to change, it is not necessary to send the 3 current properties, the script will read the table index and decide how to change the properties
Known Issues and Warnings
The editor is undergoing a full revamp, so some issues may appear. I’m actively working to provide the best possible experience.
- There is a strange bug when the brush is at its minimum size: certain pixels may become invisible but still exist, which can affect the final image.
- When scaling
ImageLabel
orImageButton
objects too much, collision detection may lose a bit of accuracy (though very slightly). - The selection tool in the editor can be a bit unintuitive to use.
- The color picker feels a bit odd at the moment.
- Line drawing is not yet implemented.
- You cannot yet change the brush shape (square or circular).
- The layer system is still very early in development, but I can finish it quickly if I see strong interest from the community.
- There is a strange bug where you cannot draw on the last row or column of the canvas.
- Editor zoom is not dynamic—it only zooms into or out from the center of the image.
Example to use:
Tester.rbxm (8.2 KB)
That’s all for now—hope you enjoy using Spritely!
Feel free to send feedback. (Sorry for my bad English )