Перейти к содержанию
Asterios

Запуск клиента Asterios в Ubuntu|Debian


Uwannadie

Рекомендуемые сообщения

excl.gifв связи с обновлением элементов системы защиты сервера запуск клиента не из под Win невозможен

Итак, клиент астериоса сломился под натиском геймеров и запустился под Ubuntu|Debian

Поэтому для широкой публики напишу гайд по запуску

Прежде всего необходим клиент Lineage II Gracia Epilogue для N\A серверов (евпропейская версия)

Собственно гайд:

1. Устанавливаем wine

sudo add-apt-repository ppa:ubuntu-wine/ppa

sudo apt-get update

sudo apt-get install wine1.2
2. Качаем с сайта http://dll.ru 2 файла: mscoree.dll и streamci.dll Копируем их в ~/.wine/drive_c/windows/system32 3. Качаем файл kernel32.dll.rar, который собрал DieselMachine Копируем его в /usr/lib/wine/kernel32.dll.so для i386(x32) систем или /usr/lib32/wine/kernel32.dll.so для AMD64(x64) систем 4. обновляем directX, VS2005 redistributable packages, шрифты
winetricks vcrun2005 allfonts directx9
5. Заходим в настройки вайна на вкладку Графика и ставим галочку напротив "Эмулировать рабочий стол" и выставляем необходимое разрешение экрана 6. Создаем ярлык и в свойствах запуска ставим "wine "путь к файлу l2.exe" " и наслаждаемся игрой :) Исходник патча для kernell32.dll.so (для других дистрибутивов)
HMODULE hKernel32 = NULL;

FARPROC hLoadLibraryW = NULL;

LPVOID loadLibraryWStorage = NULL;

SIZE_T loadLibraryWSize = 0;


HMODULE hWS232 = NULL;

FARPROC hWS232Connect = NULL;

LPVOID ws232ConnectStorage = NULL;

SIZE_T ws232ConnectSize = 0;


BOOL WINAPI VirtualProtect( LPVOID addr, SIZE_T size, DWORD new_prot, LPDWORD old_prot)

{

    if(!hKernel32) {

        CHAR kernel32Name[] = { 'K','e','r','n','e','l','3','2', 0 };

        hKernel32 = GetModuleHandleA(kernel32Name);

    }

    if(hKernel32 && !hLoadLibraryW) {

        CHAR loadLibraryWName[] = { 'L','o','a','d','L','i','b','r','

a','r','y','W', 0 };

        hLoadLibraryW = GetProcAddress(hKernel32, loadLibraryWName);

    }

    if(hLoadLibraryW && ((LPVOID)hLoadLibraryW == addr)) {

        if(new_prot == 0x40) {

            if(loadLibraryWStorage) {

                HeapFree(GetProcessHeap(), 0, loadLibraryWStorage);

                loadLibraryWStorage = NULL;

            }

            loadLibraryWStorage = HeapAlloc(GetProcessHeap(), 0, size);

            CopyMemory(loadLibraryWStorage, hLoadLibraryW, size);

            loadLibraryWSize = size;

        }

        if(new_prot == 0x80) {

            if(loadLibraryWStorage && (loadLibraryWSize == size)) {

                CopyMemory(hLoadLibraryW, loadLibraryWStorage, size);

                HeapFree(GetProcessHeap(), 0, loadLibraryWStorage);

                loadLibraryWStorage = NULL;

            }

        }

    }


    if(!hWS232) {

        CHAR ws232Name[] = { 'w','s','2','_','3','2', 0 };

        hWS232 = GetModuleHandleA(ws232Name);

    }

    if(hWS232 && !hWS232Connect) {

        CHAR connectName[] = { 'c','o','n','n','e','c','t', 0 };

        hWS232Connect = GetProcAddress(hWS232, connectName);

    }

    if(hWS232Connect && ((LPVOID)hWS232Connect == addr)) {

        if(new_prot == 0x40) {

            if(ws232ConnectStorage) {

                HeapFree(GetProcessHeap(), 0, ws232ConnectStorage);

                ws232ConnectStorage = NULL;

            }

            ws232ConnectStorage = HeapAlloc(GetProcessHeap(), 0, size);

            CopyMemory(ws232ConnectStorage, hWS232Connect, size);

            ws232ConnectSize = size;

        }

        if(new_prot == 0x80) {

            if(ws232ConnectStorage && (ws232ConnectSize == size)) {

                CopyMemory(hWS232Connect, ws232ConnectStorage, size);

                HeapFree(GetProcessHeap(), 0, ws232ConnectStorage);

                ws232ConnectStorage = NULL;

            }

        }

    }


    return VirtualProtectEx( GetCurrentProcess(), addr, size, new_prot, old_prot );

}
©DieselMachine Примечания:
В А Ж Н О. ПОСЛЕ ЛЮБОГО АПДЕЙТА WINE НЕОБХОДИМО ЗАНОВО ВЫПОЛНИТЬ ПУНКТ 3.
©rogra
чат в игре только английский (русский понимает но не пишет, юзаем .cfg => транслит) нашел способ немного поднять фпс: надо в файле /asterios/asterios.ini увеличить параметр:

[L2]

CacheSizeMegs

но не более 512, т.к. ла2 просто больше не умеет понимать

©Uwannadie

Запустил клиент с отключенным compiz'ом, без интерфейса - от 50 до 500 кадров, с интерфейсом - от 20 до 150, разрешение 1920*1080.

Вот так удобно отключать\включать compiz, на Ubuntu 10.04:

1. Назначаем комбинации клавиш. В Ubuntu 10.04, это делается так.

"СИСТЕМА">"ПАРАМЕТРЫ">"Комбинации клавиш клавиатуры"

"Добавить"

Имя: metacity

Команда: metacity --replace

Комбинация клавиш: alt+9

"Добавить"

Имя: compiz

Команда: compiz --replace

Комбинация клавиш: alt+0

2. Теперь, каждый раз перед запуском lineage, нажимаем alt+9(выключаем compiz), а после того как поиграли, нажимаем alt+0(включаем compiz). Также нужно поступать при просмотре фильмов. http://forum.ubuntu..../webby/wink.gif Compiz неблагоприятно влияет на полноэкранные приложения, с ним они больше нагружают компьютер и могут возникать визуальные артефакты.

Интересное наблюдение: Настройка "местность", очень сильно влияет на fps на открытых пространствах, разница между максимальной и минимальной 30 fps, а это существенный плюс к минимальному fps, при этом расстояние прорисовки персонажей не меняется, самая дальняя прорисовка персонажей, примерно равна минимальной прорисовке местности, что примечательно, под офтопом, эта настройка если и влияет, то очень мало

©kotago

сообщение будет дополнятся в процессе настройки

Ссылка на комментарий
Поделиться на другие сайты

  • Ответов 440
  • Создана
  • Последний ответ

35 фпс в городе/45-50 в негустонаселенных локах на GF9800GT

Ссылка на комментарий
Поделиться на другие сайты

С производительностью я посмотрю что можно сделать. Но это будет не скоро, потому что с DirectX/OpenGL и их реализацией под Wine/Linux мне придётся разбираться с нуля.

Ссылка на комментарий
Поделиться на другие сайты

плюсанул автора, но надо немного развернуть вопрос

. Позволяем Wine отправлять ICMP пакеты: в где прописать

обновляем directX, VS2005 redistributable packages: от куда лучше качать

тему закрепить бЫ)

Ссылка на комментарий
Поделиться на другие сайты

все выделенные в цитаты команды пишутся в терминальных клиентах. по-умолчанию в дебиане/убунту стоит Bash

winetricks качает все файлы с сайта мелкомягких

Ссылка на комментарий
Поделиться на другие сайты

Спасибо за гайд, попробую попозже под 10.04 запустить. А то у меня получилось только под виртуалкой запускать.

upd. Сделал всё по гайду, игра запустилась, но в ней полностью отсутствует текст. Поставил шрифты, всё отобразилось. Но не работает там клавиатура. Логин и пароль не напечатать. Подскажите куда копать?

Ссылка на комментарий
Поделиться на другие сайты

сними выделение с окна ла2 и заново выдели его

p.s. русский язык пока не работает, надо учить вайн понимать его

Ссылка на комментарий
Поделиться на другие сайты

Спасибо за быстрый ответ. Всё теперь заработало. Огромный респект за гайд :rolleyes:

Ссылка на комментарий
Поделиться на другие сайты

прикрутил к вайну поддержку юникода, но толи не до конца прикрутил, толи дело не в этом, но русские символы так и не печатаются <_<

p.s: скрин в гх, фпс примерно сопоставим с виндовым

fps_wine_800.jpg

P.P.S нашел способ немного поднять фпс:

надо в файле /asterios/asterios.ini увеличить параметр:

[L2]

CacheSizeMegs

но не более 512, т.к. ла2 просто больше не умеет понимать

Ссылка на комментарий
Поделиться на другие сайты

Спасибо за патч и гайд.

Вот только странно, фпс в безлюдном форте и гиране не сильно различается (15-20 и 7-15), когда в винде соответственно 50-60 и 10-20.

la2.png

Ссылка на комментарий
Поделиться на другие сайты

с этой шнягой меньше лагает? что это вобще и для чего она?

указывает размер памяти для кеширования графики

Ссылка на комментарий
Поделиться на другие сайты

а в чем трудности?)

разница в командах консоли и способах установки прог...остальное идентично

вчера запускали на слаке и архе

Ссылка на комментарий
Поделиться на другие сайты

трудность в том что я его ставлю а после апдейта ничего не происходит, хз мб ось кривая но знач не у меня одного она кривая, ближе к лету переставлю на новую посмотрим что будет

Ссылка на комментарий
Поделиться на другие сайты

попробуй логи глянуть

WINEDEBUG=+relay wine "path to l2.exe" &> ~/log.txt

Ссылка на комментарий
Поделиться на другие сайты

Итак, клиент астериоса сломился под натиском геймеров и запустился под Ubuntu|Debian

Поэтому для широкой публики напишу гайд по запуску

Прежде всего необходим клиент Lineage II Gracia Epilogue для N\A серверов (евпропейская версия)

Собственно гайд:

1. Устанавливаем wine

sudo apt-get wine
2. Качаем с сайта http://dll.ru 2 файла: mscoree.dll и streamci.dll Копируем их в ~/.wine/drive_c/windows/system32 3. Качаем файл kernel32.dll.rar, который собрал DieselMachine Копируем его в /usr/lib/wine/kernel32.dll.so для i386(x32) систем или /usr/lib32/wine/kernel32.dll.so для AMD64(x64) систем 4. Позволяем Wine отправлять ICMP пакеты:
sudo setcap cap_net_raw+eip /usr/bin/wine

sudo setcap cap_net_raw+eip /usr/bin/wine-preloader
5. в файл ~/.wine/user.reg добавляем в конец:
[Software\\Wine\\DllOverrides] 1196330736

"d3d8"="native"

"d3d9"="native"

"d3dim"="native"

"d3dx8"="native"

"d3dxof"="native"

"dciman32"="native"

"ddrawex"="native"

"devenum"="native"

"dinput"="native"

"dinput8"="native"

"dmband"="native"

"dmcompos"="native"

"dmime"="native"

"dmloader"="native"

"dmscript"="native"

"dmstyle"="native"

"dmsynth"="native"

"dmusic"="native"

"dplay"="native"

"dplayx"="native"

"dpnaddr"="native"

"dpnet"="native"

"dpnhpast"="native"

"dswave"="native"

"dxdiagn"="native"

"mscoree"="native"

"quartz"="native"

"streamci"="native"
6. устанавливаем winetricks
wget http://www.kegel.com/wine/winetricks

chmod +x winetricks

sudo mv winetricks /usr/bin
- указать пароль на рут 7. обновляем directX, VS2005 redistributable packages
winetricks vcrun2005 vcrun2005sp1 directx9

8. После установки ДиректХ - делаем следующее в терминале пропишите winecfg переходим на вкладку "Библиотеки"

Нажимаем "Редактировать" и выставляем "Встроенная (wine)" у следующих библиотек:

d3d8, d3d9, ddrawex, dinput, dinput8

8. Заходим в настройки вайна на вкладку Графика и ставим галочку напротив "Эмулировать рабочий стол" и выставляем необходимое разрешение экрана

9. Создаем ярлык и в свойствах запуска ставим "wine "путь к файлу l2.exe" " и наслаждаемся игрой :)

сообщение будет дополнятся в процессе настройки

искреннее спасибо, все запустилось и благополучно работает.

p.s. окончательно прощай хр! 8)

Ссылка на комментарий
Поделиться на другие сайты

ммм.... пардон за оффтоп, современные пользователи никсов (после выхода ХР) - все программисты/сисадмины и т.д.?

Чем для вас обусловленнно использование никсов дома? Доводы о производительности давайте исключим сразу. :)

Ссылка на комментарий
Поделиться на другие сайты

ммм.... пардон за оффтоп, современные пользователи никсов (после выхода ХР) - все программисты/сисадмины и т.д.?

Нет.

Чем для вас обусловленнно использование никсов дома? Доводы о производительности давайте исключим сразу. :)

Давайте не будем тут разводить срач, весь интернет завален подобными темами.

Ссылка на комментарий
Поделиться на другие сайты

Арч, вайн из гита - не работает

На вайн надо наложить мой патч. Либо бери готовый kernel32.dll.so из первого поста, либо компиляй сам. Для этого надо в /wine/dlls/kernel32/virtual.c заменить функцию VirtualProtect на (это и есть мой патч)


HMODULE hKernel32 = NULL;

FARPROC hLoadLibraryW = NULL;

LPVOID loadLibraryWStorage = NULL;

SIZE_T loadLibraryWSize = 0;


HMODULE hWS232 = NULL;

FARPROC hWS232Connect = NULL;

LPVOID ws232ConnectStorage = NULL;

SIZE_T ws232ConnectSize = 0;


BOOL WINAPI VirtualProtect( LPVOID addr, SIZE_T size, DWORD new_prot, LPDWORD old_prot)

{

    if(!hKernel32) {

        CHAR kernel32Name[] = { 'K','e','r','n','e','l','3','2', 0 };

        hKernel32 = GetModuleHandleA(kernel32Name);

    }

    if(hKernel32 && !hLoadLibraryW) {

        CHAR loadLibraryWName[] = { 'L','o','a','d','L','i','b','r','a','r','y','W', 0 };

        hLoadLibraryW = GetProcAddress(hKernel32, loadLibraryWName);

    }

    if(hLoadLibraryW && ((LPVOID)hLoadLibraryW == addr)) {

        if(new_prot == 0x40) {

	    if(loadLibraryWStorage) {

	        HeapFree(GetProcessHeap(), 0, loadLibraryWStorage);

		loadLibraryWStorage = NULL;

	    }

	    loadLibraryWStorage = HeapAlloc(GetProcessHeap(), 0, size);

	    CopyMemory(loadLibraryWStorage, hLoadLibraryW, size);

	    loadLibraryWSize = size;

	}

        if(new_prot == 0x80) {

	    if(loadLibraryWStorage && (loadLibraryWSize == size)) {

	        CopyMemory(hLoadLibraryW, loadLibraryWStorage, size);

	        HeapFree(GetProcessHeap(), 0, loadLibraryWStorage);

		loadLibraryWStorage = NULL;

	    }

	}

    }


    if(!hWS232) {

        CHAR ws232Name[] = { 'w','s','2','_','3','2', 0 };

	hWS232 = GetModuleHandleA(ws232Name);

    }

    if(hWS232 && !hWS232Connect) {

	CHAR connectName[] = { 'c','o','n','n','e','c','t', 0 };

	hWS232Connect = GetProcAddress(hWS232, connectName);

    }

    if(hWS232Connect && ((LPVOID)hWS232Connect == addr)) {

	if(new_prot == 0x40) {

	    if(ws232ConnectStorage) {

		HeapFree(GetProcessHeap(), 0, ws232ConnectStorage);

		ws232ConnectStorage = NULL;

	    }

	    ws232ConnectStorage = HeapAlloc(GetProcessHeap(), 0, size);

	    CopyMemory(ws232ConnectStorage, hWS232Connect, size);

	    ws232ConnectSize = size;

	}

	if(new_prot == 0x80) {

	    if(ws232ConnectStorage && (ws232ConnectSize == size)) {

		CopyMemory(hWS232Connect, ws232ConnectStorage, size);

		HeapFree(GetProcessHeap(), 0, ws232ConnectStorage);

		ws232ConnectStorage = NULL;

	    }

	}

    }


    return VirtualProtectEx( GetCurrentProcess(), addr, size, new_prot, old_prot );

}

трудность в том что я его ставлю а после апдейта ничего не происходит, хз мб ось кривая но знач не у меня одного она кривая, ближе к лету переставлю на новую посмотрим что будет

После какого апдейта у тебя ничего не происходит? Вайн ты откуда поставил? Какой он версии?

Интересно узнать, какой будет прирост производительности на Gentoo. Так что запускай давай.

Чем для вас обусловленнно использование никсов дома? Доводы о производительности давайте исключим сразу.

Во-первых моя винда засралась так, что загружалась минуты три.

Во-вторых её окончательно сожрали вирусы, что месяц назад даже линейка перестала запускаться. Вот тогда-то я и решил завести-таки её на линуксе.

И в-третьих, мне просто интересно как программисту покопаться в этой системе.

Ссылка на комментарий
Поделиться на другие сайты

Ребята сделал все по мануалу только kernel32.dll.so оставил нативную OpenSuSe с вашей ругался err:module:load_builtin_dll failed to load .so lib for builtin L"kernel32.dll": /lib/libc.so.6: version `GLIBC_2.11' not found (required by /usr/bin/../lib/wine/kernel32.dll.so)

Вайн запустился Asterios.exe - запустился прошел (правда с кодировкой что то у меня по умолчанию UTF8) А потом пишет нельзя запускать L2 подвиртуальной машиной ....

Это проблему решит если Я перекомпилю себе kernel32.dll.so с вашими патчем ??? (заранее спасибо)

Ссылка на комментарий
Поделиться на другие сайты

А потом пишет нельзя запускать L2 подвиртуальной машиной

Похоже, что у тебя вайн старый, нужен 1.1.44

Если у тебя libc другой версии, то тогда да, сам компиляй, должно помочь

Ссылка на комментарий
Поделиться на другие сайты

Похоже, что у тебя вайн старый, нужен 1.1.44

Если у тебя libc другой версии, то тогда да, сам компиляй, должно помочь

Обновил Wine

Вот что получилось ???

post-65701-127428542601_thumb.jpeg

Ссылка на комментарий
Поделиться на другие сайты

У меня тоже такое было, воспроизводится редко и нестабильно. Не могу сказать в чём проблема

Ссылка на комментарий
Поделиться на другие сайты

Всем привет. давно пытаюсь запустить линягу под убунтой. Кучу мануалов перечитал. Этот пока вроде как самый полный.

Значит вот суть проблеммы: Запускаю я апдейтер. Проходит апдейт. жму кнопку старт. И все. псолютно ничего не происходит. Wine обновил стоит версии 1.1.44.

Попробовал зпуститьчерез "WINEDEBUG=+relay wine "path to l2.exe" &> ~/log.txt". Уже кое-чего получилось. Окошко загрузки линяги (то что фигурное в самом начале) появляется, что-то грузится, а потом просто выбивает иксы. И выбрасывает меня на страничку логина. Тоесть иксы полность перегружаются. После такой процедуры остается лог 190 метровый. Что в нем смотреть - понятия не имею. Могу его куда-нибудь выложить или поиском найти в нем что-то и выложить сюда.

Помогите пожалуйста разобраться.

Ссылка на комментарий
Поделиться на другие сайты

Если ты внимательно читал первый пост, то там в пункте 3 написано, что надо после установки вайна заменить файл kernel32.dll.so на тот что в аттаче лежит. Это решит твою проблему.

Ссылка на комментарий
Поделиться на другие сайты

Заархивировано

Эта тема находится в архиве и закрыта для дальнейших ответов.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...