diff --git a/docs/images/modding/spriting/spriting-orthographic-shadings.png b/docs/images/modding/spriting/spriting-orthographic-shadings.png new file mode 100644 index 0000000000..ed56619518 Binary files /dev/null and b/docs/images/modding/spriting/spriting-orthographic-shadings.png differ diff --git a/docs/modding/4-spriting.md b/docs/modding/4-spriting.md index 2b83de8e47..9984dcb3c9 100644 --- a/docs/modding/4-spriting.md +++ b/docs/modding/4-spriting.md @@ -1,14 +1,20 @@ # Spriting -Spriting is an essential part of Mindustry modding; anything you have made will appear as poorly scaled "oh no" images without it. +Spriting is a crucial aspect of Mindustry modding, as any custom creations would appear as placeholder sprite without it. However, the spriting style in Mindustry is intentionally simple and restrictive, which may differ from other games. Deviations from this style may result in graphics that appear out of place within the game. -The spriting style in Mindustry is simple yet very restrictive; what you can get away with in other games looks out of place in Mindustry. +As such, it is important to ensure that any custom creations align with the established spriting style of Mindustry to maintain consistency and visual appeal. By adhering to this style, the game remains true to its aesthetic and continues to provide an engaging experience for players. You can find all the vanilla sprites [here](https://github.com/Anuken/Mindustry/tree/master/core/assets-raw/sprites). -**Please note that using other modders' sprites without their permission is not allowed, although you may use them for inspiration or reference.** +Keep in mind however, this spriting guide is designed to help beginners understand the art style, while allowing experienced modders to exercise their creativity within the established framework. While these guidelines are not rigid rules, they serve as a useful starting point for maintaining the cohesive aesthetic of the game. -**Reasoning such as "The mod is open-source, I can do whatever I want with it," or something similar will not be acknowledged or tolerated and your mod will be blacklisted from the mod browser.** +Following these guidelines ensures that the game remains consistent and your mod, visually appealing or at the very least acceptable. At the same time, experienced modders have the flexibility to deviate from these guidelines, while still staying true to the game's art style. + +**Please be aware that using other modders' sprites without their permission is strictly prohibited. While you may use them as a source of inspiration or reference, you must obtain explicit permission before incorporating them into your own mods.** + +**Any justification that disregards the need for permission, such as claiming that the mod is open-source and therefore free to use, will not be acknowledged or tolerated. Failure to adhere to this policy may result in your mod being blacklisted from the mod browser** + +**Finally, it is important to avoid creating openly offensive or explicit sprites. It is best to keep your designs appropriate and suitable for all players.** ## **Spriting Software** It is highly recommended that you use spriting software that supports transparency and exporting images in `.PNG` format. Below is a list of recommended software. @@ -16,8 +22,7 @@ It is highly recommended that you use spriting software that supports transparen ### **Desktop** 1. **[Aseprite](https://www.aseprite.org/)** - - The gold standard. Has a bit of a learning curve, but it is very simple once you get used to it. - - It is **paid** software, but you can **[compile the source code on your own](https://github.com/aseprite/aseprite/blob/main/INSTALL.md#compiling)**. Please buy a license to support its developers. + - The gold standard. Has a bit of a learning curve, but it is very simple once you get used to it. It is **paid** software, but you can **[compile the source code on your own](https://github.com/aseprite/aseprite/blob/main/INSTALL.md#compiling)**. Please buy a license to support its developers. - Has many features useful for Mindustry spriting such as: - Mirroring - Pallete Control @@ -25,15 +30,15 @@ It is highly recommended that you use spriting software that supports transparen - Layering (Can also export individual layers) 2. **[LibreSprite](https://libresprite.github.io/#!/)** - - A fork of the Aseprite repository, not as up-to-date or as powerful as Aseprite, but it should work for spriting in Mindustry style. - + - A fork of the Aseprite repository and offers a similar set of features and functionality. Although not as up-to-date or powerful as Aseprite, Libresprite is a great option for those who want to create sprites in the Mindustry style without having to pay for the software. + 3. **[Piskel](https://www.piskelapp.com/)** - - A straightforward pixel art software that is not as powerful as Aseprite or LibreSprite, but it is sufficient. There is an online version & an offline downloadable version, both with the same features. - - Cannot export individual layers + - A pixel art software that may not be as feature-rich as Aseprite or LibreSprite, but it still gets the job done. It is available both online and as a downloadable version, and is more than enough for creating Mindustry-style sprites. + - Does not have the capability to export individual layers. 4. **[Pixilart](https://www.pixilart.com/)** - - An online spriting tool that has more features than Piskel though it lacks a mirror tool. If you're more familiar with pixilart, use this over piskel. - - Pretty bloated for spriting in Mindustry style. + - An online pixel art software that offers more features than Piskel, although it lacks a mirror tool. If you are more familiar with Pixilart, it may be a better choice over Piskel. + - Bloated for spriting in Mindustry style 5. **[Paint.NET](https://www.getpaint.net/)** - Very basic painting software, not to be confused with Paint 3D, Paint.NET is usable but not as convenient as the above mentioned. @@ -84,7 +89,7 @@ The game will look for sprites for content based on its name. `content/blocks/te - Units should be stored in `sprites/units` - Items should be stored in `sprites/items` -The game will modify some sprites. Turrets and units will have a `3-4px` gray border added to them, so you must account for that while making your sprites, leaving space around turrets. Default outline radius and color can be customized by changing the `outlineRadius` / `outlineColor` fields in the `Block` and `UnitType` classes. +The game will modify some sprites. Turrets and units will have a `3-4px` gray border added to them, so you must account for that while making your sprites, leaving space around turrets. Default outline radius and colour can be customized by changing the `outlineRadius` / `outlineColor` fields in the `Block` and `UnitType` classes. ### Overriding @@ -100,29 +105,35 @@ For blocks and crafters/smelters, the game may look for `-top`, and ` +![](https://raw.githubusercontent.com/Eschatologue/wiki/master/docs/images/modding/spriting/pal-mindustry.png) -Environment Color Pallete +Environment Colour Pallete - +![](https://raw.githubusercontent.com/Eschatologue/wiki/master/docs/images/modding/spriting/pal-mindustry-evn.png) -Assuming you have correctly acquired proper spriting software, you should be able to download these images and use them as a color palette. +Assuming you have correctly acquired proper spriting software, you should be able to download these images and use them as a colour palette. ## **Styles and Shading** -Mindustry has a simple yet restrictive art style. What may work for other games will look out of place in Mindustry. Because of this, guidelines have been established to help modders to create sprites that will fit in the game. +The art style of Mindustry is deliberately simple yet restrictive. To ensure that all custom sprites maintain a cohesive look and feel within the game, guidelines have been established to assist modders in creating sprites that will seamlessly integrate with the game environment. -Mindustry is a 2D game, so to add depth such as elevation and depression, we need to do a trick called 'shading'. Despite the actual asset being a 2D image, this trick makes it look 3D in-game. +To create depth and a three-dimensional appearance within the confines of a 2D game, Mindustry utilizes a shading technique. Specifically, **elevations** are marked with a **lighter tone**, **flat** areas with a **midtone**, and **depressions** with a **darker tone**. -Depending on where the light is shined, **elevations** are marked with **lighter tone**, **flat areas** with the **midtone**, and **depressions** with the **darker tone**. Picturing something in its 3D form and then drawing it in 2D is usually a good way to sprite something in Mindustry. +To effectively apply this shading technique, it is recommended to envision the object in 3D and then translate it into a 2D sprite. This can help ensure that the sprite blends seamlessly with the overall aesthetic of Mindustry. -This is only a guideline, however if you bend it without having made successful Mindustry sprites first, you will most likely create an abomination, and the #spriting channel will not be happy. +

+ +

+ +It's important to note that the established spriting guidelines for Mindustry are just that - guidelines. However, it's recommended that beginners adhere to these guidelines until they have successfully created a sprite or at the very least understood the Mindustry sprites styles, as bending the rules without experience can result in less than desirable outcomes. --- @@ -131,209 +142,220 @@ This is only a guideline, however if you bend it without having made successful We will use the Surge Smelter as an example. -With blocks, the light source is near the **top right** corner, and the shadows are in the **bottom left**. Pixels in the top right, which are close to the light source, should be light colored. Likewise, pixels in the bottom right should be dark. It works best to have a diagonal line through the middle separating them. +With blocks, the light source is near the **top right** corner, and the shadows are in the **bottom left**. Pixels in the top right, which are close to the light source, should be light coloured. Likewise, pixels in the bottom right should be dark. It works best to have a diagonal line through the middle separating them from **top left** to **bottom right**. -Most blocks have 3 color types: +Most blocks have 3 colour types: - - Base color, which has 3 shades: + - Base colour, which has 3 shades: - - ![](https://via.placeholder.com/15/B0BAC0/000000?text=+) `B0BAC0` | Light Tone - - ![](https://via.placeholder.com/15/989AA4/000000?text=+) `989AA4` | Midtone - - ![](https://via.placeholder.com/15/6E7080/000000?text=+) `6E7080` | Dark Tone + - ![](https://via.placeholder.com/15/B0BAC0/?text=+) `#B0BAC0` | Light Tone + - ![](https://via.placeholder.com/15/989AA4/?text=+) `#989AA4` | Midtone + - ![](https://via.placeholder.com/15/6E7080/?text=+) `#6E7080` | Dark Tone - - Decal color, which also has 3 shades: + - Decal colour, which also has 3 shades: - - ![](https://via.placeholder.com/15/feb380/000000?text=+) `FEB380` | Lght Tone - - ![](https://via.placeholder.com/15/ea8878/000000?text=+) `EA8878` | Midtone - - ![](https://via.placeholder.com/15/bc5452/000000?text=+) `BC5452` | Dark Tone + - ![](https://via.placeholder.com/15/f7e97e/?text=+) `#F7E97E` | Light Tone + - ![](https://via.placeholder.com/15/e3ae6f/?text=+) `#E3AE6f` | Midtone + - ![](https://via.placeholder.com/15/d57c65/?text=+) `#D57C65` | Dark Tone - - Bottom color + - Bottom colour - - ![](https://via.placeholder.com/15/4a4b53/000000?text=+) `4a4b53` + - ![](https://via.placeholder.com/15/4a4b53/?text=+) `#4A4B53` -**Base Color** represents the primary color of the block. It is recommmended to only use shades of gray for crafters, as all vanilla crafters do. +**Base colour** represents the primary colour of the block. It is recommmended to only use shades of gray for crafters, as all vanilla crafters do. -**Decal Color** is the accent color on your block. It represents the block's **role** or **purpose** and a way to differentiate them from each other. To pick what decal color to use for your blocks, you should think about your block's purpose. For example: +**Decal colour** is the accent colour on your block. It represents the block's **role** or **purpose** and a way to differentiate them from each other. To pick what decal colour to use for your blocks, you should think about your block's purpose. For example: **Plastanium Compressor** ![Plast-Comp](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/production/plastanium-compressor.png) -Plastanium Compressor has a green decal. This green decal is the same color as plastanium. Therefore, just by looking at it you can tell this block has a connection with plastanium. - -**Bottom Color** represents the insides of the block, where no light reaches, so it should be very dark. This could represent the bottom of a block with a chimney, like the Surge Smelter, for example. +Plastanium Compressor has a green decal. This green decal is the same colour as plastanium. Therefore, just by looking at it you can tell this block has a connection with plastanium. -Please note that different blocks require different amounts of layers depending on their type; for example, a wall would need only 1 layer, which is the sprite itself, while blocks like a reconstructor would need up to 4. See [#suffixes](#suffixes). - -Modded Examples: - - - Unit Bunker by Flin#8261 from [DiverseTech](https://github.com/FlinTyX/DiverseTech) - - - - - - Steam Press by Geschiedenis #4783 from [Unlimited Armament Works](https://github.com/Eschatologue/Unlimited-Armament-Works) - - - ![](https://raw.githubusercontent.com/Eschatologue/Unlimited-Armament-Works/master/assets/sprites/blocks/production/steam-press.png) +**Bottom colour** represents the insides of the block, where no light reaches, so it should be very dark. This could represent the bottom of a block with a chimney, like the Surge Smelter, for example. +Please note that different blocks require different amounts of layers depending on their type; for example, a wall would need only 1 layer, which is the sprite itself, while blocks like a reconstructor would need up to 4. It also depends on how many `drawers` you use for the block itself. --- ### **Turret Shading** -With Turret shading, the light source is on the **right side**, and the shadows are on the **left**. +With Turret shading, the light source is on the **right**, and the shadows are on the **left**. ![ripple](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/turrets/ripple.png) We will use the '**Ripple**' as an example for this part. -Turrets in general has 2 to 3 color type with 2 tone for each: +Turrets in general has 2 to 3 colour type with 2 tone for each: -- Base color +- Base colour - - ![](https://via.placeholder.com/15/7b7b7b/000000?text=+) `7B7B7B` | Light Tone - - ![](https://via.placeholder.com/15/4d4e58/000000?text=+) `4D4E58` | Dark Tone + - ![](https://via.placeholder.com/15/7b7b7b/?text=+) `#7B7B7B` | Light Tone + - ![](https://via.placeholder.com/15/4d4e58/?text=+) `#4D4E58` | Dark Tone -- Decal color +- Decal colour - - ![](https://via.placeholder.com/15/feb380/000000?text=+) `FEB380` | Light Tone - - ![](https://via.placeholder.com/15/ea8878/000000?text=+) `EA8878` | Dark Tone + - ![](https://via.placeholder.com/15/feb380/?text=+) `#FEB380` | Light Tone + - ![](https://via.placeholder.com/15/ea8878/?text=+) `#EA8878` | Dark Tone -- [Optional] Barrel Hole Color + +- [Optional] Barrel Hole Colour - - ![](https://via.placeholder.com/15/2c2d38/000000?text=+) `2C2D38` + - ![](https://via.placeholder.com/15/2c2d38/?text=+) `#2C2D38` -**Base Color** or Body-Color, is the primary color of the turret. This can be classic copper brown, white, dark grey, or a custom color(from the palette!). +**Body Colour** is the primary colour of the turret. This can range from classic copper brown, white, or dark grey. - Copper Brown + - ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/turrets/duo.png) ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/turrets/scorch.png) ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/turrets/hail.png) - Usually represents a low tier turret, such as **Duo**, **Scorch**, **Hail**, etc. - - ![](https://via.placeholder.com/15/c9a58f/000000?text=+) `C9A58F` - - ![](https://via.placeholder.com/15/8f665b/000000?text=+) `8F665B` + - ![](https://via.placeholder.com/15/c9a58f/?text=+) `#C9A58F` + - ![](https://via.placeholder.com/15/8f665b/?text=+) `#8F665B` - White - ![Arc](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/turrets/arc.png) ![Lancer](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/turrets/lancer.png) ![Parallax](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/defense/parallax.png) ![Segment](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/defense/segment.png) - Usually represents turret that uses power instead of items to shoot, such as **Arc**, **Lancer**, **Paralax**, **Segment**. - - ![](https://via.placeholder.com/15/f4f4f4/000000?text=+) `F4F4F4` - - ![](https://via.placeholder.com/15/c1c3d4/000000?text=+) `C1C3D4` + - ![](https://via.placeholder.com/15/f4f4f4/?text=+) `#F4F4F4` + - ![](https://via.placeholder.com/15/c1c3d4/?text=+) `#C1C3D4` - Dark Gray - ![Swarmer](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/turrets/swarmer.png) ![Cyclone](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/turrets/cyclone.png) ![Meltdown](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/turrets/meltdown.png) - In most cases, dark grey represents mid to high tier turret. - - ![](https://via.placeholder.com/15/7b7b7b/000000?text=+) `7B7B7B` - - ![](https://via.placeholder.com/15/4d4e58/000000?text=+) `4D4E58` + - ![](https://via.placeholder.com/15/7b7b7b/?text=+) `#7B7B7B` + - ![](https://via.placeholder.com/15/4d4e58/?text=+) `#4D4E58` + -**Decal color** in the turret is the same as regular block; it is an accent color and can represent the turret's role, purpose, or archetype. For example, if you are trying to group your turrets into different classes, you can differentiate them by decal color. +**Decal colour** in the turret is the same as regular block; it is an accent colour and can represent the turret's role, purpose, or archetype. For example, if you are trying to group your turrets into different classes, you can differentiate them by decal colour. -**Barrel Hole** is an optional color for turrets that represents the barrel hole of your turret; this is usually used for artillery turrets or missile launchers. +**Barrel Hole** is an optional colour for turrets that represents the barrel hole of your turret; this is usually used for artillery turrets or missile launchers. ![Swarmer](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/turrets/swarmer.png) ![Ripple](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/turrets/ripple.png) - - ![](https://via.placeholder.com/15/2c2d38/000000?text=+) `2C2D38` - -#### Unconventional Methods - - - **Turret Midtone** - - - Still a relatively new unconventional method is adding midtones into turret sprites to make it seem to have a flat surface, instead of only light and dark tones. - - - One example of this is the "Skyhammer" from [Unlimited Armament Works](https://github.com/Eschatologue/Unlimited-Armament-Works) - - - ![Skyhammer](https://raw.githubusercontent.com/Eschatologue/Unlimited-Armament-Works/master/assets/sprites/blocks/turrets/ART/skyhammer.png) + - ![](https://via.placeholder.com/15/2c2d38/?text=+) `#2C2D38` ---- +### **Resources Spriting & Shading** -### **Resources Shading** -Resource shading is quite simple and can have its light coming from **top corners**, **top to down**, or **right to left**. +Resources are items and liquids in Mindustry that can be obtained from the ground, walls, or buildings. **The 45-degree increment rule is loosely applied in their sprite design**. Shading can come from top corners, top to bottom, right to left, or left to right. -Resource sprites should only use 2 or 3 shades of one color. Make sure the sprite looks 3d and not flat, as then it will stick out like a paper thumb. +Resource sprites should have 2 or 3 shades of one colour and look 3D to avoid looking flat. Examples: +Items + ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/items/item-copper.png) ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/items/item-plastanium.png) -![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/items/item-graphite.png) ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/items/item-coal.png) ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/items/item-surge-alloy.png) ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/items/item-scrap.png) ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/items/item-pyratite.png) +![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/items/item-tungsten.png) +![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/items/item-carbide.png) +![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/items/item-fissile-matter.png) +![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/items/item-beryllium.png) + +Liquids + ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/items/liquid-cryofluid.png) +![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/items/liquid-oil.png) +![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/items/liquid-gallium.png) +![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/items/liquid-neoplasm.png) + +Gasses + +![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/items/liquid-hydrogen.png) +![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/items/liquid-nitrogen.png) +![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/items/liquid-ozone.png) +![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/items/liquid-cyanogen.png) -### **Unit Shading** -Units are generally the hardest to shade. -Unit shading can get pretty complex for bigger units. In unit shading, light comes from the **top to bottom** or **front to back**. The intensity of lighter tone and darker tone changes depending on what part you are working with on the unit. +### **Unit Spriting & Shading** -For units, light tone represents **elevation**, midtone represents **flat area**, and dark tone represents **depression**. +When it comes to unit sprites, it's important to keep in mind that they can have a wide range of shapes, from narrow tips to wide bases, or even with holes in the middle. However, it's generally best to avoid too many sharp or straight lines for the main body of your unit, as this can make it look too boxy and less interesting. -#### **Unit Base Color** +To create a more dynamic and visually appealing unit, consider incorporating curves or angled lines, and don't be afraid to experiment with different shapes and proportions. Remember that the shading on your unit should also reflect its shape, with lighter tones representing elevated areas, mid-tones representing flat surfaces, and darker tones representing depressions. - +Overall, the key to creating great unit sprites is to strike a balance between functionality and aesthetics. While it's important to ensure that your units are recognizable and easy to distinguish in-game, it's equally important to make them visually appealing for players to look at. -The Eclipse is used for this example as it is the most complicated vanilla unit. As you continuously work towards the backside, there will be less light tone and more midtone and dark tone. +#### **Unit Base Colour** + +

+ +

+ +For this example, we will use the Eclipse, which is one of the most complex vanilla Serpulo units in Mindustry. When shading the Eclipse (or any other sprite), it is important to gradually decrease the amount of light tone as you move towards the backside of the unit, while increasing the use of midtone and dark tone. This will help create a sense of depth and dimensionality in the sprite. Parts that get lit by the light will have a lighter tone, while the ones that are not get a darker tone; flat areas are midtone. - +

+ +

Above are the rough illustration of units if imagined in 3D. -- Base color, has 3 tones as usual: +- Base colour, has 3 tones as usual: + + - Serpulo Units - - ![](https://via.placeholder.com/15/B0BAC0/000000?text=+) `B0BAC0` | Light Tone - - ![](https://via.placeholder.com/15/989AA4/000000?text=+) `989AA4` | Midtone - - ![](https://via.placeholder.com/15/6E7080/000000?text=+) `6E7080` | Dark Tone + - ![](https://via.placeholder.com/15/B0BAC0/?text=+) `#B0BAC0` | Light Tone + - ![](https://via.placeholder.com/15/989AA4/?text=+) `#989AA4` | Midtone + - ![](https://via.placeholder.com/15/6E7080/?text=+) `#6E7080` | Dark Tone + + - Erekir Units + + - ![](https://via.placeholder.com/15/989AA4/?text=+) `#989AA4` | Light Tone + - ![](https://via.placeholder.com/15/6e7080/?text=+) `#6E7080` | Midtone + - ![](https://via.placeholder.com/15/4a4b53/?text=+) `#4A4B53` | Dark Tone -#### **Unit Decal Color** +#### **Unit Decal Colour** -Unit decal color only has 2 tones: light and dark. The color represents the unit's role in-game. +Unit decal colour only has 2 tones: light and dark. The colour represents the unit's role in-game. -- Yellow Color represents **Core** units, which the Core produces. +- Yellow Colour represents **Core** units, which the Core produces. - ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/units/gamma.png) ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/units/beta.png) - - ![](https://via.placeholder.com/15/ffd37f/000000?text=+) `FFD37F` | Light Tone - - ![](https://via.placeholder.com/15/d4816b/000000?text=+) `D4816B` | Dark Tone + - ![](https://via.placeholder.com/15/ffd37f/?text=+) `#FFD37F` | Light Tone + - ![](https://via.placeholder.com/15/d4816b/?text=+) `#D4816B` | Dark Tone -- Orange Color represents **Assault** units, which have the role of attacking your opponents. +- Orange Colour represents **Assault** units, which have the role of attacking your opponents. - ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/units/fortress.png) ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/units/horizon.png) - - ![](https://via.placeholder.com/15/ffa665/000000?text=+) `FFA665` | Light Tone - - ![](https://via.placeholder.com/15/d06b53/000000?text=+) `D06B53` | Dark Tone + - ![](https://via.placeholder.com/15/ffa665/?text=+) `#FFA665` | Light Tone + - ![](https://via.placeholder.com/15/d06b53/?text=+) `#D06B53` | Dark Tone -- Green Color represents **Support** units that can build, heal, and shield your units. +- Green Colour represents **Support** units that can build, heal, and shield your units. - ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/units/poly.png) ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/units/retusa.png) - - ![](https://via.placeholder.com/15/84f491/000000?text=+) `84F491` | Light Tone - - ![](https://via.placeholder.com/15/62ae7f/000000?text=+) `62AE7F` | Dark Tone + - ![](https://via.placeholder.com/15/84f491/?text=+) `#84F491` | Light Tone + - ![](https://via.placeholder.com/15/62ae7f/?text=+) `#62AE7F` | Dark Tone -- Purple Color represents ~~spooder~~ **Specialist** units, which do other things. +- Purple Colour represents ~~spooder~~ **Specialist** units, which do other things. - ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/units/crawler.png) ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/units/arkyid.png) - - ![](https://via.placeholder.com/15/bf92f9/000000?text=+) `BF92F9` | Light Tone - - ![](https://via.placeholder.com/15/665c9f/000000?text=+) `665C9F` | Dark Tone + - ![](https://via.placeholder.com/15/bf92f9/?text=+) `#BF92F9` | Light Tone + - ![](https://via.placeholder.com/15/665c9f/?text=+) `#665C9F` | Dark Tone -You are free to pick whatever color you would like, as long as it's present on multiple units and fits with the other colors in the palette. +You are free to pick whatever colour you would like, as long as it's present on multiple units and fits with the other colours in the palette. -#### **Unit Cell/Team Color** +#### **Unit Cell/Team Colour** Unit Cells are sprites used to differentiate units between teams; they are separate sprites that will be loaded on top of the unit. - - ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/units/fortress.png) ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/units/fortress-cell.png) -Above is a fortress with its cell. The game will automatically replace the **white**(#FFFFF) and **tan**(#DCC6C6) colors with shades of team color. Your cell sprites should only have the two shades below: +Above is a fortress with its cell. The game will automatically replace the **white**(#FFFFFF) and **tan**(#DCC6C6) colours with shades of team colour. Your cell sprites should only have the two shades below: - - ![](https://via.placeholder.com/15/ffffff/000000?text=+) `FFFFFF` | Light Tone - - ![](https://via.placeholder.com/15/dcc6c6/000000?text=+) `DCC6C6` | Dark Tone + - ![](https://via.placeholder.com/15/ffffff/?text=+) `#FFFFFF` | Light Tone + - ![](https://via.placeholder.com/15/dcc6c6/?text=+) `#DCC6C6` | Dark Tone Spriting software capable of using layers and exporting them separately is highly recommended because you can sprite the unit itself and the cell on a separate layer within one file. @@ -350,7 +372,9 @@ Weapons' rotation is based on the centre of the sprite; if you want to shift the #### **Unit Spriting Stages** - +

+ +

The process of drawing units can be roughly divided into 5 stages: @@ -366,28 +390,34 @@ The process of drawing units can be roughly divided into 5 stages: > written by Zhenьkotron#9493, proofread by Geschiedenis#4783, grammar fixed by BalaM314#4781. +Alternatively, in the provided [link](https://youtu.be/wzitO-EESGY), you can find a video on how Anuke, the creator of Mindustry, creates his own sprites + ### **Outlines** -Leave 4 pixels of space around the edges of turret sprites and unit sprites, as the game will use that space to automatically add outlines. +It is recommended to leave a space of at least 4 pixels around the edges of turret and unit sprites. This space will allow the game to automatically add outlines to the sprites. ---- +---- ### **Evironmental Sprites** -Environmental sprites are a bit different from the rest of the Mindustry spriting style, which is that the **45° increment rule doesn't apply**. -Environmental sprites will make up most, if not the majority, of a Mindustry game, so it should be in your best interest that the sprite you've made is subtle enough and looks great despite being tiled over and over again. +Environmental sprites in Mindustry have a slightly different spriting style compared to other assets in the game. Unlike other sprites, **the 45-degree increment rule does not apply** to environmental sprites. These sprites make up a significant portion of the game's visuals, so it's essential to ensure that the sprites you create look great despite being tiled repeatedly. #### **Floors** -Floors only have 2 color tones, and the number of variations is up to you. +Floors only have 2 colour tones, and the number of variations is up to you. - Vanilla Examples : - - ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/environment/basalt1.png) ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/environment/basalt2.png) ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/environment/basalt3.png) - - ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/environment/dirt1.png) ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/environment/dirt2.png) ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/environment/dirt3.png) + - ![basalt1](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/environment/basalt1.png) ![basalt2](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/environment/basalt2.png) ![basalt3](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/environment/basalt3.png) + + - ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/environment/beryllic-stone1.png) ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/environment/beryllic-stone2.png) ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/environment/beryllic-stone3.png) + + - ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/environment/magmarock1.png) ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/environment/magmarock2.png) ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/environment/magmarock3.png) - Modded Examples : - - ![](https://raw.githubusercontent.com/Sh1penfire/Endless-Rusting/master/assets/sprites/blocks/environment/classem-stolnene1.png) ![](https://raw.githubusercontent.com/Sh1penfire/Endless-Rusting/master/assets/sprites/blocks/environment/classem-stolnene2.png) ![](https://raw.githubusercontent.com/Sh1penfire/Endless-Rusting/master/assets/sprites/blocks/environment/classem-stolnene3.png) - - ![](https://raw.githubusercontent.com/Sh1penfire/Endless-Rusting/master/assets/sprites/blocks/environment/ebrin-drylon1.png) ![](https://raw.githubusercontent.com/Sh1penfire/Endless-Rusting/master/assets/sprites/blocks/environment/ebrin-drylon2.png) ![](https://raw.githubusercontent.com/Sh1penfire/Endless-Rusting/master/assets/sprites/blocks/environment/ebrin-drylon3.png) ![](https://raw.githubusercontent.com/Sh1penfire/Endless-Rusting/master/assets/sprites/blocks/environment/ebrin-drylon4.png) ![](https://raw.githubusercontent.com/Sh1penfire/Endless-Rusting/master/assets/sprites/blocks/environment/ebrin-drylon5.png) ![](https://raw.githubusercontent.com/Sh1penfire/Endless-Rusting/master/assets/sprites/blocks/environment/ebrin-drylon6.png) + - ![](https://raw.githubusercontent.com/Eschatologue/Endless-Rusting-for-wikiEX/master/assets/sprites/blocks/environment/classem-stolnene1.png) ![](https://raw.githubusercontent.com/Eschatologue/Endless-Rusting-for-wikiEX/master/assets/sprites/blocks/environment/classem-stolnene2.png) ![](https://raw.githubusercontent.com/Eschatologue/Endless-Rusting-for-wikiEX/master/assets/sprites/blocks/environment/classem-stolnene3.png) + + - ![](https://raw.githubusercontent.com/Eschatologue/Endless-Rusting-for-wikiEX/master/assets/sprites/blocks/environment/ebrin-drylon1.png) ![](https://raw.githubusercontent.com/Eschatologue/Endless-Rusting-for-wikiEX/master/assets/sprites/blocks/environment/ebrin-drylon2.png) ![](https://raw.githubusercontent.com/Eschatologue/Endless-Rusting-for-wikiEX/master/assets/sprites/blocks/environment/ebrin-drylon3.png) + > Sprites by Sh1penfire#0868 from [Endless-Rusting](https://github.com/Sh1penfire/Endless-Rusting) @@ -397,45 +427,57 @@ Not to be confused with buildable defenses, environmental walls have **3 color t Walls also have an optional 2x2 version, which is randomly mixed in with the 1x1 walls. - Vanilla Example : - - ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/environment/dacite-wall1.png) ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/environment/dacite-wall2.png) ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/environment/dacite-wall-large.png) + - ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/environment/stone-wall1.png) ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/environment/stone-wall2.png) ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/environment/stone-wall-large.png) + + - ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/environment/sand-wall1.png) ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/environment/sand-wall2.png) ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/environment/sand-wall-large.png) + + - ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/environment/ferric-stone-wall1.png) ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/environment/ferric-stone-wall2.png) ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/environment/ferric-stone-wall-large.png) + + - ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/environment/arkyic-wall1.png) ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/environment/arkyic-wall2.png) ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/environment/arkyic-wall-large.png) + - Modded Example : - - ![](https://raw.githubusercontent.com/Sh1penfire/Endless-Rusting/master/assets/sprites/blocks/environment/classem-wallen1.png) ![](https://raw.githubusercontent.com/Sh1penfire/Endless-Rusting/master/assets/sprites/blocks/environment/classem-wallen2.png) + + - ![](https://raw.githubusercontent.com/Eschatologue/Endless-Rusting-for-wikiEX/master/assets/sprites/blocks/environment/classem-wallen1.png) ![](https://raw.githubusercontent.com/Eschatologue/Endless-Rusting-for-wikiEX/master/assets/sprites/blocks/environment/classem-wallen2.png) ![](https://raw.githubusercontent.com/Eschatologue/Endless-Rusting-for-wikiEX/master/assets/sprites/blocks/environment/classem-wallen-large.png) + + - ![](https://raw.githubusercontent.com/Eschatologue/Endless-Rusting-for-wikiEX/master/assets/sprites/blocks/environment/volen-wallen1.png) ![](https://raw.githubusercontent.com/Eschatologue/Endless-Rusting-for-wikiEX/master/assets/sprites/blocks/environment/volen-wallen2.png) ![](https://raw.githubusercontent.com/Eschatologue/Endless-Rusting-for-wikiEX/master/assets/sprites/blocks/environment/volen-wallen-large.png) + > Sprites by Sh1penfire#0868 from [Endless-Rusting](https://github.com/Sh1penfire/Endless-Rusting) #### **Ores** -Ores are overlaid on top of floors, so they should look decent across all floor textures they will likely be placed on. +Ores can be located either on the floor or walls, and they are essential for players to acquire resources in Mindustry. Players can place drills on the ores or beside them to extract the resources. - - Vanilla Examples : - - ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/environment/thorium1.png) ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/environment/thorium2.png) ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/environment/thorium3.png) - - ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/environment/scrap1.png) ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/environment/scrap2.png) ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/environment/scrap3.png) - - Modded Examples : - - ![](https://raw.githubusercontent.com/Sh1penfire/Endless-Rusting/master/assets/sprites/blocks/environment/melonaleum1.png) ![](https://raw.githubusercontent.com/Sh1penfire/Endless-Rusting/master/assets/sprites/blocks/environment/melonaleum2.png) - - ![](https://raw.githubusercontent.com/Sh1penfire/Endless-Rusting/master/assets/sprites/blocks/environment/taconite1.png) ![](https://raw.githubusercontent.com/Sh1penfire/Endless-Rusting/master/assets/sprites/blocks/environment/taconite2.png) ![](https://raw.githubusercontent.com/Sh1penfire/Endless-Rusting/master/assets/sprites/blocks/environment/taconite3.png) +It is important to choose the color of the ore to match the resource it represents. For example, thorium ore should have the same color as the thorium item. -> Sprites by Sh1penfire from [Endless-Rusting](https://github.com/Sh1penfire/Endless-Rusting) + - Floor Ore Example : + - Copper + - ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/environment/ore-copper1.png) ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/environment/ore-copper2.png) ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/environment/ore-copper3.png) -#### **Props** -Props(or boulders) are player breakable environmental blocks that will occur randomly over a floor, they have their own files, separate from environmental sprites. + - Beryllium + - ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/environment/ore-beryllium1.png) ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/environment/ore-beryllium2.png) ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/environment/ore-beryllium3.png) - - Examples : + - Titanium + - ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/environment/ore-titanium1.png) ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/environment/ore-titanium2.png) ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/environment/ore-titanium3.png) - - ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/props/boulder1.png) ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/props/boulder2.png) - - ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/props/sand-boulder1.png) ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/props/sand-boulder2.png) + - Tungsten + - ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/environment/ore-tungsten1.png) ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/environment/ore-tungsten2.png) ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/environment/ore-tungsten3.png) + - Wall Ore Example : -#### **Trees** + - Beryllium + - ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/environment/ore-wall-beryllium1.png) ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/environment/ore-wall-beryllium2.png) ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/environment/ore-wall-beryllium3.png) - + - Tungsten + - ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/environment/ore-wall-tungsten1.png) ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/environment/ore-wall-tungsten2.png) ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/environment/ore-wall-tungsten3.png) -Trees are drawn above most types of blocks, units can also pass through them, and they only act as additional foliage for maps. + -Keep in mind that trees in particular have shadow sprites, you have to make these manually. +#### **Props** +Props(or boulders) are player breakable environmental blocks that will occur randomly over a floor, they have their own files, separate from environmental sprites. - Examples : - - - - - - ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/props/white-tree-shadow.png) + + - ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/props/boulder1.png) ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/props/boulder2.png) + - ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/props/sand-boulder1.png) ![](https://raw.githubusercontent.com/Anuken/Mindustry/master/core/assets-raw/sprites/blocks/props/sand-boulder2.png) ---