
Actually, it's an entirely new engine. Back in alpha, a linux client had leaked out in one of the patch mpqs. Support for Linux is already there, all that really needs to be done is to compile it and fix anything that broke throughout the patches. In the current client, there are some new strings pertaining directly to Linux, hence why I believe that a new Linux client might already be underway. Blizzard attests that there are no plans for a Linux client (and that the new functions were added for "completeness" (bs if you ask me), so we'll only see with time. Hopefully we'll be able to take apart the x86 Mac binaries at the very least and do some very heavy compatibility workarounds to get it running. Hopefully we'll be able to get the client to use some of the Linux support that already exists, but there's no way of telling until they release them.legine wrote:I read the patch notes. They are enhancing the functionality to better debug Mac OS. In that process the support of older versions falls.
Thats what you are seeing for sure.
I believe that a port is not that easy as it seems at first. World of warcraft is based on the Warcraft 3 engine. To port that engine may more work if the code is anchored deeply in the Windows and Mac OS API. And there fore not easily to port to Linux. I mean. It is easy but timeconsuming...
I believe the Linux market has to be shown bevore Blizzard goes the way of porting to Linux.
My guess is that the Linux note in the binary we see is filed on the servers since they may well run on Linux without any complicated engine to run. But since all came from Warcraft 3 it may be that the one file contains a bit of the server code...
Of course I do not know anything and I may be totaly wrong. But thats not more wrong than the other gossip I hear
Cheers
Legine
Unfortunately results tend to be mixed when using an ATI card. You might want to try some alternative drivers, or pick up an Nvidia card - ATI drivers really just do not cut it on Linux in most cases, and you'll see serious performance issues when compared to windows.BlueDragonX wrote:Well, after messing around with video drivers and whatnot I've managed to get WoW to run on my AMD64 machine. Only problem is, in OpenGL mode not everything shows in WoW. Like, graphics are missing. The button graphics don't exist in the UI but the text is there. When I log in I can see equipment attached to characters but not the characters themselves (imagine shoulders and a pair of daggers floating thru the air).
If I turn off the vertex shaders inside WoW I still don't have UI graphics and can still see text, but now I can see my character, only it's completely black, and so are other characters. If I select a character, however, I can then see the graphics.
Lastly, the last two times I logged in it froze on me, not sure why. My UD rogue is in Tarren Mill and I walked out of the inn and it just froze, like it was trying to process the rest of the zone but couldn't. I'm more interested in fixxing the graphics bugs right now, though.
My system:
AMD Opteron 144 (64-bit Gentoo stage 1 install)
2gb Corsair DDR
ATI Radeon 8500 (using ati-drivers version 8.19.10)
Using Wine 20050930 with the WoW patch given on this thread (made an overlay and called it wine-20050930-r1).
i have had that happen, however, after about a min... or less it goes right back to normal.jolie wrote:Hello guys, first of all i would like to say that thanks to this forum i got WoW up and running almost flawlessly.
I run it now on patched wine-0.9.1 with pthreaded glibc.
There is however one thing that troubles me. From time to time, the game starts to lag heavily - after 2+ hours playing it just drops framerate and behaves as if played on a riva tnt. If i look in console and make top, nothing special shows up. Wine-preloader eating almost 92% of CPU and rest for the rest.
Maybe the memory handling of my system needs to be improved? I have 1GB RAM and 2 GB SWAP.
System is
AMD 64 3000+
Geforce 6800 TDH
1GB RAM
There are no special error messages in console from the WoW.
Does anyone have an idea what it might be?
I run the game "nice -n 19 wine WoW.exe -opengl
Code: Select all
xxxxxx@citadel:~/.wine/drive_c/World of Warcraft$ strings WoW.exe | grep -i linux
Linux
IsLinuxClient
okay, so you made an overlay and are trying to emerge it? then there should be some kind of error message. did some whitespace got messed up? do the other patches apply?Tinyn wrote:Making a .patch file of it, and adding it to the ebuildprg wrote:how do you try to apply it? did you forget the < ?Tinyn wrote:Why does the OpenGL target patch in the first post cause the patch process to halt? Am I copying it incorrectly or something?
patch -p0 < somefile.patch
Well, after some testing I've found out what caused the problems on my machine:Shadows wrote:I'm not sure, but it looks like a similar behaviour that I experience every now and then, as described in my topmost posting on page 9 of this thread.jolie wrote:There is however one thing that troubles me. From time to time, the game starts to lag heavily - after 2+ hours playing it just drops framerate and behaves as if played on a riva tnt.
Is it exactly after at least 2 hours or does it occur even earlier? Is it still the same if you just log out and log in again? (so that after logout you return to your character selection screen and then just re-log with your current character)
Since for me it occurs at different places and after different play times I haven't been able to track the correct symptoms for that issue so the problem could be repeated as desired, yet.
Well, I sort of solved it via race condition. (Removed the patch line from the ebuild. Got it started compiling. vi path/opengl_norm.c and edited the one characer in myself before the compiler got to it)prg wrote:okay, so you made an overlay and are trying to emerge it? then there should be some kind of error message. did some whitespace got messed up? do the other patches apply?Tinyn wrote:Making a .patch file of it, and adding it to the ebuildprg wrote:how do you try to apply it? did you forget the < ?Tinyn wrote:Why does the OpenGL target patch in the first post cause the patch process to halt? Am I copying it incorrectly or something?
patch -p0 < somefile.patch
I just noticed something I believe is very simmilar to waht you guys are seeing. and I believe the answer is poor memory allocation by wine. I run fluxbox, so it takes up about 60MB of my 1024. if I run anything else while wow is running, memory gets dumped into my swap space.Shadows wrote:Well, after some testing I've found out what caused the problems on my machine:Shadows wrote:I'm not sure, but it looks like a similar behaviour that I experience every now and then, as described in my topmost posting on page 9 of this thread.jolie wrote:There is however one thing that troubles me. From time to time, the game starts to lag heavily - after 2+ hours playing it just drops framerate and behaves as if played on a riva tnt.
Is it exactly after at least 2 hours or does it occur even earlier? Is it still the same if you just log out and log in again? (so that after logout you return to your character selection screen and then just re-log with your current character)
Since for me it occurs at different places and after different play times I haven't been able to track the correct symptoms for that issue so the problem could be repeated as desired, yet.
gconfd2
Yes, sounds kinda strange, but that causes the problems. Because of performance issues, I shut down my KDE and start a new X Server with openbox when I want to play WoW. After doing this I realize that the only open processes are gconfd2 and gam_server from gamin (FAM replacement). "Where does gconfd2 come from?" you might ask, since I'm using KDE. It's started by gdm, since I'm using it as the xdm replacement.
With gconfd2 running, the game lags heavily, especially in towns with many players, e.g. Orgrimmar (thankfully, I don't play Alliance characters, so I didn't happen to have the "pleasure" to enjoy the Ironforge Lagshow...). Turning around is a pain in the ass, e.g. pressing left arrow key once results in a random turn between 45° and 180° to the left. After killing gconfd2 and relogging, everything is fine. Orgrimmar still lags, but that's because of my weak HW config, and the lag is constant, meaning that a complete turnaround results in continous steps and therefore makes it possible again to play the game.
Now I know what is causing the problem - at least on my machine - but I don't know why it's causing it. Maybe gamin is the bad guy, but I can't find out since it restarts itself after it got killed, therefore I don't know how to stop it from restarting itself. Documentation says nothing about it, man page doesn't exist and googling didn't get me some anwsers in a decent time.
Anybody else got an Idea how to kill the gam_server?
Update gamin, but still the same problems. Will update gconfd2 and see if it changes for the better.

Code: Select all
# Copyright 1999-2005 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $
inherit eutils flag-o-matic multilib
DESCRIPTION="WINE patched for World of Warcraft"
HOMEPAGE="http://www.winehq.com/"
SRC_URI="mirror://sourceforge/${PN}/wine-${PV}.tar.bz2"
LICENSE="LGPL-2.1"
SLOT="0"
KEYWORDS="-* ~amd64 ~x86"
IUSE="alsa arts cups debug esd gif glut jack jpeg lcms ldap nas ncurses opengl oss scanner truetype xml2 X"
RESTRICT="test" #72375
RDEPEND=">=media-libs/freetype-2.0.0
media-fonts/corefonts
ncurses? ( >=sys-libs/ncurses-5.2 )
jack? ( media-sound/jack-audio-connection-kit )
X? ( virtual/x11 )
arts? ( kde-base/arts )
alsa? ( media-libs/alsa-lib )
esd? ( media-sound/esound )
nas? ( media-libs/nas )
cups? ( net-print/cups )
opengl? ( virtual/opengl )
gif? ( media-libs/giflib )
jpeg? ( media-libs/jpeg )
ldap? ( net-nds/openldap )
glut? ( virtual/glut )
lcms? ( media-libs/lcms )
xml2? ( dev-libs/libxml2 dev-libs/libxslt )
truetype? ( media-libs/freetype )
scanner? ( media-gfx/sane-backends )
amd64? (
>=app-emulation/emul-linux-x86-xlibs-2.1
>=app-emulation/emul-linux-x86-soundlibs-2.1
>=sys-kernel/linux-headers-2.6
)"
DEPEND="${RDEPEND}
sys-devel/bison
sys-devel/flex
!app-emulation/wine"
pkg_setup() {
if use amd64 ; then
if ! has_m32 ; then
eerror "Your compiler seems to be unable to compile 32bit code."
eerror "Make sure you compile gcc with:"
echo
eerror " USE=multilib FEATURES=-sandbox"
die "Cannot produce 32bit code"
fi
if has_multilib_profile ; then
export ABI=x86
else
append-flags -m32
append-ldflags -m32
fi
fi
}
src_unpack() {
unpack wine-${PV}.tar.bz2
cd ${WORKDIR}
mv wine-${PV} wine-for-wow-${PV}
cd wine-for-wow-${PV}
epatch "${FILESDIR}"/wine-20050524-alsa-headers.patch
epatch "${FILESDIR}"/winearts-kdecvs-fix.patch
sed -i '/^UPDATE_DESKTOP_DATABASE/s:=.*:=true:' tools/Makefile.in
epatch "${FILESDIR}"/wine-20041019-no-stack.patch #66002
epatch "${FILESDIR}"/wine-wow-fixes.patch
epatch "${FILESDIR}"/wine-opengl-polygonoffset.patch
}
config_cache() {
local h ans="no"
use $1 && ans="yes"
shift
for h in "$@" ; do
[[ ${h} == *.h ]] \
&& h=header_${h} \
|| h=lib_${h}
export ac_cv_${h//[:\/.]/_}=${ans}
done
}
src_compile() {
export LDCONFIG=/bin/true
use arts || export ARTSCCONFIG=""
use esd || export ESDCONFIG=""
use scanner || export sane_devel="no"
config_cache jack jack/jack.h
config_cache cups cups/cups.h
config_cache alsa alsa/asoundlib.h sys/asoundlib.h asound:snd_pcm_open
config_cache nas audio/audiolib.h audio/soundlib.h
config_cache xml2 libxml/parser.h libxslt/pattern.h libxslt/transform.h
config_cache ldap ldap.h lber.h
config_cache gif gif_lib.h
config_cache glut glut:glutMainLoop
config_cache jpeg jpeglib.h
config_cache oss sys/soundcard.h machine/soundcard.h soundcard.h
config_cache lcms lcms.h
use x86 && config_cache truetype freetype:FT_Init_FreeType
strip-flags
use lcms && append-flags -I"${ROOT}"/usr/include/lcms
# $(use_enable amd64 win64)
econf \
CC=$(tc-getCC) \
--sysconfdir=/etc/wine \
$(use_with ncurses curses) \
$(use_with opengl) \
$(use_with X x) \
$(use_enable debug trace) \
$(use_enable debug) \
|| die "configure failed"
emake -j1 depend || die "depend"
emake all || die "all"
}
src_install() {
make \
prefix="${D}"/usr \
bindir="${D}"/usr/bin \
datadir="${D}"/usr/share \
includedir="${D}"/usr/include/wine \
sysconfdir="${D}"/etc/wine \
mandir="${D}"/usr/share/man \
libdir="${D}"/usr/$(get_libdir) \
dlldir="${D}"/usr/$(get_libdir)/wine \
install || die
dodoc ANNOUNCE AUTHORS BUGS ChangeLog DEVELOPERS-HINTS README
}
pkg_postinst() {
einfo "~/.wine/config is now deprecated. For configuration either use"
einfo "winecfg or regedit HKCU\\Software\\Wine"
einfo "This package already applies the mouse-click fix for WoW as"
einfo "well as the glPolygonOffset reversal. May break other programs"
einfo "that have no issues with the standard WINE."
}
Code: Select all
--- libs/wine/mmap.c.old 2005-06-20 13:43:47.000000000 +0200
+++ libs/wine/mmap.c 2005-10-14 21:49:54.794346832 +0200
@@ -161,6 +161,26 @@
#endif /* (__svr4__ || __NetBSD__) && !MAP_TRYFIXED */
+static void *get_anon_mmap_null_address(size_t size)
+{
+ static int got_override = 0;
+ static void *low_alloc_ptr = NULL;
+ void * current_low_alloc_ptr;
+
+ if (!got_override)
+ {
+ low_alloc_ptr = (void*)0x10000000;
+ got_override = 1;
+ //printf("gaak!\n");
+ }
+
+ current_low_alloc_ptr = low_alloc_ptr;
+
+ if (low_alloc_ptr)
+ low_alloc_ptr += size;
+
+ return current_low_alloc_ptr;
+ }
/***********************************************************************
* wine_anon_mmap
@@ -209,6 +229,9 @@
return start;
#endif
}
+ if ((start == NULL) && !(flags & MAP_FIXED))
+ start = get_anon_mmap_null_address(size);
+
return mmap( start, size, prot, flags, fdzero, 0 );
#else
return (void *)-1;
--- loader/preloader.c.old 2005-06-02 12:30:08.000000000 +0200
+++ loader/preloader.c 2005-10-14 21:51:16.529921136 +0200
@@ -110,7 +110,7 @@
{
{ (void *)0x00000000, 0x00110000 }, /* DOS area */
{ (void *)0x80000000, 0x01000000 }, /* shared heap */
- { (void *)0x00110000, 0x1fef0000 }, /* PE exe range (may be set with WINEPRELOADRESERVE), defaults to 512mb */
+ { (void *)0x10000000, 0x00f00000 }, /* PE exe range (may be set with WINEPRELOADRESERVE), defaults to 512mb */
{ 0, 0 } /* end of list */
};
Code: Select all
--- dlls/opengl32/opengl_norm.c.old 2005-11-29 08:17:04.000000000 +0000
+++ dlls/opengl32/opengl_norm.c 2005-11-29 08:17:37.000000000 +0000
@@ -2367,7 +2367,7 @@
void WINAPI wine_glPolygonOffset( GLfloat factor, GLfloat units ) {
TRACE("(%f, %f)\n", factor, units );
ENTER_GL();
- glPolygonOffset( factor, units );
+ glPolygonOffset( -factor, units );
LEAVE_GL();
}