<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Skin Pack Guide]]></title><description><![CDATA[<h1>Skins in Thunder Engine games</h1>
<p dir="auto">Welcome to a guide about creating your own player skin and using it in <a href="https://mfce.rnx.su/" rel="nofollow ugc">Mario Forever Community Edition</a> (MFCE).<br />
This guide will describe all the nuances about creating your own character for this game (and for <a href="https://github.com/Thunder-Engine-Dev/thunder-engine" rel="nofollow ugc">Thunder Engine</a> in general).</p>
<h2>Important</h2>
<p dir="auto">Before moving on, please note the following:</p>
<ul>
<li>A <strong>player skin</strong> is a customized audio-visual appearance of a character you're playing (Mario or Luigi), which means custom textures (sprites), custom voice lines, and custom sound effects can be applied to a player skin.</li>
<li>This means that you can play as either Mario or Luigi regardless of what skin you currently have.</li>
<li>A player skin cannot have modified physics or alter the game in any way other than the character you're playing. (Some global sound effects are an exception.)</li>
<li>All images should be in <strong>PNG</strong> format, and all audio files should be in <strong>OGG Vorbis</strong> format (<code>.ogg</code>).</li>
<li>Sprites are positioned centered on the player, which means that increasing the image height past the normal 64 pixels would grow the skin in all 4 directions. You can avoid that by balancing out the increased height, adding some empty space below your textures.</li>
<li>You can use the <strong>Skin Editor</strong> to have a better visual representation of the skin you're editing, but it is just a GUI helper tool and is not required.</li>
<li>In v2.0, a new menu in Tweaks has been added: the <strong>Skin Setup</strong>. It can greatly help with testing the skin functionalities.</li>
<li>
<ul>
<li>Alternatively, to test the skin quickly, enable the Console tweak (available after beating the game or using the Konami code in tweaks menu), go to Save Room, enter <code>reloadskins</code> to the console, and update your power-up.</li>
</ul>
</li>
<li>
<ul>
<li>
<ul>
<li>Note that <code>reloadskins</code> does NOT immediately apply the player suit changes to your character if used mid-game, and a manual power state update is required (can also be done with the <code>power</code> command, e.g. <code>power super</code>).</li>
</ul>
</li>
</ul>
</li>
</ul>
<p dir="auto">If you have trouble loading an old skin in a newer version of the game and need to update it, refer to section "Updating the Skin for MFCE v2.0" of this post.</p>
<h2>Installing a Skin</h2>
<p dir="auto">Go to the directory where the game is installed, and open a folder named <code>skins</code>. If you've downloaded a custom skin, extract the contents of the archive inside that folder. (Note that every skin must be in its own folder.)</p>
<p dir="auto">The folder name inside the skins folder becomes a name of the skin in the skin selector.<br />
This folder will be referenced in this guide as a <strong>skin root folder</strong>.</p>
<p dir="auto">The game should now detect the skin and add a selection to the "SKIN PACK" option in the Tweaks menu.<br />
It does a check for the skin folder once on game launch and every time you go back from the tweaks menu (but can be triggered mid-play using the <code>reloadskins</code> console command).</p>
<p dir="auto">If upon selecting the skin and exiting the tweaks menu you did not receive any errors, you have installed the skin correctly and, if you do not intend to edit the skin further, you can close the guide now.</p>
<h2>Setting Up a Custom Name</h2>
<p dir="auto">To change the name in Heads-Up Display (HUD) and cutscenes, open your skin in the Skin Editor and click "<strong>Options</strong>".</p>
<p dir="auto">The name can not be longer than 15 characters. Non-latin characters are not supported and might be displayed as garbage, although numbers and some special characters are allowed.</p>
<p dir="auto">Additionally, you can customize the story mode text when referring to the character you're playing.</p>
<h2>Custom Player Suit Animations</h2>
<p dir="auto">The main purpose of a player skin is to be able to change animations of the player suits.<br />
A <strong>player suit</strong> is what you transform to after obtaining/losing a power-up.</p>
<p dir="auto">For starters, each folder inside the skin root folder is regarded as a player suit. Hence, such folders will be referenced in this guide as <strong>player suit folders</strong>.</p>
<p dir="auto">There are 8 suits in total currently available in Thunder Engine, each of them can be modified using a player skin:</p>
<ul>
<li><code>small</code>,</li>
<li><code>super</code>,</li>
<li><code>fireball</code>,</li>
<li><code>beetroot</code>,</li>
<li><code>green_lui</code> (for both Green Lui &amp; Red Mar),</li>
<li><code>boomerang</code>,</li>
<li><code>iceball</code>,</li>
<li><code>frog</code>.</li>
</ul>
<p dir="auto">Each folder requires a <strong><code>skin_settings.tres</code></strong> file to be present, which contains SpriteFrames settings for the animation of the suit.</p>
<p dir="auto">Omitting a texture, a player suit folder or a <code>skin_settings.tres</code> file, will cause the game to load a default character texture/animation set (Mario or Luigi).<br />
To make sure that there are no problems with your skin, use the <code>Check for Errors</code> option in the Skin Setup, located in the tweaks menu.</p>
<p dir="auto">Please note that if you omit a lot of the textures (or all of them), there might be problems with loading default animations if you were/are playing as Luigi (some suits may display as Mario, others as Luigi).</p>
<h3>Animation List</h3>
<p dir="auto">Creating custom player suit animations requires you to be familiar with how each animation is used in the game, so here's a list of them and a brief explanation of where it is used:</p>
<ul>
<li><code>appear</code>: Animation that plays for 1 second when the player transforms into the current suit.</li>
<li><code>attack</code>: Attacking while on the ground (e.g. launching a fireball). If the suit provides no way to attack, it goes unused for that suit.</li>
<li><code>attack_air</code>: Attacking while mid-air. Can be enabled using a skin tweak. Same principle as <code>attack</code>.</li>
<li><code>back</code>: Unused in MFCE (yet). Supposed to be for warping between doors.</li>
<li><code>climb</code>: Climbing a vine like in Super Mario Bros. 3. Note that Version 2.0.0+ makes it a proper animation, instead of flipping sprites on a hard-coded timer, like it was before.</li>
<li><code>crouch</code>: Crouching down. For the <code>frog</code> suit, this is not used. For <code>small</code>, it can only be seen briefly with the Crouch Jumping tweak enabled.</li>
<li><code>default</code>: Standing still.</li>
<li><code>fall</code>: Being in mid-air while moving down to the ground, or falling. Can be replaced by <code>jump</code> with a skin tweak.</li>
<li><code>grab</code>: Grabbing something underneath.</li>
<li><code>hold_crouch</code>: Crouching while holding an item.</li>
<li><code>hold_default</code>: Standing still while holding an item.</li>
<li><code>hold_fall</code>: Falling while holding an item. Can be replaced by <code>hold_jump</code> with a skin tweak.</li>
<li><code>hold_jump</code>: Jumping while holding an item.</li>
<li><code>hold_walk</code>: Walking on the ground while holding an item.</li>
<li><code>hold_swim</code>: Swimming while holding an item.</li>
<li><code>jump</code>: Being in mid-air while moving away from the ground, or jumping.</li>
<li><code>kick</code>: Throwing a held item. Also used for kicking shells if "Kick Ground Animation" skin tweak is enabled.</li>
<li><code>skid</code>: Turning around, or skidding. Can be enabled using a tweak.</li>
<li><code>slide</code>: Sliding down a slope.</li>
<li><code>swim</code>: Swimming underwater.</li>
<li><code>swim_down</code>: Frog suit only: Swimming downwards.</li>
<li><code>swim_up</code>: Frog suit only: Swimming upwards.</li>
<li><code>walk</code>: Moving on the ground.</li>
<li><code>warp</code>: Warping between pipes. Can be disabled using a skin tweak.</li>
<li><code>win</code>: Win pose, used in the ending cutscene.</li>
</ul>
<h4>Skin Tweak Animation List</h4>
<p dir="auto">Additionally, if the respective skin tweaks are enabled, the following animations become available (These have to be added into <code>skin_settings.tres</code>, too):</p>
<p dir="auto">"Separate Run Animation":</p>
<ul>
<li><code>p_run</code>: Running at max speed.</li>
<li><code>p_jump</code>: Jumping while running at max speed.</li>
<li><code>p_fall</code>: Falling after jumping while running at max speed. If <code>Fall Animation</code> is disabled, replaced with <code>p_jump</code>.</li>
<li><code>hold_p_run</code>: Same as <code>p_run</code>, but while holding an item.</li>
<li><code>hold_p_jump</code>: Same as <code>p_jump</code>, but while holding an item.</li>
<li><code>hold_p_fall</code>: Same as <code>p_fall</code>, but while holding an item.</li>
</ul>
<p dir="auto">"Look Up Animation":</p>
<ul>
<li><code>look_up</code>: Standing still and pressing <strong>up</strong>.</li>
<li><code>hold_look_up</code>: Same as <code>look_up</code>, but while holding an item. Note that while looking up does sometimes make the item go straight up when kicked, it has nothing to do with the animation itself.</li>
</ul>
<p dir="auto">"Idle Animation":</p>
<ul>
<li><code>idle</code>: Standing still for <code>Idle Animation After Sec</code> amount of time, which is 10 by default. Interrupted by doing literally anything.</li>
</ul>
<h3>Custom Animation Images</h3>
<p dir="auto">Each animation for the player suit should have its own image in a PNG format, with animation name in the "Animation List" section as its file name (e.g. <code>default.png</code>). If you need multiple frames in the animation, make a spritesheet in that image.</p>
<p dir="auto">It is highly recommended to not provide huge images (over 2048 pixels), as that may negatively impact the resource usage of the game, and some graphics cards may not support such dimensions.</p>
<p dir="auto">Now, let's set up our animation in the next section.</p>
<h3>Skin Settings</h3>
<p dir="auto">As previously stated, each animation should contain its own <strong><code>skin_settings.tres</code></strong>. This file can be used to modify playing speed, set up sprite regions, and choose whether it should be looped.</p>
<p dir="auto">It is best to modify the animations using the Skin Editor provided with the game. It is basically a GUI tool for editing such files. But if you don't feel comfortable using it, you can keep reading.</p>
<p dir="auto">If you are creating a new skin, you can copy a <code>skin_settings.tres</code> file from the bundled "revamped mario" skin, or use the Skin Editor to create one. Now, let's examine what it contains.</p>
<p dir="auto">Open up <code>skin_settings.tres</code> with a Notepad or any other text editing program. Inside, at the beginning of the file, you may see some header text. It is not important. (Be aware that in versions v1.1 and below, the header is required for the skin to work properly, which may cause security issues if downloaded from an untrusted source.)</p>
<h4>Setting Up the Animations</h4>
<p dir="auto">Now the important part. There are three lists (called Dictionaries), going one after another, which contains settings data for all animations for the player suit. Make sure to follow the JSON format inside of these lists! Commas are important!</p>
<ul>
<li><code>animation_speeds</code> list is used to set speed for the animations, where FPS is used as a unit, e.g. setting it to 60 will play the animation in 60 FPS with game speed set to 1X. It can be in a float format (e.g. <code>1.25</code>) and must be in a range between 0 and 120.</li>
<li><code>animation_regions</code> list is the most important one. This is where you set coordinates and dimensions for each frame in the animation. Each value is represented as an array of Rect2 in format <code>Rect2(x, y, w, h)</code>, where <code>x</code> and <code>y</code> are an offset/position of the frame in the image starting from top-left corner and going rightwards and downwards accordingly, and <code>w</code> and <code>h</code> are dimensions of the frame in pixels.</li>
<li>
<ul>
<li>For example, if we assume that the image has a resolution of 96x64, <code>"default": [Rect2(0, 0, 48, 64), Rect2(48, 0, 48, 64)]</code> will make a 2-frame animation for a default (standing still) animation, where the first frame is a region going from the top-left corner down to coordinate (48, 64), and the second frame is a region going right after the first one to the right, going down to coordinate (96, 64), since it has the same dimensions.</li>
</ul>
</li>
<li><code>animation_loops</code> list is used to tell if the animation is looped or not, which is self-explanatory. For some animations, this does not matter, and can be either true or false.</li>
<li><code>animation_durations</code> list is used to make the frame last longer/shorter. 1.0 is the default speed.</li>
</ul>
<p dir="auto">Additionally, if you need to specify what frame should the animation go to after looping, you can either use the Skin Setup menu in MFCE, or edit the <code>suit_tweaks.json</code> file, under "loop_frame_offsets".<br />
Note that the values are 0-based. Negative values are ignored and will loop from the beginning.</p>
<h2>Custom Misc Textures</h2>
<p dir="auto">The following textures are not a part of a player suit, but can be changed using Player Skins as well:</p>
<ul>
<li>
<p dir="auto"><strong>death.png</strong> is what is shown upon player death. It cannot have any animations.</p>
</li>
<li>
<p dir="auto"><strong>selector.png</strong> is a selector image in main menus (Mario's/Luigi's head). Unlike the default selector, a selector with skins can only be a static image.</p>
</li>
<li>
<p dir="auto"><strong>map_icon.png</strong> is an image in the corner of a map screen. It is correctly displayed with dimensions 118x88.</p>
</li>
<li>
<p dir="auto"><strong>particle.png</strong> is used when the corresponding property is enabled in the Skin Setup menu (<code>suit_tweaks.json</code> file).</p>
</li>
</ul>
<p dir="auto">All custom miscellaneous textures should be in PNG format inside the skin root folder.<br />
Any other image in PNG format located in the skin root folder is loaded into memory, but will be completely unused.</p>
<p dir="auto">It is highly recommended to not provide huge images (over 2 MB), as that may negatively impact the resource usage of the game.</p>
<h2>Custom Global Sounds</h2>
<p dir="auto">Using the Player Skin system, some sound effects can be modified independently from the suit.</p>
<p dir="auto">All custom global sounds should be in OGG Vorbis format (<code>.ogg</code>) inside the folder named <code>_global_sounds</code>.</p>
<p dir="auto">You can observe and test all the available global sounds in the Sound Test menu, located in Tweaks &gt; Skin Setup (MFCE only). Note that added sounds are not updated immediately and require a re-enter to the tweaks menu, to trigger the skins update.</p>
<p dir="auto">All sounds can have up to 10 variations played at random. Accepted file name format is either <code>sound.ogg</code> or <code>sound_#.ogg</code>, where <strong>sound</strong> is the sound name, and <strong>#</strong> is a number from 0 to 9.</p>
<ul>
<li><strong><code>oh_no.ogg</code></strong> voice line is played when the player encounters an enemy on a map or falls into a Lava Run section.</li>
<li><strong><code>fall.ogg</code></strong> voice line is played when the player falls into a Lava Run section.</li>
</ul>
<p dir="auto"><strong>More sound effects to customize can be found in Sound Test menu from Skin Setup.</strong></p>
<p dir="auto">Omitting any of these will load a default global sound for the current character (Mario or Luigi).</p>
<h2>Custom Suit Sounds</h2>
<p dir="auto">There is a number of custom sounds that can be changed independently of each suit. These, too, can have up to 10 variations. Here's a list of them:</p>
<ul>
<li>"jump": Jumping sound.</li>
<li>"swim": Swimming sound.</li>
<li>"hurt": Taking damage and reverting to Super/Small suit.</li>
<li>"powerup": Grabbing a power-up and transforming into a new suit.</li>
<li>"powerup_no_transform": Grabbing a power-up without transforming into a new suit.</li>
<li>"pipe_in": Entering warp pipes.</li>
<li>"pipe_out": Exiting warp pipes.</li>
<li>"look_up": Played when pressing Up movement key while standing.</li>
<li>"attack": Played when throwing projectiles. Only for suits that have this ability.</li>
<li>"skid": Skidding. Can be disabled using a gameplay tweak. Delay between sounds can be customized in the Suit Tweaks.</li>
<li>"grab": Grabbing something.</li>
<li>"kick": Kicking something.</li>
<li>"ice_slide": Sliding on a slippery surface (like ice).</li>
<li>"jump_small": Frog suit only: small jumping sounds when hopping on land.</li>
</ul>
<p dir="auto">Suit Sounds should be located in their own <code>sounds</code> folder in the player <strong>suit</strong> folder, e.g. <code>revamped mario/beetroot/sounds</code>. If needed, duplicate the sounds for each suit.</p>
<p dir="auto">Like with Custom Global Sounds, Suit Sounds should be in OGG Vorbis format (<code>.ogg</code>).</p>
<p dir="auto">Notes:</p>
<ul>
<li>hurt.ogg only applies when the player takes damage, and is independent from the warping sound.</li>
<li>Custom death.ogg is only played in areas where the default SMW death music is played. Other instances of the death sound effect (e.g. The Lost Map, World of Stupidity, etc.) are left intact.</li>
<li>
<ul>
<li>This can be changed through Global Skin Tweaks.</li>
</ul>
</li>
</ul>
<h2>Updating the Skin for MFCE v2.0</h2>
<p dir="auto">Version 2.0 of Mario Forever: Community Edition changed the way the sounds are loaded, which was required for better organization.</p>
<p dir="auto">All custom voice lines that were previously available in v1.1 should now be located at directory <code>_global_sounds</code> inside the skin root folder. However, <em>custom sound effects</em> are now suit-dependent, and should be located in their own <code>sounds</code> folder in the player <strong>suit</strong> folder, e.g. <code>revamped mario/beetroot/sounds</code>.</p>
<h2>If you need assistance...</h2>
<p dir="auto">You can ask your question in this thread.</p>
]]></description><link>https://marioforever.space/topic/66/skin-pack-guide</link><generator>RSS for Node</generator><lastBuildDate>Thu, 04 Jun 2026 01:31:27 GMT</lastBuildDate><atom:link href="https://marioforever.space/topic/66.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 31 Jan 2026 00:21:00 GMT</pubDate><ttl>60</ttl></channel></rss>