Виндасутра, или О трахании с Winlator’ом

Наверняка вы видели серию моих постов, содержащих такое словосочетание, как “траханье с Winlator’ом”. Слово “траханье” вне контекста имеет весьма нецензурный окрас, однако после нескольких недель, проведенных с телефоном во время “отключки”, я вынужден отметить, что это слово достаточно точно описывает наши отношения.
Но для начала - немного терминологии.
Winlator - это программа с открытым исходным кодом, предназначенная для запуска Windows-приложений (x86/x64) на смартфонах под управлением Android.
Программа использует концепцию контейнера - изолированной Linux-среды, использующей Wine/Proton в качестве основы и Box64/FEXCore в качестве эмуляторов.
Еще одна ключевая составляющая - драйвера для графического процессора смартфона с обертками DirectX для API Vulkan (в частности, DXVK).
Основное назначение Winlator’а нашлось довольно быстро: это запуск игр для большого компьютера на маленьком телефоне. При этом при работе с программой вырисовывается два сценария: сценарий A (для владельцев телефонов с графядром Adreno, где есть куча рабочих драйверов и тестовых прогонов для ценителей) и сценарий B (для всех остальных, поддержки нет, зато есть 1001 позиция для вышеописанного траханья).
Сейчас у меня Infinix GT 20 Pro, позиционирующий себя как агрегат для киберспортивных дисциплин типа PUBG Mobile. На нем стоит процессор с громким названием Dimensity 8200, стыдливо прячущий от бенчмарков и свидетелей Адрэно графчип Mali-G610 MC6.
Стоит ли говорить, что в моем случае оставался лишь сценарий B.
Однако история начиналась не с этого.
Заход на Winlator был лишь частью плавного, многолетнего прощупа телефона на предмет того, что он может запустить. В том, что он тянул основную линейку miHoYo, не было ничего удивительного, хотя желание тыкать в “геншин” выветрилось из-за нешуточных размеров игры с одной стороны и высоких температур с другой стороны (последнего я боялся больше всего). Тогда я обратился к эмуляторам.

За эмуляторы средней категории (к ним я относил Citra и Duckstation) я мог не переживать, их мой Infinix тянул без проблем. Куда больше меня интересовала категория потяжелее - эмуляторы консолей типа GameCube и PlayStation 2. В этом подсобили два проекта - мой старый знакомый Dolphin и NetherSX2, модификация очень хорошего мобильного эмулятора AetherSX2, автор которого забросил разработку из-за токсичного фандома.
Сначала прошел Luigi’s Mansion, затем последовали Shadow of the Colossus и Drakengard, за ними последовал Ace Combat Zero. Все эти игры, которые тормозили бы на моём стационарном компьютере еще 15 лет назад, буквально порхали у меня в руках.




Но, как это обычно бывает, мои аппетиты росли. На хайпе от перепрохождения первого Diablo через движок Devilution я начал искать сборки Diablo II под Android. Сборок я не нашел, зато я нашел упоминание о некоем эмуляторе Winlator, который… ну, это…
Winlator - это программа с открытым исходным кодом, предназначенная для запуска Windows-приложений (x86/x64) на смартфонах под управлением Android.
Первые попытки запуска не увенчались успехом. Сначала проблемы со скачкой с торрента, затем проблемы с распаковкой установочника. В конечном счете плюнул и скачал спецсборку для китайского эмулятора, основанного на той же кодовой базе. Далее все пошло по накатанной: сначала забег в первом акте Diablo II, затем попытки накатить The Sims 2, затем перепрохождение Undertale, а под конец - запуск Hollow Knight, в аккурат под выход Silksong!



Стоит отметить, не все было безупречно. В играх прослеживались тормоза, в отдельных случаях наблюдались вылеты, а наэкранный контроллер не мог похвастаться отзывчивостью своих коллег из консольных эмуляторов. Тем не менее, игры запускались без предварительных настроек, Bluetooth-контроллер, который у меня завалялся в шкафу, подхватывался без проблем. Winlator жрал довольно много заряда, что логично, но в целом работать с ним было относительно легко. Кинул установочник, поставил, запускаешь и играешь. Еще лучше, если выцарапаешь еще немного времени на настройку виртуального контроллера.
…Шли новогодние каникулы. Интерес к Winlator’у у меня слегка спал. Я уже качал PS2-версию Grand Theft Auto: Vice City и готовился вновь окунуться в злоключения Томми Версетти.
И тут я вспомнил про Infinity Blade.

Давным-давно на iOS существовала трилогия Infinity Blade. Это было нечто вроде дуэльного слэшера, где суровый рыцарь, уворачиваясь, блокируя и парируя, расправляется с другими рыцарями, гигантами и (полу)богами. Очевидно, я эту серию не застал, но я играл в схожую игру под названием Blood & Glory (гладиаторские бои с донатом). Серия имела большой успех на молодом мобильном рынке, однако в 2018 году игры изъяли из продажи, и всё, что осталось от саги о Клинке Бесконечности - это, соб-стно, Клинок Бесконечности в качестве лимитированной “кирки” из Fortnite…
На этом месте можно было бы опустить занавес с грустным “трунь”, однако в 2024 году один энтузиаст (или группа энтузиастов, х. его з.) выпустила полноценный порт первой части Infinity Blade на ПК. В свое время (еще задолго до погружения в Elden Ring) я успел немного потыкать в нее. Возможно, я буду повторяться (я знаю, я уже писал такой пост), но для третьей версии Unreal Engine игра смотрелась весьма и весьма неплохо. Портил всё только жесткий гринд под конец игры, хотя боёвка была довольно увлекательной (где еще встретишь замахи в 8 сторон с блоками и парированием… Ах да, Blood & Glory, точно.)
Но вернемся в 2026 год. Запуск удался не сразу: имели место вылеты при неизвестных мне тогда обстоятельствах + отсутствие внятного управления через тач. Последняя проблема была особенно критичной по объективным причинам: замахи можно было делать, лишь зажав экран одним пальцем и продвигая одновременно второй. Это было приемлемо для основной части игры, но при битве с Королем-Богом это было слишком медленно. Благо, порт отдельно вынес биндинги для замахов, так что набросать схему для тача не составило труда.

Но тут всплыла другая проблема: меня не покидало ощущение, что графика в игре была сильно засвечена, она выглядела не так, как я помню с роликов YouTube и геймплея на ПК. Кроме того, я зашел в тупик, пытаясь прогнать вторую часть Infinity Blade. Вот тогда я и залез в настройки и стал перебирать различные комбинации обёрток, драйверов, версий внутренних эмуляторов… А затем я вышел на целый репозиторий материалов по Winlator’у, где описывались все возможные аддоны и форки программы.
Нечего и говорить, что я оказался на грани помешательства. Все каникулы я то и дело тасовал форки, пытаясь нащупать именно ту самую конфигурацию, на которой игра уж точно должна пойти. Я шерстил репы GitHub, форумы 4PDA… искал конфиги под ГПУ Mali, попутно проклиная Snapdragon за то, что он заграбастал все плюшки.
Не знаю, какими путями, но я вышел на GameNative - форк Pluvia, легковесного клиента Steam, позволяющего загружать игры со своего аккаунта и запускать их через всё тот же Winlator. Но я пока не спешил совать свой аккаунт, я всё так же продолжал пытаться завести Infinity Blade. Вот тут я и нашел то, что я искал: рабочие свайпы через тач и внезапно пофикшенный графон. Вторая часть так и не запустилась.



Вдоволь наигравшись с айфонным махачем, я решил провернуть одну идею, которая не давала мне покоя - запустить на телефоне оригинальный Dark Souls (до идеи накатить Elden Ring, слава богу, пока не дошло). Надо сказать, напсиховался я знатно. Висы, вылеты, окна с ошибками, одни обертки не выдавали ничего, другие обертки запускали игру ОЧЕНЬ медленно, третьи запускали игру с дикими артефактами, по сравнению с которыми vertex explosion в эмулируемом Bloodborne - это художественный прием.


Была пара моментов, когда я вроде бы нащупал комбинацию настроек, при которых игра вроде как запускается, и вроде как нормально… Но тут уже начинают всплывать косяки клиента, связанные с переключением контейнеров и перетаскиванием сейв-файлов между телефоном и серверами. В лучшем случае игра не запускалась, пока я делал запрос на верификацию файлов (которая еще и тупит при подключении через VPN), в худшем случае игра гробила мои старые сейвы. Это произошло в версии Prepare to Die Edition, это повторилось в Remastered. Крч гвря, дотрахался до Save data was corrupted. Прямо как в кейсе с Elden Ring (про него я обязательно здесь напишу).
Окончательно смирившись с тем, что моя “трубка” не предназначена для больших игр, я временно переключился на “легкие” игры типа Baba is You, Balatro и Rhythm Doctor. Запустились они также не без дополнительных настроек, но в целом работали без проблем. Balatro отлично ужился с “телефонным” разрешением экрана. Rhythm Doctor поначалу расстроил упавшим окном в начале уровня 2-X (тот самый, где окна летают под дабстеп), однако разработчики решили проблему максимально элегантно, сделав симуляцию окон на движке игры. Самое смешное - облачные сейвы подхватывались без проблем и счетчик часов в игре наматывался как положено. При выгрузке Steam даже назвал мой телефон ПК.
Как г-рится, it’s not much, but it’s honest work.



Все еще не до конца отошедший от бесплодных попыток завести Dark Souls, я ради прикола поставил Dark Souls II: Scholar of the First Sin. Повлияли разговоры о том, что движок второй игры намного стабильнее движков первой. На успех с ванильными настройками я не рассчитывал. И что бы вы думали?



Я инстинктивно ждал подвоха. Ожидал, что игра где-нибудь обязательно жестко упадёт, и я не смогу даже выйти из стартовой локации. Но нет, дошел до деревни, дошел до первой зоны, успел убить кучу народа, успел умереть сам… пару раз крашнулся, но авто-сейвинг выручает.
И самое смешное - она работает на весьма приличной (для телефона) скорости.
В конечном счете я вышел на ту самую комбинацию параметров (Bionic + Wrapper + DXVK 1.11.0-sarek + Proton 9.0-arm64ec), в которой у меня запустилась и первая Dark Souls, причем обе версии. Но вышел забавный казус: игра работала на 15 FPS, однако в PtDE 15/30 были более комфортными, чем 15/60 от Remastered.
И вот я качаю 3 Гб, и вот я опять бегаю по Лордрану, выкашивая обезумевших мертвецов попутно подбирая конфигурацию под тач, чтобы все жизненно важные функции всегда были под рукой (точнее под пальцем). Бегаю и продолжаю восхищаться тому, насколько продвинулась мобильная техника и насколько расширяется потенциальная библиотека для мобильного гейминга, который ассоциировался разве что с match-3 и “геншином”.
Воистину, сила Солнца сосредоточилась прямо в моей ладони.
Praise the Sun, motherfuckers.

…И это я еще эмулятор Switch не поднимал, лол.
А, нет, стоп.
