Engine: RPG Maker VX Ace, MV, and MZ
Many new makers, often artists, have difficulty making their custom artwork function properly in Ace/MV/MZ. They face issues like sprites cutting off or the editor only displaying a tiny piece of their sprite. This tutorial aims to clear up any confusion or misconceptions surrounding sprites.
This tutorial only focuses on the default behavior of the program(s), without the use of any external plugins or scripts. Eight directional / diagonal sprites are not covered. This tutorial uses sprites from the VX Ace RTP, but the principles are the same in MV and MZ.
Anatomy of a Spritesheet
Each spritesheet can be divided into three components. (Disclaimer: These are my own terminology, used for this tutorial, and may not be the same as other people's!)
Refers to a single sprite. They can be any size (N pixels x M pixels), but keep in mind that the standard map tile size is 32px x 32px in VX Ace and 48px x 48px in MV/MZ. It is important to note that any transparent pixels will count towards the sprite's size. The final size of the sheet is based on the size of a sprite.
Notice the size difference with these two sprites. If you are using sprites that protrude in a certain direction, you need to pad ALL the sprites with transparent pixels so they will line up properly.
Refers to the entire set of sprites that makes up a single character. There are exactly twelve Sprites in a Character: four rows (directions) and three columns (frames of animation). They all must be the same size as well.
Walking/stepping animations go like this: Middle -> Right -> Middle -> Left -> Middle. The Middle sprite is used for event standing still. Any unused directions/animation frames can be left blank.
Characters can also be saved as an individual file, see the Filename Prefixes below for more details.
Refers to the entire set of characters. There are exactly eight Characters in a sheet with 2 rows and 4 columns, but you do not have to fill out the entire sheet! You can leave unused character spots blank.
In the picture above, the numbers are the indices of the graphics, which are used with event commands or scripts.
There are two special prefixes you can put on the filename: the "!" and "$". These are attached to the beginning of the filename, for example, if your file is sprite.png, change it to !sprite.png. You can also combine both prefixes, like so: !$sprite.png.
The "!" Prefix
Characters graphics in-game are offset (moved) up by four pixels in Ace, or six pixels in MV and MZ. Adding the "!" prefix will cancel this effect. This also turns off the translucent effect that occurs when the event is standing on a tile marked as "Bush" in the tileset section of the database. This is good for object events such as doors, chests, or furniture.
The "$" Prefix
It is possible to have a file with just one character by attaching "$" to the beginning of the filename. Do not add the "$" if there are multiple characters in the file! This is the biggest culprit of cutoff sprites that many new users find.
You can have multiple frames of animation by utilizing the "Set Move Route" event command. By turning, the sprite will advance through each frame of animation. You can change the speed of the animation by changing the wait between each turn. This is made apparent by studying the default door graphics.
You can get more frames by using the "Change Graphic" move route command. With this method, you can have 32 frames of animation on a single spritesheet file, and with multiple files, nearly unlimited frames of animation!
Double-Checking Your Spritesheets
Make sure that your sheet can only fit eight Characters. For every Character, the twelve Sprites are of identical size.
For example, if the size of a Sprite is 32px x 32px (default for VX Ace), the Character would be 96px x 128px, and the Sheet would be 384px x 256px.
If the size of the Sprite is 48px x 48px (default for MV and MZ), the Character would be 144px x 192px, and the Sheet would be 576px x 384px.
I hope this tutorial was helpful. If I missed anything, or if something is unclear, please let me know.