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

45 lines
6.0 KiB
XML

<!-- Краснопёрка (rudd): высокое ромбовидное золотисто-зелёное тело (D/L≈0.46) с тонким хвостовым стеблем; ГЛАВНЫЕ знаки — РОТ ВВЕРХ (полуверхний клин на рыле) и ЯРКО-ЖЁЛТЫЙ глаз (у плотвы рот конечный, глаз красный); спинной плавник СДВИНУТ К ХВОСТУ, позади оснований брюшных; красно-оранжевые плавники; тонкий f4-киль по брюху -->
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 160 100" width="160" height="100">
<!-- хвост: лопасти (14,32)/(14,68), корень утоплен в стебель на 4 ед. -->
<path fill="var(--f3,hsl(12,72%,52%))" d="M50 44 L14 32 C21.5 40 25.5 45 29 50 C25.5 55 21.5 60 14 68 L50 56 Z"/>
<!-- спинной плавник: СДВИНУТ К ХВОСТУ, основание x56..82 утоплено в спину, вершина (68,14) -->
<path fill="var(--f3,hsl(12,72%,52%))" d="M56 39 C58.5 28 62.5 19 68 14.5 C71.5 20.5 77 25.5 82 32 Z"/>
<!-- лучи спинного плавника: 4 тонких штриха веером, концы не выходят за мембрану -->
<path fill="none" stroke="var(--f4,hsl(85,30%,24%))" stroke-width="0.9" opacity="0.3" d="M62 37.4 C62.8 31.5 64 26 65.5 22 M68 35.8 C68.2 29 68.3 23.5 68.5 18.5 M74 34.2 C73.4 30 72.6 26 71.8 23 M79 33 C78.3 30.5 77 27.8 75.5 25.5"/>
<!-- анальный плавник: основание x52..70 утоплено в брюхо, низ до y86 -->
<path fill="var(--f3,hsl(12,72%,52%))" d="M52 60 C50 73 53 83 58.5 86 C64 85.5 68.5 78 70 68 Z"/>
<!-- лучи анального плавника: 3 коротких тёмных штриха, целиком внутри мембраны -->
<path fill="none" stroke="var(--f4,hsl(85,30%,24%))" stroke-width="0.9" opacity="0.3" d="M55 63 C55.5 69 56.2 76 56.8 81 M59.5 63 C60 69.5 60.7 76 61.3 80.5 M63.5 64 C64 69.5 64.5 74.5 64.8 78"/>
<!-- брюшные плавники: пара округлых лопастей x84..102, отведены назад-вниз -->
<path fill="var(--f3,hsl(12,72%,52%))" d="M84 68 C81.5 77 82.5 83.5 86.5 86 C90.5 84 92.5 77.5 93 68 Z"/>
<path fill="var(--f3,hsl(12,72%,52%))" d="M94 68 C91.5 77 92.5 84 96.5 86.5 C100.5 84.5 102.5 78 103 68 Z"/>
<!-- тело: высокий ромб, рыло (150,47), затылок (130,35.5), спина (94,27), брюхо (94,75), стебель 46,45/46,55 -->
<path fill="var(--f1,hsl(80,35%,50%))" d="M150 47 C148 41.5 143 36.5 136 35 C124 31.5 110 28 94 27 C72 28 53 35 46 45 L46 55 C49 62 55 69 64 72.5 C73 75 84 75.5 94 75 C112 75 128 69 138 59 C143.5 53.5 148 49.5 150 47 Z"/>
<!-- брюхо: светлая нижняя треть -->
<path fill="var(--f2,hsl(78,35%,74%))" d="M46 55 C49 62 55 69 64 72.5 C73 75 84 75.5 94 75 C112 75 128 69 138 59 C130 63.5 116 68 97 68.5 C76 69 55 63 46 55 Z"/>
<!-- спинная кромка: тёмная полоса по хребту, к затылку сходит на нет (голова остаётся золотистой) -->
<path fill="var(--f4,hsl(85,30%,24%))" d="M137 35.3 C124 31.5 110 28 94 27 C72 28 53 35 46 45 C59 38.4 77 32.4 94 31.8 C111 32 124 34.8 134 38.5 C135.7 37.4 136.6 36.2 137 35.3 Z"/>
<!-- КИЛЬ: тонкая f4-кромка по брюху между анальным и брюшными плавниками -->
<path fill="var(--f4,hsl(85,30%,24%))" d="M62 71.8 C68 73.5 74 74.7 80 75.3 L80 76.6 C74 76 68 74.8 62 73.1 Z"/>
<!-- жаберная пластина: мягкая светлая заливка (сдвинута от крупного глаза) -->
<path fill="var(--f2,hsl(78,35%,74%))" opacity="0.3" d="M118 37 C123 44 124 54 119.5 63 C115 54 114 44 114.5 37.5 Z"/>
<!-- жаберная дуга: тонкий тёмный серп у головы -->
<path fill="none" stroke="var(--f4,hsl(85,30%,24%))" stroke-width="1.3" opacity="0.5" d="M118 37 C123 44 124 54 119.5 63"/>
<!-- золотистый f2-блик по верхнему боку -->
<path fill="var(--f2,hsl(78,35%,74%))" opacity="0.28" d="M64 42 C84 34 110 32 130 37 C118 39 106 38.6 94 39.6 C80 40.8 70 43.8 62 48 Z"/>
<!-- чешуя: 5 f2-серпов (compound-path) -->
<path fill="var(--f2,hsl(78,35%,74%))" opacity="0.35" d="M74 41 Q68 47 74 53 Q70.5 47 74 41 Z M90 39.5 Q84 45.5 90 51.5 Q86.5 45.5 90 39.5 Z M106 40 Q100 46 106 52 Q102.5 46 106 40 Z M82 52 Q76 58 82 64 Q78.5 58 82 52 Z M98 51 Q92 57 98 63 Q94.5 57 98 51 Z"/>
<!-- чешуя: очень бледная f4-сетка (compound-path) -->
<path fill="var(--f4,hsl(85,30%,24%))" opacity="0.12" d="M82 40 Q88 45 82 50 Q84 45 82 40 Z M98 38.5 Q104 43.5 98 48.5 Q100 43.5 98 38.5 Z M114 41 Q120 46 114 51 Q116 46 114 41 Z M90 50 Q96 55 90 60 Q92 55 90 50 Z M106 49 Q112 54 106 59 Q108 54 106 49 Z"/>
<!-- рот: ГЛАВНЫЙ знак вида — полуверхний клин (150,45)→(146,44): верхняя губа выдаётся над кончиком рыла, устье смотрит вверх -->
<path fill="var(--f4,hsl(85,30%,24%))" d="M146.3 45.6 C147.8 45.1 149.3 44.1 150.4 43.1 C150.7 44.1 150.6 45.3 150 46.5 C148.8 46.4 147.5 46 146.3 45.6 Z"/>
<!-- грудной плавник: мягкая лопасть на боку (116,55)→(110,67), после тела -->
<path fill="var(--f3,hsl(12,72%,52%))" d="M118 54 C113 57 109 62 110.5 67 C114.5 65 117 60 119 56 Z"/>
<!-- глаз: ГЛАВНЫЙ знак вида — ЯРКО-ЖЁЛТАЯ радужка (ободок → склера → радужка → зрачок → блик) -->
<circle fill="var(--f4,hsl(85,30%,24%))" cx="134" cy="41" r="5.6"/>
<circle fill="#f7f3e6" cx="134" cy="41" r="4.7"/>
<circle fill="#e0b021" cx="134" cy="41" r="3.6"/>
<circle fill="#142638" cx="134" cy="41" r="2.4"/>
<circle fill="#fff" cx="132.7" cy="39.7" r="1.0"/>
</svg>