Files
fishing-game/assets/fish/fish-navaga.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

47 lines
6.7 KiB
XML

<!-- Навага (navaga): вытянутая тресковая рыба (глубина/длина ≈0.25) в холодной серо-бурой гамме; ГЛАВНЫЙ видовой знак — тресковый набор плавников: ТРИ спинных (D1/D2/D3, убывают к хвосту) и ДВА анальных (A1/A2) против одного спинного у сига и сельди; ОДИН короткий усик на подбородке (f4, sw 1.6) — отличие от всех прочих; мелкие тёмные f4-крапины вдоль бока и тонкая светлая f2 боковая линия (тресковая черта); слабо вильчатый хвост, серо-бурая окраска -->
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 160 100" width="160" height="100">
<!-- хвост: слабо вильчатый, лопасти чуть расставлены, корень утоплен в стебель (нахлёст 4 ед.) -->
<path fill="var(--f3,hsl(212,16%,38%))" d="M46 47 L16 36 C23 43.5 26 47 27 50 C26 53 23 56.5 16 62 L46 53 Z"/>
<!-- D1 — первый спинной: самый высокий, основание глубоко в теле (нахлёст ≥4) -->
<path fill="var(--f3,hsl(212,16%,38%))" d="M102 43 C103 31 105 25 108 25 C111 25 113 31 114 43 Z"/>
<!-- D2 — второй спинной: ниже первого, ближе к хвосту -->
<path fill="var(--f3,hsl(212,16%,38%))" d="M84 43 C85 32 87 27 90 27 C93 27 95 32 96 43 Z"/>
<!-- D3 — третий спинной: самый низкий, у хвостового стебля (снова убывает) -->
<path fill="var(--f3,hsl(212,16%,38%))" d="M66 45.5 C67 35 69 30 72 30 C75 30 77 35 78 45.5 Z"/>
<!-- A1 — первый анальный: стоит под телом, растёт из брюха (нахлёст ≥4) -->
<path fill="var(--f3,hsl(212,16%,38%))" d="M76 57 C78 67 82 73 85 73 C88 73 89 67 90 57 Z"/>
<!-- A2 — второй анальный: дальше к хвосту, чуть ниже первого -->
<path fill="var(--f3,hsl(212,16%,38%))" d="M58 54 C60 65 63 72 66 72 C69 72 70 65 70 54 Z"/>
<!-- брюшные плавники: пара мелких лопастей под брюхом, основания утоплены в теле -->
<path fill="var(--f3,hsl(212,16%,38%))" d="M86 58 C85 65 86 70 89 72 C92 70 92 64 92 58 Z"/>
<path fill="var(--f3,hsl(212,16%,38%))" d="M94 58 C94 65 95 71 98 73 C100.5 70 100.5 64 100 58 Z"/>
<!-- лучи плавников: тонкие тёмные штрихи ВНУТРИ лопастей (один составной путь, наружу не выходят) -->
<path fill="none" stroke="var(--f4,hsl(210,18%,24%))" stroke-width="0.9" opacity="0.3" d="M104.5 41 C104.5 37 105.5 33 107 31 M108.5 41 C108.5 36 108.5 32 108.5 29 M112 41 C112 37 112 33 112.5 31 M87 41.5 C87.5 38 88.5 34 89.5 32 M91 41.5 C91.5 37 91.5 33 91.5 31 M94.5 41.5 C94.5 38 94.5 34 95 32 M69.5 43 C70 40 71 37 71.5 35 M73 43 C73.5 40 73.5 37 73.5 34 M76 43 C76 40.5 76.5 37.5 76.5 36 M81.5 59 C82 63 83 67 84 69 M84.5 59 C85 63 85.5 67 86 69 M87 59 C87 62.5 87.5 65.5 88 68 M62 58 C62.5 61.5 63.5 65 65 67 M65.5 58 C66 61.5 66.5 65 67 67 M68 58 C68 61 68.5 64 69 66"/>
<!-- тело: вытянутое, рыло (152,49), затылок (134,40), спина (100,36), брюхо (100,64), стебель 9 ед. -->
<path fill="var(--f1,hsl(210,14%,52%))" d="M152 49 C147 43 141 39.5 134 40 C120 36.5 110 36 100 36 C80 36 60 40 42 46 L42 54 C60 60 80 64 100 64 C112 64 124 62 134 58 C143 54.5 148.5 51.5 152 49 Z"/>
<!-- брюхо: светлая полоса вдоль нижней кромки -->
<path fill="var(--f2,hsl(205,12%,78%))" d="M42 54 C60 60 80 64 100 64 C112 64 124 62 134 58 C143 54.5 148.5 51.5 152 49 C148.5 52 139 55.5 131 57.5 C119 60.5 107 61 100 61 C78 61 57 57.5 42 54 Z"/>
<!-- тёмная спинная кромка: тонкая полоса по верхнему контуру -->
<path fill="var(--f4,hsl(210,18%,24%))" d="M152 49 C147 43 141 39.5 134 40 C120 36.5 110 36 100 36 C80 36 60 40 42 46 L42 47.8 C60 42 80 38 100 38 C110 38 120 38.6 134 42 C141 41.6 147 45 152 49 Z"/>
<!-- жаберная пластина: мягкая светлая заливка (объём головы), отодвинута от ободка глаза -->
<path fill="var(--f2,hsl(205,12%,78%))" opacity="0.35" d="M121 41 C124.8 46 124.8 53 121 58 C116.5 53 116.5 45 117.5 41 Z"/>
<!-- жаберная дуга: тёмный серп у затылка -->
<path fill="none" stroke="var(--f4,hsl(210,18%,24%))" stroke-width="1.5" d="M121 41 C124.8 46 124.8 53 121 58"/>
<!-- боковая линия: тонкая светлая тресковая черта вдоль середины тела -->
<path fill="none" stroke="var(--f2,hsl(205,12%,78%))" stroke-width="1.1" d="M120 49.5 C104 49 84 49.5 48 51.5"/>
<!-- крап: 6-8 мелких тёмных пятен вдоль бока одним compound-path -->
<path fill="var(--f4,hsl(210,18%,24%))" d="M48.4 54 A1.6 1.1 0 1 0 51.6 54 A1.6 1.1 0 1 0 48.4 54 Z M58.3 50 A1.7 1.1 0 1 0 61.7 50 A1.7 1.1 0 1 0 58.3 50 Z M70.4 52 A1.6 1.2 0 1 0 73.6 52 A1.6 1.2 0 1 0 70.4 52 Z M82.4 48.5 A1.6 1.1 0 1 0 85.6 48.5 A1.6 1.1 0 1 0 82.4 48.5 Z M93.3 53 A1.7 1.2 0 1 0 96.7 53 A1.7 1.2 0 1 0 93.3 53 Z M104.4 49 A1.6 1.1 0 1 0 107.6 49 A1.6 1.1 0 1 0 104.4 49 Z M113.5 52.5 A1.5 1 0 1 0 116.5 52.5 A1.5 1 0 1 0 113.5 52.5 Z"/>
<!-- рот: маленькая тёмная щель на конце рыла -->
<path fill="var(--f4,hsl(210,18%,24%))" d="M147 48 C149.2 48.3 151 49 151.8 50.4 C150 51.8 148 51.3 146.6 50 Z"/>
<!-- усик: ОДИН короткий f4-усик на подбородке (главное отличие наваги от прочих) -->
<path fill="none" stroke="var(--f4,hsl(210,18%,24%))" stroke-width="1.6" stroke-linecap="round" d="M147 51.5 C144 55 141 59 139 63"/>
<!-- грудной плавник: на боку за жаберной дугой, кончиком вниз-назад (ПОСЛЕ тела) -->
<path fill="var(--f3,hsl(212,16%,38%))" d="M123 55 C122 60 120 64 116.5 67 C114.5 63.5 116.5 58.5 120 54.5 C121 54.5 122 54.7 123 55 Z"/>
<!-- глаз: ободок f4 → склера → радужка → зрачок → блик (последним слоем) -->
<circle fill="var(--f4,hsl(210,18%,24%))" cx="131" cy="43" r="5"/>
<circle fill="#f7f3e6" cx="131" cy="43" r="4.1"/>
<circle fill="#9aa7b0" cx="131" cy="43" r="3"/>
<circle fill="#142638" cx="131" cy="43" r="2.1"/>
<circle fill="#fff" cx="130" cy="41.9" r="0.8"/>
</svg>