Files
fishing-game/assets/fish/fish-zander.svg
T
andrey 0a0595c3c1 Этап 47: ревизия SVG-портретов рыб — детализация до уровня болотных + биологическое правдоподобие. (1) Полная перерисовка 32 портретов, кроме 5 болотных (эталон стиля, Этап 45): 8 речных (carass, perch, bream, carp, pike, catfish, sturge, gold), 10 озёрных (zander, chuch, crayfish, bleak, roundel, eelpout, tench, navaga, rudd, cisco), 5 морских (herring, mackerel, flounder, tuna, swordfish), 9 океанских (moray, grouper, turtle, angler, octopus, manta, shark, squid, whale). (2) Единый стиль: послойные заливки без градиентов/defs (--f1 тело, --f3 плавники — перекрашиваются вариантами; --f2 брюхо/светлое, --f4 тёмный узор/кромка — НЕ перекрашиваются), спинная кромка f4-серпом, жаберная пластина+дуга, глаз 5 кругов (ободок→склера→радужка фикс-hex→зрачок→блик), составные узоры (полосы/пятна/чешуя/жучки/финлеты) — одним compound-path, ≤38 элементов, фикс-hex-акценты разрешены. (3) Видовые отличия и разведение «двойников»: карась↔карп (усы), окунь↔судак (горб/полосы/красное vs косая полоса/клыки), лещ↔густера (длинная анальная «юбка» vs короткий анальный+крупный глаз+киль), плотва↔краснопёрка (красный vs жёлтый глаз, рот конечный vs вверх), сом↔вьюн (голова-¼/длинные усы vs лента/10 усиков), мурена↔вьюн, осьминог↔кальмар (мешок+8 равных рук vs мантия-ракета+2 ловчих+крылышки), кит↔акула (флоскулы/фонтан/ус vs треуг. D/гетероцерк/5 щелей), сельдь↔скумбрия↔тунец↔меч, манта↔камбала↔рак, черепаха (вид сверху). (4) «Не рыбы»: crayfish (рак, вид сверху, клешни/ноги/веер), turtle (черепаха, вид сверху, щитки/4 ласты/клюв), octopus/squid/whale — иная анатомия (присоски/ловчие щупальца/флоскулы/фонтан), допустимые отклонения от рыбьего протокола. (5) Двойные боссы sturge (Река) и whale (Океан) проверены под золотой аурой #card.boss-card — контраст держат f4-детали. (6) Дефекты, найденные на приёмке и исправленные точечно (композиция не менялась): octopus — 2 щели с фоном; swordfish — светлый стык голова↔меч; tuna — прозрачная «дыра» в выемке хвоста-полумесяца; grouper — щель пасть↔нижняя челюсть; angler — просвет между римом и эской. (7) viewBox (0 0 160 100) и id/имена файлов не менялись; данные/логика/баланс не тронуты. (8) Интеграция: node tools/embed-fish.mjs — блок FISH-SVG обновлён (202478 байт / 1512 строк, 37 symbol); проверено совпадение всех 37 symbol с текущими assets/fish/*.svg; tools/fish-preview.html — блок «Варианты» (8 инлайн-копий carass синхронизированы с источником) + секция «Читаемость в UI» (44×28 / 40×26 / 240×150). Тесты не правились: 222/222 PASS, exit 0; check.mjs OK; balance.mjs — пины без изменений (Река 65.1/125.9 · Озёра 194.1/249.0 · Болото 240.3/328.9 · Море 297.3/476.7 · Океан 329.1/552.7). Скриншоты перегенерированы (45 RU + 45 EN). Доки: DEVLOG Этап 47.
2026-09-23 16:55:52 +03:00

38 lines
5.6 KiB
XML

<!-- Судак (zander): НИЗКОЕ веретенообразное вытянутое тело (D/L≈0.31) с почти ровной спиной (не горб, в отличие от окуня); ДВА раздельных спинных плавника с зазором — передний D1 гладкая низкая лопасть с 3-4 мелкими выемками (без гребёнки шипов), задний D2 мягкий и чуть выше; заострённое рыло с выступающей вперёд нижней челюстью и двумя клыками; 5 КОСЫХ тёмных полос (наклон ~13°, верх сдвинут вперёд), фон серо-зелёный; красных плавников НЕТ; крупный глаз -->
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 160 100" width="160" height="100">
<!-- хвост: слабо вильчатый, корень утоплен в стебель толщ.12 (нахлёст 4 ед.) -->
<path fill="var(--f3,hsl(168,22%,36%))" d="M48 43.5 C40 40.5 29 35.5 12 31 C16 38.5 18.5 44 19.5 50 C18.5 56 16 61.5 12 69 C29 64.5 40 59.5 48 56.5 Z"/>
<!-- D1 передний спинной: ГЛАДКАЯ низкая лопасть, кромка спокойная с 4 МЕЛКИМИ вогнутыми выемками (без шипов и гребёнки — не путать с окунем), основание глубоко в спине (нахлёст ≥4) -->
<path fill="var(--f3,hsl(168,22%,36%))" d="M58 45 C59 36.5 61 29.8 65.5 27.4 Q67.35 31 69.2 29.6 Q71 33.4 72.8 32.2 Q74.65 36.5 76.5 35.8 Q78.75 41.6 81 42.5 Z"/>
<!-- D2 задний спинной: отдельный МЯГКИЙ плавник, чуть выше переднего, между ними зазор (81..86) -->
<path fill="var(--f3,hsl(168,22%,36%))" d="M86 40.5 C87 31 91 24.8 97 24.2 C103 24.2 106.5 30 108 38.5 Z"/>
<!-- анальный плавник: мягкий, основание вдоль брюха (нахлёст ≥4), низ до y≈79 -->
<path fill="var(--f3,hsl(168,22%,36%))" d="M67 58.5 C69 68 73 76.5 78 79 C82.5 77 85 69 85 62.5 Z"/>
<!-- брюшные плавники: пара мягких лопастей, основания утоплены в брюхо (нахлёст ≥4) -->
<path fill="var(--f3,hsl(168,22%,36%))" d="M91 63.5 C90 73 91.5 81.5 95 85.5 C98 81.5 99 73 98.5 63.5 Z M103 64 C102.5 73.5 104 82 107.5 86 C110.5 82 111.5 73.5 111 64 Z"/>
<!-- тело: низкое веретено ~3:1, спина почти ровная (100,33)→затылок (131,38), стебель толщ.11; рыло (151,49), нижняя челюсть чуть вперёд (152.5,51.3) -->
<path fill="var(--f1,hsl(165,18%,47%))" d="M150.5 48.8 C146 43 139.5 39.2 131 38 C120.5 35.8 110.5 33.5 100 33 C79 33.6 58 37.6 44 44.5 L44 55.5 C58 62.4 79 66.4 100 69 C123 70.6 143.5 60.5 149 53.5 L152.5 51.3 Z"/>
<!-- брюхо: светлая нижняя часть -->
<path fill="var(--f2,hsl(160,18%,72%))" d="M44 55.5 C58 62.4 79 66.4 100 69 C123 70.6 143.5 60.5 149 53.5 C138 59 120 64.5 100 65.5 C76 66.8 57 62 44 55.5 Z"/>
<!-- спинная кромка: тонкая тёмная полоса по ровному верхнему контуру (не зубцы) -->
<path fill="var(--f4,hsl(170,25%,20%))" d="M150.5 48.8 C146 43 139.5 39.2 131 38 C120.5 35.8 110.5 33.5 100 33 C79 33.6 58 37.6 44 44.5 C58 38.6 79 34.9 100 34.9 C110.5 35.2 120.5 37.2 130 40.5 C139 44 146 48 150.5 48.8 Z"/>
<!-- жаберная пластина: мягкая светлая заливка (объём головы) -->
<path fill="var(--f2,hsl(160,18%,72%))" opacity="0.3" d="M122 40.5 C126 45.5 126.5 51.5 123.5 57.5 C119.5 51.5 118.5 45.5 119.5 41 Z"/>
<!-- жаберная дуга: тёмный серп у затылка (не задевает ободок глаза) -->
<path fill="none" stroke="var(--f4,hsl(170,25%,20%))" stroke-width="1.5" d="M121 40.5 C125 45.5 125.5 51.5 122.5 57.5"/>
<!-- 5 КОСЫХ тёмных полос одним compound-path: наклон ~13° (верх сдвинут вперёд), шире сверху (4), уже снизу (2.5), брюхо не пересекают -->
<path fill="var(--f4,hsl(170,25%,20%))" opacity="0.55" d="M58 42 L62 42 L57.7 54 L55.2 54 Z M72 39 L76 39 L69.9 60 L67.4 60 Z M86 37 L90 37 L83.1 63 L80.6 63 Z M100 36 L104 36 L96.9 64.5 L94.4 64.5 Z M114 36.5 L118 36.5 L110.9 63.5 L108.4 63.5 Z"/>
<!-- ротовая щель: от конца рыла назад под глаз -->
<path fill="var(--f4,hsl(170,25%,20%))" d="M151 49.4 C143 49.9 136.5 50.9 128.5 52.4 C136.5 53.6 143.5 53 152 51.2 Z"/>
<!-- клыки (фикс-акцент): два мелких треугольника с верхней челюсти -->
<path fill="#f7f3e6" d="M146.5 49.9 L148.3 50 L147.2 52.7 Z M141.8 50.3 L143.5 50.4 L142.5 52.9 Z"/>
<!-- грудной плавник: на боку под жаберной дугой (ПОСЛЕ тела), корень (119,55)→ кончик (113,66) -->
<path fill="var(--f3,hsl(168,22%,36%))" d="M120.5 54.5 C118 58.5 115.5 62.5 113.5 66.5 C117.5 65 121 61 122.5 56.5 Z"/>
<!-- глаз: КРУПНЫЙ (ободок → склера → радужка → зрачок → блик) -->
<circle fill="var(--f4,hsl(170,25%,20%))" cx="133" cy="42" r="5.6"/>
<circle fill="#f7f3e6" cx="133" cy="42" r="4.6"/>
<circle fill="#c9c29a" cx="133" cy="42" r="3.3"/>
<circle fill="#142638" cx="133" cy="42" r="2.3"/>
<circle fill="#fff" cx="131.8" cy="40.8" r="0.9"/>
</svg>