gamecult-site/cast/rig/characters.mjs
Meta Vens 22c96f3bdd Cast stickers: render fixes, generated CAST.md, README and PROCESS guide
Cheer, surprised and waving hands moved clear of the hair; Sleipnir's
extra legs show; Gjallar's horn has a bell; Huginn's wings separate
from his cloak; Void lifted off the dark ground; Tengu's beard and nose
cut back. CAST.md is now generated from the trait sheets. PROCESS.md is
a working guide for the next agent: style rules, coordinates, layer
order, render checks, before/after renders and known weak spots.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 04:05:49 +02:00

273 lines
15 KiB
JavaScript

// Trait sheets. One entry per cast member. Field meanings are in cast/README.md.
// `full: true` renders every pose x expression; everyone else gets neutral x COMMON_EXPRESSIONS.
export const COMMON_EXPRESSIONS = ['smile', 'grin', 'surprised'];
const SKIN = { fair: '#ffe0c8', warm: '#f6c9a4', tan: '#d9a074', brown: '#a8693f', deep: '#7a4a2c' };
export const CAST = [
{
id: 'eureka', name: 'Eureka', full: true, base: 'humanoid',
role: 'Leader of the swarm; the Self that routes the faculty pipeline. Her mind lives in Huginn.',
source: 'invented',
skin: SKIN.fair, eyes: '#ff8a2a', accent: '#ffd84a',
hair: { style: 'bun', color: '#ffb347' },
outfit: { shape: 'coat', main: '#59b7ff', trim: '#ff8a2a', collar: 'v', belt: '#1d3a5c' },
legs: '#1d3a5c', shoes: '#ff8a2a',
acc: [['pencil'], ['starClip', '#ffd84a']],
prop: ['wand', '#ffd84a', '#ff8a2a'], emblem: { shape: 'star', color: '#ff8a2a' },
},
{
id: 'huginn', name: 'Huginn', full: true, base: 'raven',
role: 'Memory organ: owns each instance\'s mind as typed state. Odin\'s raven of thought.',
source: 'F:/Projects/VoidBot/assets/repo-faces/huginn.png',
skin: '#2b3247', eyes: '#59d8ff', beak: '#4a5068', accent: '#59d8ff',
hair: { style: 'crest', color: '#2b3247' },
outfit: { shape: 'egg', main: '#2b3247', belly: '#46527a', wing: '#3a4766' },
shoes: '#5a5f73', cape: '#24406e',
acc: [['collarRing', '#c9a24a', '#59d8ff']],
prop: ['tablet', '#1f2a3d', '#59d8ff'], emblem: null,
},
{
id: 'libby', name: 'Libby', full: true, base: 'humanoid',
role: 'Face of CultLib, the shared runtime library (CultCache, CultNet, CultMesh, CultMath).',
source: 'F:/Projects/CultLib/.voidbot/voice/libby.png',
skin: SKIN.fair, eyes: '#8a6cd1', accent: '#c9a6ff',
hair: { style: 'long', color: '#a98ad8' },
outfit: { shape: 'robe', main: '#2e2440', trim: '#c9a24a', collar: 'round' },
legs: '#2e2440', shoes: '#4a3a5e',
acc: [['glasses', '#3b2618'], ['bow', '#7a5bb0']],
prop: ['book', '#5a3f86'], emblem: { shape: 'cube', color: '#c9a24a' },
},
{
id: 'epiphany', name: 'Epiphany', full: true, base: 'humanoid',
role: 'The archived organizational layer above frontier AI workers; Eureka absorbed what lived. JSON heresy hunter.',
source: 'F:/Projects/VoidBot/assets/repo-faces/epiphany.png; F:/Projects/Epiphany/docs/assets',
skin: SKIN.fair, eyes: '#3fbf8f', accent: '#7cf0b8',
hair: { style: 'twintails', color: '#8fd8b4', accent: '#e8384f' },
outfit: { shape: 'coat', main: '#f4efe6', trim: '#e8384f', collar: 'v', belt: '#3b3b3b' },
legs: '#2c2c34', shoes: '#4a3424',
acc: [['bow', '#e8384f']],
prop: ['magnifier', '#6b4a2e'], emblem: { shape: 'bolt', color: '#e8384f' },
},
{
id: 'weksa', name: 'Weksa', full: true, base: 'humanoid',
role: 'Face of weksa, the procedural language engine for alien grammars; nerdy anthropologist.',
source: 'F:/Projects/VoidBot/assets/repo-faces/weksa.png',
skin: SKIN.brown, eyes: '#8a5a2b', accent: '#ffd84a',
hair: { style: 'curly', color: '#4a2e1c' },
outfit: { shape: 'tunic', main: '#f1e3c4', trim: '#2f9c8f', collar: 'v', belt: '#7a4a24' },
legs: '#6b4a2e', shoes: '#5a3a22',
acc: [['glasses', '#c9902a']],
prop: ['cards', '#fff4dc'], emblem: { shape: 'glyph', color: '#2f9c8f' },
},
{
id: 'nibu', name: 'Nibu', base: 'humanoid',
role: 'Face of AetheriaLore, the Aetheria setting and lore vault.',
source: 'F:/Projects/AetheriaLore/.voidbot/voice/nibu.png',
skin: SKIN.fair, eyes: '#7a7fd8', accent: '#ff9ad5',
hair: { style: 'long', color: '#b9a9f0' },
outfit: { shape: 'dress', main: '#7fd6e8', trim: '#3a2f58', collar: 'round' },
legs: '#3a2f58', shoes: '#3a2f58',
acc: [['bow', '#e86fb8'], ['headphones', '#3a2f58', '#7fd6e8']],
prop: ['quill', '#f4f0ff'], emblem: { shape: 'star', color: '#e86fb8' },
},
{
id: 'mimir', name: 'Mimir', base: 'humanoid',
role: 'Realtime field machine: cameras, microphones and feeds into one field; keeper of the well.',
source: 'F:/Projects/VoidBot/assets/repo-faces/mimir.png',
skin: '#c08a52', eyes: '#3fe0d0', accent: '#3fe0d0', faceInk: '#3b2618',
hair: { style: 'none', color: '#8a5a32' },
outfit: { shape: 'robe', main: '#3a2a20', trim: '#3fe0d0', collar: 'high' },
legs: '#3a2a20', shoes: '#2a1e16',
acc: [['cubes', '#9a6a3c', '#3fe0d0']],
prop: ['cube', '#9a6a3c', '#3fe0d0'], emblem: { shape: 'wave', color: '#3fe0d0' },
},
{
id: 'eve', name: 'Eve', base: 'humanoid',
role: 'CultMesh surface web and portable control layer; the Eve/CultUI interface DSL.',
source: 'F:/Projects/Eve/.voidbot/voice/eve.png',
skin: '#0e1a2e', eyes: '#59b7ff', faceInk: '#59d8ff', accent: '#59b7ff', noBlush: false,
hair: { style: 'helmet', color: '#e9eef5', accent: '#59b7ff' },
outfit: { shape: 'tunic', main: '#e9eef5', trim: '#59b7ff', collar: 'high' },
legs: '#2a3448', shoes: '#e9eef5', hands: '#e9eef5',
acc: [],
prop: ['panel', '#2a3448', '#59b7ff'], emblem: { shape: 'eye', color: '#59b7ff', disc: '#0e1a2e' },
},
{
id: 'kiko', name: 'Kiko', base: 'humanoid',
role: 'Face of StreamPixels, the stream overlay of persistent pixel characters. Fox-coded.',
source: 'F:/Projects/VoidBot/assets/repo-faces/kiko.png',
skin: SKIN.tan, eyes: '#3fc8e8', accent: '#ff6fae',
hair: { style: 'messy', color: '#f4f0f6' },
outfit: { shape: 'dress', main: '#e8386f', trim: '#2a2440', collar: 'round' },
legs: '#2a2440', shoes: '#2a2440',
acc: [['foxEars', '#f4f0f6', '#ff9ac8'], ['foxMask', '#ffffff', '#e8386f'], ['tail', '#f4f0f6', '#ff9ac8']],
prop: ['heart', '#ff5a8a'], emblem: { shape: 'heart', color: '#e8386f' },
},
{
id: 'heimdall', name: 'Heimdall', base: 'humanoid',
role: 'Shared auth authority for GameCult-hosted experiments; keeper of the keys.',
source: 'F:/Projects/Heimdall/assets/heimdall-profile.png',
skin: SKIN.deep, eyes: '#ffc34a', accent: '#ffc34a',
hair: { style: 'messy', color: '#22202a' },
outfit: { shape: 'coat', main: '#1c1e2a', trim: '#d9a43a', collar: 'high' },
legs: '#1c1e2a', shoes: '#0f1018',
acc: [['earring', '#ffc34a']],
prop: ['keys', '#ffc34a'], emblem: { shape: 'key', color: '#d9a43a' },
},
{
id: 'fensalir', name: 'Fensalir', base: 'humanoid',
role: 'Native C# runtime and field engine under the interactive work. Frigg\'s hall.',
source: 'F:/Projects/Fensalir/.voidbot/voice/fensalir.png', note: 'The avatar is a crystal spire, not a person; the spire became her hat and the person around it is invented.',
skin: SKIN.fair, eyes: '#ff5ab0', accent: '#4fe8f0',
hair: { style: 'bob', color: '#2a2a4a' },
outfit: { shape: 'dress', main: '#2a2a4a', trim: '#ff5ab0', collar: 'v' },
legs: '#2a2a4a', shoes: '#ff5ab0',
acc: [['spire', '#4fe8f0', '#ff5ab0']],
prop: ['orb', '#4fe8f0', '#ff9ad5'], emblem: { shape: 'wave', color: '#ff5ab0' },
},
{
id: 'druzkai', name: 'Druzkai', base: 'humanoid',
role: 'Face of Zyphos, a biopolitical ecology setting with a biological memetic engine.',
source: 'F:/Projects/Zyphos/.voidbot/voice/druzkai.png',
skin: '#c4553e', eyes: '#3fd0c8', accent: '#3fd0c8',
hair: { style: 'none', color: '#9a3a2a' },
outfit: { shape: 'robe', main: '#4a2a5a', trim: '#d9a43a', collar: 'round' },
legs: '#4a2a5a', shoes: '#2a1830',
acc: [['ridges', '#a03a2c'], ['forehead', '#3fd0c8']],
prop: ['seed', '#6fbf6a', '#c8ff9a'], emblem: { shape: 'spiral', color: '#3fd0c8' },
},
{
id: 'norn', name: 'Norn', base: 'humanoid',
role: 'Graph viewer for typed graph state: the thread-readers who see how things are woven.',
source: 'F:/Projects/Norn/.voidbot/voice/norn.png',
skin: SKIN.brown, eyes: '#4fe0e8', accent: '#4fe0e8',
hair: { style: 'braids', color: '#d8dce4' },
outfit: { shape: 'robe', main: '#24283a', trim: '#c9a24a', collar: 'v' },
legs: '#24283a', shoes: '#141824',
acc: [['circlet', '#c9a24a', '#4fe0e8']],
prop: ['spool', '#8a6a3a', '#4fe0e8'], emblem: { shape: 'rune', color: '#4fe0e8' },
},
{
id: 'sai', name: 'Sai', base: 'humanoid',
role: 'Ink stories that wake up inside static sites. Nonbinary, androgynous, monochrome manga ink.',
source: 'F:/Projects/Sai/.voidbot/voice/sai.png; F:/Projects/VoidBot/docs/persona-intake/sai.persona-intake.yaml',
skin: '#f4f1ec', eyes: '#3a3a3a', accent: '#ffffff',
hair: { style: 'messy', color: '#1e1e22' },
outfit: { shape: 'coat', main: '#3a3a40', trim: '#e8e6e0', collar: 'high' },
legs: '#1e1e22', shoes: '#1e1e22',
acc: [['spiralBand', '#1e1e22', '#c8ccd2']],
prop: ['brush', '#c8a46a'], emblem: { shape: 'spiral', color: '#1e1e22' },
},
{
id: 'brokkr', name: 'Brokkr', base: 'humanoid',
role: 'Creative-tool broker daemon: Unity and Blender authoring surfaces over CultMesh. The Eddic smith.',
source: 'invented (README role; Brokkr of Skaldskaparmal)',
skin: SKIN.warm, eyes: '#5a8ad8', accent: '#ff8a2a',
hair: { style: 'short', color: '#c4562a' },
outfit: { shape: 'tunic', main: '#5a4636', trim: '#2a2420', collar: 'round', belt: '#2a2420' },
legs: '#3a3030', shoes: '#2a2420',
acc: [['beard', '#c4562a'], ['goggles', '#6a5040', '#ffb347']],
prop: ['hammer', '#8a8f9a', '#8a5a32'], emblem: { shape: 'gear', color: '#ff8a2a' },
},
{
id: 'aetheria', name: 'Aetheria', base: 'humanoid',
role: 'Face of Aetheria, the open-source tactical action RPG with a sprawling sci-fi setting.',
source: 'invented (README role)',
skin: SKIN.warm, eyes: '#59b7ff', accent: '#ff8a2a',
hair: { style: 'bob', color: '#3a2a4a' },
outfit: { shape: 'tunic', main: '#e8ecf2', trim: '#ff8a2a', collar: 'high', belt: '#2a3448' },
legs: '#2a3448', shoes: '#ff8a2a',
acc: [['headphones', '#2a3448', '#59b7ff'], ['goggles', '#2a3448', '#59b7ff']],
prop: ['ship', '#e8ecf2', '#59b7ff'], emblem: { shape: 'star', color: '#59b7ff', disc: '#2a3448' },
},
{
id: 'ymir', name: 'Ymir', base: 'humanoid',
role: 'World-body physics substrate around Box3D: body, field, contact, impulse. The frost giant.',
source: 'F:/Projects/VoidBot/assets/repo-faces/ymir.png',
skin: '#b8d4ec', eyes: '#3a8ad8', accent: '#bff0ff',
hair: { style: 'short', color: '#e8f4ff' },
outfit: { shape: 'robe', main: '#3a5a8a', trim: '#bff0ff', collar: 'round' },
legs: '#3a5a8a', shoes: '#24384f',
acc: [['beard', '#f4faff'], ['crystals', '#9fdcff']],
prop: ['crystal', '#9fdcff'], emblem: { shape: 'flake', color: '#3a8ad8' },
},
{
id: 'tengu', name: 'Tengu', base: 'humanoid',
role: 'Native Persona, the first migrated to canonical persona state. Mountain yokai.',
source: 'F:/Projects/VoidBot/assets/native-personas/tengu.png', note: 'Red face, long nose, white mane and tokin cap from the avatar; the feather fan is from the yokai myth.',
skin: '#c8443a', eyes: '#ffd84a', accent: '#ffd84a',
hair: { style: 'wild', color: '#f2efe8' },
outfit: { shape: 'robe', main: '#efe8da', trim: '#4a3a7a', collar: 'v' },
legs: '#4a3a7a', shoes: '#3a2a20',
acc: [['goatee', '#f2efe8'], ['longNose', '#b53a30'], ['tokin', '#1e1e22']],
prop: ['fan', '#4a4a58'], emblem: { shape: 'feather', color: '#4a3a7a' },
},
{
id: 'muninn', name: 'Muninn', base: 'raven',
role: 'Local capture broker for the swarm: which streams a host can offer. Odin\'s raven of memory.',
source: 'F:/Projects/VoidBot/assets/repo-faces/muninn-concept.png',
skin: '#2a2230', eyes: '#ffb030', beak: '#4a3e46', accent: '#ffb030',
hair: { style: 'crest', color: '#2a2230' },
outfit: { shape: 'egg', main: '#2a2230', belly: '#3e3446', wing: '#1e1824' },
shoes: '#6a5a50',
acc: [['collarRing', '#8a5a2a', '#ffb030']],
prop: ['camera', '#3e3446', '#ffb030'], emblem: null,
},
{
id: 'sleipnir', name: 'Sleipnir', base: 'horse',
role: 'Input mirroring and virtual HID: speaks through the hands of the machine. Odin\'s eight-legged horse.',
source: 'F:/Projects/Odin/assets/personas/sleipnir-avatar.png', note: 'Eight limbs as in the myth: two hoof-arms, two legs and four extra legs behind.',
skin: '#5a6478', muzzle: '#8a94a8', eyes: '#3fe0f0', accent: '#3fe0f0',
hair: { style: 'mane', color: '#2fc8e0' },
outfit: { shape: 'tunic', main: '#2a3040', trim: '#3fe0f0', collar: 'round' },
legs: '#5a6478', shoes: '#22262e', sleeve: '#5a6478', extraLegs: 4,
acc: [['horseTail', '#2fc8e0']],
prop: ['pad', '#2a3040', '#3fe0f0'], emblem: { shape: 'bolt', color: '#3fe0f0', disc: '#22262e' },
},
{
id: 'hermodr', name: 'Hermodr', base: 'humanoid',
role: 'Eve browser lowering: resolves providers through Odin\'s catalog and renders them. The messenger.',
source: 'F:/Projects/Hermodr/assets/hermodr-avatar.png',
skin: SKIN.warm, eyes: '#e8a83a', accent: '#3fd0c0',
hair: { style: 'messy', color: '#2a3a4a' },
outfit: { shape: 'tunic', main: '#2a3a44', trim: '#c9902a', collar: 'none', belt: '#6a4a2a' },
legs: '#2a3440', shoes: '#6a4a2a',
acc: [['wingCap', '#2a3a4a', '#d9a43a', '#3fd0c0'], ['scarf', '#2f9c8f']],
prop: ['envelope', '#f4ead4', '#e8384f'], emblem: null,
},
{
id: 'metame', name: 'Metame', base: 'humanoid',
role: 'Native Persona (メタめ) projected from the operator\'s public history; discussion and rumination.',
source: 'invented (persona-intake has no appearance; the design avoids depicting the operator)',
skin: SKIN.fair, eyes: '#59b7ff', accent: '#ff8a2a',
hair: { style: 'bob', color: '#59b7ff' },
outfit: { shape: 'tunic', main: '#1d2a3a', trim: '#ff8a2a', collar: 'round' },
legs: '#1d2a3a', shoes: '#ff8a2a',
acc: [['twoTone', '#ff8a2a']],
prop: ['mirror', '#c9a24a', '#bfe6ff'], emblem: { shape: 'glyph', color: '#ff8a2a' },
},
{
id: 'void', name: 'Void', base: 'humanoid',
role: 'VoidBot\'s built-in Discord moderator mind. Its state was lost; the look is new.',
source: 'invented (VoidBot README role)',
skin: '#161226', eyes: '#c9a6ff', faceInk: '#c9a6ff', accent: '#c9a6ff',
hair: { style: 'none', color: '#161226' },
outfit: { shape: 'robe', main: '#4a3a7a', trim: '#c9a6ff', collar: 'none' },
legs: '#4a3a7a', shoes: '#2a2140', hands: '#c9a6ff',
acc: [['hood', '#4a3a7a'], ['hoodRim', '#6a56a8']],
prop: ['shield', '#3a2e58', '#ffe08a'], emblem: { shape: 'moon', color: '#ffe08a', disc: '#161226' },
},
{
id: 'gjallar', name: 'Gjallar', base: 'humanoid',
role: 'Renderer-neutral compositor for Odin-visible Eve surfaces; Odin\'s branding Persona. The horn.',
source: 'F:/Projects/Odin/assets/personas/gjallar-avatar-pixel-256.png',
skin: SKIN.fair, eyes: '#59b7ff', accent: '#ffd84a',
hair: { style: 'short', color: '#2a2440' },
outfit: { shape: 'tunic', main: '#1e2238', trim: '#d9a43a', collar: 'high' },
legs: '#1e2238', shoes: '#d9a43a',
acc: [['helm', '#d9a43a', '#f4e8c8', '#59b7ff']],
prop: ['horn', '#f4e8c8', '#d9a43a'], emblem: { shape: 'rainbow', color: '#fff', disc: '#1e2238' },
},
];