shadowsocks 3x-ui туториал длиннопост habr geek telegram VPN
Cегодня мы поговорим об установке и использовании графической панели 3X-UI для сервера X-Ray с поддержкой всего того, что умеет X-Ray: Shadowsocks-2022, VLESS с XTLS и т.д.
Почему 3X-UI? Существует, на самом деле, довольно много панелей для V2Ray/XRay: оригинальный X-UI, Marzban, Libertea, Hiddify. Проблема в том, что в процессе экспериментов у меня и ряда других хабраюзеров заставить их нормально работать с пол-пинка не получилось. Например, одним из требований была установка в Docker (чтобы не создавать бардак в системе и не запускать непонятные bash-скрипты на хосте вне контейнера), и на этом этапе отвалились уже многие панели: у каких-то установка падала еще на этапе разворачивания docker-контейнера из-за ошибок в скриптах, какие-то устанавливались, но не могли нормально запуститься (фронтенд говорил, что не может подключиться к бэкенду), какие-то в итоге запускались, и после получаса тыканья везде в попытках переключить язык с китайского или фарси хотя бы на английский выяснялось что что-то глючит или не работает.
3X-UI, который является доработанным форком оригинального X-UI, в сравнении со всем вышеописанным, почти идеален: легко устанавливается в Docker, сразу на английском с возможностью переключения на русский, имеет в себе все что надо - и главное, работает! Пара багов, конечно, тоже нашлась, но они не критичны и о них будет чуть позже.
Update: в конце мая в своем Telegram-канале автор 3X-UI написал, что возможно больше не будет работать над проектом, но есть альтернатива - еще один из форков оригинального X-UI под названием (внезапно!) X-UI, который очень похож на 3X-UI и тоже работает без проблем.
УстановкаОфициальный репозиторий 3X-UI: https://github.com/MHSanaei/3x-ui
Официальный репозиторий форка X-UI: https://github.com/alireza0/x-ui
Итак, дано: VPS с IPv4 (неплохо бы иметь еще IPv6, но не обязательно) и Debian либо Ubuntu Linux (на других дистрибутивах суть будет примерно та же самая). И установленные Docker и docker-compose (если вдруг нет - следуйте инструкциям для вашего дистрибутива, у меня без проблем установилось простым "apt install docker.io docker-compose"). Ну и git в придачу.
Сначала клонируем исходники. Лучше всего использовать последнюю стабильную версию, можно проверить в "Releases" на гитхабе.
Для 3X-UI:
git clone https://github.com/MHSanaei/3x-ui.gitcd 3x-ui
git checkout v1.4.6
Для X-UI:
git clone https://github.com/alireza0/x-ui.git
cd x-ui
git checkout 1.4.1
Запускаем docker-compose:
docker-compose up -d
Готово! Вы восхитительны! Я серьезно, все, панель установлена и работает.
Дело осталось за малым - настроить ее:
Для 3X-UI идем браузером по адресу http://yourserverip:2053/panel/,где yourserverip - IP-адрес вашего сервера или доменное имя, если оно у вас есть и настроено (обратите внимание, протокол http://, а не https://). Для X-UI нужно сначала посмотреть с помощью команды "docker logs x-ui", на каком именно порту запустилась панель.
Логинимся под стандартными реквизитами admin/admin и видим нашу прекрасную панель управления:
Первым делом я советую сделать несколько вещей. Перейти в "Settings" (настройки) и там:
Изменить порт на котором работает панель со стандартного 2053 на какой-нибудь другой (лучше всего где-нибудь в верхнем конце диапазона, до 65535);
Изменить корневой путь URL-адреса панели с / на что-то типа /mysecretpanelroot/;
При желании переключить язык на русский (но имейте в виду, в русском переводе есть некоторые неточности сбивающие с толку);
На второй вкладке "Настройки безопасности" изменить стандартный админский пароль на свой;
После чего сохраняем настройки и рестартуем панель. Нужно будет изменить URL с учетом нового порта и пути, заданных в настройках.
Все вышеперечисленное необходимо для защиты от тупых скрипткиддисов залетных кулхакеров, которые случайно могут наткнуться на вашу панельку при массовом сканировании адресов. Другие советы по повышению безопасности я приведу в конце статьи.
Идем в раздел меню Inbounds (в русском переводе он почему-то называется "Пользователи", это неправильно и сбивает с толку). Нажимаем "Add Inbound" ("Добавить пользователя"):
Появляется милое окошо. Сначала добавим возможность подключаться через Shadowsocks-2022.
"Remark" (Примечание) - ввести что угодно, это просто человекочитаемое название;
"Протокол" выбираем shadowsocks;
"Listening IP" (в русском переводе называется "Порт IP", и это тоже неправильно и запутывает) можно оставить пустым, тогда сервер будет слушать на всех IP-адресах, либо можно явно указать требуемый;
"Порт" - панель выберет рандомный.
Далее настраиваем пользователя (в момент создания inbound'а создается один, других при желании можно добавить позже):
Поле "Email" на самом деле не обязательно должно содержать емайл, может быть любой текст (имя пользователя) - панель генерирует рандомный набор символов, если вы хотите создавать несколько разных пользователей (например, раздать аккаунты друзьям, смотреть кто сколько накачал и при желании блокировать доступ), то лучше вбить сюда что-то человекочитаемое и понятное;
"Subscription" - пока что можно вбить тот же самый юзернейм (о подписках я расскажу чуть позже).
Дальше снова идут настройки протокола:
"Шифрование" - выбираем что-нибудь что начинается с "2022", вариант по умолчанию вполне неплох;
"Пароль" (ключ) панель сгенерирует автоматически с правильной длиной для выбранного метода шифрования.
Нажимаем "Создать" и на этом настройка для Shadowsocks закончена, им уже можно пользоваться.
Теперь переходим к настройке VLESS с XTLS-Reality. Тут все будет чуточку сложнее, но в целом так же просто.
"Remark" (Примечание) - любое название;
"Протокол" - "vless",
"Listening IP" ("Порт IP", который на самом деле не порт, а адрес) - оставляем пустым, либо задаем вручную если надо;
"Порт" - вместо рандомного ставим 443;
Далее переходим к настройкам клиента.
"Email" - как в и в прошлом пункте, лучше указать что-то человекочитаемое и понятное. Важно: пользователи разных подключений не могут иметь один и тот же емайл (например, наш новый VLESS и старый Shadowsocks созданный в предыдущем пункте), поэтому можно добавить какой-нибудь префикс (например user1vl) для избежания конфликтов.
"Subscription" - тут наоборот, лучше будет если текст в этом поле будет совпадать с тем, что вы задали для Shadowsocks (подробности ниже). Внимание: в отличие от 3X-UI, в X-UI поле Subscription по умолчанию не отображается, нужно сначала активировать функционал подписок в настройках панели.
"Flow" - надо выбрать "xtls-rprx-vision". Обратите внимание, поле Flow (см. скриншот) появится только после того, как чуть ниже вы поставите галочку на пункте "Reality". То есть лучше всего настривать так: сначала ставите галочку Reality, а потом заполняете поля с настройками пользователя.
Дальше у нас идут настройки транспорта:
"Reality" - как уже сказано выше, должно быть активно;
"XTLS" - наоборот, должно быть неактивно (это немного запутывает, не смотря на то, что Reality тоже относится к XTLS, здесь под XTLS подразумеваются только устаревшие версии протокола, и галочки "XTLS" и "Reality" в панели являются взаимоисключающими);
"uTLS" - по умолчанию "firefox", я обычно выбираю "chrome", по факту особо без разницы (главное чтобы не "android", могут быть проблемы с клиентами);
"Домен" - на самом деле это не домен, а адрес для подключения к вашему серверу. Можно оставить пустым, тогда панель автоматически подставит IP-адрес или домен, по которому вы обращаетесь в панели на сервере.
"ShortIds" - панель сгенерирует рандомный ID;
"Public Key", "Private Key" - можно кликнуть на "Get new keys", и панель сама сгенерирует новые для вас;
"Dest" и "Server names" - вот это самое интересное, это домен, под который вы будете маскироваться. По умолчанию панель предлагает маскировку под yahoo.com и www.yahoo.com с переадресацией на yahoo.com:443, но лучше выбрать какой-нибудь другой домен, как описано в предыдущей статье;
Сохраняем введенную форму, и - всё! Настройка завершена.
После этого на странице видим примерно вот это:
Если тыкнуть на кнопочку "Меню" соответствующую нужному протоколу, можно его активировать/деактивировать, сбросить счетчики трафика, добавить пользователей (в том числе сгенерировать разом N аккаунтов по шаблону), и самое главное - раскрыв (плюсиком) список пользователей, можно посмотреть настройки подключения для вбивания в клиенты для этого пользователя.
Нажав на значок QR-кода, панель покажет QR-код, который можно отсканировать камерой в мобильных клиентах (v2rayNG или Nekobox на Android, Wings X/FoXray или Shadowrocket на iOS). Подробнее о клиентах читайте в этой статье.
ремарочкаОбратите внимание, v2rayNG и Nekobox из сторов основаны на старой версии XRay и еще не поддерживают Reality, нужно переключиться на бета-канал или устанавливать APK с гитхаба.
Нажав на иконку информации (с буквой "i") можно посмотреть настройки для вбивания в десктопные клиенты, в том числе и URL, который можно скопировать и вставить.
Под дестоп я рекомендую Nekobox (есть под Windows, Linux и билды от сообщества для MacOS). Подробнее о клиентах читайте в этой статье.
краткая настройка NekoboxЕсли вы раньше им не пользовались, нужно переключить его на использование движка sing-box, Preferences -> Basic Settings -> Core.
Далее копируем URL подключения в буфер обмена, в Nekobox нажимаем Server -> Add profile from clipboard - вжух, и у нас в списке добавилось новое подключение!
Сохраняем, кликаем правой кнопкой мыши на новый сервер в списке, жмем Start, и проверяем подключение выбрав там же Current Select -> URL test.
Если все нормально, то галочками "VPN Mode" или "System proxy" можно завернуть трафик всех приложений на прокси.
Там же вы можете найти "subscription URL". Это - специальным образом сгенерированный список подключений для клиентов. Помните, вы указывали "Subscription" при создании пользователя? При запросе по такому subscription URL, сервер выдаст список настроек (сервера, ключи) для всех подключений с этим ID в поле subscription. Многие клиенты (включая v2rayNG, v2rayN, Nekobox, и другие) умеют автоматически либо по запросу скачивать настройки с таких URL и добавлять их к себе - таким образом, если вы добавили какие-то новые протоколы или решили поменять конфигурацию, пользователи могут легко получить новые параметры с вашего сервера.
Внимание: в отличие от 3X-UI, в X-UI поле Subscription по умолчанию не отображается и вообще функционал подписок по умолчанию отключен, его нужно активировать в настройках панели.
В менюшках панели можно найти много интересностей, например, можно запретить клиентам качать торренты (если у вас на сервере не слишком широкий канал или есть лимит трафика), добавить фильтр доменов рекламных сервисов, запретить доступ к порносайтам (ума не приложу, кому вообще в жизни может понадобиться такая ужасная функция).
А еще можно заблокировать доступ через сервер к IP-адресам и доменам Ирана, Китая и России (Россия здесь в отличной компании, не правда ли?) - это нужно если вы по ряду соображений настроили на клиентах доступ к российским сайтам напрямую, и хотите заблокировать их на сервере чтобы случайно не вылезти в рунет через него из-за ошибок в настройках.
Про опцию запрета IPv6 для GoogleПри включенном IPv6 в TUN-режиме есть одна проблема. Nekobox (возможно другие клиенты тоже, не проверял) в качестве "внутреннего" IPv6 адреса использует адрес из такого зарезервированного диапазона (ULA), где они должны генерироваться рандомно, и вероятность случайного совпадения двух рандомных адресов ничтожна. То есть такой адрес должен быть уникальным, но в Nekobox он наоборот захардкожен один для всех случаев, и в итоге некоторые сервисы, которые могут каким-то образом получать и анализировать локальные адреса клиентов (например, Google с его телеметрией в Chrome и в Android), считают всех клиентов с таким внутренним адресом... одним и тем же клиентом, после чего матчат их то ли с геолокацией, то ли с другими внутренними адресами, то ли и с тем и с тем, и в итоге в ряде случаев все пользователи Nekobox (и возможно других клиентов) для Гугла выглядят как юзеры откуда-то из Ирана, Китая или Азербайджана, вплоть до того, что со временем Гугл начинает считать публичный адрес прокси-сервера тоже иранским/китайским/etc, и это приводит к довольно забавным эффектам.
Варианты решения: не использовать TUN-режим (он же VPN mode), либо в правилах маршрутизации запретить доступ до Google по IPv6, что и позволяют сделать некоторые форки X-UI.
Сначала о паре багов.
При установке в Docker не получается посмотреть логи Xray, панель выплевывает ошибку. Иногда что-то подсмотреть и понять можно используя команду "docker logs 3x-ui", но там логи довольно куцые. Будем надеяться, что в следущих версиях это исправят (зарепортите им там кто-нибудь, а?).
Второй баг - не удается создать несколько inbounds с одним и тем же портом, но разными listening IP - панель ругается. Из-за этого, например, нельзя реализовать классическую схему с XTLS-Reality слушающем на 443 порту на IPv4-адресе, и VLESS+Websockets или VLESS+gRPC для работы через CDN (как запасной вариант) на IPv6 адресе. Опять же, будем надется, что авторы это когда-нибудь пофиксят.
Из того, что можно улучшить при конфигурации - по умолчанию панель слушает на чистом HTTP, без шифрования. Вариантов решения несколько:
Если у вас есть домен (даже бесплатный от no-ip, freenom, dynu), то можно установить certbot от letsencrypt, запросить сертификат для своего домена, положить его в папку ./certs (внутри директории, куда вы склонировали 3x-ui) или сделать туда симлинки, и указать путь к ключам в панели в виде /root/cert/privkey.pem и /root/cert/public.crt. Не забудьте добавить post-update hook для рестарта контейнера;
Другой вариант - поменять в настройках listen IP для панели на 127.0.0.1 - после этого панель станет недоступна "снаружи", но на нее всегда можно будет зайти с помощью SSH:
"ssh -L 8080:localhost:2053 your_server_ip" - тогда вбивая в браузере http://localhost:8080, подключение через SSH пойдет на локальный порт 2053 сервера, где и слушает ваша панель;
Третий вариант - повесить на сетевой интерфейс на сервере еще один "виртуальный" IP-адрес: прописать в /etc/network/interfaces что-то типа
iface lo:1 inet static
address 192.88.99.1
network 192.88.99.0
netmask 255.255.255.0и настроить панель, чтобы она слушала только на нем. Тогда "снаружи" панель будет недоступна, но при подключении через Shadowsocks/VLESS-прокси вы сможете до нее достучаться по этому адресу.
И занимательное на последок. Панель может работать как Telegram-бот :)
Сначала обращаемся к боту BotFather и просим его зарегистрировать нового бота:
Он сгенерирует для вас API-токен. Его надо вставить в настройки панели, и там же указать ваш ID как админа (его можно запросить у бота userinfobot):
После этого можно разговаривать с панелью через Telegram - смотреть статистику, делать бэкапы конфигурации, и т.д.
Photoshop generative fill нейронные сети длиннопост Мемы
Dead by daylight Игры Николас Кейдж Актеры и Актрисы Знаменитости тизер
Невыносимая тяжесть огромного таланта теперь и в DBD
Отличный комментарий!
Weilard длиннопост Pixel Art habr мопед не мой
Фоны старых квестов — методы разработки, секреты, советы
Сегодня мы исследуем вопрос разработки фонов «как в старых адвенчурах». Это не совсем то, чего вы от меня ожидали. Однако, очередная часть «Галопа Пикселя» задерживается по двум серьезным причинам. Во-первых, главы посвященные анимации требуют — качественной анимации, иначе они не смогут претендовать на лавры материала обучающего. Во-вторых, «галопу» необходима ещё одна публикация до начала цикла об анимации, который уже находится в разработке. Связано это с тем, что я занимаюсь не только классическим пиксель-артом, но и тем, что выходит за пределы канонических разрешений, и у меня, определенно, есть чем поделиться. К сожалению, такой тип пиксель-арта сейчас более моден, чем классика, если судить по откликам публики.
Давайте, впрочем, вернемся к теме сегодняшней публикации. Считаю это маленьким открытием, и мне непременно нужно поделиться им с теми, кто собирается соединить некоторый отрезок своей жизни с тем, что может называться классической адвенчурой. Быть может это поможет вернуть на рынок игры, которые немного оттеснят «хипстерский пиксель» заменив его на то, что может напомнить времена лучших игр от «Westwood Studios», «Sierra» и «Lucas Arts». Предположу вскользь, что множество художников и так знают это. И, тем не менее — я не заметил публикаций на эту тему. Наша братия не спешит делиться своими секретами, сохраняя некую монополию на собственные открытия.
Я хотел приурочить эту статью к началу разработки собственной адвенчуры. Но кто знает, когда это произойдет? А вам эта информация может помочь уже сейчас. Стоит ли откладывать? Думаю, что нет. Лопаты в руки.
Прелюдия
Я довольно давно занимаюсь пиксель-артом, потому что очень люблю старые игры. Мне кажется, что в старых играх существенно больше души, чем в играх сегодняшних. Старые игры я склонен сравнивать с искренними чувствами, с любовью и не рассматриваю их как некое мимолетное увлечение. Можно сказать, что старые игры – это любовь. Современные игры – это страсть. Легкомысленный и быстрый секс, не обремененный привязанностью, какими-либо обязательствами или глубоким уважением к партнеру.
Поскольку я не одобряю мимолетные связи, мой взор всё чаще устремляется назад в прошлое. И чем дальше я двигаюсь по реке времени, тем слаще и притягательней для меня становится то, что я называю классикой. Классика в моём понимании – игры до того момента когда весь мир перешел на режим SVGA, отчалив и навеки покинув обитель разрешения меньшего — VGA. Чаще всего игры того времени использовали разрешение 320х200 пикселей.
Меня всегда занимал вопрос – как именно делались эти фоны. В качестве примера я приведу изображения из игр «Westwood Studios». Это мой фаворит. Контора, повлиявшая на мое творчество настолько сильно, что я решил делать игры именно в этом стиле. Художники которой определили вид и цвета моих работ на десятки лет вперед. Я часто слышал об этих фонах – «какой изумительный пиксель-арт».
Давайте сразу перейдем к кульминации не характерной для моих публикаций. Я не уверен, что это чистый пиксель-арт. К этому выводу я пришел два месяца назад. Пришел окончательно. Сформировал объяснение. Выработал сходную технику. Сейчас я представлю вам свои наработки, а вы определите для себя, прав я или нет. Хочу сразу отметить, что это относится только к фонам. Вне сомнения интерфейс игр, оформление, шрифты, игровые персонажи и их анимация – это стопроцентный пиксель-арт, не разбавленный и хорошей крепости. Здесь у меня сомнений нет. И даже если я ошибаюсь в своей теории, это никак не помешает вам делать фоны похожие на фоны старых игр.
В качестве точки опоры мы возьмем несколько изображений из легендарных игр «Legend of Kyrandia» и «Lands of Lore». Я считаю их пиковыми на тот момент, с точки зрения проработки арта, с точки зрения анимации и цвета. Не говоря уже о техническом исполнении.
Мягкие теплые цвета, плавные градиенты и удивительная проработка мельчайших нюансов мимики. Вот, что отличает эти работы. Я очень долго пытался воспроизводить их в оригинальном разрешении – и у меня ничего не получалось. Всегда была заметна разница. Мои изображения не дотягивали до точности художников Вествуда. Там, как говориться, «каждый пиксель лежал на своём месте», всегда был нужного цвета и нигде не отмечалось явного диссонанса между цветами.
Со временем я переключился на 3D, поучаствовал в десятках проектов, специфика которых предполагала использование меня как спеца по части 3D, текстур, и гибридных техник создания графического контента. Но эта тропа на долгие годы увела меня от мира изобразительного искусства, и добрый десяток лет я блуждал во тьме коммерческих игр.
Когда пришло время вернуться к рисованию, меня ещё раз посетила мысль, что, возможно, фоны этих игр — просто арт. Уменьшенный и обработанный. Но только когда я начал усиленно заниматься пиксель-артом, начал снова рисовать — концепция обрела ясность.
Путь
Давайте быстро проанализируем то, чем характерен пиксель-арт и чем характерны изображения старых игр. Во-первых – лимитированная палитра, редко выходившая за 256 цветов в один момент времени на экране. Во-вторых – резкие формы с фактически ручным сглаживанием в несколько пикселей по контурам этих резких форм. В-третьих, разрешение 320х200. Как нам получить нечто подобное?
Первое что приходит на ум – уменьшить изображение. Давайте проведем эксперимент. Возьмем одну из моих ранних работ. И уменьшим её.
Автоматическое сглаживание и фильтрация сохраняют картинку максимально приближенной к исходнику. Но это не сильно напоминает графику старых игр (уменьшенные изображения выведены с увеличением 2x чтобы вы могли видеть результаты более наглядно).
Теперь пробуем сохранить изображение в индексированной палитре посредством сохранения изображений для сети (Save as Web). Сколько бы мы не выбирали цвета – это не дает нам необходимого изображения, хотя оно и похоже на нечто старое. Весьма отдаленно, надо отметить. Даже если сохранить Джима в 32-ух цветах, он никак не напоминает пиксель-арт.
Существует режим фильтрации – без сглаживания. Иначе Nearest Neighbor (preserve hard edges). То есть изображение сохраняется максимально близким к оригиналу. Без сглаживания, без адаптации изображения. Без какой-либо фильтрации.
Примечание: Это ваша дверь в мир старого. Не то чтобы она сразу доведет куда нужно, но без неё точно не обойтись. Никак.
Результат уже лучше. Мы, по крайней мере, избавились от нехарактерного для пиксель-арта сглаживания. Снова сохраняем изображение с индексированной палитрой.
Парадоксальность ситуации заключается в том, что если вы получаете пиксель-арт из изображения или подготовленного вами арта – вы негодяй и жулик. Но если вы сделаете тоже самое в стиле «pixel by pixel» то вы будете молодцом и хорошим парнем, который намучался порядочно, но смог сделать такую-же работу, маниакально выставляя пиксель за пикселем на виртуальный холст. Разумеется преобразованное таким образом изображение ещё не пиксель-арт, любой артист работает аккуратнее делая всё руками. И тем не менее… допустим вы разработчик игр. У вас жмут сроки, и вам нужно выпустить продукт через месяц. Есть кто-то кто полагает, что ваши крики «зато я сделал всё честно» будут волновать окружающую вас публику? Волновать вашего потребителя? Ему и дела нет, как и что вы делаете. Зато он легко скушает вас с селёдочкой под водочку, и даже не поперхнётся если вы сваляете дурака, и задержите релиз.
Таким образом изготовление пиксель-арта для доказательства, что ваш пиксель больше, и изготовление пиксель-арта, как контента поставленного на поток в рамках разработки масштабного проекта – две больших разницы. Никому не надо честно. Надо в срок, по хорошей цене, чтобы у потребителя карман не треснул, и чтобы вкусно было. Именно в срок и вкусно привело меня к мысли озвученной выше. О том, что изображения старых игр частенько готовились на базе арта.
Теоретически Джима можно было бы превратить в пиксель-арт, просто поработав с изображением. Через три-четыре часа он бы стал совершенно другим. Но задача у нас поставлена другая. Нам необходимо понять, как именно делались фоны для старых адвенчур, а не сделать нечто похожее, существенно доработав затем полученный результат. У меня довольно давно появилась уверенность, что изображения практически не обрабатывались дополнительно, потому как это удлинило бы цикл разработки игры, а это – не выгодно. Самый главный мотив разработчика – выгода. Самый главный мотив – время разработки и отсутствие промежуточных этапов. Понятие выгоды можно трактовать как угодно. И это не обязательно денежная или материальная выгода. Потратил на разработку контента меньше времени, освободил два или три месяца на другую задачу – выгода.
К чему это нас приводит? К понимаю того факта, что исходная картинка выполнена – не так. Не в том художественном стиле, который бы при сжатии стал бы выглядеть как старые фоны. Что остается в этом случае, учитывая, что при уменьшении любого арта штрихи усредняются, и не представляется возможным опознать, каким именно образом была создана работа? Каким был исходник. Что делать, когда не понять наносились ли мазки, была ли это вообще мазковая техника, или использовались градиенты, или что-либо ещё?
Ответ прост. Искать. Пробовать разные стилистики и прогонять их через процедуру уменьшения и последующего сохранения в индексированной палитре.
Это был довольно длительный этап, который долго не приводил к нужным результатам. Раз за разом. Последний год я стал усиленно рисовать. Попробовал разные стили и стал постепенно склоняться к классической схеме рисования концептов и графики. Без использования 3D, без каких-либо финтов и хитростей. Как и в случае пиксель-арта я опустился на самое дно, к истокам. И предположил, что будет неплохо научиться рисовать одной единственной кистью, делая это так, чтобы это напоминало традиционную живопись.
Традиционный мазковый подход привел меня к следующим изображениям. Сохранение их по указанному выше способу приводило к следующим результатам.
Грубая мазковая техника не подошла, но какой-то пульс уже начал прощупываться. Я добавил детализации и получил следующий «фон». Который также оказался ошибочным, т.к. излишний фото-реализм в работе оказался не очень хорош.
Проанализировав художников Вествуд я решил смягчить резкие мазки, сделать их более плавными. Это был первый фон, который наконец-то выдал нормальный результат. Это было практически то, что нужно. Этот фон уже не нужно обрабатывать. Разве что добавлять интерактивные объекты.
Примечание к рисунку: Интеграция и сравнение фонов будет проведена чуть ниже, сразу после окончания презентации работ по персонажам (похожим на персонажей игры «Lands of Lore»)
Можно сказать, что было важным подобрать размер и характер штрихов, чтобы при уменьшении они давали необходимый «пиксельный шум» на финальном изображении. Выработав схему можно изготавливать фон в течении трех-четырех часов, и даже без последующей пост-обработки он будет презентабелен и может быть использован в вашей игре. Забавно, что для того чтобы найти такое, казалось бы, простое решение, пришлось пробовать разные стили и покорять самые разные высоты.
После этого я озаботился вопросом персонажей. Вы помните, какие они. Практически фотографические. С хорошими цветовыми и световыми акцентами. Теплые и холодные цвета. Голливуд. Финальной точкой в этом исследовании стал доктор Саймон Тэмм из Светлячка. Символично, что именно доктор ответственен за исцеление изображения, и за финал.
Его я рисовал намеренно склоняясь к той палитре, которой характерны многие изображения квестов от «Westwood Studios». Мягкие градиенты на коже, четкое и холодное контровое освещение c аккуратными штрихами, там где это необходимо (волосы, акценты на глазах). То есть даже в исходнике Саймон уже напоминает одного из героев «Lands of Lore». Финальный аккорд – уменьшение.
Затем небольшая партия выполненная ансамблем индексированной палитры.
Будучи соединенным с классическим пиксель-артом в тех местах, где к этой несуществующей игре добавляется интерфейс мы имеем полную иллюзия графического контента старых игр. Если бы «Westwood Studios» делали бы игру по нашему любимому «Светлячку» тогда, то скорей всего она выглядела бы примерно так. Но мы должны убедиться, что всё так, а не иначе, не так ли?
Давайте интегрируем наши изображения в интерфейс и оформление игр «Westwood Studios» — «Legend of Kyrandia» и «Lands of Lore».
Слева представлен десатурированный вариант (обесцвеченный), а справа с яркой приветливой гаммой. Также Саймон уменьшен и помещен в то место, где ранее находилась иконка Конрада (персонаж игры «Lands of Lore»). Вполне очевидно, что такой арт мог бы быть в игре, и что он выглядит довольно гармонично. В принципе, можно было бы сохранить его в существенно меньшей палитре по цветам, а затем немного поработать кисточкой, чтобы арт был совершенно похож на арт художников из Вествуд. Очередь за фоном.
Точно также — уменьшаем изображение в соответствующем режиме, и сохраняем в индексированной палитре. Верхний вариант слишком пастельный, поэтому имеет смысл подбавить яркости цветов, и можно видеть, что Брендон (персонаж игры «Legend of Kyrandia») вполне мог бы бродить и по такому миру. То есть картинка не выглядит чем-то инородным.
Финал
Из всего вышесказанного можно сделать вывод, что изначально фоны художников «Westwood Studios» были классической живописью. Затем оцифрованной и сохраненной в той палитре, которую использовала игра. После этого добавлялся интерфейс, персонажи и другие элементы. Анимация также делалась на базе этих работ. Она не содержала множество кадров, но была крайне детально проработана. Как? Теперь мы знаем.
Я написал эту статью под влиянием порыва разделить с вами эту небольшую радость маленького, но очень важного для меня открытия. Также я довольно часто встречал в сети вопросы, как именно делаются изображения, которые походят на старые игры? Что нужно сделать чтобы изображение было таким? Ответ прост. Прогресс ушел далеко, цветов стало больше, и изменились принципы работы с изображением. Больше не нужно было экономить, больше не нужно было умещаться в рамках низких разрешений, и внешний вид игр изменился. Поэтому чтобы имитировать их необходимо кланяться истокам, а именно:
• Уменьшать изображения до размера старых разрешений (320х200)
• Уменьшение изображение производить в соответствующем режиме.
• Сохранять изображение в индексированной палитре, имитируя ограничения тех лет.
• Готовить исходное изображение в определенной стилистике.
Удивительно то, что занятия пиксель-артом стимулировали меня на занятия классическим рисунком. Можно сказать, что во многих случаях именно пиксель-арт подсказал мне как лучше рисовать в большом разрешении. И это не единственное из моих маленьких открытий. Похожая статья пойдет следом. Где мы научимся готовить графику как в «Fallout». Не современном, разумеется. А в том самом. Старом.
Безусловно данная публикация не поможет сделать подобные фоны человеку техническому, не облеченному умением рисовать. Однако она может подсказать к какому художнику вам стоит обратиться, у кого вам стоит заказывать арт, и как он должен выглядеть. За последние годы ко мне не раз обращались разные программисты, которые знали, что хотят сделать, но не знали как. Это, кстати, довольно частое явление, когда во главе проекта стоит человек технический. Мне не хватает технической смекалки и практического склада ума. Но по крайней мере я могу разделить с вами те знания что имею.
Переводим дух
Отгремели последние аккорды, близиться конец спектакля, и мне хотелось бы добавить в статью немного практической лирики. Чтобы прийти к определенному решению мне потребовался не один месяц. Я не хочу говорить, что прошли годы, потому как мои занятия цифровой живописью не были регулярными. Однако, чтобы закончить этот квест мне потребовалось научиться рисовать несколько лучше, чем я умел это делать прежде.
К чему я это? У вас могло сложиться впечатление, что всё вышесказанное и показанное сложно. Отнюдь. Для человека, который ещё только начинает путь – да. Но для того, кто рисует – нет. Каждый из таких фонов может создаваться за один рабочий день (тех о которых я писал выше). Восьмичасовой. Это будет не самый честный вид пиксель-арта, но это – рабочий день. Это важно. Две работы ниже, совсем другое дело…
Пиксель-арт производимый с нуля занимает существенно больше времени. Эти две работы создавались, примерно, по 16-20 часов каждая, могли бы занять и больше, если бы не было соответствующего опыта. Безусловно, они срубили свои овации на соответствующих ресурсах. Но это именно «мой пиксель больше», а не что-либо ещё. Публичное доказательство – «я умею». Смею напомнить, что подобные амбиции и размахивание квадратиками не имеет ничего общего с разработкой контента для игр.
Приведу аналогию. Рыцарский турнир. На нём рыцари сражаются между собой, а где-то сверху сидит знатная дама, и, в общем и целом, победившему рыцарю может что-то обломится. Если он будет вести себя некрасиво, то скорей всего его бой не придется по душе ни даме, ни публике вокруг. Стало быть надо проявить себя во всей красе, показать все красивые приёмы, что вы умеете делать, как-то картинно упасть, снова вскочить, нанести пару эффектных ударов, парировать удары противника… словом – устроить прекрасный спектакль.
Работка игр это не бой на потеху публике и не рыцарский турнир. Это побоище. Битва. И ваша задача – выжить в этой битве. Когда вам нужно выживать, уж поверьте, вам не до красивых ударов. Вы сделаете всё, что угодно, чтобы вернуться домой. Ваше «возвращение» есть игра, ушедшая в печать. Никто не увидит ваших страданий, вашего пота и крови пролитой в сражении с ней. Все увидят лишь финальный результат.
Отличный комментарий!