• Nikitos's avatar
    Процедурный пиксель-арт: $.proc — палитры, силуэт, свет, лист
    · a021b5d8
    Nikitos создал
    Задача §5 из порядка §12. Спрайты не рисуют руками: их выращивают из сида.
    Порт идей из audm-neko (districts_art.gd — атлас улицы, машин, промзоны).
    
    * палитры-РАМПЫ (skin/cloth/leather/metal/dark/accent; wasteland, city, forest):
      художник берёт оттенок из рампы, а не выдумывает цвет — иначе спрайт выглядит
      случайным; неизвестная палитра заменяется запасной, игра не падает;
    * силуэт по частям тела с пропорциями (normal/heavy/thin/child: доли высоты,
      ширина рук, ширина плеч);
    * детали по шансу: пояс, ремни, сумка, разгрузка, противогаз, капюшон; в руках
      ствол или сумка;
    * свет: верхняя кромка светлее, нижняя темнее; контур вокруг силуэта; зеркало
      по нечётному направлению;
    * реестр описаний, отрисовка в холст RGBA, спрайт движка и спрайт-лист всех
      направлений — через новый engine.textureFromPixels (пиксели прямо в GPU, без
      файлов);
    * тесты (19 проверок): палитры и рампы, пиксельные примитивы, силуэт внутри
      холста, детерминированность по сиду, части тела, свет, контур, зеркало,
      телосложение, предмет в руках, детали, палитра меняет цвет но не форму.
    
    Тест нашёл ошибку: сид при отрисовке зависел от направления, поэтому «вид
    сзади» оказывался ДРУГИМ персонажем, а не зеркалом переднего. Теперь рисунок
    один, направление — зеркало.
    
    Проверка: tests/js/proc_test.mjs и полный набор qjs зелёные.
    a021b5d8