середу, 29 грудня 2010 р.

Игры в Linux

Людей, переходящих с MS Windows на Linux, интересует вопрос об играх. Можно ли играть в знакомые игры из мира MS Windows в Linux или только в родные для Linux игры? Вот и давайте разберёмся ...

Оглавление
Запуск linux версии игры в Linux
    Установка игры из репозитория
    Установка игры из пакета
    Установка игры из исходников
    Установка игры через Desura
Запуск windows версии игры в Linux
    Запуск windows версии игры с вызовом OpenGL
    Запуск windows версии игры с вызовом DirectX
Запуск DOS версии игры в Linux

Запуск linux версии игры в Linux

Это как вы поняли это самый простой вариант и самый желанный. «Родное в родном», что может быть лучше и проще.

Установка игры из репозитория

Лучше хорошего, может быть только отличное. Если игра есть в репозитории, то самое лучшее будет установить игру через репозиторий. Например, в Ubuntu Linux есть такие игры как OpenTTD и QuakeArena и другие игры.


Linux версия OpenTTD

Оппоненты возразят, это «мелочь», там нет «мощных» игр. Но могу возразить так, у той же Canonical есть партнерская программа и если у вас есть репозиторий
deb archive.canonical.com/ubuntu ваш_релиз partner,
то возможна ситуация, когда вы сможете получить игру через данный репозиторий и, получив после оплаты игры ключ к ней, установить ключ в нужной директории. Это не такая уж и фантастическая ситуация. Так же в Интернете могут быть доступны репозитории с нужной игрой, стоит только поискать по ключевым словам типа «repository НУЖНАЯ_ИГРА». Установленная игра через репозиторий, сможет в последствии обновляться, что весьма удобно. То есть совет первый: «подключить и поискать в репозиториях»
Если после поисков репозиториев с нужной игрой не увенчались успехом, то переходим к ...

Установка игры из пакета

В принципе неплохой вариант, стоит найти нужный пакет с игрой и установить. Обычно легко отыскать через поисковые системы с запросом «deb НУЖНАЯ_ИГРА», для поиска deb пакета с игрой для дистрибутивов Linux, производных от Debian Linux, таких как Ubuntu. Если у вас пакетная система на базе RPM, тогда ищете по фразе «rpm НУЖНАЯ_ИГРА».
В помощь вам несколько ссылок на ресурсы в Интернете, которые помогут достать нужный пакет с игрой:

  • linuxgames.ru/
  • ualinux.com/index.php/ubuntu-gamepack На двух DVD дисках собраны 160 самых ярких игр и развлекательных программ. Установка любой из них проходит путем всего одного клика кнопки "мышки". Для обладателей 64-битных систем, придется установить 32-битные игры на DVD через терминал с помощью dpkg -i --force-architecture имя_пакета.deb
  • happypenguin.org
  • libregamewiki.org/
  • lg.ip4.ru/
  • whylinuxisbetter.net/

Что делать если пакет с игрой есть, но не для нашей системы? Рассмотрим вариант, что после поисков вы нашли только rpm пакет, а у вас Ubuntu Linux и нужен deb пакет. Программа alien может сделать из rpm пакета deb пакет и наоборот. Установите программу alien через Синаптик или в терминале sudo apt-get install alien. Теперь вы можете с конвертировать из rpm в deb следующим способом alien --to-deb игра.rpm. Когда у вас будет deb пакет с игрой вы сможете установить корректно его в вашу систему, в дальнейшем сможете корректно удалить игру из системы и все это благодаря пакетной системе. Но что если не нашли даже пакета, а нашли не понятный tar.gz и вам сказали страшные слова — это исходники!
Как говорится родное, но не в удобном виде, что же делать? Будем ставить правильно из исходников.

Установка игры из исходников

Первый совет, забудьте о ./configure && make install. У вас пакетная система в вашей Ubuntu Linux и ей будет неприятно, когда вы будете что либо ставить и удалять в обход её, тем более это может быть чревато поломкой системы. Правильно будет поступить так:
1. Поставьте пакет auto-apt через Синаптик или в терминале sudo apt-get install auto-apt
2. Сделайте в терминале однократно sudo auto-apt update
3. Распакуйте ваш архив исходников игры tar.gz любым удобным для вас способом. Можно в терминале перейти в директорию с архивом cd /путь/к/архиву и скомандовать tar zxvf игра.tar.gz
4. Перейдите в терминале в только что распакованную папку с исходником игры и командуйте auto-apt -y run ./configure. Программа auto-apt будет стараться на лету до устанавливать пакеты, содержащие нужные программе заголовочные файлы и библиотеки. Вам меньше придется пытать людей в Интернете по вопросам: что такое «stdio.h NOT
FOUND» и с чем его едят?
5. Когда auto-apt закончит, вам остается скомандовать в этой же директории checkinstall -D и получить готовый deb пакет, который вы корректно установите в свою систему удобным для вас способом.

Вам пришлось проделать некоторые телодвижения для того, чтобы из исходников получить deb пакет, поэтому большая просьба поделится им с остальным миром, выложите его на популярном доступном ресурсе. Сегодня - вы помогли, завтра - вам помогут. Еще раз напомню, забудьте о ./configure && make install в системах типа Ubuntu Linux с пакетной системой установки программ.

Установка игры через Desura

Desura — проприетарная (в дальнейшем планируют открыть под GPL) платформа распространения цифрового контента, аналог Valve Steam, специализирующаяся на играх от небольших групп индивидуальных разработчиков. На сегодняшний день Desura предлагает Linux-пользователям более 65 компьютерных игр. Среди игр есть как платные, так и бесплатные и общее количество игр будет увеличиваться.

Для установки клиента нужно скачать архив с desura.com и распаковать в удобную папку. Запустить от обычной учётной записи файл desura и обновиться через Интернет.


Обновление Desura

Запустить обновлённый клиент Desura и с помощью кнопки New Account создать учётную запись.



Регистрация в Desura

В Settings смените язык на Русский и заполните желаемые поля и установите свой аватар. Найдите понравившуюся игру и установите кнопкой Install Game.

Запуск windows версии игры в Linux

Бывает ситуация когда линукс версию игры вы на текущую дату не нашли и тогда вам придется запускать игру через WINE. Многие не понимают «принцип действия» WINE и следовательно выводят ошибочные суждения. Давайте отделим мух от котлет.
Название Wine является рекурсивным акронимом (это такая компьютерная шутка вида "рекурсия" - смотри подробнее "рекурсия") и расшифровывается «Wine Is Not an Emulator» — «Wine — не эмулятор». Имеется в виду, что Wine не является эмулятором компьютера, как, например, qemu или VirtualBox, Wine — это альтернативная реализация Windows API. Wine воспринимает системные вызовы Windows-приложений к библиотекам операционной системы и подменяет их своими. Таким образом, эмуляции процессора, аналогично другим эмуляторам типа VMware и QEMU, не происходит, и приложения могут выполняться в Wine почти так же быстро, как и в «родной» операционной системе MS Windows. Для своей работы Wine не требует наличия установленной ОС Windows, хотя и может использовать её библиотеки.

И что же все выше описанное значит?
1. А то, что в мире MS Windows программы если хотят что либо сделать, то вызывают функции WinAPI (application programming interfaces — интерфейс программирования приложений). WINE налету подменяет вызываемую функцию и выполняет своей функцией.
2. WINE ваше аппаратное обеспечение не заменяет ничем. Поэтому те кто считает, что купленная мощная видеокарта только в MS Windows будет отрабатывать свои вложенные деньги ошибаются! Если игра запускается и работает через WINE, то вы получите сглаженную трилинейной фильтрацией картинку так же как и в винде.

В мире игростроения есть две популярные платформы на которых строятся современные игры — это OpenGL и Microsoft DirectX. Запуская игру через WINE в Linux, многие и не знают, что большая часть игры использует игровые API OpenGL или Microsoft DirectX, а не саму винду так таковую.

Запуск windows версии игры с вызовом OpenGL

OpenGL (Open Graphics Library — открытая графическая библиотека) — спецификация, определяющая независимый от языка программирования кросс-платформенный программный интерфейс для написания приложений, использующих двумерную и трёхмерную компьютерную графику.


Виндовая OpenGL версия игры WarCraft 3

Если виндовая игра написана с использованием для игровой логики OpenGL, то это лучший вариант из той плохой ситуации, что мы запускаем виндовую версию игры в Linux. А чем же линуксоиду лучше от OpenGL? OpenGL кроссплатформенен и начинал свое рождение не в мире MS Windows. Чтобы было окончательно понятно, взгляните на схему, поясняющая как происходят вызовы виндовой версии игры в MS Windows
виндовая версия игры - Windows - OpenGL - драйвер видеокарты

а теперь тоже самое, но в Linux
виндовая версия игры - WINE - OpenGL - драйвер видеокарты

как видно, во всей схеме виндовой остается только игра, ну это и понятно. Остальная часть в виде WINE, OpenGL, драйвер видеокарты есть в Linux в родной линуксячьей форме. В любой современной игре вызовов именно к WinAPI намного меньше, чем к игровой платформе в данном случае к OpenGL.

Выводы из этой ситуации следующие:
1. Запуская виндовую игру через WINE, больше работает не сколько сам WINE, сколько linux версия OpenGL в вашей системе и это радует!
2. Из пункта 1 вытекает тот факт, что перенести OpenGL игру из MS Windows в Linux относительно просто, так как основная логика игры в OpenGL, который кроссплатформенен и есть в Linux, остается переписать относительно малую часть вызовов WinAPI и всё. Это подтверждается практикой, достаточно вспомнить фирму idSoftware и серию игр Quake.

Запуск windows версии игры с вызовом DirectX

DirectX — это программа API-функций, разработанных для решения задач, связанных с игровым видеопрограммированием под Microsoft Windows. Самый худший для нас вариант, так как WINE не подменяет DirectX, а качественно работая вместо MS Windows, обрабатывает DirectX как и любое другое виндовое приложение.
Чтобы было окончательно понятно, взгляните на схему, поясняющая как происходят вызовы виндовой версии игры в MS Windows
виндовая версия игры - Windows - DirectX - драйвер видеокарты

а теперь тоже самое, но в Linux
виндовая версия игры - WINE - DirectX - драйвер видеокарты


Виндовая DirectX версия игры Dungeon Siege 2

Выводы из этой ситуации следующие:
1. DirectX не эмулируется WINE'ом. Вы устанавливаете родной DirectX и WINE будет вызывать его для работы игрового приложения.
2. Переписать игру под Linux написанную под MS Windows и Microsoft DirectX крайне тяжело и проще «с нуля» написать аналог.

Запуск DOS версии игры в Linux

Если вы хотите поиграть в старую DOS игрушку, то лучше будет установить эмулятор DOSBox и запускать игры через него.
Полный список поддерживаемых DOS игр можно получить на сайте dosbox.com/
Основная ошибка пользователей - использовать WINE для запуска DOS игр. WINE подменяет WinAPI функции, то есть работает аналогом MS Windows, а DOS - это другая операционная система от фирмы MicroSoft. В пакете WINE есть программа wineconsole, которая поможет с запуском виндовых консольных программ, но не путайте консоль винды с DOS.

Вообщем, алгоритм прост:
1) узнаёте сначала виндовая или DOSовая игра
2) Если DOS, то используйте DOSBox
3) Если MS Windows игра использует OpenGL или DirectX, то применяете WINE
4) Маловероятная ситуация, но, если вам требуется запустить консольную виндовую программу, то используйте wineconsole. Игр в виндовой консоли мало, если они вообще есть и этот случай крайне маловероятен. То есть через wineconsole чаще запускают какие-нибудь древние финансовые программы, чем игры.

Дополнительные материалы:
Репозитории Ubuntu.
Установка программ в Ubuntu.
Запуск игр в префиксах WINE.

Немає коментарів:

Дописати коментар

HyperComments for Blogger

comments powered by HyperComments