Art
Art Pipeline
First-pass concept art (Midjourney) and the first 3D model (Meshy). Everything under Art/ sits outside Assets/, so Unity never imports it into a build. The game-ready golem lives in Assets/Art/Models/TrainingGolem/.
Art direction (style, palettes, shape language) is written up in the "Art Direction" tab of the Mobile RPG Codex: https://claude.ai/artifact/VF3CNzQbCREegLwy2zAdBS
Midjourney setup
- Account folder: group Velan › folder Concepts (all Velan generations, including the ones not picked here).
- Model: Midjourney V8.2, Standard (not Raw), stylize at the account default, Fast mode.
- Style lock: every subject prompt ends with
--sref https://cdn.midjourney.com/e1cbf51f-e14d-47a5-878b-299fa466e41a/0_1.png, the style anchor below. Facets-heavy prompts use--sw 50so the anchor's ivory/sky palette doesn't swamp the prismatic colours; the overworld re-roll and golem model reference use--sw 40. - Each image is listed as Midjourney job id and grid index (0 top-left, 1 top-right, 2 bottom-left, 3 bottom-right); the full image is
https://cdn.midjourney.com/<job>/0_<index>.pngwhile signed in.
Style exploration
Three treatments of the same subject. The cel-shaded 3D look won: it reads as a playable 3D game at phone size and is the closest to what Meshy and URP can actually produce. The gouache is the prettiest but can't be built in 3D.
| Image | Job / index | Prompt |
|---|---|---|
Concepts/style/style-anchor-cel-shaded.png (chosen, the --sref anchor) | e1cbf51f-e14d-47a5-878b-299fa466e41a / 1 | Concept art for a mobile fantasy RPG, crisp cel-shaded 3D JRPG style with soft rim light and subtle bloom, a quiet farming village on a grassy hill below a white stone shrine built of perfectly mirrored arches, morning light, warm ivory, pale gold and sky blue, chunky readable low-poly-friendly shapes, clean silhouettes, inviting and hopeful --ar 16:9 |
Concepts/style/style-alt-hand-painted.png | 1db5f4e1-9ac4-4256-87ca-e35035c01887 / 1 | Concept art for a mobile fantasy RPG, stylized hand-painted 3D game art, a quiet farming village on a grassy hill below a white stone shrine built of perfectly mirrored arches, soft morning light, warm ivory, pale gold and sky blue, chunky readable shapes, clean silhouettes, gentle painterly textures, inviting and hopeful --ar 16:9 |
Concepts/style/style-alt-gouache.png | 7e9e3fcb-c13e-464e-8d0f-42b65ad89c2b / 1 | Concept art for a mobile fantasy RPG, storybook gouache illustration with flat painted shapes and visible brush texture, a quiet farming village on a grassy hill below a white stone shrine built of perfectly mirrored arches, soft morning light, warm ivory, pale gold and sky blue, bold simple silhouettes, inviting and hopeful --ar 16:9 |
Subjects
All prompts below end with --sref https://cdn.midjourney.com/e1cbf51f-e14d-47a5-878b-299fa466e41a/0_1.png (written as --sref <anchor>).
The two sides
| Image | Job / index | Prompt |
|---|---|---|
Concepts/sides/evane-vs-facets-a.png, evane-vs-facets-b.png | c6bd1a85-d3c7-4f61-9373-0e0716f5ee3e / 3, 1 | Split composition concept art for a mobile fantasy RPG, two sides of magic facing each other across a dividing line: on the left the Evane, a perfectly symmetric white marble and pale gold gateway with a robed mage mirrored in a still pool, calm sky blue light; on the right the Facets, a jagged asymmetric archway of shattered prismatic crystal shards in teal, violet and magenta over dark slate, a mage in mismatched shard armor, rainbow caustics; strong contrast between order and fracture, stylized hand-painted 3D JRPG game art, soft cel shading --ar 16:9 --sref |
Concepts/evane/evane-sanctum-a.png, evane-sanctum-b.png | 70b07654-fc90-44cd-bfc4-0ebdaf7ccdef / 2, 3 | Visual language concept for a mobile fantasy RPG, the Evane, a light-side magic order whose temples, robes and sigils are perfectly bilaterally symmetric like a reflection in still water, a grand white marble sanctum with pale gold filigree and sky-blue glass, two robed adepts mirroring each other's pose, mirrored glyphs glowing on the floor, calm order and restraint, perfectly centered symmetrical composition, stylized hand-painted 3D JRPG game art, soft cel shading --ar 16:9 --sref |
Concepts/facets/facets-hall-a.png, facets-hall-b.png | da75d28e-9583-4a46-8323-57416dc67e06 / 1, 2 | Visual language concept for a mobile fantasy RPG, the Facets, a free magic order who build from a shattered mirror, asymmetric crystalline architecture of jagged broken prismatic shards, every shard catching the light its own way, iridescent teal, violet and magenta refractions over dark slate stone, robed adepts with mismatched shard armor and one bare arm, rainbow caustics on the ground, bold off-center asymmetric composition, stylized hand-painted 3D JRPG game art, soft cel shading --ar 16:9 --sref |
Characters
| Image | Job / index | Prompt |
|---|---|---|
Concepts/protagonist/protagonist-a.png, protagonist-b.png | dcd6142f-f689-4104-be03-f962cd707b9d / 1, 0 | Character concept sheet for a mobile fantasy RPG protagonist, a young orphan farmhand from a small village, shown as a young man and a young woman side by side, simple homespun linen tunic, rolled sleeves, long woven scarf, patched trousers, worn leather boots, both hands faintly glowing with two mirrored white-gold glyphs, hopeful determined expression, full body, front view, plain warm grey background, stylized hand-painted 3D JRPG game art, soft cel shading, clean readable silhouettes --ar 3:2 --sref |
Concepts/mentor/mentor-a.png, mentor-b.png | c6f2a179-57a9-4449-9b03-9c5a057bc450 / 1, 3 | Character concept for a mobile fantasy RPG, the mentor, a jaded but trustworthy village elder, a retired magic-user who walked away from an endless war between two magic orders, weathered lined face, short grey beard, tired kind eyes, long patched travelling coat whose faded emblem is half a symmetric white-gold sigil and half a broken prismatic shard, plain walking staff, clay pipe, slightly stooped, full body, three-quarter view, plain warm grey background, stylized hand-painted 3D JRPG game art, soft cel shading, clean readable silhouette --ar 3:4 --sref |
Training Golem
| Image | Job / index | Prompt |
|---|---|---|
Concepts/training-golem/golem-front-meshy-input.png (Meshy input), golem-front-alt.png | 7d0c078d-63f0-4756-91a5-82d2b31d1bc0 / 3, 0 | 3D game character model reference, the Training Golem, a sturdy practice golem built from pale carved stone blocks and wooden training-dummy planks bound with iron bands and rope, one glowing white-gold mirrored glyph carved on its chest, chunky top-heavy proportions, huge fists, short thick legs, small head, full body, straight front view, symmetrical standing pose with arms slightly away from the body, centered, whole figure in frame, plain flat white background, no ground shadow, stylized hand-painted game asset, soft even lighting --ar 1:1 --sref |
Concepts/training-golem/golem-three-quarter.png | 937a7353-1f41-4ada-960e-63bd19514b42 / 2 | 3D game creature concept for a mobile fantasy RPG, the Training Golem, a sturdy practice golem built from pale carved stone blocks and wooden training-dummy planks bound with iron bands and rope, one glowing mirrored glyph carved on its chest, chunky top-heavy proportions, huge fists, short thick legs, small head, full body, front three-quarter view, standing idle pose, centered, plain light grey background, stylized hand-painted 3D JRPG game art, soft cel shading, clean readable silhouette --ar 1:1 --sref |
Places
| Image | Job / index | Prompt |
|---|---|---|
Concepts/battle-arena/arena-a.png, arena-b.png | c8e7b085-59d9-4ecd-a17d-703630d611a1 / 3, 2 | Battle arena environment for a mobile JRPG with fully 3D battles, a circular village training ground paved with pale stone tiles inlaid with a faint mirrored glyph, ringed by low ruined symmetric white arches and wooden practice posts, meadow and distant hills beyond, empty open center stage, seen from a low camera behind the player looking toward the far side, clear open space in the upper middle of the frame, warm afternoon light, stylized hand-painted 3D JRPG game art, soft cel shading --ar 16:9 --sref |
Concepts/overworld/overworld-a.png, overworld-b.png | 3e0c223a-0aaf-4a0f-989d-56289bb7702b / 1, 0 | Overworld gameplay screen of a mobile JRPG, faux-3D world map, camera looking steeply down at the ground from high above at 60 degrees, HD-2D miniature diorama, a tiny hero figure standing on a dirt path in the center of the frame, around him a small farming village of six cottages, square crop fields, a river with a stone bridge, clumps of round trees, a white symmetric shrine on a little hill, map edges fading into soft tilt-shift blur, toy-like readable landmarks, warm daylight, stylized hand-painted 3D game art, soft cel shading --ar 16:9 --sref |
The first overworld attempt (job dbbc8014-e630-487d-b002-45148aa095f0, "tilted high three-quarter top-down diorama view…") came out as a perspective landscape, not a top-down map, so it was re-rolled with an explicit steep camera angle and lower style weight.
Spells
| Image | Job / index | Prompt |
|---|---|---|
Concepts/spells/repel-a.png, repel-b.png | d841f0c0-4b96-4dda-ba0c-2dd24615c516 / 1, 0 | Spell effect concept for a mobile JRPG battle, Repel: two mirrored L-shaped glyphs of white-gold light flash side by side in front of the caster, and a wide curved shockwave wall bursts outward and shoves a chunky stone training golem backward off its feet, ring of dust and grass blowing away, bright symmetrical radial burst, over-the-shoulder battle camera, training ground arena, stylized hand-painted 3D JRPG game art, soft cel shading --ar 16:9 --sref |
Concepts/spells/coil-a.png, coil-b.png | ecfcfe51-b1a6-43a1-b193-a83be4e1e052 / 1, 3 | Spell effect concept for a mobile JRPG battle, Coil: two mirrored S-shaped ribbons of white-gold and sky-blue light spiral around each other into one heavy twisting coil and slam down onto a chunky stone training golem, crushing impact, cracked ground, chips of stone flying, strong symmetric motion arcs, over-the-shoulder battle camera, training ground arena, stylized hand-painted 3D JRPG game art, soft cel shading --ar 16:9 --sref |
Concepts/spells/gale-a.png, gale-b.png | 01825f10-e1fd-4480-a38f-724513cd281d / 1, 2 | Spell effect concept for a mobile JRPG battle, Gale: two identical parallel glyphs shaped like sharp mountain peaks glow pale green side by side, releasing a howling gust of crescent wind blades and swirling leaves that sweeps across the arena and buffets a chunky stone training golem, streaks of air, over-the-shoulder battle camera, training ground arena, stylized hand-painted 3D JRPG game art, soft cel shading --ar 16:9 --sref |
Concepts/spells/facet-seal-a.png, facet-seal-b.png | a7c75f51-562a-4046-af58-0c3b9c08c231 / 1, 3 | Spell effect concept for a mobile JRPG battle, Facet Seal: a glowing circle glyph on the left and a glowing square glyph on the right fuse into an asymmetric shield of jagged prismatic crystal shards in front of the caster, refracting teal, violet and magenta light, rainbow caustics on the ground, a chunky stone training golem's fist striking the shield and glancing off, over-the-shoulder battle camera, stylized hand-painted 3D JRPG game art, soft cel shading --ar 16:9 --sref |
November concept push
A second Midjourney pass (VEL-48 to VEL-51) covered the rest of the game. Each folder has its own README with every prompt and job id, a contact sheet and a list of Meshy candidates:
Concepts/world/: every region and key location, Prologue to Act 4 (VEL-48).Concepts/buildings/: architecture and modular kits per culture (VEL-49).Concepts/characters/: the protagonists, Aske and the cast (VEL-50).Concepts/creatures-items/: enemies, items and spell effects (VEL-51).
Meshy: Training Golem
Built through the Meshy REST API (the key lives in ~/.secrets/velan_meshy_api_key, never in the repo). Total cost: 68 credits.

1. Image to 3D (30 credits)
Input: Concepts/training-golem/golem-front-meshy-input.png, sent as a base64 data URI.
POST https://api.meshy.ai/openapi/v1/image-to-3d
{
"image_url": "data:image/png;base64,…",
"ai_model": "latest",
"should_remesh": true,
"topology": "triangle",
"target_polycount": 15000,
"should_texture": true,
"enable_pbr": true,
"texture_resolution": "2k",
"target_formats": ["glb", "fbx"]
}
Task 01a19b3f-5bf3-75a4-91c1-bf35dafcb1f2. Result: one mesh, 15,435 triangles, 30,744 vertices, one material with a 2K PBR set (base colour, metallic, roughness, normal; Meshy's current model has no emission map, so the chest glyph's glow has to come from an emissive mask or a light in Unity).
2. Rigging (5 credits)
POST https://api.meshy.ai/openapi/v1/rigging
{ "input_task_id": "01a19b3f-5bf3-75a4-91c1-bf35dafcb1f2", "height_meters": 2.4 }
Task 01a19b47-70e7-7708-8cc7-7f982c6a4151. A 24-bone humanoid skeleton (Hips, Spine/Spine01/Spine02, neck, Head, shoulders, arms, forearms, hands, legs, feet, toes). Mixamo's auto-rigger was tried first and failed on this body: the head sits inside the shoulders with no neck, which its humanoid fitter can't place.
3. Animations (3 credits each)
POST https://api.meshy.ai/openapi/v1/animations
{ "rig_task_id": "01a19b47-70e7-7708-8cc7-7f982c6a4151", "action_id": <id>,
"post_process": { "operation_type": "extract_armature" } }
extract_armature returns skeleton and motion only (~200 KB) instead of re-embedding the 14 MB mesh in every clip. The files follow Unity's Model@Clip.fbx naming.
| Clip | Meshy library action | Frames (30 fps) | Battle use |
|---|---|---|---|
TrainingGolem@Idle.fbx | 0 Idle | 2–122 | waiting |
TrainingGolem@Attack.fbx | 214 Punch Forward with Both Fists | 2–106 | its attack |
TrainingGolem@Hit.fbx | 178 Hit Reaction | 2–51 | Coil, Gale hits |
TrainingGolem@Stagger.fbx | 113 Mummy Stagger | 2–147 | Repel's 2.5 s stagger |
TrainingGolem@Death.fbx | 8 Dead | 2–91 | defeat |
TrainingGolem@Walk.fbx | 119 Slow Orc Walk | 2–167 | approach, overworld |

The preview above is a Blender render of each clip applied to the rigged mesh (a mid-clip frame each), as a check that the skin deforms cleanly.
Files
Assets/Art/Models/TrainingGolem/TrainingGolem.fbx: the rigged character (mesh, skeleton, embedded textures).Assets/Art/Models/TrainingGolem/Animations/TrainingGolem@<Clip>.fbx: the six clips, skeleton only.Assets/Art/Models/TrainingGolem/Textures/: the 2K PBR maps as separate files. URP Lit wants smoothness, not roughness, so invertTrainingGolem_Roughness.png(or pack it into the metallic map's alpha) when building the material.Art/Models/TrainingGolem/TrainingGolem_static.glb: the unrigged Image to 3D result, kept as the source mesh.
Not done here (left for the Unity side): .meta files and import settings (Unity creates them on first import; set the rig to Generic or Humanoid and point every clip at TrainingGolem.fbx's avatar), the URP material, and the emissive chest glyph.
Meshy: protagonists
The male and female protagonist (VEL-36): Assets/Art/Models/ProtagonistMale/ and ProtagonistFemale/, each with a
README listing its clips, height and Meshy task ids. 56 credits each.

What changed from the golem:
- Multi-image to 3D (
POST /openapi/v1/multi-image-to-3d) with the four VEL-64 model-sheet views asimage_urls, front first, pluspose_mode: "a-pose"; otherwise the golem's settings (15k triangles, 2K PBR). Same 30 credits. - Rigged at
height_meters: 1.7. Seven clips, one animation task each withextract_armature: Idle (0), Walk (30 Casual Walk), Run (14 Run 02), Cast (130 Mage Spell Cast 1, the two-hand gather and sweep), Hit (178), Victory (59 Victory Cheer), KnockedDown (187 Knock Down).GET /openapi/v1/animations/librarylists every action with a preview GIF. - Humanoid import. The model gets its own avatar. The clip files can't copy it: their root is the armature itself,
so Unity reports "Copied Avatar Rig Configuration mis-match". Each clip file creates its own Humanoid avatar instead,
which works because Humanoid clips are muscle-space. Unmap Jaw: the automatic mapping picks
headfront, which skins the whole face.

Meshy: Aske
Aske Tarran, the ferry keeper and mentor (VEL-37), built the same way as the golem through the Meshy REST API. Total
cost: 82 credits. The game-ready files, their Humanoid import settings, the clips and every task id are in
Assets/Art/Models/Aske/README.md; VEL-70's Import Character builds the prefab.

1. Multi-image to 3D (30 credits)
Input: the four VEL-64 views in Concepts/model-sheets/aske/ (front.png first, then left.png, back.png,
three-quarter.png), as base64 data URIs.
POST https://api.meshy.ai/openapi/v1/multi-image-to-3d
{
"image_urls": ["data:image/png;base64,…", "…", "…", "…"],
"ai_model": "latest",
"pose_mode": "a-pose",
"should_remesh": true,
"topology": "triangle",
"target_polycount": 15000,
"should_texture": true,
"enable_pbr": true,
"texture_resolution": "2k",
"target_formats": ["glb", "fbx"]
}
Task 01a1a026-3287-735f-9408-37448528ab36. Result: one mesh, 15,535 triangles, a 2K PBR set (base colour, metallic,
roughness, normal; no emission map). The face, earrings, turtleneck, rolled sleeves, fingerless glove and silver bands
all came through from the sheet.
2. Rigging (5 credits)
POST https://api.meshy.ai/openapi/v1/rigging
{ "input_task_id": "01a1a026-3287-735f-9408-37448528ab36", "height_meters": 1.65 }
Task 01a1a029-51e3-73ce-93b2-438bbd0b65f1. The same 24-bone humanoid skeleton as the golem.
3. Text to Motion (10 credits each)
The library has no point and nothing like the tracing lesson, so those two clips were generated from text, then applied
to the rig like a library action ("motion_task_id" in place of "action_id", 3 credits each).
POST https://api.meshy.ai/openapi/v1/text-to-motion
{ "mode": "prime", "duration": 4, "prompt": "An older woman standing still raises her right arm and points firmly ahead and slightly to her right across a river, holds the point for a moment while looking that way, then lowers her arm back to her side and relaxes." }
Task 01a1a026-ec8d-7098-a972-60138dc0a1ed (Point). Trace, task 01a1a026-f042-74f4-b41e-908d0e930f70, 6 s: "An
older woman stands behind a student and reaches both arms forward at chest height, hands together as if guiding the
student's hands, and slowly traces a large curved symbol in the air in front of her: a smooth S-shaped stroke from upper
left down to lower right, then returns her hands to the start and lowers them."
4. Animations (3 credits each)
POST https://api.meshy.ai/openapi/v1/animations
{ "rig_task_id": "01a1a029-51e3-73ce-93b2-438bbd0b65f1", "action_id": <id>,
"post_process": { "operation_type": "extract_armature" } }
| Clip | Meshy library action | Use |
|---|---|---|
Aske@Idle.fbx | 0 Idle | standing |
Aske@Walk.fbx | 30 Casual Walk | walking with the player (VEL-81) |
Aske@Run.fbx | 14 Run 2 | catching up |
Aske@Talk.fbx | 313 Talk with Hands Open | dialogue |
Aske@Explain.fbx | 314 Talk with Right Hand Open | dialogue |
Aske@Wave.fbx | 290 Wave One Hand | greeting, send-off |
Aske@Point.fbx | Text to Motion above | "the far bank", directions |
Aske@Trace.fbx | Text to Motion above | the tracing lesson, hand over hand |
Aske@Cast.fbx | 129 Mage Spell Cast | her old Warden casting |
Walk and Cast were picked from the library's preview GIFs: Casual Walk is unhurried without being a shuffle, and Mage Spell Cast stays standing (the other casts crouch or lunge).

The preview is a Blender render of Meshy's skinned version of each clip, one frame each. Applying the
extract_armature clips to the rigged model in Blender's FBX importer mangles the arms (its bone orientation
differs between the two files). Unity's Humanoid import reads them correctly.
Files
Assets/Art/Models/Aske/:Aske.fbx,Animations/Aske@<Clip>.fbxandTextures/, imported as Humanoid.Art/Models/Aske/Aske_static.glb: the unrigged Multi-image to 3D result, kept as the source mesh.
Meshy: Glint
The glint (VEL-38) is a static Meshy mesh animated in code, so it has no rig and no clips. It was built from
Concepts/creatures-items/enemies/glint-ref-newt-chunky-a.png with Image to 3D, mesh only (20 credits, task
01a1a026-eda1-7219-804f-c1159290711b). The mesh is kept as Models/Glint/Glint_meshy.glb; Glint_meshy_sheet.glb is an unused alternative from the VEL-66
sheet (20 credits; it has a face).
Models/Glint/build_glint.py (Blender) cuts off the shards Meshy fused onto the tail and adds three separate ones,
then writes Assets/Art/Models/Glint/Glint.fbx; Velan > Art > Set Up Glint builds the prefab. The rest is in
Assets/Art/Models/Glint/README.md.

Characters in the game (VEL-70)
Velan > Art > Import Character (select model folders) or Import All Characters turns every Humanoid Meshy
model under Assets/Art/Models/<Name>/ into a game-ready character. Batchmode:
-executeMethod Velan.Editor.CharacterImport.ImportAll. Re-running it is safe: it only changes what isn't right yet.
Creatures (Generic or no rig) are left alone. Source: Assets/Editor/CharacterImport.cs.
For each model it:
Fixes the import. The model and every clip file are Humanoid with an avatar of their own (a Meshy clip file's root is the armature, so copying the model's avatar fails; Humanoid clips are muscle-space, so they play on any avatar of the same skeleton). Jaw is unmapped (Unity maps it to
headfront, which skins the face). Clips are named after their file (Aske@Talk.fbx→Talk) or keep their take names inside a merged FBX (Rook, Tamsin, the faction NPCs); Idle, Walk, Run, Talk and Sit loop; root rotation, height and position are baked into the pose. Clip settings go in a second reimport, because Unity drops them from the.metawhen the avatar changes in the same one.Builds the material.
Assets/Art/Characters/Materials/<id>.mat,Velan/Toon, from the base colour, normal, and metallic with inverted roughness packed intoAssets/Art/Characters/Textures/<id>_MetallicSmoothness.png.Fills the shared controller.
Assets/Art/Characters/Character.controllerholds empty placeholder clips;<id>.overrideControllerputs the character's own clip in each slot and its Idle where it has none.Parameter What it does Speed(float, m/s)Idle, Walk (1.4) and Run (4.0) blended. CharacterModelsets it from how fast the root moves (a jump faster than 12 m/s is a warp, not a run).Talking(bool)Loops Talk while standing. CharacterModelsets it while the line on screen is the character's.Wave,Cast,Hit,Cheer,Point,Explain,Trace,Alarm,LookAround(triggers)Play once, back to locomotion. Defeat,Recover(triggers)Fall and stay down; get up. Sitting(bool)The Sit layer sits down and stands up. Clip aliases:
KnockedDownfills Defeat andVictoryfills Cheer.Builds the prefab.
Assets/Art/Characters/Resources/Characters/<id>.prefab: the model with its avatar and override controller, feet at the pivot, facing +z, no root motion, one LOD that culls below 2% of the screen height. The game loads it on demand withCharacterPrefabs.Load("Characters/<id>")(Assets/Scripts/World/), the one place to change for Addressables.Writes the data if it has none:
Assets/StreamingAssets/Data/Characters/<id>.json(id,name,prefab,scale,portrait,tint) andindex.json.portraitis the name the concept portraits share (askeforArt/Concepts/portraits/aske-neutral.png), or null when there are none yet. The tint (the base colour's average) colours the placeholder if the prefab is missing. Edit names and scales by hand; the tool keeps them.
In the game, the player wears protagonist_male or protagonist_female for the save's body type, and a location
actor with "character": "<id>" wears that character (Sallowbank's Aske does; VEL-71 points the rest). Without one,
or if the prefab is missing, the placeholder capsule stands in.
Rook's one-arm fix stays an import postprocessor (Assets/Art/Models/Rook/Editor/RookOneArm.cs), because it has to
run on every import of Rook.fbx, not only when the tool runs.
Sallowbank environment kit
The props for Sallowbank, the Prologue village (VEL-39): houses with the door-mark, Aske's cottage and barn, fences
and gate, field tiles, farm clutter, the well, the rope ferry, river banks, trees, bushes, reeds and rocks. No
generation service: every prop is built by Python scripts in Blender (Art/Environment/Sallowbank/), sized to the
greybox, coloured from one 256 x 256 palette texture and shared by one Velan/Toon material.
- Source scripts, conventions and the door-mark emission setup:
Art/Environment/Sallowbank/README.md. - Rebuild: run
build_kit.pyin Blender (--background --python), then Velan > Art > Build Sallowbank Kit in Unity, which makes the prefabs andAssets/Art/Environment/Sallowbank/KitPreview.unity. - Game-ready output:
Assets/Art/Environment/Sallowbank/(Models/,Textures/,Materials/,Prefabs/).
From Art/README.md