diff --git a/Advanced templates/example_asymmetrical_6states_animated/follower_sound.ogg b/Advanced templates/example_asymmetrical_6states_animated/follower_sound.ogg new file mode 100644 index 0000000000000000000000000000000000000000..ad6c52e55e8d2fe8a6f46d42bb7df05803266f92 Binary files /dev/null and b/Advanced templates/example_asymmetrical_6states_animated/follower_sound.ogg differ diff --git a/Advanced templates/example_asymmetrical_6states_animated/properties.txt b/Advanced templates/example_asymmetrical_6states_animated/properties.txt new file mode 100644 index 0000000000000000000000000000000000000000..a6de7503c6e27e7022f323836b8165d157b4977a --- /dev/null +++ b/Advanced templates/example_asymmetrical_6states_animated/properties.txt @@ -0,0 +1,471 @@ +{ + "transparent_colors": [ + 115, 115, 255, + 82, 82, 255 + ], + "transparent_colors_explanation": "The above colors will be made transparent upon processing the template image for sprite conversion. You can add up to 4 colors to be set to transparent.", + + "name": "example", + "name_explanation": "The name of your follower. The names of followers appear on the main menu, upon toggling \"extrainfo mode\" with the drift button.", + "prefix": "EXMP", + "prefix_explanation": "A set of 4 characters used to internally identify your follower, mainly used for its files.", + "category": "Fanworks", + "category_explanation": "The category your follower will appear under. Followermaker doesn't allow for the creation of custom categories, though you can still enter one.", + + "prefcolor": "red", + "prefcolor_explanation": "Default follower color. Must use the name of a spray can, as seen on the main menu in extrainfo mode.", + "mode": 0, + "mode_explanation": "If floating (0) or on the ground (1).", + "scale": 1, + "scale_explanation": "(in Fracunits) Scale relative to the player's.", + "bubblescale": 0, + "bubblescale_explanation": "(in Fracunits) Bubble scale relative to the player scale. If not set, no bubble will spawn.", + "atangle": 230, + "atangle_explanation": "Angle the follower will be at around the player. The follower will always face the same direction as the player.", + "distance": 40, + "distance_explanation": "(in Fracunits) Distance relative to the player (in a circle).", + "height": 32, + "height_explanation": "(in Fracunits) Height of the follower, this is mostly important for Z-flipping.", + "zoffs": 32, + "zoffs_explanation": "(in Fracunits) Z-offset relative to the player's height. Cannot be negative.", + "horzlag": 3, + "horzlag_explanation": "(in Fracunits) Lag for X/Y displacement. Must be > 0 because we divide by this number.", + "vertlag": 6, + "verlag_explanation": "(in Fracunits) Lag for Z displacement. Must be > 0 because we divide by this number.", + "anglelag": 8, + "anglelag_explanation": "(in Fracunits) Angle rotation lag. Must be > 0 because we divide by this number.", + "bobamp": 4, + "bobamp_explanation": "(in Fracunits) Bob amplitude.", + "bobspeed": 70, + "bobspeed_explanation": "(in Tics) Arbitrary modifier for bobbing speed. Default is TICRATE*2 (70 Tics = 2 seconds)", + "hitconfirmtime": 1, + "hitconfirmtime_explanation": "(in Tics) Time to keep the hit confirm state playing for.", + "idle_animation_speed": 35, + "idle_animation_speed_explanation": "(in Tics) Number of Tics it takes to cycle through an animated sprite in the idle state.", + "following_animation_speed": 35, + "following_animation_speed_explanation": "(in Tics) Number of Tics it takes to cycle through an animated sprite in the following state.", + "hurt_animation_speed": 35, + "hurt_animation_speed_explanation": "(in Tics) Number of Tics it takes to cycle through an animated sprite in the hurt state.", + "lose_animation_speed": 35, + "lose_animation_speed_explanation": "(in Tics) Number of Tics it takes to cycle through an animated sprite in the lose state.", + "win_animation_speed": 35, + "win_animation_speed_explanation": "(in Tics) Number of Tics it takes to cycle through an animated sprite in the win state.", + "hitconfirm_animation_speed": 35, + "hitconfirm_animation_speed_explanation": "(in Tics) Number of Tics it takes to cycle through an animated sprite in the hit confirm state.", + + + "follower_states_help": "As you may know, followers have several animations for things that can occur during the race; these are described as \"states\". Followers can have up to 6 states, in order: an idle state, a following state (as in, following the player), a hurt state (when you get hit by an item), a lose state (when you lose the race), a win state (win the race), and a \"hit confirm\" state (occurs when you hit another racer with an item). Of these, the idle state is obligatory in all followers. Additionally, the duration of the hit confirm state is controlled by a variable which can be edited above.", + + "sprite_help": "The template is divided into several regions, each for a unique sprite, described by the below values. These sprite regions are each categorized according to the follower state in which they belong, and are further split into frames detailing both the rotation angle (indicated by numbers) and animation index (indicated by letters) of the follower. The \"sprite_size\" field determines the general size for each sprite region. \"Layers\" refers to the exact location of each sprite, with \"layer_step_size\" indicating how many pixels are stepped over for the position of the layer; layers also allow for literal layer functionality, allowing you to insert up to four sets of sprite locations, with the first sprite location being applied on top of following locations. You can also edit the offset of sprites, with the default templates providing automatic X axis centering for sprites, offset 16 pixels down on the Y axis.", + + "template_explanation": "This specific template is designed for followers with all six states a follower can have, each having 2-frame animations and 8 unique degrees of rotation.", + + "sprite_size": [128, 128], + "layer_step_size": [128, 128], + "sprites": { + "idle": { + "A1": { + "offset": [64, 112], + "layers": [[0, 0]] + }, + "A2": { + "offset": [64, 112], + "layers": [[1, 0]] + }, + "A3": { + "offset": [64, 112], + "layers": [[2, 0]] + }, + "A4": { + "offset": [64, 112], + "layers": [[3, 0]] + }, + "A5": { + "offset": [64, 112], + "layers": [[4, 0]] + }, + "A6": { + "offset": [64, 112], + "layers": [[5, 0]] + }, + "A7": { + "offset": [64, 112], + "layers": [[6, 0]] + }, + "A8": { + "offset": [64, 112], + "layers": [[7, 0]] + }, + "B1": { + "offset": [64, 112], + "layers": [[0, 1]] + }, + "B2": { + "offset": [64, 112], + "layers": [[1, 1]] + }, + "B3": { + "offset": [64, 112], + "layers": [[2, 1]] + }, + "B4": { + "offset": [64, 112], + "layers": [[3, 1]] + }, + "B5": { + "offset": [64, 112], + "layers": [[4, 1]] + }, + "B6": { + "offset": [64, 112], + "layers": [[5, 1]] + }, + "B7": { + "offset": [64, 112], + "layers": [[6, 1]] + }, + "B8": { + "offset": [64, 112], + "layers": [[7, 1]] + } + }, + "following": { + "A1": { + "offset": [64, 112], + "layers": [[8, 0]] + }, + "A2": { + "offset": [64, 112], + "layers": [[9, 0]] + }, + "A3": { + "offset": [64, 112], + "layers": [[10, 0]] + }, + "A4": { + "offset": [64, 112], + "layers": [[11, 0]] + }, + "A5": { + "offset": [64, 112], + "layers": [[12, 0]] + }, + "A6": { + "offset": [64, 112], + "layers": [[13, 0]] + }, + "A7": { + "offset": [64, 112], + "layers": [[14, 0]] + }, + "A8": { + "offset": [64, 112], + "layers": [[15, 0]] + }, + "B1": { + "offset": [64, 112], + "layers": [[8, 1]] + }, + "B2": { + "offset": [64, 112], + "layers": [[9, 1]] + }, + "B3": { + "offset": [64, 112], + "layers": [[10, 1]] + }, + "B4": { + "offset": [64, 112], + "layers": [[11, 1]] + }, + "B5": { + "offset": [64, 112], + "layers": [[12, 1]] + }, + "B6": { + "offset": [64, 112], + "layers": [[13, 1]] + }, + "B7": { + "offset": [64, 112], + "layers": [[14, 1]] + }, + "B8": { + "offset": [64, 112], + "layers": [[15, 1]] + } + }, + "hurt": { + "A1": { + "offset": [64, 112], + "layers": [[16, 0]] + }, + "A2": { + "offset": [64, 112], + "layers": [[17, 0]] + }, + "A3": { + "offset": [64, 112], + "layers": [[18, 0]] + }, + "A4": { + "offset": [64, 112], + "layers": [[19, 0]] + }, + "A5": { + "offset": [64, 112], + "layers": [[20, 0]] + }, + "A6": { + "offset": [64, 112], + "layers": [[21, 0]] + }, + "A7": { + "offset": [64, 112], + "layers": [[22, 0]] + }, + "A8": { + "offset": [64, 112], + "layers": [[23, 0]] + }, + "B1": { + "offset": [64, 112], + "layers": [[16, 1]] + }, + "B2": { + "offset": [64, 112], + "layers": [[17, 1]] + }, + "B3": { + "offset": [64, 112], + "layers": [[18, 1]] + }, + "B4": { + "offset": [64, 112], + "layers": [[19, 1]] + }, + "B5": { + "offset": [64, 112], + "layers": [[20, 1]] + }, + "B6": { + "offset": [64, 112], + "layers": [[21, 1]] + }, + "B7": { + "offset": [64, 112], + "layers": [[22, 1]] + }, + "B8": { + "offset": [64, 112], + "layers": [[23, 1]] + } + }, + "lose": { + "A1": { + "offset": [64, 112], + "layers": [[24, 0]] + }, + "A2": { + "offset": [64, 112], + "layers": [[25, 0]] + }, + "A3": { + "offset": [64, 112], + "layers": [[26, 0]] + }, + "A4": { + "offset": [64, 112], + "layers": [[27, 0]] + }, + "A5": { + "offset": [64, 112], + "layers": [[28, 0]] + }, + "A6": { + "offset": [64, 112], + "layers": [[29, 0]] + }, + "A7": { + "offset": [64, 112], + "layers": [[30, 0]] + }, + "A8": { + "offset": [64, 112], + "layers": [[31, 0]] + }, + "B1": { + "offset": [64, 112], + "layers": [[24, 1]] + }, + "B2": { + "offset": [64, 112], + "layers": [[25, 1]] + }, + "B3": { + "offset": [64, 112], + "layers": [[26, 1]] + }, + "B4": { + "offset": [64, 112], + "layers": [[27, 1]] + }, + "B5": { + "offset": [64, 112], + "layers": [[28, 1]] + }, + "B6": { + "offset": [64, 112], + "layers": [[29, 1]] + }, + "B7": { + "offset": [64, 112], + "layers": [[30, 1]] + }, + "B8": { + "offset": [64, 112], + "layers": [[31, 1]] + } + }, + "win": { + "A1": { + "offset": [64, 112], + "layers": [[32, 0]] + }, + "A2": { + "offset": [64, 112], + "layers": [[33, 0]] + }, + "A3": { + "offset": [64, 112], + "layers": [[34, 0]] + }, + "A4": { + "offset": [64, 112], + "layers": [[35, 0]] + }, + "A5": { + "offset": [64, 112], + "layers": [[36, 0]] + }, + "A6": { + "offset": [64, 112], + "layers": [[37, 0]] + }, + "A7": { + "offset": [64, 112], + "layers": [[38, 0]] + }, + "A8": { + "offset": [64, 112], + "layers": [[39, 0]] + }, + "B1": { + "offset": [64, 112], + "layers": [[32, 1]] + }, + "B2": { + "offset": [64, 112], + "layers": [[33, 1]] + }, + "B3": { + "offset": [64, 112], + "layers": [[34, 1]] + }, + "B4": { + "offset": [64, 112], + "layers": [[35, 1]] + }, + "B5": { + "offset": [64, 112], + "layers": [[36, 1]] + }, + "B6": { + "offset": [64, 112], + "layers": [[37, 1]] + }, + "B7": { + "offset": [64, 112], + "layers": [[38, 1]] + }, + "B8": { + "offset": [64, 112], + "layers": [[39, 1]] + } + }, + "hitconfirm": { + "A1": { + "offset": [64, 112], + "layers": [[40, 0]] + }, + "A2": { + "offset": [64, 112], + "layers": [[41, 0]] + }, + "A3": { + "offset": [64, 112], + "layers": [[42, 0]] + }, + "A4": { + "offset": [64, 112], + "layers": [[43, 0]] + }, + "A5": { + "offset": [64, 112], + "layers": [[44, 0]] + }, + "A6": { + "offset": [64, 112], + "layers": [[45, 0]] + }, + "A7": { + "offset": [64, 112], + "layers": [[46, 0]] + }, + "A8": { + "offset": [64, 112], + "layers": [[47, 0]] + }, + "B1": { + "offset": [64, 112], + "layers": [[40, 1]] + }, + "B2": { + "offset": [64, 112], + "layers": [[41, 1]] + }, + "B3": { + "offset": [64, 112], + "layers": [[42, 1]] + }, + "B4": { + "offset": [64, 112], + "layers": [[43, 1]] + }, + "B5": { + "offset": [64, 112], + "layers": [[44, 1]] + }, + "B6": { + "offset": [64, 112], + "layers": [[45, 1]] + }, + "B7": { + "offset": [64, 112], + "layers": [[46, 1]] + }, + "B8": { + "offset": [64, 112], + "layers": [[47, 1]] + } + }, + + "graphics": { + "icon": { + "overwrite_sprite_size": [16, 16], + "overwrite_layer_step_size": [1, 1], + "layers": [[6154, 10]] + } + } + } +} \ No newline at end of file diff --git a/Advanced templates/example_asymmetrical_6states_animated/sprites.png b/Advanced templates/example_asymmetrical_6states_animated/sprites.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f8080dd27ec938911124bc10886f1b707bdca1 Binary files /dev/null and b/Advanced templates/example_asymmetrical_6states_animated/sprites.png differ diff --git a/Advanced templates/example_symmetrical_6states_animated/follower_sound.ogg b/Advanced templates/example_symmetrical_6states_animated/follower_sound.ogg new file mode 100644 index 0000000000000000000000000000000000000000..ad6c52e55e8d2fe8a6f46d42bb7df05803266f92 Binary files /dev/null and b/Advanced templates/example_symmetrical_6states_animated/follower_sound.ogg differ diff --git a/Advanced templates/example_symmetrical_6states_animated/properties.txt b/Advanced templates/example_symmetrical_6states_animated/properties.txt new file mode 100644 index 0000000000000000000000000000000000000000..1f140401888b10ed4f83c55a400b2f3cb79adce4 --- /dev/null +++ b/Advanced templates/example_symmetrical_6states_animated/properties.txt @@ -0,0 +1,327 @@ +{ + "transparent_colors": [ + 115, 115, 255, + 82, 82, 255 + ], + "transparent_colors_explanation": "The above colors will be made transparent upon processing the template image for sprite conversion. You can add up to 4 colors to be set to transparent.", + + "name": "example", + "name_explanation": "The name of your follower. The names of followers appear on the main menu, upon toggling \"extrainfo mode\" with the drift button.", + "prefix": "EXMP", + "prefix_explanation": "A set of 4 characters used to internally identify your follower, mainly used for its files.", + "category": "Fanworks", + "category_explanation": "The category your follower will appear under. Followermaker doesn't allow for the creation of custom categories, though you can still enter one.", + + "prefcolor": "red", + "prefcolor_explanation": "Default follower color. Must use the name of a spray can, as seen on the main menu in extrainfo mode.", + "mode": 0, + "mode_explanation": "If floating (0) or on the ground (1).", + "scale": 1, + "scale_explanation": "(in Fracunits) Scale relative to the player's.", + "bubblescale": 0, + "bubblescale_explanation": "(in Fracunits) Bubble scale relative to the player scale. If not set, no bubble will spawn.", + "atangle": 230, + "atangle_explanation": "Angle the follower will be at around the player. The follower will always face the same direction as the player.", + "distance": 40, + "distance_explanation": "(in Fracunits) Distance relative to the player (in a circle).", + "height": 32, + "height_explanation": "(in Fracunits) Height of the follower, this is mostly important for Z-flipping.", + "zoffs": 32, + "zoffs_explanation": "(in Fracunits) Z-offset relative to the player's height. Cannot be negative.", + "horzlag": 3, + "horzlag_explanation": "(in Fracunits) Lag for X/Y displacement. Must be > 0 because we divide by this number.", + "vertlag": 6, + "verlag_explanation": "(in Fracunits) Lag for Z displacement. Must be > 0 because we divide by this number.", + "anglelag": 8, + "anglelag_explanation": "(in Fracunits) Angle rotation lag. Must be > 0 because we divide by this number.", + "bobamp": 4, + "bobamp_explanation": "(in Fracunits) Bob amplitude.", + "bobspeed": 70, + "bobspeed_explanation": "(in Tics) Arbitrary modifier for bobbing speed. Default is TICRATE*2 (70 Tics = 2 seconds)", + "hitconfirmtime": 1, + "hitconfirmtime_explanation": "(in Tics) Time to keep the hit confirm state playing for.", + "idle_animation_speed": 35, + "idle_animation_speed_explanation": "(in Tics) Number of Tics it takes to cycle through an animated sprite in the idle state.", + "following_animation_speed": 35, + "following_animation_speed_explanation": "(in Tics) Number of Tics it takes to cycle through an animated sprite in the following state.", + "hurt_animation_speed": 35, + "hurt_animation_speed_explanation": "(in Tics) Number of Tics it takes to cycle through an animated sprite in the hurt state.", + "lose_animation_speed": 35, + "lose_animation_speed_explanation": "(in Tics) Number of Tics it takes to cycle through an animated sprite in the lose state.", + "win_animation_speed": 35, + "win_animation_speed_explanation": "(in Tics) Number of Tics it takes to cycle through an animated sprite in the win state.", + "hitconfirm_animation_speed": 35, + "hitconfirm_animation_speed_explanation": "(in Tics) Number of Tics it takes to cycle through an animated sprite in the hit confirm state.", + + + "follower_states_help": "As you may know, followers have several animations for things that can occur during the race; these are described as \"states\". Followers can have up to 6 states, in order: an idle state, a following state (as in, following the player), a hurt state (when you get hit by an item), a lose state (when you lose the race), a win state (win the race), and a \"hit confirm\" state (occurs when you hit another racer with an item). Of these, the idle state is obligatory in all followers. Additionally, the duration of the hit confirm state is controlled by a variable which can be edited above.", + + "sprite_help": "The template is divided into several regions, each for a unique sprite, described by the below values. These sprite regions are each categorized according to the follower state in which they belong, and are further split into frames detailing both the rotation angle (indicated by numbers) and animation index (indicated by letters) of the follower. The \"sprite_size\" field determines the general size for each sprite region. \"Layers\" refers to the exact location of each sprite, with \"layer_step_size\" indicating how many pixels are stepped over for the position of the layer; layers also allow for literal layer functionality, allowing you to insert up to four sets of sprite locations, with the first sprite location being applied on top of following locations. You can also edit the offset of sprites, with the default templates providing automatic X axis centering for sprites, offset 16 pixels down on the Y axis.", + + "template_explanation": "This specific template is designed for followers with all six states a follower can have, each having 2-frame animations and 5 unique degrees of rotation. The second, third, and fourth rotation sprites are duplicated and mirrored, thus this template assumes a follower of symmetrical appearance.", + + "sprite_size": [128, 128], + "layer_step_size": [128, 128], + "sprites": { + "idle": { + "A1": { + "offset": [64, 112], + "layers": [[0, 0]] + }, + "A2A8": { + "offset": [64, 112], + "layers": [[1, 0]] + }, + "A3A7": { + "offset": [64, 112], + "layers": [[2, 0]] + }, + "A4A6": { + "offset": [64, 112], + "layers": [[3, 0]] + }, + "A5": { + "offset": [64, 112], + "layers": [[4, 0]] + }, + "B1": { + "offset": [64, 112], + "layers": [[0, 1]] + }, + "B2B8": { + "offset": [64, 112], + "layers": [[1, 1]] + }, + "B3B7": { + "offset": [64, 112], + "layers": [[2, 1]] + }, + "B4B6": { + "offset": [64, 112], + "layers": [[3, 1]] + }, + "B5": { + "offset": [64, 112], + "layers": [[4, 1]] + } + }, + "following": { + "A1": { + "offset": [64, 112], + "layers": [[5, 0]] + }, + "A2A8": { + "offset": [64, 112], + "layers": [[6, 0]] + }, + "A3A7": { + "offset": [64, 112], + "layers": [[7, 0]] + }, + "A4A6": { + "offset": [64, 112], + "layers": [[8, 0]] + }, + "A5": { + "offset": [64, 112], + "layers": [[9, 0]] + }, + "B1": { + "offset": [64, 112], + "layers": [[5, 1]] + }, + "B2B8": { + "offset": [64, 112], + "layers": [[6, 1]] + }, + "B3B7": { + "offset": [64, 112], + "layers": [[7, 1]] + }, + "B4B6": { + "offset": [64, 112], + "layers": [[8, 1]] + }, + "B5": { + "offset": [64, 112], + "layers": [[9, 1]] + } + }, + "hurt": { + "A1": { + "offset": [64, 112], + "layers": [[10, 0]] + }, + "A2A8": { + "offset": [64, 112], + "layers": [[11, 0]] + }, + "A3A7": { + "offset": [64, 112], + "layers": [[12, 0]] + }, + "A4A6": { + "offset": [64, 112], + "layers": [[13, 0]] + }, + "A5": { + "offset": [64, 112], + "layers": [[14, 0]] + }, + "B1": { + "offset": [64, 112], + "layers": [[10, 1]] + }, + "B2B8": { + "offset": [64, 112], + "layers": [[11, 1]] + }, + "B3B7": { + "offset": [64, 112], + "layers": [[12, 1]] + }, + "B4B6": { + "offset": [64, 112], + "layers": [[13, 1]] + }, + "B5": { + "offset": [64, 112], + "layers": [[14, 1]] + } + }, + "lose": { + "A1": { + "offset": [64, 112], + "layers": [[15, 0]] + }, + "A2A8": { + "offset": [64, 112], + "layers": [[16, 0]] + }, + "A3A7": { + "offset": [64, 112], + "layers": [[17, 0]] + }, + "A4A6": { + "offset": [64, 112], + "layers": [[18, 0]] + }, + "A5": { + "offset": [64, 112], + "layers": [[19, 0]] + }, + "B1": { + "offset": [64, 112], + "layers": [[15, 0]] + }, + "B2B8": { + "offset": [64, 112], + "layers": [[16, 0]] + }, + "B3B7": { + "offset": [64, 112], + "layers": [[17, 0]] + }, + "B4B6": { + "offset": [64, 112], + "layers": [[18, 0]] + }, + "B5": { + "offset": [64, 112], + "layers": [[19, 0]] + } + }, + "win": { + "A1": { + "offset": [64, 112], + "layers": [[20, 0]] + }, + "A2A8": { + "offset": [64, 112], + "layers": [[21, 0]] + }, + "A3A7": { + "offset": [64, 112], + "layers": [[22, 0]] + }, + "A4A6": { + "offset": [64, 112], + "layers": [[23, 0]] + }, + "A5": { + "offset": [64, 112], + "layers": [[24, 0]] + }, + "B1": { + "offset": [64, 112], + "layers": [[20, 1]] + }, + "B2B8": { + "offset": [64, 112], + "layers": [[21, 1]] + }, + "B3B7": { + "offset": [64, 112], + "layers": [[22, 1]] + }, + "B4B6": { + "offset": [64, 112], + "layers": [[23, 1]] + }, + "B5": { + "offset": [64, 112], + "layers": [[24, 1]] + } + }, + "hitconfirm": { + "A1": { + "offset": [64, 112], + "layers": [[25, 0]] + }, + "A2A8": { + "offset": [64, 112], + "layers": [[26, 0]] + }, + "A3A7": { + "offset": [64, 112], + "layers": [[27, 0]] + }, + "A4A6": { + "offset": [64, 112], + "layers": [[28, 0]] + }, + "A5": { + "offset": [64, 112], + "layers": [[29, 0]] + }, + "B1": { + "offset": [64, 112], + "layers": [[25, 1]] + }, + "B2B8": { + "offset": [64, 112], + "layers": [[26, 1]] + }, + "B3B7": { + "offset": [64, 112], + "layers": [[27, 1]] + }, + "B4B6": { + "offset": [64, 112], + "layers": [[28, 1]] + }, + "B5": { + "offset": [64, 112], + "layers": [[29, 1]] + } + }, + + "graphics": { + "icon": { + "overwrite_sprite_size": [16, 16], + "overwrite_layer_step_size": [1, 1], + "layers": [[3850, 10]] + } + } + } +} \ No newline at end of file diff --git a/Advanced templates/example_symmetrical_6states_animated/sprites.png b/Advanced templates/example_symmetrical_6states_animated/sprites.png new file mode 100644 index 0000000000000000000000000000000000000000..610a1e1497e0893335752c7d27c33e2674fc25f1 Binary files /dev/null and b/Advanced templates/example_symmetrical_6states_animated/sprites.png differ diff --git a/Basic templates/example_asymmetrical/follower_sound.ogg b/Basic templates/example_asymmetrical/follower_sound.ogg new file mode 100644 index 0000000000000000000000000000000000000000..ad6c52e55e8d2fe8a6f46d42bb7df05803266f92 Binary files /dev/null and b/Basic templates/example_asymmetrical/follower_sound.ogg differ diff --git a/Basic templates/example_asymmetrical/properties.txt b/Basic templates/example_asymmetrical/properties.txt new file mode 100644 index 0000000000000000000000000000000000000000..7dbb689c330713ac561c870a011094c044d5eac3 --- /dev/null +++ b/Basic templates/example_asymmetrical/properties.txt @@ -0,0 +1,91 @@ +{ + "transparent_colors": [ + 115, 115, 255, + 82, 82, 255 + ], + "transparent_colors_explanation": "The above colors will be made transparent upon processing the template image for sprite conversion. You can add up to 4 colors to be set to transparent.", + + "name": "example", + "name_explanation": "The name of your follower. The names of followers appear on the main menu, upon toggling \"extrainfo mode\" with the drift button.", + "prefix": "EXMP", + "prefix_explanation": "A set of 4 characters used to internally identify your follower, mainly used for its files.", + "category": "Fanworks", + "category_explanation": "The category your follower will appear under. Followermaker doesn't allow for the creation of custom categories, though you can still enter one.", + + "prefcolor": "red", + "prefcolor_explanation": "Default follower color. Must use the name of a spray can, as seen on the main menu in extrainfo mode.", + "mode": 0, + "mode_explanation": "If floating (0) or on the ground (1).", + "scale": 1, + "scale_explanation": "(in Fracunits) Scale relative to the player's.", + "bubblescale": 0, + "bubblescale_explanation": "(in Fracunits) Bubble scale relative to the player scale. If not set, no bubble will spawn.", + "atangle": 230, + "atangle_explanation": "Angle the follower will be at around the player. The follower will always face the same direction as the player.", + "distance": 40, + "distance_explanation": "(in Fracunits) Distance relative to the player (in a circle).", + "height": 32, + "height_explanation": "(in Fracunits) Height of the follower, this is mostly important for Z-flipping.", + "zoffs": 32, + "zoffs_explanation": "(in Fracunits) Z-offset relative to the player's height. Cannot be negative.", + "horzlag": 3, + "horzlag_explanation": "(in Fracunits) Lag for X/Y displacement. Must be > 0 because we divide by this number.", + "vertlag": 6, + "verlag_explanation": "(in Fracunits) Lag for Z displacement. Must be > 0 because we divide by this number.", + "anglelag": 8, + "anglelag_explanation": "(in Fracunits) Angle rotation lag. Must be > 0 because we divide by this number.", + "bobamp": 4, + "bobamp_explanation": "(in Fracunits) Bob amplitude.", + "bobspeed": 70, + "bobspeed_explanation": "(in Tics) Arbitrary modifier for bobbing speed. Default is TICRATE*2 (70 Tics = 2 seconds)", + + + "template_explanation": "This specific template is designed for a follower of asymmetrical appearance, allowing for 8 unique degrees of rotation.", + + "sprite_size": [128, 128], + "layer_step_size": [128, 128], + "sprites": { + "idle": { + "A1": { + "offset": [64, 112], + "layers": [[0, 0]] + }, + "A2": { + "offset": [64, 112], + "layers": [[1, 0]] + }, + "A3": { + "offset": [64, 112], + "layers": [[2, 0]] + }, + "A4": { + "offset": [64, 112], + "layers": [[3, 0]] + }, + "A5": { + "offset": [64, 112], + "layers": [[4, 0]] + }, + "A6": { + "offset": [64, 112], + "layers": [[5, 0]] + }, + "A7": { + "offset": [64, 112], + "layers": [[6, 0]] + }, + "A8": { + "offset": [64, 112], + "layers": [[7, 0]] + } + }, + + "graphics": { + "icon": { + "overwrite_sprite_size": [16, 16], + "overwrite_layer_step_size": [1, 1], + "layers": [[10, 138]] + } + } + } +} \ No newline at end of file diff --git a/Basic templates/example_asymmetrical/sprites.png b/Basic templates/example_asymmetrical/sprites.png new file mode 100644 index 0000000000000000000000000000000000000000..9a0f9d96ef48d814b940eec5d324a4080d044dd8 Binary files /dev/null and b/Basic templates/example_asymmetrical/sprites.png differ diff --git a/Basic templates/example_asymmetrical_animated/follower_sound.ogg b/Basic templates/example_asymmetrical_animated/follower_sound.ogg new file mode 100644 index 0000000000000000000000000000000000000000..ad6c52e55e8d2fe8a6f46d42bb7df05803266f92 Binary files /dev/null and b/Basic templates/example_asymmetrical_animated/follower_sound.ogg differ diff --git a/Basic templates/example_asymmetrical_animated/properties.txt b/Basic templates/example_asymmetrical_animated/properties.txt new file mode 100644 index 0000000000000000000000000000000000000000..772369d618dd52fa09ac5ddb9785da9a08c448e6 --- /dev/null +++ b/Basic templates/example_asymmetrical_animated/properties.txt @@ -0,0 +1,125 @@ +{ + "transparent_colors": [ + 115, 115, 255, + 82, 82, 255 + ], + "transparent_colors_explanation": "The above colors will be made transparent upon processing the template image for sprite conversion. You can add up to 4 colors to be set to transparent.", + + "name": "example", + "name_explanation": "The name of your follower. The names of followers appear on the main menu, upon toggling \"extrainfo mode\" with the drift button.", + "prefix": "EXMP", + "prefix_explanation": "A set of 4 characters used to internally identify your follower, mainly used for its files.", + "category": "Fanworks", + "category_explanation": "The category your follower will appear under. Followermaker doesn't allow for the creation of custom categories, though you can still enter one.", + + "prefcolor": "red", + "prefcolor_explanation": "Default follower color. Must use the name of a spray can, as seen on the main menu in extrainfo mode.", + "mode": 0, + "mode_explanation": "If floating (0) or on the ground (1).", + "scale": 1, + "scale_explanation": "(in Fracunits) Scale relative to the player's.", + "bubblescale": 0, + "bubblescale_explanation": "(in Fracunits) Bubble scale relative to the player scale. If not set, no bubble will spawn.", + "atangle": 230, + "atangle_explanation": "Angle the follower will be at around the player. The follower will always face the same direction as the player.", + "distance": 40, + "distance_explanation": "(in Fracunits) Distance relative to the player (in a circle).", + "height": 32, + "height_explanation": "(in Fracunits) Height of the follower, this is mostly important for Z-flipping.", + "zoffs": 32, + "zoffs_explanation": "(in Fracunits) Z-offset relative to the player's height. Cannot be negative.", + "horzlag": 3, + "horzlag_explanation": "(in Fracunits) Lag for X/Y displacement. Must be > 0 because we divide by this number.", + "vertlag": 6, + "verlag_explanation": "(in Fracunits) Lag for Z displacement. Must be > 0 because we divide by this number.", + "anglelag": 8, + "anglelag_explanation": "(in Fracunits) Angle rotation lag. Must be > 0 because we divide by this number.", + "bobamp": 4, + "bobamp_explanation": "(in Fracunits) Bob amplitude.", + "bobspeed": 70, + "bobspeed_explanation": "(in Tics) Arbitrary modifier for bobbing speed. Default is TICRATE*2 (70 Tics = 2 seconds)", + "idle_animation_speed": 35, + "idle_animation_speed_explanation": "(in Tics) Number of Tics it takes to cycle through an animated sprite in the idle state.", + + + "template_explanation": "This specific template is designed for a follower of asymmetrical appearance, allowing for 8 unique degrees of rotation, with a 2-frame animation.", + + "sprite_size": [128, 128], + "layer_step_size": [128, 128], + "sprites": { + "idle": { + "A1": { + "offset": [64, 112], + "layers": [[0, 0]] + }, + "A2": { + "offset": [64, 112], + "layers": [[1, 0]] + }, + "A3": { + "offset": [64, 112], + "layers": [[2, 0]] + }, + "A4": { + "offset": [64, 112], + "layers": [[3, 0]] + }, + "A5": { + "offset": [64, 112], + "layers": [[4, 0]] + }, + "A6": { + "offset": [64, 112], + "layers": [[5, 0]] + }, + "A7": { + "offset": [64, 112], + "layers": [[6, 0]] + }, + "A8": { + "offset": [64, 112], + "layers": [[7, 0]] + }, + "B1": { + "offset": [64, 112], + "layers": [[0, 1]] + }, + "B2": { + "offset": [64, 112], + "layers": [[1, 1]] + }, + "B3": { + "offset": [64, 112], + "layers": [[2, 1]] + }, + "B4": { + "offset": [64, 112], + "layers": [[3, 1]] + }, + "B5": { + "offset": [64, 112], + "layers": [[4, 1]] + }, + "B6": { + "offset": [64, 112], + "layers": [[5, 1]] + }, + "B7": { + "offset": [64, 112], + "layers": [[6, 1]] + }, + "B8": { + "offset": [64, 112], + "layers": [[7, 1]] + } + }, + + "graphics": { + "icon": { + "overwrite_sprite_size": [16, 16], + "overwrite_layer_step_size": [1, 1], + "layers": [[10, 266]] + } + } + } +} \ No newline at end of file diff --git a/Basic templates/example_asymmetrical_animated/sprites.png b/Basic templates/example_asymmetrical_animated/sprites.png new file mode 100644 index 0000000000000000000000000000000000000000..071dda6d9817e84cfb4a4e34c6b60ab0a8c182cb Binary files /dev/null and b/Basic templates/example_asymmetrical_animated/sprites.png differ diff --git a/Basic templates/example_symmetrical/follower_sound.ogg b/Basic templates/example_symmetrical/follower_sound.ogg new file mode 100644 index 0000000000000000000000000000000000000000..ad6c52e55e8d2fe8a6f46d42bb7df05803266f92 Binary files /dev/null and b/Basic templates/example_symmetrical/follower_sound.ogg differ diff --git a/Basic templates/example_symmetrical/properties.txt b/Basic templates/example_symmetrical/properties.txt new file mode 100644 index 0000000000000000000000000000000000000000..47e67a25e7ebc2fb78afd7bd902516737a349d57 --- /dev/null +++ b/Basic templates/example_symmetrical/properties.txt @@ -0,0 +1,79 @@ +{ + "transparent_colors": [ + 115, 115, 255, + 82, 82, 255 + ], + "transparent_colors_explanation": "The above colors will be made transparent upon processing the template image for sprite conversion. You can add up to 4 colors to be set to transparent.", + + "name": "example", + "name_explanation": "The name of your follower. The names of followers appear on the main menu, upon toggling \"extrainfo mode\" with the drift button.", + "prefix": "EXMP", + "prefix_explanation": "A set of 4 characters used to internally identify your follower, mainly used for its files.", + "category": "Fanworks", + "category_explanation": "The category your follower will appear under. Followermaker doesn't allow for the creation of custom categories, though you can still enter one.", + + "prefcolor": "red", + "prefcolor_explanation": "Default follower color. Must use the name of a spray can, as seen on the main menu in extrainfo mode.", + "mode": 0, + "mode_explanation": "If floating (0) or on the ground (1).", + "scale": 1, + "scale_explanation": "(in Fracunits) Scale relative to the player's.", + "bubblescale": 0, + "bubblescale_explanation": "(in Fracunits) Bubble scale relative to the player scale. If not set, no bubble will spawn.", + "atangle": 230, + "atangle_explanation": "Angle the follower will be at around the player. The follower will always face the same direction as the player.", + "distance": 40, + "distance_explanation": "(in Fracunits) Distance relative to the player (in a circle).", + "height": 32, + "height_explanation": "(in Fracunits) Height of the follower, this is mostly important for Z-flipping.", + "zoffs": 32, + "zoffs_explanation": "(in Fracunits) Z-offset relative to the player's height. Cannot be negative.", + "horzlag": 3, + "horzlag_explanation": "(in Fracunits) Lag for X/Y displacement. Must be > 0 because we divide by this number.", + "vertlag": 6, + "verlag_explanation": "(in Fracunits) Lag for Z displacement. Must be > 0 because we divide by this number.", + "anglelag": 8, + "anglelag_explanation": "(in Fracunits) Angle rotation lag. Must be > 0 because we divide by this number.", + "bobamp": 4, + "bobamp_explanation": "(in Fracunits) Bob amplitude.", + "bobspeed": 70, + "bobspeed_explanation": "(in Tics) Arbitrary modifier for bobbing speed. Default is TICRATE*2 (70 Tics = 2 seconds)", + + + "template_explanation": "This specific template is designed for a simple follower with 5 unique degrees of rotation. The second, third, and fourth rotation sprites are duplicated and mirrored, thus this template assumes a follower of symmetrical appearance.", + + "sprite_size": [128, 128], + "layer_step_size": [128, 128], + "sprites": { + "idle": { + "A1": { + "offset": [64, 112], + "layers": [[0, 0]] + }, + "A2A8": { + "offset": [64, 112], + "layers": [[1, 0]] + }, + "A3A7": { + "offset": [64, 112], + "layers": [[2, 0]] + }, + "A4A6": { + "offset": [64, 112], + "layers": [[3, 0]] + }, + "A5": { + "offset": [64, 112], + "layers": [[4, 0]] + } + }, + + "graphics": { + "icon": { + "overwrite_sprite_size": [16, 16], + "overwrite_layer_step_size": [1, 1], + "layers": [[10, 138]] + } + } + } +} \ No newline at end of file diff --git a/Basic templates/example_symmetrical/sprites.png b/Basic templates/example_symmetrical/sprites.png new file mode 100644 index 0000000000000000000000000000000000000000..f576ec18ee83510958f095772c2919b753e796c1 Binary files /dev/null and b/Basic templates/example_symmetrical/sprites.png differ diff --git a/Basic templates/example_symmetrical_2states_animated/follower_sound.ogg b/Basic templates/example_symmetrical_2states_animated/follower_sound.ogg new file mode 100644 index 0000000000000000000000000000000000000000..ad6c52e55e8d2fe8a6f46d42bb7df05803266f92 Binary files /dev/null and b/Basic templates/example_symmetrical_2states_animated/follower_sound.ogg differ diff --git a/Basic templates/example_symmetrical_2states_animated/properties.txt b/Basic templates/example_symmetrical_2states_animated/properties.txt new file mode 100644 index 0000000000000000000000000000000000000000..35b248990bdddfa5f7ef276990f1e78a735e4933 --- /dev/null +++ b/Basic templates/example_symmetrical_2states_animated/properties.txt @@ -0,0 +1,147 @@ +{ + "transparent_colors": [ + 115, 115, 255, + 82, 82, 255 + ], + "transparent_colors_explanation": "The above colors will be made transparent upon processing the template image for sprite conversion. You can add up to 4 colors to be set to transparent.", + + "name": "example", + "name_explanation": "The name of your follower. The names of followers appear on the main menu, upon toggling \"extrainfo mode\" with the drift button.", + "prefix": "EXMP", + "prefix_explanation": "A set of 4 characters used to internally identify your follower, mainly used for its files.", + "category": "Fanworks", + "category_explanation": "The category your follower will appear under. Followermaker doesn't allow for the creation of custom categories, though you can still enter one.", + + "prefcolor": "red", + "prefcolor_explanation": "Default follower color. Must use the name of a spray can, as seen on the main menu in extrainfo mode.", + "mode": 0, + "mode_explanation": "If floating (0) or on the ground (1).", + "scale": 1, + "scale_explanation": "(in Fracunits) Scale relative to the player's.", + "bubblescale": 0, + "bubblescale_explanation": "(in Fracunits) Bubble scale relative to the player scale. If not set, no bubble will spawn.", + "atangle": 230, + "atangle_explanation": "Angle the follower will be at around the player. The follower will always face the same direction as the player.", + "distance": 40, + "distance_explanation": "(in Fracunits) Distance relative to the player (in a circle).", + "height": 32, + "height_explanation": "(in Fracunits) Height of the follower, this is mostly important for Z-flipping.", + "zoffs": 32, + "zoffs_explanation": "(in Fracunits) Z-offset relative to the player's height. Cannot be negative.", + "horzlag": 3, + "horzlag_explanation": "(in Fracunits) Lag for X/Y displacement. Must be > 0 because we divide by this number.", + "vertlag": 6, + "verlag_explanation": "(in Fracunits) Lag for Z displacement. Must be > 0 because we divide by this number.", + "anglelag": 8, + "anglelag_explanation": "(in Fracunits) Angle rotation lag. Must be > 0 because we divide by this number.", + "bobamp": 4, + "bobamp_explanation": "(in Fracunits) Bob amplitude.", + "bobspeed": 70, + "bobspeed_explanation": "(in Tics) Arbitrary modifier for bobbing speed. Default is TICRATE*2 (70 Tics = 2 seconds)", + "idle_animation_speed": 35, + "idle_animation_speed_explanation": "(in Tics) Number of Tics it takes to cycle through an animated sprite in the idle state.", + "following_animation_speed": 35, + "following_animation_speed_explanation": "(in Tics) Number of Tics it takes to cycle through an animated sprite in the following state.", + + + "follower_states_help": "As you may know, followers have several animations for things that can occur during the race; these are described as \"states\". Followers can have up to 6 states, in order: an idle state, a following state (as in, following the player), a hurt state (when you get hit by an item), a lose state (when you lose the race), a win state (win the race), and a \"hit confirm\" state (occurs when you hit another racer with an item). Of these, the idle state is obligatory in all followers.", + + "template_explanation": "This specific template is designed for followers with an idle and following state, with 2-frame animations for each state and 5 unique degrees of rotation. The second, third, and fourth rotation sprites are duplicated and mirrored, thus this template assumes a follower of symmetrical appearance.", + + "sprite_size": [128, 128], + "layer_step_size": [128, 128], + "sprites": { + "idle": { + "A1": { + "offset": [64, 112], + "layers": [[0, 0]] + }, + "A2A8": { + "offset": [64, 112], + "layers": [[1, 0]] + }, + "A3A7": { + "offset": [64, 112], + "layers": [[2, 0]] + }, + "A4A6": { + "offset": [64, 112], + "layers": [[3, 0]] + }, + "A5": { + "offset": [64, 112], + "layers": [[4, 0]] + }, + "B1": { + "offset": [64, 112], + "layers": [[0, 1]] + }, + "B2B8": { + "offset": [64, 112], + "layers": [[1, 1]] + }, + "B3B7": { + "offset": [64, 112], + "layers": [[2, 1]] + }, + "B4B6": { + "offset": [64, 112], + "layers": [[3, 1]] + }, + "B5": { + "offset": [64, 112], + "layers": [[4, 1]] + } + }, + "following": { + "A1": { + "offset": [64, 112], + "layers": [[0, 2]] + }, + "A2A8": { + "offset": [64, 112], + "layers": [[1, 2]] + }, + "A3A7": { + "offset": [64, 112], + "layers": [[2, 2]] + }, + "A4A6": { + "offset": [64, 112], + "layers": [[3, 2]] + }, + "A5": { + "offset": [64, 112], + "layers": [[4, 2]] + }, + "B1": { + "offset": [64, 112], + "layers": [[0, 3]] + }, + "B2B8": { + "offset": [64, 112], + "layers": [[1, 3]] + }, + "B3B7": { + "offset": [64, 112], + "layers": [[2, 3]] + }, + "B4B6": { + "offset": [64, 112], + "layers": [[3, 3]] + }, + "B5": { + "offset": [64, 112], + "layers": [[4, 3]] + } + }, + + "graphics": { + "icon": { + "overwrite_sprite_size": [16, 16], + "overwrite_layer_step_size": [1, 1], + "layers": [[10, 522]] + } + } + } +} \ No newline at end of file diff --git a/Basic templates/example_symmetrical_2states_animated/sprites.png b/Basic templates/example_symmetrical_2states_animated/sprites.png new file mode 100644 index 0000000000000000000000000000000000000000..52e01b403d41c84b4699a29e4b0ee504eb231f70 Binary files /dev/null and b/Basic templates/example_symmetrical_2states_animated/sprites.png differ diff --git a/Basic templates/example_symmetrical_animated/follower_sound.ogg b/Basic templates/example_symmetrical_animated/follower_sound.ogg new file mode 100644 index 0000000000000000000000000000000000000000..ad6c52e55e8d2fe8a6f46d42bb7df05803266f92 Binary files /dev/null and b/Basic templates/example_symmetrical_animated/follower_sound.ogg differ diff --git a/Basic templates/example_symmetrical_animated/properties.txt b/Basic templates/example_symmetrical_animated/properties.txt new file mode 100644 index 0000000000000000000000000000000000000000..a425a8e41deb8838f99b91126f25b0e0fa487421 --- /dev/null +++ b/Basic templates/example_symmetrical_animated/properties.txt @@ -0,0 +1,101 @@ +{ + "transparent_colors": [ + 115, 115, 255, + 82, 82, 255 + ], + "transparent_colors_explanation": "The above colors will be made transparent upon processing the template image for sprite conversion. You can add up to 4 colors to be set to transparent.", + + "name": "example", + "name_explanation": "The name of your follower. The names of followers appear on the main menu, upon toggling \"extrainfo mode\" with the drift button.", + "prefix": "EXMP", + "prefix_explanation": "A set of 4 characters used to internally identify your follower, mainly used for its files.", + "category": "Fanworks", + "category_explanation": "The category your follower will appear under. Followermaker doesn't allow for the creation of custom categories, though you can still enter one.", + + "prefcolor": "red", + "prefcolor_explanation": "Default follower color. Must use the name of a spray can, as seen on the main menu in extrainfo mode.", + "mode": 0, + "mode_explanation": "If floating (0) or on the ground (1).", + "scale": 1, + "scale_explanation": "(in Fracunits) Scale relative to the player's.", + "bubblescale": 0, + "bubblescale_explanation": "(in Fracunits) Bubble scale relative to the player scale. If not set, no bubble will spawn.", + "atangle": 230, + "atangle_explanation": "Angle the follower will be at around the player. The follower will always face the same direction as the player.", + "distance": 40, + "distance_explanation": "(in Fracunits) Distance relative to the player (in a circle).", + "height": 32, + "height_explanation": "(in Fracunits) Height of the follower, this is mostly important for Z-flipping.", + "zoffs": 32, + "zoffs_explanation": "(in Fracunits) Z-offset relative to the player's height. Cannot be negative.", + "horzlag": 3, + "horzlag_explanation": "(in Fracunits) Lag for X/Y displacement. Must be > 0 because we divide by this number.", + "vertlag": 6, + "verlag_explanation": "(in Fracunits) Lag for Z displacement. Must be > 0 because we divide by this number.", + "anglelag": 8, + "anglelag_explanation": "(in Fracunits) Angle rotation lag. Must be > 0 because we divide by this number.", + "bobamp": 4, + "bobamp_explanation": "(in Fracunits) Bob amplitude.", + "bobspeed": 70, + "bobspeed_explanation": "(in Tics) Arbitrary modifier for bobbing speed. Default is TICRATE*2 (70 Tics = 2 seconds)", + "idle_animation_speed": 35, + "idle_animation_speed_explanation": "(in Tics) Number of Tics it takes to cycle through an animated sprite in the idle state.", + + + "template_explanation": "This specific template is designed for a simple follower with a 2-frame animation and 5 unique degrees of rotation. The second, third, and fourth rotation sprites are duplicated and mirrored, thus this template assumes a follower of symmetrical appearance.", + + "sprite_size": [128, 128], + "layer_step_size": [128, 128], + "sprites": { + "idle": { + "A1": { + "offset": [64, 112], + "layers": [[0, 0]] + }, + "A2A8": { + "offset": [64, 112], + "layers": [[1, 0]] + }, + "A3A7": { + "offset": [64, 112], + "layers": [[2, 0]] + }, + "A4A6": { + "offset": [64, 112], + "layers": [[3, 0]] + }, + "A5": { + "offset": [64, 112], + "layers": [[4, 0]] + }, + "B1": { + "offset": [64, 112], + "layers": [[0, 1]] + }, + "B2B8": { + "offset": [64, 112], + "layers": [[1, 1]] + }, + "B3B7": { + "offset": [64, 112], + "layers": [[2, 1]] + }, + "B4B6": { + "offset": [64, 112], + "layers": [[3, 1]] + }, + "B5": { + "offset": [64, 112], + "layers": [[4, 1]] + } + }, + + "graphics": { + "icon": { + "overwrite_sprite_size": [16, 16], + "overwrite_layer_step_size": [1, 1], + "layers": [[10, 266]] + } + } + } +} \ No newline at end of file diff --git a/Basic templates/example_symmetrical_animated/sprites.png b/Basic templates/example_symmetrical_animated/sprites.png new file mode 100644 index 0000000000000000000000000000000000000000..346ff440b0b04977b4f7aab133c5a25f70c8ef22 Binary files /dev/null and b/Basic templates/example_symmetrical_animated/sprites.png differ