Найти тему
Games4Linux

Тим Суини высказался по поводу поддержки Fortnite в Linux | EAC

В последнее время одной из больших тем обсуждения в игровой сфере Linux стало заявление Тима Суини о переносе Fortnite на Steam Deck , где Суини утверждает, что Linux будет слишком сложной целью, а рынок недостаточно велик, чтобы гарантировать количество ресурсов, чтобы Fortnite появился на платформе.

Суть проблемы, с точки зрения Суини, заключается в том, что запустить Easy Anti-Cheat со всеми его возможностями в Steam Deck (и, следовательно, в Linux) будет чрезвычайно сложно. Он утверждает, что для игры такого размера, как Fortnite, это откроет шлюзы для значительного наплыва мошенников.

Были некоторые ответы на это со стороны сообщества Linux, причем некоторые обвиняли Суини в преувеличении сложности такого переноса или в том, что его заявления противоречивы, потому что он одновременно считает, что рынок Linux слишком мал, чтобы быть стоящим, но также может предоставить способ слишком многим мошенникам. Остановимся на некоторых из этих аспектов чуть позже, а пока давайте сосредоточимся на основном техническом блокировщике — Easy Anti-Cheat.

Easy Anti-Cheat, или EAC, — это решение для защиты от читов, которое, по-видимому, поставляется в нескольких конфигурациях. Мы знаем, что его можно запустить в конфигурации, совместимой с Linux/Proton, по-видимому, с помощью относительно простого переключателя. Однако этот режим работы, по-видимому, является конфигурацией со сравнительно высоким уровнем доверия, в которой активна только часть защиты EAC от несанкционированного доступа. Это может предотвратить некоторые читы, но не обнаружить другие, что может быть вполне разумным для игр, где количество читеров и потенциальных читеров довольно мало или другие системы дополняют античитерское решение. Существует множество игр, даже некоторые популярные free-to-play игры, которые в лучшем случае имеют такой уровень защиты от несанкционированного доступа, и в них, похоже, нет серьезной эпидемии читерства, поэтому очевидно, что во многих случаях этого должно быть достаточно.

EAC также содержит компонент уровня ядра, который в Windows устанавливается как драйвер ядра. Это позволяет коду EAC работать на очень привилегированном уровне и проверять практически все без исключения части системы для обнаружения несанкционированного доступа. Это обеспечивает очень широкий уровень мониторинга, который также сложнее обойти. Судя по комментариям Суини, это режим работы, используемый Fortnite. Кроме того, это режим работы, технически несовместимый с работой Linux.

В Linux стандартным способом доставки драйверов является отправка драйвера в дерево исходного кода ядра, что, естественно, требует, чтобы драйвер был с открытым исходным кодом. Большинство драйверов поставляются таким образом, когда драйвер тесно интегрируется в ядро, а драйверы обновляются при обновлении ядра. Конечно, из этого правила есть несколько заметных исключений, крупнейшим из которых является драйвер Nvidia. Вместо этого драйвер Nvidia загружается как отдельный модуль ядра, что позволяет Nvidia скрывать свой исходный код, но также позволяет обновлять драйвер отдельно от ядра. Таким образом, EAC наверняка может использовать этот подход.

Подход с отдельным модулем ядра сопряжен с некоторыми ошибками. Во-первых, ядро ​​лицензируется по GPLv2, и многие части ядра требуют, чтобы вызывающий код также был GPLv2 из-за «вирусного» качества GPL. Это означает, что с юридической точки зрения, если Epic превратит EAC в модуль ядра и начнет копаться в API ядра, им придется сделать EAC с открытым исходным кодом, иначе они окажутся в серой зоне. Очевидно, что первый подход невозможен из-за их бизнес-модели, а второй, по крайней мере, выглядит не очень хорошо.

Еще одна проблема с отдельными модулями ядра заключается в том, что ядро ​​Linux гарантирует только стабильный пользовательский интерфейс. Это означает, что внутри ядра разрешено изменять почти все, что угодно, пока программы пользовательского уровня продолжают функционировать. Это также является причиной того, что иногда драйвер Nvidia перестает работать при обновлении с одного ядра на другое без установки актуального драйвера Nvidia. Итак, когда Суини жалуется на множество конфигураций ядра, он не ошибается. EAC должен будет поддерживать прокладку совместимости, аналогичную той, что используется в драйвере Nvidia, которая гарантирует, что модуль ядра EAC работает с каждой версией ядра. Каждый раз, когда ядро ​​​​обновляется, инженер EAC должен будет просматривать изменения и каждый раз обновлять прокладку совместимости.

Теоретически вы можете решить эту проблему, нацелившись только на Steam Deck и его SteamOS. Это даст вам целевую версию ядра, хотя Epic нужно будет договориться с Valve, чтобы убедиться, что их драйвер каким-то образом поставляется со SteamOS.

Но на этом проблемы не заканчиваются. Поскольку Linux является полностью открытой платформой, технически нет ничего, что помешало бы решительному мошеннику взломать исходный код Linux и внести некоторые тактические изменения в поведение ядра, собрать ядро, а затем сделать модуль ядра EAC слепым. В Windows разработчики EAC могут предположить, что черный ящик, которым является ядро ​​NT, по крайней мере несколько трудно модифицировать пользователями. Это означает, что в пространстве ядра они могут обеспечить некоторый уровень безопасности за счет неизвестности. В Linux это предположение не выполняется. Единственный способ для Epic решить эту проблему — договориться с Valve о блокировке Steam Deck, чего Valve уже решила не делать.

Итак, с точки зрения EAC, нельзя полностью доверять платформе Linux, что совершенно справедливо, поскольку с точки зрения пользователя EAC никогда нельзя полностью доверять.

Но, конечно же, Epic все еще может каким-то образом перенести Fortnite в Steam Deck, верно? Конечно, они могли бы выпустить версию Fortnite без компонента уровня ядра, что подводит нас к вопросу о доле рынка и жизнеспособности мошенничества. Суини утверждает, что рынок Linux слишком мал, что поначалу звучит немного странно, потому что затем он начинает беспокоиться о большом количестве мошенников. Суть в том, что небольшой рынок Linux не обязательно гарантирует малое количество мошенников. Если выяснится, что определенные читы возможны через версию Fortnite для Linux, это привлечет некоторых мошенников к использованию платформы для обхода EAC. Это будут не все мошенники, многие случайные мошенники, вероятно, не стали бы изучать Linux, чтобы обманывать в видеоиграх, но, несомненно, группа мошенников воспользуется возможностью. Таким образом, в Fortnite будет наблюдаться некоторое увеличение читерства, но без надежных данных трудно определить, насколько большим будет этот эффект. Тем не менее, учитывая популярность и бесплатный характер Fortnite, вполне может быть, что это будет достаточно привлекательная цель для атаки мошенников, даже если первоначальные инвестиции будут немного выше. С другой стороны, производители читов, вероятно, в конечном итоге найдут способы упаковать свои предложения в достаточно доступном формате, таком как USB-накопители для загрузки читов или предварительно настроенные образы виртуальных машин.

Были предложены некоторые решения этой проблемы. Например, они могут изолировать пользователей Steam Deck/Linux таким образом, чтобы они никогда не вступали в контакт с остальной базой игроков. Это будет содержать мошенничество, но это также жесткая мера, которая, вероятно, будет непопулярна. Это также потребует некоторого объема работы, и я думаю, что со стороны Epic справедливо сбрасывать со счетов варианты, которые требуют дополнительной работы над ними.

Итак, каково решение проблемы?  Античит на стороне клиента фундаментально ограничен, и внедрение его в ядро ​​— это бинт, который сопряжен с чрезмерными затратами и просто несовместим с платформой Linux. Так что, пока Epic настаивает на сохранении своего нынешнего античитерского подхода к Fortnite, врятли она появится на Linux.

И это не значит, что Тим Суини не прав или лжет о трудностях адаптации этого подхода к Linux. Это просто означает, что в будущем потребуется новый или другой подход.

Перевод статьи.