如何使用WINE运行<<半条命>>
译者注释
这篇文档介绍了如何在Linux下用WINE来运行<<半条命>>,它的英文原文的地址如下: http://lhl.linuxgames.com/howto/half-life-HOWTO-0.4.1.html 由于译者没有这个游戏,因此也没有测试过,仅仅对原文进行了翻译.由于翻译中可能出现一些错误,所以请各位包涵.
daweicheng
以下是原文的翻译:
如何使用WINE运行<<半条命>>
David Hammerton
[email protected]
Adam Torgerson
[email protected]
Lars Munch
[email protected]
0.4版,2001年6月1日
修正变更
版本 0.4.1 2001-06-03 Revised by: David
更新了我的e-mail地址和修改了一些过时内容.
版本 0.4 2001-06-01 Revised by: Lars
将文档的格式改变为Docbook SGML 4.1.文档描述在http://www.linuxdoc.org/LDP/LDP-Author-Guide/usingldpdsssl.html
版本 0.3 2001-03-19 Revised by: Adam
我主要修正了语法错误, 在OPENGL疑难解答和声音段中增加了一些内容,做了一些整理.在你看到声音疑难解答段,那儿有个小注释可供参考.我对SGML知道不多,只是打开文件,象对HTML一样地去做了.如果有失误请通知我.
这篇HOWTO文档可帮助人们在Linux/Unix使用WINE轻松地设置和运行<<半条命>>
----------------------------------------------------------------------
内容目录
1 介绍
1.1 引言
1.2 感谢
1.3 许可
1.4 最新版本
2 开始做
2.1 需求
2.2 3D
2.2.1 常规安装
2.2.2 NVidia用户
2.2.3 3DFX用户
2.2.4 G400用户
2.2.5 其他用户
2.3 安装WINE
2.4 安装<<半条命>>
2.5 设置和运行<<半条命>>
3 疑难解答
3.1 声音问题
3.1.1 声音滞后
3.1.2 无声
3.1.3 在CS中没有radio声音
3.2 显示问题
3.2.1 乱字符
3.2.2 图像晃动和/或可以看穿墙壁
3.2.3 不能全屏幕显示?
3.2.4 <<半条命>>很昏暗
3.2.5 开始<<半条命>>时,XFree86挂起
3.2.6 支持的OPENGL模式不被你的显卡所支持
3.3 想要gamespy?
4 结语
----------------------------------------------------------------------
1 介绍
1.1 引言
这篇HOWTO文档可帮助人们在Linux/Unix使用WINE轻松地设置和运行<<半条命>>.WINE不是一个windows模拟器,但是她能够让你在Linux下运行很多windows程序.这篇HOWTO是为OPENGL用户和<<半条命>>设计的,我建议你到以下网址看看:http://eg4l.sourceforge.net/ehl/
----------------------------------------------------------------------
1.2 感谢
正如其它的HOWTOs一样,这篇HOWTO由这些协助构建而成:网站,新闻组,在IRC上的人们和我个人的经验.两个主要的协助是David McBrides HOWTO(http://www.doc.ic.ac.uk/~dwm99/Computing/Wine+Half-Life-HOWTO)和WINE newsgroup(news:comp.emultaors.ms-windows.wine).也有一些主意来自于死亡刺痛的大脑(就是拥有Emulated Half Life (http://eg4l.sourceforge.net/ehl/)的那个网站)
----------------------------------------------------------------------
1.3 许可
Linux<<半条命>>的HOWTO:用WINE运行<<半条命>> Copyright (C) 2000, 2001 David Hammerton
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
A copy of the GPL can be found at the GNU Homepage (http://www.gnu.org/copyleft/gpl.html)
(天哪,一个基于GPL的许可些了这么多,我就偷懒不翻译了^_* --译者注)
----------------------------------------------------------------------
1.4 最新版本
最新版本的文档在这儿:http://lhl.linuxgames.com/
----------------------------------------------------------------------
2 开始吧
2.1 需求
一台能够达到<<半条命>>配置的x86电脑.事实上,也许用WINE没有windoze(看来作者比较讨厌window$ --译者注)运行得好.
一个Linux系统
XFree86 4.0.1或更高版本(对于DRI用户推荐XFree86 4.0.3)
<<半条命>>
在Linux下能够支持OPENGL加速的3D加速卡
在XFree86下你的显卡被设置且运作良好
你不需要windows分区,也无需安装windows
----------------------------------------------------------------------
2.2 3D
2.2.1 普通安装
这篇HOWTO不包括在Linux下安装和设置你的3D显卡(关于显卡设置的文章你可以在linux站点上找到 --译者注).这篇HOWTO假定你的3D卡可以在linux下运作(你可以运行Quake3,Heretic2, Descent3,或是其它3D加速的模式).这儿有链接:
NVidia chipsets (TNT/TNT2/GeForce/GeForce2 etc):http://www.nvidia.com/Products/Drivers.nsf/Linux.html
New 3DFX chipsets (Voodoos 3, 4 & 5):http://dri.sourceforge.net/
3DFX glide drivers for XFree86 3.3.6:http://linux.3dfx.com/ 和 http://glide.sourceforge.net/
Matrox GX00 / ATI Rage 128 / Intel i810/ 3dlabs Oxygen:http://dri.sourceforge.net/
Mesa:http://mesa3d.sourceforge.net/
----------------------------------------------------------------------
2.2.2 NVidia用户
NVidia显卡是跑这个游戏的最佳选择.她拥有Linux下最好的支持,因此在多数情况下运行得最稳定最快速.对于NVidia用户,不需要特殊的设置,接着看这篇HOWTO.
----------------------------------------------------------------------
2.2.3 3DFX用户
直到XFree86 4.0.2,最新的TDFX分支才被加入到DRI CVS里--所以3DFX用户可能需要下载并编译XFree86和DRI-这没有被测试过!最好用新近发行的XFree86
4.0.3,但是同样没有被测试过.如果哪位测试过并且能运行,通知我.否则,继续用以往的方法:3DFX用户运行CS有些勉强,但也是运行CS也是可能的.我联系过一个有所帮助的人,他可以让他的voodoo3良好地运行CS.你有两个选择:DRI (x4.0.1),但是看起来出奇地慢,所以我不想被这困扰;另外一个是Glide (x3.3.6).但我没有voodoo3,我不能肯定.
Lars Munch 的e-mail:
[email protected]
这是我所做的:
----
首先,将glide和mesa移除.
在CVS上得到最新的3DFX驱动,安装.如果你运行2.4.x内核,这是需要的.
从linux.3dfx.com上得到Glide V3的源代码的rpm包.编译安装,包括库和devel.
从mesa3d.sourceforge.net上得到Mesa 3.4.你需要MesaDemos和MesaLib.用以下命令编译:
# ./configure --without-svga --without-ggi --with-glide=/usr
--prefix=/usr --sysconfdir=/etc
并且做:
# make; make install
现在测试,确保它运作良好(testGlide3x,quake...)
你可以用:export MESA_FX_INFO=1来得到一些有用的数据.
安装WickedGL驱动(miniGL from Wicked3D),它能在640x480下跑到30-70fps.
用--enable-opengl这个选项编译wine代码,这样运行CS:
export MESA_GLX_FX=fullscreen
# wine -desktop hl.exe -- hl.exe -gl -gldrv Default -w 640 -full
-game cstrike -noipx -nojoy -numericping -console -toconsole
----------------------------------------------------------------------
2.2.4 G400用户
我联系到一个可以用G400完美地跑LHL的用户.有一些步骤需要去做,这看起来比3DFX用户做得简单些.注解:你是不是需要个快些的CPU(大于500MHZ?).
现在XFree86 4.0.2(或4.0.3?)已经出来了,你必须安装它.G400不能运行在普通的4.0.1下,你必须用4.0.2.可能会有些闪烁,在""疑难解答""中有解决的方法.
----------------------------------------------------------------------
2.2.5 其它DRI用户
我没有听说其他DRI用户(成功运行CS),但请通知我你是如何做到的.试试最新的XFree86 DRI from CVS(这在G400段中有描述,通知我(ATI Rage128 or Radeon,是哪一个?)
----------------------------------------------------------------------
2.3 安装WINE
首先你要安装WINE.可能对于玩什么Linux会有个大争论.如果你已经有一个WINE安装好了(rpm/binary包或是其它的),卸载它:在基于RPM系统的Linux中,这样做:
# rpm -qa |grep WINE
# rpm -qa |grep wine
# rpm -e ""whatever showed up above""
基于Debian Linux系统的,这样做:
# apt-get remove wine
如果你以前编译并安装过WINE(源代码方式),进入源代码目录,然后:
# make uninstall
1 现在,下载WINE.我极其推荐你更新你的CVS,但是最简单的方法是下载最新的CVS Snapshot Tarball并且通过CVS更新到新的版本.有用的介绍在这儿:http://www.winehq.com/devstart.html(看看通过FTP得到WINE和转变到CVS).我假定你已经下载了WINE到/usr/src/wine目录下,所以,你的WINE源代码应该在/usr/src/wine/wine下,如果你想用CVS,这样试试:
export CVSROOT=:pserver:
[email protected]:/home/wine
# cvs login
*** The password is ""cvs"" ***
# cvs -z3 co wine
请注意这是个大的CVS校验.对于使用modem的用户不推荐这样做.同样没有WINE的二进制文件(已编译好的)被加入了OPENGL的支持.我所知道的是这没有被测试过.
2 为你的linux发行版选择一个OPENGL开发包.例如Debian,开发包是xlibmesa-dev.其它发行版本应该有相类似的包.你同时需要一个叫""glext.h""的文件.让我们看看你是否有(这个文件):
# updatedb
# locate glext.h
如果你的系统没有glext.h,你需要在编译WINE之前得到它.我做了一个可用的链接:http://lhl.linuxgames.com/glext.h,下载它,把它放到/usr/X11R6/include/GL/目录下.缺少了这个文件,WINE不会在编译时加入OPENGL支持.
3 现在编译,运行wineinstall(从/usr/src/wine/wine下运行./tools/wineinstall).你可以看见WINE开始自动地编译,配置并安装.这个安装工具会给你创建一个注册.最新的版本将自动地带有OPENGL支持.编译会花些时间.
4 现在该编辑wine.conf文件了.用编辑器打开.wine.conf被放在/usr/local/etc/wine.conf(这取决于它安装在哪儿).将C盘指向/usr/local/wine.你需要将你的CD-ROM(用来安装cs)挂接点设置好.在[x11drv]段中,确保double-buffering设置成ON.在XFree86中useDGA可能作为DGA在on或off状态下工作.有人报告这儿遇到问题,试试将useDGA和double-buffering设成off.如果wine.conf工作良好,进入home directory,然后:
# mkdir ~/.wine/
# cp /usr/local/etc/wine.conf ~/.wine/config
WINE现在安装并配置好了
----------------------------------------------------------------------
2.4 安装 <<半条命>>
将<<<<半条命>>的光盘放入光驱,然后:
# mount /xxx (your cdroms mount point)
# cd /xxx
# wine SETUP.EXE
跟着安装向导,安装顺利结束.如果最后安装挂起(经常出现),用CTRL+ALT+F1切到1号控制台,用root登陆,敲命令:
# killall -9 wine
# ps -ax
确保没有WINE客户端/服务端运行.如果有,用kill命令将他们k掉.做同样的patch工作(装HL,CS...)但你必须记得,你只能运行在wine.conf里设置的路径下的.exe文件(因为这是linux环境 --译者注)
----------------------------------------------------------------------
2.5 运行并设定<<半条命>>
现在到这里了,结果是好是坏呢;-)进入<<半条命>>目录:cd /usr/local/wine/games/Half-Life/(目录取决于你的安装目录)执行:
# wine hl.exe -- hl.exe --console
(请记住,当你运行游戏时,不要这么做..在gamespy段中有我的脚本,按脚本运行)
你将会看到一个缓慢的菜单出现了,点击Configuration"" -> ""Video"" -> ""Video Modes,将它设置为OPENGL.可能在你点击OK时画面会定住,没关系-切到控制台下用killall -9 wine(这个老兄又来了,都用killall命令了,还说没关系@_@ --译者注)确定你的选择(OPENGL驱动)在XF86Config-4中有解释.
配置cdkey,应该没问题.你也可以手动修改config.cfg文件.
----------------------------------------------------------------------
3 疑难解答
3.1 声音问题
3.1.1 声音有些滞后
我遇到了一些声音延迟的问题(比如在CS里的枪声严重地滞后)要解决这个问题,需要在config.cfg文件中加上适当的修改:
_snd_mixahead ""0.23""
(0.23这个值可以在我的机器上运行得不错,有些人说其它的值也许更适合于他们.千万不要用负值,这样将不能够工作!)这将解决声音滞后的问题.同样,如果你发现你修改了值后<<半条命>>程序崩溃,试试其它的值.
有些人有同样的问题,但是不能解决它.如果你有不同的解决方案,请与我联系.
----------------------------------------------------------------------
3.1.2 根本就没有声音
一些声卡,由于esd的缘故,可能无声(通常发生在Gnome下)试试这个:
# ps aux | grep esd
如果esd -nobeeps或是一些相类似的,这可能是困扰你的问题.右键单击Gnome面板""Panel"" -> ""Add to
Panel"" -> ""Applet"" -> ""Multimedia"" -> ""Sound Monitor""右键单击新程序,选择""Place esound in standby"",这样就禁止了esd.
----------------------------------------------------------------------
3.1.3 在CS中没有radio声音
这是没有在命令行中加上""-game cstrike""而导致的问题-你可以下载最新的hl启动脚本(hl launch script)(为了与XQF一起使用)-链接在""gamespy""段里
----------------------------------------------------------------------
3.2 显示问题
3.2.1 乱字符
如果你发现一些字符在游戏中显示不太稳定(比如积分牌)你可能得到一个关于""没找到字体文件""的错误.这些错误信息将在loading游戏时在console里显示.一个文件可能是""1026_Scoreboard Text.tga"".是的,你看见了错误,因此找不着文件.所以你该找出它在寻找什么,先退出游戏,进入你的安装目录""valve/gfx/vgui/fonts"",拷贝可能需要的文件,它们可能是<<半条命>>所需要的.比如,这是我的:
1024_Briefing Text.tga 1024_Scoreboard Text.tga
1026_Briefing Text.tga@ 1026_Scoreboard Text.tga@
1024_CommandMenuText.tga 1024_Team Info Text.tga
1026_CommandMenu Text.tga@ 1026_Team Info Text.tga@
1024_Primary Button Text.tga 1024_Title Font.tga
1026_Primary Button Text.tga@ 1026_Title Font.tga@
另外一个解决方法时不进入全屏幕状态(在图形模式下不作校验),并且在WINE的配置文件中,让窗口管理器描绘windows.这时常会去掉绿色的线条.这看起来很漂亮,因为在玩游戏时,你仍然能看见你的IRC信息.但这种方法可能会使你在全屏幕时调焦不正确.
----------------------------------------------------------------------
3.2.2 图像晃动得厉害和/或可以隔墙视物
这个问题经常在DRI用户中出现,这个问题容易解决:增加/修改以下的字段(在所有的config.cfg中):
gl_ztrick 0
一些用户反映这不能解决问题,我们也正在寻求一个正确的方案.
----------------------------------------------------------------------
3.2.3 不能全屏幕?
取决于你的设置,在你设置的尺寸下可能会在屏幕中央出现一个方形区域.按下ctrl+alt+keypad_plus直到合适为止.(这和你的XF86Config设置有关,比如分辨率)
----------------------------------------------------------------------
3.2.4 <<半条命>>很昏暗
个别人有这个问题,很容易解决.用""xgamma""来改变XFree86的亮度.例如,在启动脚本中(在CS加载前)加入:
# xgamma -gamma 3.0
3.0这个值是可调节的(为了让你的眼睛适应).在脚本中""运行游戏""之后,务必将gamma值改回,要不然会让你好看.
----------------------------------------------------------------------
3.2.5 在启动游戏时XFree86死掉
有很多原因可能导致XFree86挂起,但最可能的原因未知的GL驱动惹的祸.如果你使用NVidia驱动,确保你已经将所有的Mesa库文件删掉(寻找libGL.so,只留下NVidia的那一个).同时参见""支持的OPENGL模式不被你的显卡所支持""段.
----------------------------------------------------------------------
3.2.6 支持的OPENGL模式不被你的显卡所支持
这是WINE连结到正确的OPENGL驱动的一个问题.首先确定OPENGL已经被编译进了WINE(察看./configure manually的输出)多半你要检查WINE是否连接到了错误的.sos和.as上.这个URL很有用:http://wine.screenweavers.com/cgi-bin/fom?file=139
首先,找到WINE将你的libopengl32.so放在哪里(这是WINE的OPENGL支持库)我的在/usr/local/lib下).然后你需要做:
$ ldd libopengl32.so
输出的结果应该和下面这个NVidia卡类似:
libx11drv.so => /usr/local/lib/libx11drv.so (0x4004a000)
libkernel32.so => /usr/local/lib/libkernel32.so (0x40099000)
libwine.so => /usr/local/lib/libwine.so (0x40113000)
libncurses.so.5 => /lib/libncurses.so.5 (0x40137000)
libm.so.6 => /lib/libm.so.6 (0x40177000)
libutil.so.1 => /lib/libutil.so.1 (0x40195000)
libdl.so.2 => /lib/libdl.so.2 (0x40198000)
libc.so.6 => /lib/libc.so.6 (0x4019b000)
libuser32.so => /usr/local/lib/libuser32.so (0x402aa000)
libgdi32.so => /usr/local/lib/libgdi32.so (0x4037b000)
libwine_tsx11.so => /usr/local/lib/libwine_tsx11.so (0x403e7000)
libSM.so.6 => /usr/X11R6/lib/libSM.so.6 (0x403f4000)
libICE.so.6 => /usr/X11R6/lib/libICE.so.6 (0x403fd000)
libXpm.so.4 => /usr/X11R6/lib/libXpm.so.4 (0x40413000)
libGL.so.1 => /usr/lib/libGL.so.1 (0x40421000)
libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x40458000)
ibX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x40466000)
libntdll.so => /usr/local/lib/libntdll.so (0x40540000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x2aaaa000)
libGLcore.so.1 => /usr/lib/libGLcore.so.1 (0x40637000)
libwine_unicode.so => /usr/local/lib/libwine_unicode.so (0x40842000)
最重要的libGL.so.1和libGLcore.so.1这两行.确保它指向合适的NVidia libGL.so.1和libGLcore.so.1.为了检查这个,进入它们的目录(这个例子中是/usr/lib/)并且:
# ls -l libGL*
查询像下面这样的结果:
lrwxrwxrwx 1 root root 16 Mar 17 09:33 libGL.so -> libGL.so.1.0.769
lrwxrwxrwx 1 root root 16 Mar 17 09:33 libGL.so.1 -> libGL.so.1.0.769
-rwxr-xr-x 1 root root 218388 Mar 17 09:33 libGL.so.1.0.769
lrwxrwxrwx 1 root root 13 Mar 17 02:17 libGLU.so -> libGLU.so.1.3
lrwxrwxrwx 1 root root 13 Mar 17 02:16 libGLU.so.1 -> libGLU.so.1.3
-rw-r--r-- 1 root root 487348 Feb 21 21:13 libGLU.so.1.3
lrwxrwxrwx 1 root root 20 Mar 17 09:33 libGLcore.so.1 -> libGLcore.so.1.0.769
-rwxr-xr-x 1 root root 2075568 Mar 17 09:33 libGLcore.so.1.0.769
-rw-r--r-- 1 root root 26168 Feb 21 21:13 libGLw.a
注意libGL.so.1是libGL.so.1.0.769的符号连结,libGLcore.so.1(0.9-769的NVidia库文件)的情况也类似这样.如果是其它情况,可能就是Mesa导致的XFree86不能工作.去掉Mesa,重新运行ldconfig.
还有一种可能是你的库的路径没有设置正确.如果是这样,编辑/etc/ld.so.conf并加入你的libopengl32.so所在路径)
----------------------------------------------------------------------
3.3 gamespy
从http://www.linuxgames.com/xqf/上得到XQF,它支持<<半条命>>.但是启动<<半条命>>的方式让我们觉得不舒服,所以我写了一个可以良好工作的脚本.http://lhl.linuxgames.com/hl.将它放到你想放的地方,并且设置XQF可以使用它.你要修改我的hl文件内容,以确保路径在你的系统上是正确的.同时需要用chmod a+x hl让这个文件可以执行.你也可以加上我们先前讨论的xgamma的内容.
----------------------------------------------------------------------
4 结语
所有的设置应该可以工作了.但是,请注意,这只是一个BETA版的HOWTO,如果你的不能运行,请到这儿看看:http://lhl.linuxgames.com.检查IRC(#lhl on irc.openprojects.net),或者给我发e-mail,我试着帮助你(
[email protected])
(下面的内容我就不翻译了,现在我好困倦 -_- --译者注)
Also, if you wanna be real cool, whenever you hop in a server, put the tag [TUX] or (linux) at the start or end of your name so
other LHL uses can identify you - I wear it at the start (crazney)! I (may1937) wear (linux) at the end so people don confuse
it with a clan as much... ""Does linux wanna have a clan war?""... ""Uh, no. Its not a clan.""... ""uh... ok. wtf?""... ""I play in
linux.""... ""There isn a linux client?"" OR ""Whats linux?""... ""No. I wish."" OR /me gives a bullet to the dome-piece with my
phatty boombatty elites ; )