Texture Replacement
Texture replacement lets you swap out FM’s icons, backgrounds, and UI images with your own.
Supported Formats
| Format | Best For | Notes |
|---|---|---|
| PNG | Icons, UI elements | Supports transparency |
| JPG | Backgrounds | Smaller file size |
| SVG | Scalable icons | Vector format |
Setting Up
Folder Structure
my-skin/
├── config.json
└── graphics/
├── icons/
│ ├── my-star.png
│ ├── my-badge.svg
│ └── mapping.json
└── backgrounds/
├── main-bg.jpg
└── mapping.jsonAdding to Config
Include your asset folders in config.json:
{
"schema_version": 1,
"name": "My Skin",
"includes": [
"graphics/icons",
"graphics/backgrounds"
]
}Important: Without this, your assets won’t be processed!
Mapping Files
Each asset folder needs a mapping.json that tells FM Skin Builder which textures to replace.
Basic Syntax
{
"your_file.png": "game_texture_name"
}- Left side (value): Your replacement file name (without extension)
- Right side (key): The original texture name in FM’s bundles
Example
{
"my-star.png": "star_rating",
"my-badge.svg": "club_badge_small"
}This replaces:
star_ratingwithgraphics/icons/my-star.pngclub_badge_smallwithgraphics/icons/my-badge.svg
Wildcard Patterns
Use * to match multiple textures:
{
"my-star.png": "star_*",
"my-badge.svg": "badge_*"
}This replaces:
star_gold,star_silver,star_rating→ all becomemy-star.pngbadge_small,badge_large,badge_club→ all becomemy-badge.svg
Why wildcards?
FM often has multiple variants of the same icon (different sizes, states). Wildcards let you replace all variants at once.
Finding Texture Names
Asset Catalogue
Browse the Asset Catalogue to discover textures:
Asset Catalogue showing textures
Screenshot ID: catalogue-textures
- Search by name or visual appearance
- See dimensions and bundle location
- Copy names for your mapping
Trial and Error
Use broad wildcards to discover names:
{
"test.png": "*_icon",
"test.svg": "icon_*"
}Build and check logs for what matched.
Icon Replacement
Creating Icon Files
Recommended specifications:
| Size | Use Case |
|---|---|
| 16x16 | Small toolbar icons |
| 32x32 | Standard icons |
| 64x64 | Large icons |
| 128x128 | High-DPI displays |
Tips:
- Match the original icon’s dimensions when possible
- Use transparency for icons (PNG)
- Keep file sizes reasonable
Example: Custom Star Icon
-
Create
graphics/icons/custom-star.png(32x32, PNG with transparency) -
Create
graphics/icons/mapping.json:
{
"custom-star.png": "star_*"
}- Ensure config includes the folder:
{
"includes": ["graphics/icons"]
}- Build and test
Before and after icon replacement
Screenshot ID: icon-before-after
Background Replacement
Creating Background Files
Recommended specifications:
- Resolution: 1920x1080 or higher
- Format: JPG (for smaller size) or PNG (for quality)
- Aspect ratio: Match FM’s display areas
Example: Custom Background
-
Create
graphics/backgrounds/my-bg.jpg -
Create
graphics/backgrounds/mapping.json:
{
"my-bg.jpg": "main_background",
"my-bg.jpg": "menu_background_*"
}- Include in config:
{
"includes": ["graphics/backgrounds"]
}- Build and test
Vector Icon Replacements
Some graphics in game use special svg files instead of a sprite need and need to be replaced differently. FM Skin Builder supports vector shape mapping for these icons.
{
"min-half-youth.svg": {
"type": "vector",
"targets": ["ability=minimum, potential level=half, youth=true_*"]
},
}Mixing File and Vector Mappings
You can combine both in one mapping.json:
{
"custom-star.png": "original-star",
"min-half-youth.svg": {
"type": "vector",
"targets": ["ability=minimum, potential level=half, youth=true_*"]
},
"custom-logo": "original-logo"
}Best Practices
Match Dimensions
Replace icons with same-sized replacements:
- 32x32 icon → 32x32 replacement
- Mismatched sizes may display incorrectly
Use Appropriate Formats
| Content | Format |
|---|---|
| Icons with transparency | PNG |
| Backgrounds, photos | JPG |
| Scalable icons | SVG |
Test Thoroughly
- Replace one icon first
- Build and verify it appears
- Then replace more
Organize Files Logically
graphics/
├── icons/
│ ├── ui/
│ │ ├── button-icons.png
│ │ └── mapping.json
│ └── ratings/
│ ├── stars.png
│ └── mapping.json
└── backgrounds/
├── main-bg.jpg
└── mapping.jsonNote: Nested folders work, but each needs its own mapping.json.
Troubleshooting
”Icon not appearing”
- Check mapping.json syntax
- Verify file exists and path is correct
- Ensure folder is in config
includes - Check file name matches mapping (case-sensitive)
- Rebuild and restart FM
”Wrong icon size”
Your replacement doesn’t match original dimensions:
- Find original size (use Asset Catalogue)
- Resize your image to match
- Rebuild
”Mapping not working”
- JSON syntax valid?
- File name without extension?
- Original name correct?
- Wildcard pattern matching?
”Build succeeds but no change”
- Verify correct texture name
- Check mapping is in right folder
- Ensure folder is in
includes - Restart FM (not just reload skin)
Next: Sprite Atlases - Work with sprite sheets.