Funkipedia Mods Wiki
Funkipedia Mods Wiki

This is the tutorial for adding animated GIF (short for Graphics Interchange Format) images on the Funkipedia Mods Wiki. This tutorial will guide users on how they can create GIFs to showcase different character poses for playable characters, opponents and other animated images that appear in various Friday Night Funkin' mods. The preparation steps are as follows:

  • A sprite extractor program, or an image editing program (i.e. paint.net)
  • A program to view XML files (i.e. Notepad or Notepad++)
  • A sprite sheet and XML file (optionally JSON file) for a desired character
  • Time and patience (Optional)

See this section of the Style Manual for advice on adding GIFs to pages.

Thank you Starmapo5, JillOfTrades, NaughtySk8r, Unauu, Rickhenrique, Metal10961, GameSprites and Tradutor 172 for making these tutorials. We appreciate your service.

(A little note: Ezgif can only rip sprites up to a maximum of 1920 pixels. If there are files over this limit, use Photopea to create larger GIFs.)

Extracting Frames

There are three ways to extract frames:

  1. Use a sprite extractor program. (For a list of sprite extractor programs, see this section.)
  2. Use an art program to extract frames manually.
  3. Use Adobe Animate (Requires FLA files only).

Sprite Extractor Program

  1. Open up a sprite extractor program. For this section, Funkin Packer will be used as an example.
  2. At the top right of the page, click the "Repack / Split sheet" button.
  3. Click the "Texture" button and select the desired character sprite sheet. (e.g. Boyfriend.png)
  4. Click the "Data File" button and select the desired character data file. (e.g. Boyfriend.XML)
  5. Click the "Export" button and let the program automatically extract the frames. A zip folder containing the frames should appear in the Downloads folder.
Note: These sprite extractor programs do not always work 100% of the time. There is a small chance that frame cutoffs may occur after the frames are automatically extracted.

Paint.net

  1. Open up the sprite sheet PNG and XML/TXT of the character.
  2. In the XML/TXT, find the name of the animation. For example, in Boyfriend's XML sheet his idle animation is called "BF idle dance".
  3. Now this tutorial will split this into two parts, for both XML and TXT files.

XML

GIF Guide
  1. There should be a "frameWidth" and "frameHeight" for all the frames of the animation, which should stay consistent throughout. In the image editor, make a new image with that exact same width and height. If there isn't a consistent "frameWidth" and "frameHeight" for all the frames (like for Mid-Fight Masses characters), then resize the images corresponding for every frame.
  2. For each frame, select at the X and Y that frame says to, as well as make it the width and height that frame says to. There should be some text at the bottom when selecting. Make sure that "Selection top left" is the same as the X and Y that the frame in the XML file says, and "Bounding rectangle size" is the same as the width and height of that frame. Use the arrow keys to move around the selection and grab the sides of the selection box to change the width/height.
  3. After the frame is correctly selected, copy (Ctrl+C) and paste (Ctrl+V) the new image in. Now, position that frame as the "frameX" and "frameY" says to. Kind of the same thing as last time, position the "Selection top left" as the frameX and frameY (not the same ones that were used last time).

Important Note: Ignore the negative signs! In paint.net, a negative X or Y means the selection goes out of the frame. Only pay attention to the numbers and not the minuses that would appear before them.

Txt

(Read the XML text above to understand this section!)

  1. There should be four numbers for all the frames. The first two correspond to the X and Y while the last two correspond to the width and height. The width and height should be the same across all the animation frames so the new image file should be of that width and height.
  2. For each frame, select at the X and Y that frame says to, as well as make it the width and height that frame says to.
  3. After the frame is correctly selected, copy (Ctrl+C) and paste (Ctrl+V) the new image in. As these TXT files don't have frameX or frameY, there is no need to worry about positioning here.

Saving

After that, save the image file somewhere. It is recommended to make a folder specifically for them, and naming them in numerical order, so the first one would be "0", then "1", then "2" and so on and so forth. Why start at 0? Well, the XML file also starts at 0 so prevents any confusion with the numbering.

Repeat this process for every single frame of the animation. It may sound tedious, but it really isn't that bad. Just time-consuming. Also, more often than not there'll be duplicate frames (frames that have the exact same X, Y, width, height, etc.). For this, just save the image multiple times in a row.

Note the frames may sometimes have residue (stuff that shouldn't be there). This is due to the way Adobe Animate generates these sprite sheets to save space, thus stacking frames on top of each other. The residue can be removed manually.

FireAlpaca

FireAlpaca is one of the many free art programs that can be used to separate a sprite sheet.

  1. Either drag and drop the sprite sheet into the program directly or click "File" in the top left corner, then "Open..." and select the sheet from there.
  2. Next, use either the Rectangle Selection tool or the Freeform Selection tool to select the frames of an animation.

  3. Copy them with Ctrl + C, then click "File" in the top left corner, then "New..." Start with an 800 x 800 canvas and paste the frames with Ctrl + V.
    • If the canvas is too small, click "Edit" in the top left, "Canvas Size..." (or press "S" with the menu open), and change the 800 to a higher number. Ensure that "Delete Cropped Area" is not ticked.
  4. Center the first frame, then find the list of layers and click the icon with two papers, this will duplicate the selected layer. (Alternatively, one can copy and paste each individual frame into the canvas.)
  5. Move the duplicated layer until the second frame is lined up over the first frame and repeat with the next frames.
  6. Afterwards, remove the excess around the frames with the freeform selection tool. Circle the excess and press Shift + Del on the keyboard to delete the excess from all layers (make sure all layers are visible first).
    • An alternative would be to circle the character themselves, then click "Select" in the top left, then "Inverse", then press Shift + Del.
  7. Once done, use the Wand Selection tool and click away from the character. This will highlight the character blue. Click "Select" in the top left and then "Inverse" to highlight the outside blue, then click "Edit" in the top left, then click "Crop". This will crop the canvas to the nearest visible pixels.
  8. Once the canvas has been cropped, click "File" then "Export Layers (Animation Mode)..." and select a folder to export the separated frames to.

Video Tutorials

GIMP

Preparation

  • GIMP
  • XML File
  • Spritesheet of a character. (Athena will be used as an example.)
  • Ezgif Free to use website to crop gifs.

Tutorial

  1. Make a new file, remember to put FrameWidth and FrameHeight on the dimensions and delete the background!
  2. Put the sprite sheet in a folder to organize the frames.
  3. Duplicate file and crop the frames. It is highly recommend naming them in numeral order.
  4. Put the files in Gimp (Just drag and drop), preferably one at a time, and sync it together by the bottom of the frame.
  5. Once the desired GIF is made, go to File and click "Export As" & name the gif. It is highly suggested to make another folder to put the exported gif in.
  6. When a pop-up comes up, do not panic! Click Crop and put these options. (The 90 milliseconds is optional and can be changed.) Then click "Export".

Notes:

  • The GIFs saved by GIMP can only have 256 colors total. One of these colors is actually used for transparency, leaving 255 opaque colors.
  • Partial transparency is not supported by the GIF format.
  • The color reduction algorithm used by GIMP is not that well-suited for cartoon-like images, since it tends to miss colors that are very common in the image, causing colors to differ between the sprite sheet and the GIF.
  • It is possible to save in Gimp's XCF format or the Tiff format to preserve all the color information, but the file should be converted to GIF using another program.

Adobe Animate

Sometimes, mods may contain an FLA file that is available to download. It may contain animations and/or images that are not shown within the mod. For this section, Adobe Animate is required.

  1. Assuming Adobe Animate is already installed, open the mod's FLA file.
  2. Search through the library section of symbols and select one of the symbols to extract.

From here, depending on if the "Matte" option is accessible to be changed, the first method may be impossible to some users.

Export Animated GIF

Use this method if the "Matte" option is available.

  1. Double-click on the selected symbol to enter the aforementioned symbol.
  2. Select the "File" option on the upper-left-hand-corner of the window and select "Export Animated GIF".
  3. Assure that the "Matte" option is set to "None" to avoid unwanted colored edges, the "Clip to Stage" option is disabled to ensure the animation can be entirely seen and that the "Art Optimized" option is set to "None", if it isn't.
  4. Select the "Save" button and export the GIF file.

Export PNG Sequence

Use this method if the "Matte" option is disabled. (This bug may appear in some older versions of Adobe Animate.)

  1. Right click on the selected symbol and choose the "Export PNG sequence..." option. A window will pop up asking for the location of the PNG files to be exported.
  2. Create and select an empty folder to put the exported files in.
  3. When the Frame Exporting Settings window pops up, click the "Export" button. All the frames for the selected symbol will automatically export to the selected folder.


After all of the needed frames are extracted, use a GIF-making website like Ezgif and upload the frames. With few exceptions, use 40 milliseconds in between frames. (Use 4 instead of 40 if Ezgif is used.) For singing characters, the delay of the final frame should usually be longer than the others.

The GIF should be done now and ready to be optimized and cropped!

Reducing GIFs sizes

After exportation, GIFs may exceed the size limit allowed by Fandom, being 10 MB. This renders them impossible to be uploaded. As such, one of the more effective ways to shrink the size is by "optimizing" the GIF, if the latter contains duplicated frames. Use Ezgif's GIF optimizer tool and select the "Remove duplicate frames" option from the drop-down list.
If the GIF is still too big, then an image compressor may be used until it is no longer over 10 MB. Be aware of potential quality losses, however.

Making "All Singing Poses" and "All Miss Poses" GIFs (Optional)

An "all singing poses" GIF is an animated image that showcases all singing poses (left, down, up, right), excluding idle animation, into one single GIF. The same can be said for an "all miss poses" GIF. Making these GIFs is completely optional, unless if some users wanted to go the extra mile to make them.

Required Materials:

  • Optimized uncropped GIFs of a character's singing poses. (Left, Down, Up, Right)
  • The character's JSON file. (Metal Sonic will be used as an example.)
  • Ezgif's GIF Maker tool
  1. Open up the character's JSON file. (This file will be helpful in later steps.)
  2. Select the character's singing poses. Then click and drag all four of them onto Ezgif.
  3. Make sure that all frames of each singing GIF are in the following order: Left pose, Down pose, Up pose, Right pose. If not, carefully click and drag each frame into the correct order. Each frame will show three values: "Delay", "Left", and "Top". For this section, only focus on the "Left" and "Top" offset values.
  4. In the character's JSON file, locate the blocks of code that contains the desired singing poses. A snippet of them should look something like this:
{
	"animations": [
		{
			"loop": false,
			"offsets": [
				0,
				-110
			],
			"anim": "idle",
			"fps": 24,
			"name": "MetalIDLE",
			"indices": []
		},
		{
			"loop": false,
			"offsets": [
				-26,
				-75
			],
			"anim": "singUP",
			"fps": 24,
			"name": "MetalUP",
			"indices": []
		},
		{
			"loop": false,
			"offsets": [
				143,
				-121
			],
			"anim": "singLEFT",
			"fps": 24,
			"name": "MetalLEFT",
			"indices": []
		},
		{
			"loop": false,
			"offsets": [
				30,
				-159
			],
			"anim": "singRIGHT",
			"fps": 24,
			"name": "MetalRIGHT",
			"indices": []
		},
		{
			"loop": false,
			"offsets": [
				18,
				-429
			],
			"anim": "singDOWN",
			"fps": 24,
			"name": "metalDOWN",
			"indices": []
		}
	],
	"no_antialiasing": false,
	"image": "characters/Metalsonic",
	"position": [
		-40,
		-160
	],
	"healthicon": "Metal",
	"flip_x": false,
	"healthbar_colors": [
		32,
		37,
		115
	],
	"camera_position": [
		0,
		0
	],
	"sing_duration": 6.1,
	"scale": 1
}

Note that each pose has two "offsets" values, with the first being the "Left" offset and the second being the "Top" offset.

  1. Match each offset values to the corresponding frames. (For this example, left pose frames should have an "Left" offset value of 143 and a "Top" offset value of -121.
  2. Divide each offset value by the "scale" value. (Omit this step if the "scale" value is 1.)
  3. For every positive value shown, add a minus sign (-) before them and for every negative value shown, remove the minus sign (-). For this example, the new offset values would be the following:
    • Left pose: -143, 121
    • Down pose: -18, 429
    • Up pose: 26, 75
    • Right pose: -30, 159
  4. Now add all "left" offset values by the lowest left offset value. (In this case, add 143.)
  5. Repeat the previous step for all "top" offset values. (In this case, add 75.)

Upon clicking the "Make a GIF!" button, the "all singing poses" GIF should look something like this:

BadFutureMetal-allPoses

Backgrounds

In a handful of mods, the background(s) may contain animated assets. For authenticity, the animation(s) must be included in the background. This process only works with XML-based animation(s).

Preparation

  • A presentation program. (Google Slides will be used as an example.)
  • The background assets. (Starman Slaughter's background will be used as an example.)
  • The extracted frames of the animation. (In this case, the fire.)
  • A video for reference. (Optional)

Tutorial

  1. Open Google Slides and create a blank presentation.
  2. Hover over the image icon in the menu and click on "Upload from computer".
  3. Locate the folder with the assets and upload them to the slide.
    1. For convenient manners, upload the assets from furthest to closest.
    2. Regarding the element with animation, upload only its first frame.
  4. Resize the uploaded asset(s) until the entire canvas is filled and recreate a static version of the background.
    1. To avoid any distortion, resize it by clicking on the squares situated on the corners.
  5. Once the background recreated, right-click on the slide and select "Duplicate Slide".
  6. Switch to the second slide and select the asset(s) with animation.
  7. Right-click on the selected asset, move the cursor to "Replace image" and select "Upload from computer".
  8. Choose the second frame.
  9. Repeat steps 5 to 8, until the number of slides matches the number of frames of the animation.
  10. Download all slides, once done, as a .PNG file.
    1. To download a slide, select the desired one, left-click on "File", scroll down to the "Download" button, and select "PNG image (.png, current slide)".
    2. Be sure, for convenient reasons, to start from the first to the last slide.
  11. Use a GIF-making website like Ezgif and upload the frames.
  12. Input a delay in between of frames of 4 in Ezgif, and export the GIF.

Note

If the background contains more than one animated element, the number of slides should be equal to the lowest common multiple of the number of frames of all animations (ie. a background with two parts of six and four frames respectfully equals to 12 slides) to assure a proper loop.

Cropping GIFs

To crop out unneeded blank margins around the GIF:

  1. Use Ezgif's cropping tool. Then choose the file and press 'Upload'. (Athena's idle animation will be used as an example.)
  2. Scroll down and check the box "trim transparent pixels around the image" & click crop image. It should show the final GIF right below it.
  3. Click save and rename the completed GIF.

Video Tutorial

Mobile

Many of the programs above only work for desktop computers, but Ezgif and Hans5958's TextureAtlas Extractor can be used on mobile.

If there are any questions, ask a wiki staff member.


Improving the colors

In rare occasions, GIFs may present problems with how they deal with colors, resulting in "statics" appearing on certain parts of the animation. This may differ depending on what GIF exporter is used. To improve the GIF's colors, thus its quality:

  1. Create an APNG with Ezgif's APNG maker, in the same manner as creating a GIF on Ezgif (refer to the tutorial up above).
  2. Save your animation once done.
  3. Switch to Ezgif's APNG to GIF converter.
  4. Input the recently created APNG and proceed to convert it into a GIF.
  5. Export the GIF animation.

This should resort to a GIF of better quality. Below is Lord X's Encore idle, used as an example.

Other Tutorial Videos

Resources

Online Sprite Extractor Programs

Downloadable Sprite Extractor Programs