Every colour in the game’s art. Read by the game client only: a change here changes how it looks or sounds, never how it plays.
File: assets/data/palette.ron
About this file
Section titled “About this file”The palette: every colour in the game’s art, in one place (docs/art-direction.md). Blender-built assets use the named colours as materials (pal.<name>, through tools/blender/palette.py); the client’s generated world (ground, roads, trees, buildings, interiors, grey-box furniture) looks them up by name and through the named sets below. Recolour the town by editing this file.
colours: name -> (“#rrggbb” sRGB, roughness, metallic). Roughness and metallic matter to Blender materials; the generated world is drawn with one material and uses only the colour. sets: name -> colours, in order. The client checks every name it needs when it starts.
Keep one entry to a line: tools/blender/palette.py reads this file line by line.
Fields
Section titled “Fields”The file is one PaletteFile.
| Field | Type | What it is |
|---|---|---|
colours |
BTreeMap<String, (String, f32, f32)> |
Name -> (“#rrggbb” sRGB, roughness, metallic). |
sets |
BTreeMap<String, Vec<String>> |
The file
Section titled “The file”The whole file as shipped
// The palette: every colour in the game's art, in one place (docs/art-direction.md). Blender-built// assets use the named colours as materials (`pal.<name>`, through tools/blender/palette.py); the// client's generated world (ground, roads, trees, buildings, interiors, grey-box furniture) looks// them up by name and through the named sets below. Recolour the town by editing this file.//// colours: name -> ("#rrggbb" sRGB, roughness, metallic). Roughness and metallic matter to Blender// materials; the generated world is drawn with one material and uses only the colour.// sets: name -> colours, in order. The client checks every name it needs when it starts.//// Keep one entry to a line: tools/blender/palette.py reads this file line by line.( colours: { // Brand anchors (Dead Commons style: stylised, friendly, playful-spooky; not photoreal, not // gory). Accents, used sparingly: a sign, a toy, a stripe, a zombie's skin. "brand_zombie_green": ("#8db06b", 0.8, 0.0), "brand_red": ("#d7262b", 0.5, 0.0), "brand_bone_white": ("#f2e6c9", 0.8, 0.0), "brand_near_black": ("#141414", 0.6, 0.0), // Wood "wood_pine": ("#a8875c", 0.75, 0.0), // light stained pine: shelves, desks "wood_oak": ("#86643f", 0.7, 0.0), // mid oak: tables, bed frames "wood_walnut": ("#5c4130", 0.7, 0.0), // dark veneer: wardrobes, TV cabinets "wood_raw": ("#b69a72", 0.9, 0.0), // unfinished boards: workbench top // Kitchen and bathroom "laminate_almond": ("#cdbf98", 0.45, 0.0), // counter tops "cabinet_oak": ("#9a7650", 0.65, 0.0), // kitchen cupboard doors "enamel_white": ("#dad6ca", 0.35, 0.0), // fridge, washer, dryer "enamel_almond": ("#d3c6a6", 0.35, 0.0), // stove body "porcelain": ("#e4e1d8", 0.2, 0.0), // toilet, bathtub, basin "water": ("#8fa4a6", 0.1, 0.0), // still water in a bowl // Metal and plastic "steel": ("#8b8e90", 0.4, 0.8), "chrome": ("#bfc2c2", 0.2, 0.9), "iron_black": ("#2a2a2c", 0.6, 0.3), // stove top, grates "plastic_black": ("#242426", 0.5, 0.0), "plastic_grey": ("#76787a", 0.55, 0.0), "plastic_beige": ("#c2b79e", 0.5, 0.0), // TV and appliance trim "screen": ("#2c3836", 0.15, 0.0), // CRT glass, oven door glass "rubber": ("#363634", 0.9, 0.0), "paint_green": ("#5d6a52", 0.7, 0.0), // workbench frame "plastic_red": ("#8c3f33", 0.5, 0.0), // tool handles, bottle caps "plastic_blue": ("#4f6d8c", 0.5, 0.0), // detergent bottles "cardboard": ("#a3825a", 0.95, 0.0), "paper": ("#d8d2c0", 0.95, 0.0), // Fabric "fabric_mauve": ("#8a6d78", 0.95, 0.0), "fabric_teal": ("#4e7170", 0.95, 0.0), "fabric_rust": ("#955a3d", 0.95, 0.0), "fabric_navy": ("#3e4961", 0.95, 0.0), "fabric_beige": ("#b5a487", 0.95, 0.0), "sheet_cream": ("#d6cdb8", 0.95, 0.0), "pillow_white": ("#e0dbcd", 0.95, 0.0), "blanket_blue": ("#5d728c", 0.95, 0.0), // Clothes (wearables on the survivor's body, #63): worn everyday things, faded, never bright. "denim": ("#4a5a72", 0.95, 0.0), // jeans "denim_dark": ("#343f52", 0.95, 0.0), // waistbands, pockets, hems "cotton_red": ("#8a4a42", 0.95, 0.0), // a faded red t-shirt "trainer_white": ("#d9d5ca", 0.6, 0.0), // canvas and leather trainers, off-white "leather_brown": ("#3f2c22", 0.55, 0.0), // a worn leather jacket "boot_brown": ("#5a4231", 0.7, 0.0), // work boots' leather "glove_tan": ("#9a7a50", 0.85, 0.0), // work gloves, suede "cap_red": ("#7a3a32", 0.85, 0.0), // a faded baseball cap "wool_charcoal": ("#363a42", 0.95, 0.0), // a beanie "wool_ochre": ("#9a7342", 0.95, 0.0), // a woolly hat "wool_maroon": ("#6a2f2b", 0.95, 0.0), // a scarf "pack_blue": ("#45607e", 0.8, 0.0), // a school backpack's nylon "pack_rust": ("#8a5532", 0.8, 0.0), // a hiking rucksack "pack_rust_dark": ("#5e3a24", 0.8, 0.0), // its lid and pocket "canvas_natural": ("#b3a785", 0.95, 0.0), // a tote bag "canvas_natural_dark": ("#8c7f60", 0.95, 0.0), // its handles "canvas_olive": ("#4f5640", 0.9, 0.0), // a duffel bag "plastic_white": ("#d3d1c6", 0.45, 0.0), // a carrier bag "mask_white": ("#dcdad2", 0.85, 0.0), // a dust mask "bandana_red": ("#8a3b33", 0.95, 0.0), // a bandana "wool_black": ("#2b2b2e", 0.95, 0.0), // a balaclava
// Ground and roads (meshgen/landscape.rs) "asphalt": ("#424245", 0.9, 0.0), "asphalt_patch": ("#333336", 0.9, 0.0), // repair patches: newer, darker tar "wheel_track": ("#3d3d40", 0.9, 0.0), // the worn bands where the wheels run "gutter": ("#4f4c47", 0.9, 0.0), // dust and grit along the kerb "paint_yellow": ("#bd9e4c", 0.9, 0.0), // faded centre lines "paint_white": ("#ccc9bd", 0.9, 0.0), // bays, crossings, stop lines "oil_stain": ("#2b2b2b", 0.9, 0.0), "sidewalk": ("#99968c", 0.9, 0.0), "sidewalk_joint": ("#737069", 0.9, 0.0), "kerb_top": ("#adaba1", 0.9, 0.0), "kerb_face": ("#807d75", 0.9, 0.0), "kerb_joint": ("#615e59", 0.9, 0.0), // the line behind a kerb that reads from afar "driveway": ("#828075", 0.9, 0.0), "path": ("#8c8273", 0.9, 0.0), // garden paths "lawn_1": ("#5e6e40", 0.9, 0.0), "lawn_2": ("#57693b", 0.9, 0.0), "lawn_3": ("#667345", 0.9, 0.0), "long_grass": ("#6e7345", 0.9, 0.0), // round fences and walls, vacant lots "verge": ("#73704a", 0.9, 0.0), // rough grass by roads with no sidewalk "tuft": ("#828752", 0.9, 0.0), "tuft_dry": ("#998f5e", 0.9, 0.0), "grass_blade": ("#7f8a4c", 0.9, 0.0), // instanced grass (vegetation.rs): a blade's tip, fresh "grass_blade_dry": ("#b59c5e", 0.9, 0.0), // and gone to straw; each patch is a mix of the two "worn_ground": ("#7a6648", 0.9, 0.0), // trodden earth by doors and in bare patches of lawn "dirt": ("#695740", 0.9, 0.0), "soil": ("#4a3b2e", 0.9, 0.0), // flower beds "flower_red": ("#9e4540", 0.9, 0.0), "flower_cream": ("#dbd4b5", 0.9, 0.0), "flower_mustard": ("#c7a852", 0.9, 0.0), "flower_mauve": ("#8a6994", 0.9, 0.0), "shrub_1": ("#3d572e", 0.9, 0.0), "shrub_2": ("#4a5e30", 0.9, 0.0), "hedge": ("#38522b", 0.9, 0.0), "hedge_top": ("#456133", 0.9, 0.0), "fence_wood": ("#8c7a61", 0.9, 0.0), "forest_floor_1": ("#474c30", 0.9, 0.0), "forest_floor_2": ("#40452b", 0.9, 0.0), "needles": ("#574730", 0.9, 0.0), // brown needle litter under pines "fern_1": ("#405c2e", 0.9, 0.0), "fern_2": ("#4f6130", 0.9, 0.0), "rock": ("#808078", 0.9, 0.0), "deadwood": ("#5c4733", 0.9, 0.0), "cut_wood": ("#9e8057", 0.9, 0.0), // the cut face of a stump or log
// Trees (meshgen/trees.rs) "bark": ("#755e47", 0.9, 0.0), "bark_dark": ("#634f3d", 0.9, 0.0), "birch_bark": ("#ccc7b8", 0.9, 0.0), "birch_mark": ("#3b3836", 0.9, 0.0), "leaf_deep": ("#3d5c2e", 0.9, 0.0), "leaf_mid": ("#4c6933", 0.9, 0.0), "leaf_olive": ("#5e6930", 0.9, 0.0), "leaf_dusty": ("#4a572e", 0.9, 0.0), "birch_leaf_1": ("#708040", 0.9, 0.0), "birch_leaf_2": ("#63783b", 0.9, 0.0), "pine_1": ("#29472e", 0.9, 0.0), "pine_2": ("#304f30", 0.9, 0.0), "spruce_1": ("#213b30", 0.9, 0.0), "spruce_2": ("#294538", 0.9, 0.0),
// Buildings (world_render.rs, meshgen/building_kit.rs) "siding_cream": ("#dbd6c7", 0.9, 0.0), "siding_almond": ("#ccbd94", 0.9, 0.0), "siding_butter": ("#d6cc8f", 0.9, 0.0), "siding_dusty_blue": ("#94a8b8", 0.9, 0.0), "siding_sage": ("#99a885", 0.9, 0.0), "siding_grey": ("#9e9e99", 0.9, 0.0), "siding_tan": ("#b29975", 0.9, 0.0), "siding_oxblood": ("#945242", 0.9, 0.0), "roof_slate": ("#3d3d42", 0.9, 0.0), "roof_brown": ("#5c4233", 0.9, 0.0), "roof_rust": ("#6b3329", 0.9, 0.0), "roof_moss": ("#475447", 0.9, 0.0), "roof_slate_blue": ("#424c61", 0.9, 0.0), "brick_buff": ("#9e9485", 0.9, 0.0), "brick_tan": ("#a88a66", 0.9, 0.0), "brick_red": ("#8c4a38", 0.9, 0.0), "awning_red": ("#853d33", 0.9, 0.0), "awning_green": ("#4c6654", 0.9, 0.0), "awning_blue": ("#475773", 0.9, 0.0), "awning_ochre": ("#a38547", 0.9, 0.0), "trim_light": ("#e0dbcc", 0.9, 0.0), // trim on most houses, porch posts and railings "trim_dark": ("#454c47", 0.9, 0.0), // trim on pale houses "shopfront": ("#333b36", 0.9, 0.0), // shopfront frames and stall risers "foundation": ("#78756e", 0.9, 0.0), "step": ("#949187", 0.9, 0.0), "deck": ("#80705c", 0.9, 0.0), "rain_gutter": ("#333638", 0.9, 0.0), "chimney": ("#854533", 0.9, 0.0), "chimney_cap": ("#8c8a82", 0.9, 0.0), "flue": ("#1f1f1f", 0.9, 0.0), "aerial": ("#85878c", 0.9, 0.0), "roof_unit": ("#9ea19c", 0.9, 0.0), "coping": ("#a8a396", 0.9, 0.0), "sign": ("#d6ccb0", 0.9, 0.0), "bone": ("#dbd1b5", 0.9, 0.0), // awning stripes "gable_glass": ("#292e36", 0.9, 0.0), // dark glass in gable windows "door_leaf": ("#6b472e", 0.9, 0.0), "door_handle": ("#bfb266", 0.9, 0.0), "window_glass": ("#c4d7e5", 0.9, 0.0), // see-through (its alpha is in code) "door_glass": ("#2f3742", 0.9, 0.0), // the glass panel in a glazed door "blind": ("#ddd3b8", 0.9, 0.0), // a roller blind's cloth "blind_rail": ("#8a8172", 0.9, 0.0), // its bottom rail "crack_door": ("#140d08", 0.9, 0.0), // splits in a battered door "crack_glass": ("#e0ebf2", 0.9, 0.0), // star cracks in glass "splinter": ("#a88052", 0.9, 0.0), // pale wood where chunks came off
// Inside: wall colours by room type (interior_<room type>, else interior_default) and floors "interior_kitchen": ("#d6d1b2", 0.9, 0.0), "interior_bathroom": ("#bdd1d6", 0.9, 0.0), "interior_bedroom": ("#c7b8ad", 0.9, 0.0), "interior_living": ("#ccbd9e", 0.9, 0.0), "interior_laundry": ("#b8b8b2", 0.9, 0.0), "interior_default": ("#d1ccbd", 0.9, 0.0), "floor_grass_1": ("#4c6133", 0.9, 0.0), "floor_grass_2": ("#5c733b", 0.9, 0.0), "floor_dirt_1": ("#5c4c38", 0.9, 0.0), "floor_dirt_2": ("#665438", 0.9, 0.0), "floor_asphalt_1": ("#363638", 0.9, 0.0), "floor_asphalt_2": ("#3b3b3d", 0.9, 0.0), "floor_sidewalk_1": ("#85827a", 0.9, 0.0), "floor_sidewalk_2": ("#8c8a82", 0.9, 0.0), "floor_path_1": ("#7a7366", 0.9, 0.0), "floor_path_2": ("#827a66", 0.9, 0.0), "floor_wood_1": ("#735233", 0.9, 0.0), "floor_wood_2": ("#7d5933", 0.9, 0.0), "floor_carpet_1": ("#6b5c52", 0.9, 0.0), "floor_carpet_2": ("#6b6152", 0.9, 0.0), "floor_tile_1": ("#b8b8ad", 0.9, 0.0), "floor_tile_2": ("#9ea199", 0.9, 0.0), "floor_concrete_1": ("#808080", 0.9, 0.0), "floor_concrete_2": ("#858580", 0.9, 0.0), "floor_road_line": ("#9e8c47", 0.9, 0.0),
// Grey-box furniture, for kinds with no model (meshgen.rs) "greybox_bed": ("#6b4c38", 0.9, 0.0), "greybox_bed_sheet": ("#ccc7bd", 0.9, 0.0), "greybox_wardrobe": ("#66472e", 0.9, 0.0), "greybox_fridge": ("#dbdbd6", 0.9, 0.0), "greybox_stove": ("#333336", 0.9, 0.0), "greybox_counter": ("#9e8566", 0.9, 0.0), "greybox_washer": ("#e0e0db", 0.9, 0.0), "greybox_table": ("#755438", 0.9, 0.0), "greybox_coffee_table": ("#664733", 0.9, 0.0), "greybox_sofa": ("#5c4c6b", 0.9, 0.0), "greybox_sofa_back": ("#524261", 0.9, 0.0), "greybox_tv_stand": ("#4c3829", 0.9, 0.0), "greybox_tv_screen": ("#141417", 0.9, 0.0), "greybox_toilet": ("#ebebe6", 0.9, 0.0), "greybox_shelf": ("#856b4c", 0.9, 0.0), "greybox_workbench": ("#61574c", 0.9, 0.0), "greybox_workbench_top": ("#9e8057", 0.9, 0.0), "greybox_bathtub": ("#e6e6e0", 0.9, 0.0), "greybox_stairs": ("#705238", 0.9, 0.0), "greybox_other": ("#807366", 0.9, 0.0), }, sets: { // Lawns in broad patches: three close olive greens "lawn": ["lawn_1", "lawn_2", "lawn_3"], "flowers": ["flower_red", "flower_cream", "flower_mustard", "flower_mauve"], "shrub": ["shrub_1", "shrub_2"], "forest_floor": ["forest_floor_1", "forest_floor_2"], "fern": ["fern_1", "fern_2"], // Broadleaf crowns: two or three of these per tree "leaf": ["leaf_deep", "leaf_mid", "leaf_olive", "leaf_dusty"], "birch_leaf": ["birch_leaf_1", "birch_leaf_2"], "pine": ["pine_1", "pine_2"], "spruce": ["spruce_1", "spruce_2"], // One per house (the generator picks by index, so keep the first eight in this order) "siding": ["siding_cream", "siding_almond", "siding_butter", "siding_dusty_blue", "siding_sage", "siding_grey", "siding_tan", "siding_oxblood"], "roof": ["roof_slate", "roof_brown", "roof_rust", "roof_moss", "roof_slate_blue"], // Shops and offices, by their siding pick "brick": ["brick_buff", "brick_tan", "brick_red"], "awning": ["awning_red", "awning_green", "awning_blue", "awning_ochre"], // Floors: a colour between the two, by tile (tile floors alternate them) "floor_grass": ["floor_grass_1", "floor_grass_2"], "floor_dirt": ["floor_dirt_1", "floor_dirt_2"], "floor_asphalt": ["floor_asphalt_1", "floor_asphalt_2"], "floor_sidewalk": ["floor_sidewalk_1", "floor_sidewalk_2"], "floor_path": ["floor_path_1", "floor_path_2"], "floor_wood": ["floor_wood_1", "floor_wood_2"], "floor_carpet": ["floor_carpet_1", "floor_carpet_2"], "floor_tile": ["floor_tile_1", "floor_tile_2"], "floor_concrete": ["floor_concrete_1", "floor_concrete_2"], },)