Поиск на сайте: Расширенный поиск


Новые программы oszone.net Читать ленту новостей RSS
CheckBootSpeed - это диагностический пакет на основе скриптов PowerShell, создающий отчет о скорости загрузки Windows 7 ...
Вы когда-нибудь хотели создать установочный диск Windows, который бы автоматически установил систему, не задавая вопросо...
Если после установки Windows XP у вас перестала загружаться Windows Vista или Windows 7, вам необходимо восстановить заг...
Программа подготовки документов и ведения учетных и отчетных данных по командировкам. Используются формы, утвержденные п...
Red Button – это мощная утилита для оптимизации и очистки всех актуальных клиентских версий операционной системы Windows...
OSzone.net Видео Unix Разное Сборка Wine[X] для игровых задач RSS

Сборка Wine[X] для игровых задач

Текущий рейтинг: 5 (проголосовало 2)
 Посетителей: 1846 | Просмотров: 2235 (сегодня 0)  Шрифт: - +
Поскольку смотрю, что вопрос подымается довольно часто, решил вставить свои пару центов.
Из переписки:

Из письма Михаила Шигорина:

On Sun, Nov 17, 2002 at 09:09:13AM +0300, Hihin Ruslan wrote:
> Хотел-бы разместить у себя на сайте (www.ruslandh.narod.ru)
> Ваше HOWTO по Wine(x). Прошу Вашего согласия (так-как не ясно
> на каких условиях (GNU/ или авторская работа) Вы его написали).

Это не я писал, а Сережа Рябчун -- его адрес вроде в документе есть.  Насколько я его понимаю -- против никто не будет, разве что автор считает, что документ сильно устарел -- но добраться обновить несколько затруднительно.

> По-моему это единственное Howto на русском языке по Wine(x)

Кажется, да. В любом случае рядом осмысленно дать ссылку на http://osdn.org.ua/winex -- туда Сережа время от времени забрасывает свои сборки "под игрушки".  А еще лучше -- и зеркалить, потому как из России оттуда тянуть может быть не слишком быстро.

А так -- всегда рады сотрудничать :-)

PS: да -- еще есть рассылка games@linux.kiev.ua, посвященная игрушкам на линуксе (в т.ч. и тема winex там регулярно звучит); подписка на нее начинается пустым письмом на games-subscribe@linux.kiev.ua -- эту информацию, как (думаю) релевантную, можно туда же. Россиян в games@ хватает :-)

Из письма Сережи Рябчуна:

ЗЫ. Вышел winex-2.2.1, соберу, заброшу туда же.

Какой linux ставить?

Здесь я не советчик. Я предпочитаю RedHat + часть пакетов с ALTlinux.

Сервер.

Нужен ли сервер или можно обойтись одноранговой сеткой? Ну если у вас так много денег, что вы в состоянии нанять человека, который будет строить линух на 8-20 тачек, то зачем вам линух? Купите себе win98 и закройте тему. Вобщем вопрос не нужен ли сервер, а какой он нужен.

В задачи сервера входит:

  1. раздать /home и /usr (NFS)
    • вы же не хотите администрить каждую геймерскую машину отдельно
  2. раздать /mnt/floppy и /mnt/cdrom (samba)
    • сомневаюсь, что каждая геймерская машина имеет вытягаемые дивайсы;
    • почему samba? а я не знаю нормального способа размонтировать cdrom, смонтированный по NFS под linux
  3. раздать /где-там-стоят-вин-геймы (samba)
    • почему samba, а не NFS? да потому, что так лучше, к тому же samba мы уже прикрутили floppy и cdrom шарить.
    • почему они вообще на сети?
      во-первых, см.п.1 ;-)
      во-вторых, вы деньги экономите или где? Поставить SeriousSam или Half-Life на каждую машину, значит купить лицензию на каждую машину. вы когда-нибудь видели, что-бы в SeriousSam играла вся игротека?
    • а как wine отнесется к тому, что игра проставлена на сети? а кто ж ему скажет, что это network? "Type" = "hd", "Filesystem" = "win95" ;-)
    • а тормозить не будет? нет, больше чем wine сейчас тормозит, его способна затормозить только сеть на коаксиле.
  4. раздать /где-там-стоят-геймы (NFS)
    • а почему здесь NFS, а не samba?
      эти игры ожидают иметь дело с правильной файлсистем, а не с тем, что им самба изображает. могут быть накладки.
  5. запустить всякие разные геймерские выделенные сервера
  6. если вы инетом торгуете, то имеет смысл поставить squid
  7. ну и, если вы сподвигнетесь ещё и на X-терминалы для инет/офис юзеров, то сервер вам понадобится для KDE/Gnome/OpenOffice/чего-ещё пускать
  8. (-20) фонтсервер, печать, etc.

Думайте, считайте. Для 1-4 за глаза хватит PII300/64M, а вот уже 5-7 потребует чего-то большего. Особенно память.

Геймерские машины.

К сожалению, на сегодня для линукса есть ровно одна фирма делающая видеокарточки с нормальным opengl и называется nNvidia. С радионом8500 я поигрался два часа, но хоть какого-то 3D там не обнаружил. (прим. ред.: пока или максимум 7200, или взять R-DDR и все -- 7500 сотоварищи должны быть в XF86 4.2) Память, ну CounterStrike отъедает 96M+, так что 128M минимум. Процессор, вообще-то wine/winex в 2D редкий тормоз*, но как ни странно, часть глюков на Duron800+ исчезают, хотя не странно, если проследить чего там вызывается.

*поправка - я еще не проверил, но судя по коду в последних winex сильно поднята скорость в 2D.

HDD от 1Gb, больше не нужно, можете продать свои 20-40Gb, накупить на металлоломе 4Gb, разницы как раз на сервер хватит ;-)

Получаем D800+/GF2MX+/128M+/1Gb+

Wine/WineX

Как _ЭТО_ собрать ручками?

autoconf
CFLAGS="-mcpu=i386 -march=i686 -O2" LDFLAGS="-s" \
./configure \
--prefix=/usr \
--with-x \
--enable-dll \
--disable-debug \
--disable-trace \
--enable-opengl \
--enable-mesaos

make
(make -k programs)
make install

Заметьте, что c gcc2.96 -mcpu и -march необходимы. Без них на четырёх _одинаковых_ машинах сделанных через dump/restore я получил совершенно разные результаты:

  1. coredump gcc на сборке dlls/ntdll
  2. coredump wine при первой закачке шрифтов
  3. неправильная работа мыши в некоторых играх
  4. правильная, imho, сборка

gcc2.95 собирает правильно, gcc3 бросает кору с простынёй кода, на котором сдох. gcc2.96-81 из RH71 нормально собирает с -O3, gcc2.96-98 из RH72 с -O3 собирает, но wine бросает кору на старте, с -O2 всё нормально. Короче, 2.96 - та ещё песня.

Потом ещё нужно сделать programs/regapi/regapi setValue < windefault.reg для получения правильного регистри. Кстати, если у вас свежепроставленный wine вывалится с матом на запускать нужно с опцией -desktop, то либо он не находит правильной регистри, либо winedefault.reg поменялся, те необходимо regapi запустить снова.

Всё, можете пробовать.

CounterStrike тормозит безбожно.

Ну с меню пока ничего не поделать. Хорошо ещё, что в cvs глюк с запуском сервера поправлен, правда за счет ещё хужей отрисовки меню, чёрт с ней, с отрисовкой, зато консоль работает, как надо. А opengl сейчас поправим. Всё, что нам понадобится, описано в первых 30 строках dlls/opengl32/make_opengl . Если у вас winex уже слит, то вам припёрло ;-) Если нет, то лучше слейте, всё равно вам понадобятся несколько файликов и легче залить winex целиком, чем кликать мышом по oss.sgi.com несколько раз на один файл. В winex всё это лежит в dlls/opengl32/specs. В wine ложим туда же. Прикладываем следующий патч, можно и ручками

--- wine/dlls/opengl32/make_opengl	Wed Aug 29 22:37:07 2001
+++ wine-ogl/dlls/opengl32/make_opengl Thu Nov 8 12:54:47 2001
@@ -43,11 +43,11 @@
$ext_file = "opengl_ext.c";

# Set to 0 for removing the ENTER / LEAVE GL calls
-$gen_thread_safe = 1;
+$gen_thread_safe = 0;
# Prefix used for the local variables
-$ext_prefix = "func_";
+$ext_prefix = "";
# If set to 1, generate TRACEs for each OpenGL function
-$gen_traces = 1;
+$gen_traces = 0;
и
(cd dlls/opengl32; ./make_opengl specs 1.2)
make install

О, теперь мы поехали быстрее. На нынешних билдах отставание от нейтива ~20%, а на билдах конца августа-начала сентября около 10%. Можете проверить с wine-20010824. Там windows.c еще лежит в x11drv, теперь перехала в wineserver. Вот и получили дополнительный тормоз. В высоких разрешениях отставание уходит в ноль, здесь уже карта тормозит.

Если судить по тому, что build, который раздается transgaming.com сабскрайберам бегает шибко быстрее, чем тот, что получается с cvs через configure;make, то билдят они его именно таким образом.

Стало лучше, но всё равно тормозит безбожно.

Мнээ, а выгрузите-ка саундовые модули и зпретите звук. Полегчало? Значит вам припёрло. Вам предстоят поиски правильного саундового модуля. В нескольких случаях мне помогла ALSA 0.9, в одном замена звуковой карты.

SeriousSam не едет.

И не поедет, пока не приложите следующий патчик, kgm, с августа никак не замылю его в wine-devel, руки не доходят.

--- wine/graphics/x11drv/opengl.c	Wed Aug 29 22:37:08 2001
+++ wine-ogl/graphics/x11drv/opengl.c Thu Nov 8 12:56:15 2001
@@ -200,7 +200,7 @@
ppfd->nVersion = 1;

/* These flags are always the same... */
- ppfd->dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_GENERIC_ACCELERATED;
+ ppfd->dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_SWAP_COPY;
/* Now the flags extraced from the Visual */
ENTER_GL();

Это с winex, в wine на две строки выше.

Что ставить wine или winex.

Ну, во-первых, winex две ветки. Одна доступна в cvs, другая доступна только в собранном виде. Пока разница между ними по словам Transgaming.com только в наличии/отсутствии SafeDisc и SecuRom, но если судить по вялой активности в доступном cvs, то разницы там больше, хотя может и ошибаюсь *.

*поправка - это они в другое здание переезжали.

Какого-нибудь кошерного снапшота не было, нет и не будет. Это даже не бета, это вечная альфа. Что-то правится, что-то ламается. Если сейчас поправили консоль в CounterStrike, то заламали ONI. Поправят ONI, перестанет ездить FAKK2 или что-то другое. Это вечная песня. Хотите, что бы оно у вас хоть как-то работало держите их все, вернее, все под которыми что-то работает лучше. Те ставить куда-нибудь в

	/usr/local/wine${DATE} и /usr/local/winex${DATE}
а запускать через /usr/local/bin/wine${DATE} и /usr/local/bin/winex${DATE} Надеюсь, что такое PATH и LD_LIBRARY_PATH известно

Вообщем-то я соответствующие wine.spec и winex.spec сочинил. Может завтра до ума доведу.

Как пускать геймы.

Ессесно, на другом сервере. Причин несколько.

  1. драйвера от nvidia + wine - сладкая парочка. Лично у меня такого ни разу не получалось (докаркался :), уже получилось), но видел неоднократно, при том что в клубах я появляюсь крайне редко. Вобщем wine сносит X или X сносит wine, клавиатура и мыша блокируются. Остается или зайти по сетке и сделать ребут или нажать на ресет. Причём надзиратель говорит, что есть избранные кадры - стоит такому избранному сесть погамить "и всё у нас пойдет через жопу" (c) ДМБ, дикий прапор. Так и вспомнишь про стелянный глаз. Но если запущено на другом сервере, то после сноса обычно таки возвращается на первый X. Кстати, поэтому самое первое, что должно быть поставлено на геймерскую машину - acpid. Да и ресет отстегнуть от мамы желательно ;-)
  2. wm может делать с мышом|кибордом что-то совершенно непотребное. Не удивляйтесь, если у вас Q3 перестала на клавиши реагировать. очень может быть, что под Q3 всплыло меню или еще чего. Пойдут вопросы типа http://www.transgaming.com/showthread.php?msg=1869&forum=7&thread=1869
  3. у вас двухкнопочные мыши и включена эмуляция третьей кнопки, не удивляйтесь, что рокетджамп на мыше не выходит.
  4. StarCraft и иже с ним знает только 640x480. А хочется в фулскрине и не в ублюдочном, когда физическое и виртуальное разрешение не совпадает, а нормально.

    Поэтому пускаем:

       xinit /usr/local/bin/STARCRAFT -- :1 -layout gamer640x16

    Правильные layout-ы напишете сами.

    А что нужно написать в /usr/local/bin/STARTCRAFT

    #!/bin/bash

    export WINEPREFIX=/var/wine/apps/starcraft

    cd /var/wine/disks/g/starcraft
    wine20010824 game

    Как ставить геймы.

    Самый оптимальный путь - ставить под windows с diff regbefore regafter. Можно и из под wine, но здесь как получится. Игры требуют cdrom. Во-первых, не крекайте игру. У нас и так куча проблем, а тут ещё и непонятно wine глючит или крякалка так крякнула. Во-вторых, неизвестно как посмотрит на крякнутую игру "Общество защиты Билла Гейтса от голодной смерти". Так что поделим геймы на три группы:

    1. не требуют вообще - с этими нет никаких проблем
    2. требуют наличие файлика на cdrom - тоже понятно, "Path" = "/куда-надо"
    3. требуют наличие cdrom - для wine /dev/loop выглядит также как и /dev/cdrom так, что снимаете образ, маунтите его и "Device" = "/dev/loop" Если гейма может частично ставиться, то для экономии места так её и ставить. Для некоторых достаточно снять первые несколько мегабайт образа.

    Какой WM пользовать.

    А какой угодно. Но у нашего юзера gamer прописано icewm.

Автор: Serge Ryabchun  •  Опубликована: 03.03.2005
Нашли ошибку в тексте? Сообщите о ней автору: выделите мышкой и нажмите CTRL + ENTER
Теги:  


Оценить статью:
Вверх
Комментарии посетителей
Комментарии отключены. С вопросами по статьям обращайтесь в форум.