The Linux Thread
Since no one's started a Linux thread yet... I'll begin.
So I tested the installation on an up to date Debian Sid/Experimental with wine version wine-1.1.11-206-gad432bf (latest experimental package) and I was able to play Tribes 2 normally using the -nologin option but using the -online option the game will freeze upon the Garage Games logo.
If any developers want me to do further testing just reply to this thread, hopefully others will join in
So I tested the installation on an up to date Debian Sid/Experimental with wine version wine-1.1.11-206-gad432bf (latest experimental package) and I was able to play Tribes 2 normally using the -nologin option but using the -online option the game will freeze upon the Garage Games logo.
If any developers want me to do further testing just reply to this thread, hopefully others will join in
Comments
i already had a working tribes install.
i tried to install the patch w/ cxgames, but it wouldnt go..
i opened the patch exe w/ the archive manager and unzipped it into the /gamedata folder.
i can still run tribes 2 from my launcher but i dont see anything differnt.
this is just as the Known issues thread says...
The T2 script system networking objects, for some reason have problems running under Wine. It's very likely a problem with an imperfect reimplementation of the WinSock API.
In the process of running the game online in client mode, the game almost immediately connects to this website to find the location of the authentication server. Account creation requires several network transfers with the authentication server. Once you log in, the listing code, and the old game IRC code initialize.
All of these are points of failure in Wine.
Turkeh is working on shifting those networking operations to the Ruby interpreter, thus avoiding the game specific networking glitches. Until that's complete, there isn't very much you can do, short of stripping out all of the networking enabled scripts.
If we can get these crashes resolved by moving network operations to the Ruby interpreter, we will go that route.
I wish I knew what to fix, I'd like to run a server off my linux box.
#!/bin/sh
export COMPAT=home/user/Download/Loki_Compat
export LD_PRELOAD=/$COMPAT/libstdc++-3-libc6.2-2-2.10.0.so:/$COMPAT/libSDL-1.2.so.0
cd /home/user/.loki/tribes2/base
for foo in `find . -name "*.dso"`; do rm -f $foo; done
/usr/local/games/tribes2/tribes2.dynamic -nologin
Here's my script I was using to load it up. I hope this helps. I think. I had to install smpeg and SDL. Post back here if the game fires up for you.
The only problem I have now is that when I started the server (./tribes2d -dedicated) it starts...then exits out a little bit later with no other messages. According to the FAQ this means it can't reach the authentication servers. I made sure the port was open (28000), but it still errors out.
I'm assuming this is all because the official auth servers are down then. Anyone have suggestions for how to bypass this?
(Remember, it's a Linux Dedicated server, not a client or a windows server:) )
Thanks
Doing a program trace of system calls on linux I found that the program got trapped in some sort of infinite loop. It kept calling the recv() function winsock over and over again with the exact same parameters. This may indicate that its a problem with WINE's winsock code, but I'm hesitant to jump to that conclusion that when all sorts of other network programs I use on WINE function just fine. Including network intensive programs like firefox, uTorrent and other multiplayer games.
I'll keep digging and see what I can find out.
imho, but i'm putting in another vote for this, since; yay, native, known good, working, client.
-m
It's great the client will work at least under wine. Not that desireable but I guess it's better than nothing. How are you supposed to run a dedicated server like this?
Speaking of which, with some tinkering, I got the client to work in Wine. Unfortunately, the client tends to lock up my box occasionally while playing, so I can't test it extensively. What I DID test, however, was server listing and in-game IRC, both of which work.
Otherwise, see The Development Roadmap
me having to reboot all the time, and found that now I've got past the freezing
intro screen, the local account details are not being found.
The log in screen doesn't recognise that any local accounts exist: in the
dropdown thing where my account should be it's just "retrieve account" greyed
out. If I enter my details manually it prompts me to download the account
details from the server (which obviously we're trying to avoid as Wine doesn't
like it)
I tried hard coding my account name into the return value of
certstore_listAccounts in t2csri/certstore.rb, which had no effect at all. That
function seems to be called from LoginEditMenu::populate (in loginScreen.cs), so
I tried setting the $accountList variable manually in that function to my
accountname, and that *did* make it show up. But it wouldn't let me log in
presumably as it hadn't loaded in the keys and certificates.
My guess is the Ruby interpretor isn't being invoked correctly, but I'm not
receiving any errors about it.
I should also mention that I'm using the copy I installed on Windows and play
through Windows, and on Windows this exact setup does work as expected (ie it
lets me log in but doesn't retrieve the server list).
I'm using wine-1.1.14 on OpenSuse 11.1 x64.
if anyone else wants to test it and see if you have more luck, I've (hopefully)
attached T2csri.vl2 which needs to go under GameData/base (but make sure to
back up the one already there first ;p)
Setting the account name won't magically permit login, since the login process just does some processing on the certificates locally.
To make it clearer: I'm just mounting the NTFS drive and Wine-ing the t2 executable. The public.store and private.store are there and are perfectly recognised and parsed and allow login under Windows but when running under Wine, Tribes is oblivious to their existence it seems.
My point about setting account names was that... well, as far as I can tell, Tribes (the cs login screen script) asks Ruby for the list of accounts. Hard coding an account name within the Ruby has no effect, but hard coding it within the cs script does. That seems pretty significant...
** EDIT: Ah, interestingly I've just tried on a fresh install on a Ubuntu VM and there does not seem to be the same issue :-\ but it does UE right after logging in.
I'll keep investigating.
Try: It should put out 4.
Oh... and if any advanced Linux C/C++ programmer wants to help me out with a Loki port, I'm sure something could be hacked together for dedicated server support (It just needs SHA1, big integer base conversion, and big integer modular exponentiation). I'm just not sufficiently familiar with shared library injection in Linux.
For what it's worth: it looks like the Wine freezing issue is caused by trying to pull the whatismyipaddress.php page. I went back to a clean T2csri.vl2, the only change I made was to set $IPv4::InetAddress = "xxx.xxx.xxx.xxx"; [obviously replaced with my ip address] at the top of the ipv4_getInetAddress function (in t2csri/ipv4.cs)... and the freezing stopped, but there's a bunch of other networking activity which seems to complete fine.
Unfortunately it UEs (twice) right after logging in. Which is probably a Wine thing as it's working under Windows.
Just do a and remove any ChatGui.cs.dso files
I did actually get it working but it's not elegant and I did have to disable the server browser. I found that the server fetching/querying did cause the Wine infinite loop thing, but not every time. And something related happens in the background periodically while in game which was causing random looking infinite loop freezes. I just disabled the autoexec/t2csri_list.cs file in the end.
I also ran into a problem with the account certificate being thought to be invalid when I tried joining a server. I didn't test this thoroughly but it looked like when T2 got hold of the cert it had been cut to the first 1000 characters (mine is roughly 1200 or 1300). I just hard coded the line from my public.store in the script, and it was happy with that.
if anyone is interested in exactly what needs doing to get a playable copy running leave a message here and I'll post step by step instructions.