Phenotype Variations

Phenotype & Variations

Overview

Each creature in Icarus has a visual phenotype (skin/coat variation) controlled by a single integer field in the save data. The game defines a Variations array per creature type in a dedicated IcarusMount DataTable inside data.pak, containing mesh materials, fur materials, and spawn weightings.

Key finding (extracted from current data.pak dated Feb 27 2026): Only 3 of 28 creature types have color variations via the Variations system. The remaining 25 types have a single fixed appearance.

The Variation Field

The Variation property is an IntProperty in each creature's binary data blob. It is a 0-based index into the creature's Variations array in the game's IcarusMount DataTable.

Field Type Location Description
Variation IntProperty Binary blob Index into the creature's Variations array
CosmeticSkinIndex IntProperty IntVariables array Always -1 (unused)
LinearColorVariables ArrayProperty Binary blob Always empty (unused)
ChildDNA.UniqueVariation IntProperty ChildDNA struct Always 0 (unused)

Only Variation controls the visual appearance. The other fields exist in the data but are not actively used by the game.

How It Works

  1. Each creature type has a row in the IcarusMount DataTable (RowStruct: /Script/Icarus.IcarusMount) inside data.pak
  2. Each row may contain a Variations array with entries containing:
  3. MeshMaterial — the creature's body material/texture path
  4. GFurMaterial — the creature's fur/groom material path
  5. CarcassMeshMaterial — the carcass body material (same for all variants)
  6. CarcassGFurMaterial — the carcass fur material (same for all variants)
  7. Weighting — spawn probability (higher = more common)
  8. The Variation integer in the save data selects which entry from this array the game renders
  9. Variation = 0 is always the common/default appearance
  10. Types with no Variations array have only one visual appearance — their Variation field is always 0

Confirmed by Comparison

Comparing same-type creature pairs with different appearances:

Mount Name Type Variation Material Rarity
Bill Buffalo 0 MI_CRE_Buffalo Common
Higgs Buffalo 4 MI_CRE_Buffalo_Rare_VarH Rare
Kupo Moa 0 M_CRE_Moa Common
Tawhiri Moa 1 M_CRE_Moa_Var5 Rare

All other differences between pairs were gameplay-related (stats, position, name, level, talents) — not appearance.

Complete Variation Catalog

Source: Extracted from data.pak (Feb 27 2026) at Content/Data/data.pak in the Icarus game installation. The IcarusMount DataTable contains 28 creature type rows. Data was extracted by decompressing all 722 zlib chunks and parsing the JSON-like structure.

Summary

Category Count Types
Color variations (Variations array populated) 3 Buffalo, Moa, Wolf
Single appearance (no Variations) 25 All others
Total variants 24 8 per type × 3 types

Rarity Tiers

Rarity is determined by spawn weighting:

Weighting Rarity Typical
≥ 1000 Common Default appearance
100–999 Uncommon
25–99 Rare Named color variants
5–24 Legendary White, special patterns
< 5 Ultra-Rare

Buffalo (8 variations)

Index MeshMaterial GFurMaterial Weight Rarity
0 MI_CRE_Buffalo MI_CRE_Buffalo_fur 2000 Common
1 MI_CRE_Buffalo_Rare_VarC MI_CRE_Buffalo_Rare_VarC_Fur 50 Rare
2 MI_CRE_Buffalo_Rare_VarD MI_CRE_Buffalo_Rare_VarD_Fur 50 Rare
3 MI_CRE_Buffalo_Rare_VarG MI_CRE_Buffalo_Rare_VarG_Fur 50 Rare
4 MI_CRE_Buffalo_Rare_VarH MI_CRE_Buffalo_Rare_VarH_Fur 50 Rare
5 MI_CRE_Buffalo_White MI_CRE_Buffalo_White_fur 5 Legendary
6 MI_CRE_Buffalo_Legendary_VarA MI_CRE_Buffalo_Legendary_VarA_Fur 5 Legendary
7 MI_CRE_Buffalo_Legendary_VarB MI_CRE_Buffalo_Legendary_VarB_Fur 5 Legendary

Moa (8 variations)

Index MeshMaterial GFurMaterial Weight Rarity
0 M_CRE_Moa_MI M_CRE_Moa_fur 2000 Common
1 M_CRE_Moa_Var5 M_CRE_Moa_Var5_Fur 50 Rare
2 M_CRE_Moa_Var8 M_CRE_Moa_Var8_Fur 50 Rare
3 M_CRE_Moa_Var9 M_CRE_Moa_Var9_Fur 50 Rare
4 M_CRE_Moa_Var10 M_CRE_Moa_Var10_Fur 25 Rare
5 M_CRE_Moa_Var11 M_CRE_Moa_Var11_Fur 25 Rare
6 M_CRE_Moa_Var12 M_CRE_Moa_Var12_Fur 25 Rare
7 M_CRE_Moa_Var13 M_CRE_Moa_Var13_Fur 5 Legendary

Wolf (8 variations)

Index MeshMaterial GFurMaterial Weight Rarity
0 M_CRE_Wolf M_CRE_Wolf_Fur 2000 Common
1 M_CRE_Wolf_Rare_VarA M_CRE_Wolf_Rare_VarA_Fur 50 Rare
2 M_CRE_Wolf_Rare_VarB M_CRE_Wolf_Rare_VarB_Fur 50 Rare
3 M_CRE_Wolf_Rare_VarC M_CRE_Wolf_Rare_VarC_Fur 50 Rare
4 M_CRE_Wolf_Rare_VarD M_CRE_Wolf_Rare_VarD_Fur 50 Rare
5 M_CRE_Wolf_Rare_VarE M_CRE_Wolf_Rare_VarE_Fur 50 Rare
6 M_CRE_Wolf_Legendary_VarA M_CRE_Wolf_Legendary_VarA_Fur 5 Legendary
7 M_CRE_Wolf_Legendary_VarB M_CRE_Wolf_Legendary_VarB_Fur 5 Legendary

Note: Wolf was not present in the older pak-files extraction (Feb 26). Re-extracting from the current data.pak (Feb 27) revealed Wolf as a third creature type with color variations.

Single-Appearance Types (25 types — no Variations)

These creature types have no populated Variations array. Their Variation field is always 0 and there are no alternate visual appearances available through this mechanism.

Creature Type Notes
Arctic_moa Biome variant of Moa (separate type, not a Moa color variation)
Blueback
Bull
Cat Appearance is controlled by breed (separate ActorClass: BP_Tame_Cat_C, BP_Tame_Cat_B_C, BP_Tame_Cat_C_C)
Chicken Colors are separate D_Mounts rows (Chicken, Chicken_A2, Chicken_A3), not Variations
Cow
Dog Appearance is controlled by breed (9 separate ActorClasses: BP_Tame_Dog_A1_C through BP_Tame_Dog_E_C)
DogSmall Small dog sub-type
Horse Terrenus Horse (single appearance)
Horse_Standard Colors are separate D_Mounts rows (A1=Brown, A2=Black, A3=White), not Variations
Mini_Hippo
Pig
Ram
Rooster
Sheep
Snow_Striker
Snow_Wolf Biome variant of Wolf (separate type, not a Wolf color variation)
Swamp_Bird
SwampQuad
Tusker
Zebra
Wild_Boar
Wolf_Desert Biome variant of Wolf (separate type, not a Wolf color variation)
WoollyMammoth
WoolyZebra

Visual Variation Mechanisms — Complete Reference

The game uses three distinct mechanisms for creature visual differences:

1. Variation Array (Color Variants)

  • Applies to: Buffalo, Moa, Wolf
  • Mechanism: Variation IntProperty indexes into IcarusMount Variations array
  • Editable: Yes — change the integer value (0 to 7)
  • In save data: Variation field in binary blob

2. Breed / ActorClass (Breed Variants)

  • Applies to: Dog (9 breeds), Cat (3 breeds), Horse Standard (3 colors), Chicken (3 colors)
  • Mechanism: Each breed has a separate ActorClass blueprint or separate D_Mounts row name
  • Editable: Requires changing the creature's D_Mounts row name reference — more complex
  • In save data: Row name reference in the mount entry

3. Biome / Separate CreatureType

  • Applies to: Arctic Moa (vs Moa), Snow Wolf (vs Wolf), Desert Wolf (vs Wolf)
  • Mechanism: Completely separate CreatureType entry
  • Editable: Would require species swap (see Species & Types)

Phenotype Mutation Talents

Two breeding-tree talents influence the chance of offspring inheriting rare phenotypes:

Talent Effect per Rank Max Ranks
Visual Anomaly +0.05 CosmeticMutationChance 3 (+0.15 total)
Prime Variants +0.05 CosmeticMutationChance 3 (+0.15 total)

These talents increase the probability that a bred creature receives a non-zero Variation index (i.e., a rarer visual appearance) rather than the common default. They are only relevant for the 3 types that have Variations data (Buffalo, Moa, Wolf).

Binary Format Reference

The Variation field is encoded as a standard IntProperty in the binary blob:

0A 00 00 00                          # name length = 10
56 61 72 69 61 74 69 6F 6E 00       # "Variation\0"
0C 00 00 00                          # type length = 12
49 6E 74 50 72 6F 70 65 72 74 79 00 # "IntProperty\0"
04 00 00 00                          # data size = 4
00 00 00 00                          # array index = 0
00                                   # extra byte
04 00 00 00                          # value = 4 (little-endian)

The value is a signed 32-bit little-endian integer. Valid range is 0 to N-1 where N is the number of entries in the creature type's Variations array (8 for Buffalo, Moa, and Wolf).

Data Source & Extraction

The variation data lives in data.pak at:

<Steam>/steamapps/common/Icarus/Icarus/Content/Data/data.pak

This is a UE4 pak file (~2.1MB) containing 722 zlib-compressed chunks totaling ~35.7M chars of JSON-like DataTable text. The IcarusMount DataTable (RowStruct: /Script/Icarus.IcarusMount) starts in chunk #57 and spans ~91K chars.

Important: The data.pak is updated with each game patch. Our pak-files/ directory contains pre-extracted chunks from an older version (Feb 26). When re-extracting, always use the current data.pak from the Steam installation to ensure accuracy.

Editor Integration

The Appearance dropdown in the Overview Tab allows changing a creature's visual phenotype directly:

  • Buffalo, Moa, Wolf: Dropdown shows 8 variations, each labeled with index, rarity tier (Common/Rare/Legendary), and material name (e.g., 3: Rare — MI_CRE_Buffalo_Rare_VarG)
  • All other 25 types: Dropdown shows "Default (single appearance)" and is disabled
  • Selecting a variation updates the Variation IntProperty in the binary data
  • On species swap, the variation automatically resets to 0 (common default)
  • Out-of-range values are prevented by validation in MountModel.variation

Implementation Details

Component Location Role
variation_data.py Root Auto-generated module with VARIATION_DATA, public API functions
MountModel.variation editor/mount_model.py Read/write property with per-type validation
Appearance dropdown editor/overview_tab.py Identity section, row 4
test_variation.py tests/ 36 tests: data API, model, swap reset, labels, edge cases

Public API (variation_data)

from variation_data import (
    get_variations,          # Full variation dicts for a type
    get_variation_count,     # Number of variations (0 for single-appearance)
    get_variation_labels,    # Formatted labels for dropdown
    get_variation_label,     # Single label by index
    has_variations,          # True for Buffalo/Moa/Wolf
    validate_variation_index,# Bounds check
    get_rarity_tier,         # Weighting → rarity string
)

See also: GUI Guide — Appearance · Binary Format — IntProperty · Species & Types — Save Data Fields · Architecture — Variation Pipeline

Back to Docs