WineHQ

Terraria

Application Details:

Version: 1.1.*
License: Retail
URL: http://www.terraria.org/
Votes: Marked as obsolete
Latest Rating: Silver
Latest Wine Version Tested: 1.7.0

Maintainers: About Maintainership

Free Download Official Server

Test Results

Old test results
The test results for this version are very old, and as such they may not represent the current state of Wine. Please consider submitting a new test report.
Selected Test Results

What works

Gameplay, Sound, Customisation of character and cursor, joining your own server hosted from TerrariaServer.exe (other players cannot join this)

What does not

Playing with other players

Workarounds

What was not tested

Nothing

Hardware tested

Graphics:

  • GPU:
  • Driver:

Additional Comments

Multiplayer was only tested with one Win7 PC and my own. No combination of working servers led to a successful multiplayer session.

selected in Test Results table below
Operating systemTest dateWine versionInstalls?Runs?Used
Workaround?
RatingSubmitter
CurrentFedora 18 x86_64Aug 14 20131.7.0Yes Yes Silveran anonymous user 
ShowUbuntu 13.04 "Raring" amd64 (+ variants like Kubuntu)Aug 03 20131.6Yes Yes Goldan anonymous user 
ShowUbuntu 13.04 "Raring" amd64 (+ variants like Kubuntu)Jul 27 20131.6Yes Yes GoldLuis Alvarado 
ShowLinux Mint 15 "Olivia"Jul 25 20131.6Yes Yes Silveran anonymous user 
ShowLinux Mint DebianApr 26 20131.5.28Yes Yes GoldJoshua 

Known Bugs

Bug # Description Status Resolution Other apps affected

Show all bugs

HowTo / Notes

Installation Guide (using winetricks)
Note 1: As WineHQ AppDB standards for test results do not allow platinum rating for applications that require using winetricks to install native dlls; if you submit a test result, please rate it gold and write in the description that winetricks was used.

Note 2: It is always recommended to run the latest and greatest version of wine, that said these steps should work with the most recent stable release of wine, 1.6.


Step 1: Install Microsoft .NET Framework 4.0 and Microsoft XNA Framework Redistributable 4.0

winetricks dotnet40
winetricks xna40


Step 2: Install Steam

winetricks --no-isolate steam


Step 3: Run Terraria

As part of the above installation of Steam it should install the latest updates for Steam and then ask you to log in. If it does not you will need to launch Steam and log in.  Once you log in, install Terraria and run it as you normally would. It should not prompt you to install XNA as it was installed in step 1 above.
Installation Guide (not using winetricks)

Step 1: Install Steam from the Website.

 msiexec /i SteamInstall.msi

For issues related to Steam visit it's wine page: http://appdb.winehq.org/objectManager.php?sClass=application&iId=1163

Step 2: Download and install Terraria. This will install XNA Redist as well.

Step 3: Exit Steam.

Step 4: Install .NET 4 from the Full Installer from: http://www.microsoft.com/download/en/details.aspx?id=17718

wine reg delete "HKLM\\Software\\Microsoft\\NET Framework Setup\\NDP\\v4" /f
wine dotNetFx40_Full_x86_x64.exe
wine reg add "HKLM\\Software\\Microsoft\\NET Framework Setup\\NDP\\v4\\Full" /v Install /t REG_DWORD /d 0001 /f

Step 5: Start steam and run Terraria

Known issues and fixes

Connecting to multiplayer servers:

Open a terminal and run the following command(replace $SERVER with the address of the multiplayer server): 
ssh -L 7777:$SERVER:7777 localhost -N
It'll open a local port forward. Let it keep running. Then, on Terraria, connect to 127.0.0.1:7777. It will fool Terraria into connecting locally and work around the "Requesting tile data..." problem.

Stuttering sound issue:

If you ran into the stuttering sound issue, all you need to do is install some missing audio codecs using winetricks. Run the following command:

winetricks dirac directmusic dmsynth dsound ffdshow icodecs l3codecx

Unhandled exception; Could not find a Direct3D device that supports the XNA Framework Reach profile:

If you run into this issue attempt running in a virtual desktop.  Run winecfg and in the graphics tab check Emulate a virtual desktop and then enter the size you desire.

Comments

The following comments are owned by whoever posted them. WineHQ is not responsible for what they say.

Multi-Player
by Andrew on Sunday October 6th 2013, 17:14
Trying the game again since the 1.2 patch dropped, and still unable to utilize multi-player. Has anyone had any success recently? Wine has improved considerably with dotnet40 support, but I still get the Loading Tile error when connecting to someone else, and the TerrariaServer.exe crashes when I try to host.

If anyone can successfully use multiplayer with 1.2, I'd love additional assistance.
RE: Multi-Player
by Ben on Sunday October 6th 2013, 22:44
Multiplayer with the default server is as far as I know...Not possible right now. However, you can use an alternative server called "TShock" (tshock.co/xf/) which is quite powerful and has the blessing of the developer of Terraria.

Check out this guide to get it working on the Mac (tshock.co/xf/index.php?threads/installing-tshock-on-mac-os-x-its-possible.2110/).

One thing I noticed is that If it hangs on the "Saving world. Momentary lag might result from this." message then it has crashed and the log file should say the exact issue. What worked for me was this command in Terminal:

ulimit -Hn 2048; ulimit -Sn 1024

And then everything worked great after that. Currently hosting a local server this way with a port mapping program called "Port Map" (www.codingmonkeys.de/portmap/) with a buddy. He plays on PC and I'm playing using my wine wrapper. Enjoy.
RE: Multi-Player
by Andrew on Monday October 7th 2013, 19:54
Thank you for the reply. I'll try out TShock when I'm home tomorrow night and see if it works. Any ideas on how to connect to someone else's game or a public game?
RE: Multi-Player
by Andrew on Thursday October 10th 2013, 14:55
Thank you again for your help with this. Haven't had someone try to connect yet, but I can run the TShock server and log into it myself. Much further along than I could get before.

Would still be nice to join someone else's game, but I'll make do. Again, thank you.
RE: Multi-Player
by Ben on Thursday October 10th 2013, 17:13
Glad you got it working. Works great for me, however I get a rather annoying 10 FPS drop every few minutes.

by lahtis on Monday February 18th 2013, 12:47
works fine. Im install the game using this video help www.youtube.com/watch?v=qD-H2UfxkO8
No sound
by Terseus on Saturday January 5th 2013, 5:55
After installing Terraria with .NET 4.0 and XNA, I have no sound and the music meter of Terraria is stuck at 0%.

Unfortunately the "Fixing non-working audio" instructions are not aplicable anymore since the used options does not exist in the current version of wine (1.5.21).

I also tried modifying the DirectSound registry keys DefaultSampleRate and DefaultBitsPerSample to 44100 and 16 respectively to no avail.

Any help would be appreciated.
RE: No sound
by Terseus on Saturday January 5th 2013, 7:36
I find the problem, it is related to the bug bugs.winehq.org/show_bug.cgi?id=31568

I solved it with adding the necessary class registry keys mentioned in the bug report.

If anyone have the same problem can reproduce the fix with the following commands:
1. wine reg add "HKLM\\Software\\Classes\\CLSID\\{3eda9b49-2085-498b-9bb2-39a6778493de}" /d "XNA Audio2 (manual)"
2. wine reg add "HKLM\\Software\\Classes\\CLSID\\{3eda9b49-2085-498b-9bb2-39a6778493de}\\InProcServer32" /d "C:\\windows\\system32\\XAudio2_6.dll"
3. wine reg add "HKLM\\Software\\Classes\\CLSID\\{3eda9b49-2085-498b-9bb2-39a6778493de}\\InProcServer32" /v "ThreadingModel" /t REG_SZ /d "Both"

Hope this help someone.
RE: No sound
by Joshua on Saturday April 20th 2013, 16:08
Thank you, I'm adding that bug to the list.
RE: No sound
by Bruno Finger on Wednesday April 17th 2013, 18:55
Try to install these codecs using winetricks, it worked perfeclty for me:

winetricks dirac directmusic dmsynth dsound ffdshow icodecs l3codecx
error
by Liam Dawe on Tuesday January 1st 2013, 9:33
I seem to get this error when trying to run it: pastebin.com/1bEf0uRX
RE: error
by Bruno Finger on Wednesday April 17th 2013, 18:56
Try the new installation guide posted, the one about winetricks.

Also, are you using a 64-bits wine prefix?
I have a workaround
by Peter on Tuesday October 2nd 2012, 11:41
I put it in a Text doucment because its long
Not working..
by Samuel on Saturday June 30th 2012, 19:31
Following the guide by Tom Geiger, and terraria gets going but it then pops up with this: pastebin.com/TQMW1rc2
Multiplayer issues?!
by Joshua on Tuesday December 27th 2011, 11:37
Multiplayer seems to work fine for me, minus the whole hosting a server. But there are ways around this, like using TShock ( mono compatible server ) -> github.com/TShock/TShock/downloads
RE: Multiplayer issues?!
by PLL on Tuesday December 27th 2011, 15:31
I can confirm this. Using latest wine, multiplayer works perfectly.

Creating a server gets stuck, even if you run terrariaserver.exe, it seems to be some issue with .NETv4
RE: Multiplayer issues?!
by Xpander on Wednesday December 28th 2011, 12:06
not working for me with latest wine.. or u are using git version?
1.3.35 still has the same "requesting tile data" bug.
RE: Multiplayer issues?!
by Joshua on Wednesday December 28th 2011, 13:21
you can not connect to any multiplayer servers?
RE: Multiplayer issues?!
by Xpander on Wednesday December 28th 2011, 13:43
can only into my own. via localhost.
RE: Multiplayer issues?!
by Joshua on Wednesday December 28th 2011, 16:07
just for kicks see if you can connect to 2dforts.dyndns.org port 7777
RE: Multiplayer issues?!
by Xpander on Wednesday December 28th 2011, 16:19
hmm i can... also can few more from www.terrariaonline-servers.com/ - strange thing is that i can get into those which sending world data slowly..or i see the % going up slowly.. most servers have it pretty much instantly and then stuck at requesting tile data...
RE: Multiplayer issues?!
by Joshua on Wednesday December 28th 2011, 17:36
try creating a new character and then connecting?
RE: Multiplayer issues?!
by Xpander on Wednesday December 28th 2011, 17:39
done that allready with no help.
i guess its something odd with my router or routing.
RE: Multiplayer issues?!
by Feilen on Wednesday December 28th 2011, 18:43
Woo! Found a (really sort of stupid) hack to get around it.

Since it works when it thinks it's connecting locally, just use

ssh -L localhost:7777:(server to connect to):7777 localhost

Then just connect to localhost in Terraria.
RE: Multiplayer issues?!
by Xpander on Thursday December 29th 2011, 2:37
lol genious :D works like a charm
RE: Multiplayer issues?!
by Andrew on Wednesday October 2nd 2013, 2:13
Can you clarify this a little bit? I'm not really family with server connection.

When I enter what you have listed I get "ssh: connect to host localhost port 22: Connection refused"
Problems
by Cory on Friday December 23rd 2011, 22:25
I followed the install instructions, but when I try to install .NET on the wrapper it says I already have an equal or better version so I can't. I checked, and it is there, but I still can't open Terraria... Help?
RE: Problems
by Pontus Carlsson on Saturday December 24th 2011, 4:30
You need to remove the register entry for .NET Framework 4 to be able to install it.

Also, a heads up to everyone; Make sure you use WINEARCH=win32, Terraria doesn't play nice with x86_64.
RE: Problems
by PLL on Monday December 26th 2011, 2:40
This happened to me when I was running default wine under 64bits.

recreate your prefix with

WINEARCH=win32 and follow the instructions.
Multiplayer strangely working!
by Pontus Carlsson on Monday December 19th 2011, 12:53
Right, so I most like everybody else encountered a stall on the "Reading data tiles.".

In my attempt to resolve this I first of all attempted to fix the NtQueryInformationThread call 16, however this isn't the issue behind it since it's merely just a `useless' information piece in XNA (Man can I express myself or what?).

Anyway! Now to the real discovery; I decided to attempt to debug the application, however. In winedbg the issue can't be reproduced!

So, somehow `magically' multiplayer works in winedbg;
winedbg "C:\Program Files\Terraria\Terraria.exe"
Then continue by pressing 'c' and enjoy!

PS. If anyone could clear out what exactly differs in execution between wine and winedbg I'd be glad to debug it and find the real issue.
RE: Multiplayer strangely working!
by Xpander on Tuesday December 20th 2011, 10:09
still doesnt work for me :(
and what u mean by pressing c? in terminal?
in terminal it just types c then..or u mean ctrl+c?
either way..it doesnt work for me...strange.
RE: Multiplayer strangely working!
by Chiitoo on Tuesday December 20th 2011, 12:46
It's a command for the debugger to (c)ontinue running the program.
Note the 'winedbg' command instead of 'wine'.

I don't know why I haven't tried winedbg myself, or did I... I think I did a good while ago, but can't really remember what happened.

Will try (again) when I have the time to!
RE: Multiplayer strangely working!
by Evan Goers on Tuesday December 20th 2011, 10:20
What happens if you run it in regular wine and use 'pkill -CONT terraria.exe' when it hangs?
RE: Multiplayer strangely working!
by Xpander on Tuesday December 20th 2011, 13:57
actually i got it working with winedbg command somehow.
but after 5 minutes i lost connection.. will test some more when i have time.
RE: Multiplayer strangely working!
by Evan Goers on Tuesday December 20th 2011, 20:31
Yes but what happens when you do what I said instead of using winedbg?

...
RE: Multiplayer strangely working!
by Xpander on Wednesday December 21st 2011, 4:08
nothing happens. still the same message "requesting tile data"
RE: Multiplayer strangely working!
by Pontus Carlsson on Thursday December 22nd 2011, 11:47
Yes, I seem to experience similar issues as well.

Ocasionally this works flawless, ocasionally it doesn't at all.
Last night for example it worked for 25 minutes, then I couldn't reconnect to that server at all anymore without retrieving the same horrible message over and over again. Which makes me think this might either be an internal condition in the TCP/IP stack of the Wine implementation or it could be a cache somewhere.

However I did find a reflector decompiled version of Terraria which might help sheed some light over the situation, or at least help find which call is causing this random happenstance.
RE: Multiplayer strangely working!
by Chiitoo on Wednesday December 21st 2011, 11:42
Tried this myself and no difference for me with either dedicated server or Host & Play.

How do you exactly run it?

You mention winedbg "C:\Program Files\Terraria\Terraria.exe" but at least for me, Terraria is at "steam\steamapps\common\terraria", and it cannot be started in any way other than via steam (even if I have steam running).

This is one of the reasons why I dislike steam. I mean strongly dislike. Borderline hate it...

But I digress.
That rant doesn't belong here. ^^;
RE: Multiplayer strangely working!
by Pontus Carlsson on Thursday December 22nd 2011, 11:51
As Steam doesn't work for me in Wine what so ever due to some hardware related jibberish I was forced to use the cracked steam_api.dll. Which in turn allows me to place Terraria wherever the hell I want more or less.

For those interested, here's my /usr/local/bin/terraria I use to start the game with;

WINEARCH=win32 winedbg "C:\Program Files\Terraria\Terraria.exe" /dev/null

Where c^M is Ctrl+v followed by a gentle touch on the enter button.
(Read gentle as "Strike the bloody thing with all power you possess.")
RE: Multiplayer strangely working!
by Chiitoo on Friday December 23rd 2011, 11:59
Ah yes, I was thinking this was the case.

I don't think for me it's even actually debugging Terraria.exe since it's a different process from Steam.exe which would obviously explain why my results differ.

Thanks for posting your findings!
RE: Multiplayer strangely working!
by Pontus Carlsson on Saturday December 24th 2011, 3:46
Steam.exe is a wrapper for the actual executables. You'll find the clean Terraria.exe inside of your Steam folder. I believe it's gamedata\common or something if I'm not misremembering myself.

I'd love to debug it properly myself, however winedbg is far to different from gdb for me to be able to utilize it.

Reflector doesn't seem to work on Wine either so can't decompile it without a Windows machine at hands.

Merry christmas!
RE: Multiplayer strangely working!
by Evan Goers on Saturday December 24th 2011, 3:52
Actually IIRC terraria.exe will inform you to run it from Steam.
RE: Multiplayer strangely working!
by Pontus Carlsson on Saturday December 24th 2011, 4:30
Nope, my friend runs Terraria this way to utilize AKM and there's no complaining there.
RE: Multiplayer strangely working!
by Pontus Carlsson on Saturday December 24th 2011, 4:37
I found a decompiled version of Terraria; github.com/Deathly/TerrariaAPI/tree/master/Terraria

This repos will probably be removed and reported soon so if someone intends to use this information either clone it or work fast.
Possibly the issue;
by Pontus Carlsson on Sunday December 25th 2011, 5:43
Right, I spent some time debugging it last night and here's what "Requesting Tile Data" get's stuck on;

0031:Call ntdll.wine_server_release_fd(000006a4,00000034) ret=7dada950
0031:Ret ntdll.wine_server_release_fd() retval=00000000 ret=7dada950
0031:Ret ws2_32.WSAConnect() retval=ffffffff ret=04600eac
0031:Call KERNEL32.GetLastError() ret=79162510
0031:Ret KERNEL32.GetLastError() retval=0000274d ret=79162510
0031:Call KERNEL32.FormatMessageW(00003200,00000000,0000274d,00000000,0a6fddd8,00000101,00000000) ret=046010ef
0031:Ret KERNEL32.FormatMessageW() retval=00000014 ret=046010ef
0031:Call KERNEL32.GetLastError() ret=79162510
0031:Ret KERNEL32.GetLastError() retval=0000274d ret=79162510
0031:Call KERNEL32.VirtualAlloc(0d856000,00010000,00001000,00000004) ret=79143409
0031:Ret KERNEL32.VirtualAlloc() retval=0d856000 ret=79143409
0031:Call KERNEL32.RaiseException(e0434352,00000001,00000005,0a6fdf8c) ret=791cac08
0009:Ret KERNEL32.WaitForDebugEvent() retval=00000001 ret=7ecf4ce5
0009:Call KERNEL32.GetThreadContext(000000d4,7ed258a0) ret=7ecf4aff
0009:Ret KERNEL32.GetThreadContext() retval=00000001 ret=7ecf4aff
0009:Call KERNEL32.SetThreadContext(000000d4,7ed258a0) ret=7ecf59e5
0009:Ret KERNEL32.SetThreadContext() retval=00000001 ret=7ecf59e5
0009:Call KERNEL32.ContinueDebugEvent(00000029,00000031,80010001) ret=7ecf4d84
0009:Ret KERNEL32.ContinueDebugEvent() retval=00000001 ret=7ecf4d84
0009:Call KERNEL32.WaitForDebugEvent(0032dde8,ffffffff) ret=7ecf4ce5
0031:Call KERNEL32.GetLastError() ret=791f5aa7
0031:Ret KERNEL32.GetLastError() retval=0000274d ret=791f5aa7
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=0000274d ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=0000274d ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=0000274d ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=7919bfe1
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=7919bfe1
0031:Call ntdll.RtlAllocateHeap(00110000,00000000,00000168) ret=7919bf7e
0031:Ret ntdll.RtlAllocateHeap() retval=001c1c78 ret=7919bf7e
0031:Call ntdll.RtlTryEnterCriticalSection(0018dc14) ret=79141d85
0031:Ret ntdll.RtlTryEnterCriticalSection() retval=00000001 ret=79141d85
0031:Call ntdll.RtlUnwind(0a6fe200,7919ca58,0a6fde30,00000000) ret=79141f30
0031: eax=00000000 ebx=00000000 ecx=01009220 edx=0a6fd938 esi=00000001 edi=0a6fde30 ebp=0a6fd7d8 esp=0a6fd7cc ds=002b es=002b fs=0063 gs=006b flags=00000246
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Call KERNEL32.GetLastError() ret=790703b8
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=790703b8
0031:Ret ntdll.RtlUnwind() retval=00000000 ret=79141f30
0031: eax=00000000 ebx=00000000 ecx=01009220 edx=0a6fd938 esi=00000001 edi=0a6fde30 ebp=0a6fd7d8 esp=0a6fd7cc ds=002b es=002b fs=0063 gs=006b flags=00000246
0031:Call KERNEL32.GetLastError() ret=7919c04f
0031:Ret KERNEL32.GetLastError() retval=00000000 ret=7919c04f
0031:Call ntdll.RtlFreeHeap(00110000,00000000,001c1c78) ret=7919c036
0031:Ret ntdll.RtlFreeHeap() retval=00000001 ret=7919c036
0031:Call KERNEL32.GetCurrentThreadId() ret=791cd92a
0031:Ret KERNEL32.GetCurrentThreadId() retval=00000031 ret=791cd92a
0031:Call ws2_32.WSAConnect(000006a4,0d740208,00000010,00000000,00000000,00000000,00000000) ret=04600eac
0031:Call ntdll.wine_server_handle_to_fd(000006a4,00000001,0a6fdee8,00000000) ret=7dada637
0031:Ret ntdll.wine_server_handle_to_fd() retval=00000000 ret=7dada637

If my eyes don't lie this is basically an infinte loop based on a condition that never changes more or less. WSAConnect returns error with errno 0x0000274d (WSAECONNREFUSED), however this seems slightly off since gaming works on LAN and not WAN. So I'd say this has something to do with routing, but that's just a guess.

The real code for this looks;
if ((!clientSock.locked && !disconnect) && clientSock.networkStream.DataAvailable)
{
clientSock.locked = true;
clientSock.networkStream.BeginRead(clientSock.readBuffer, 0,
clientSock.readBuffer.Length,
new AsyncCallback(clientSock.ClientReadCallBack),
clientSock.networkStream);
}

Where clientSock is an instance of the internal class ClientSock() (found here: raw.github.com/Deathly/TerrariaAPI/master/Terraria/ClientSock.cs)

This isn't a solution but hopefully it'll help someone else along the way.
Multiplayer support
by Renato Alves on Saturday December 10th 2011, 7:47
According to your report Multiplayer should be functional but I haven't been able to connect to any server. One exception was a TerrariaServer running on the same machine inside a virtual machine where the connection from the game was done on localhost:7777.

In external connections it displays the message "Requesting tile data" and just sits there indefinitely.

Does anyone experiences this? Suggestions to workaround this issue?
RE: Multiplayer support
by Chiitoo on Monday December 12th 2011, 12:28
Almost everyone seem to indeed rate it 'Gold' still, even though the Multiplayer part is not working, which makes it... not gold.

I haven't yet looked into it too much, but I did manage to connect to a server with the "relay" debug channel enabled. As one might guess, FPS would be too low to even think of actually doing anything (Around 1 or less frames per second).

Without "relay" it sits at "Requesting tile data" for me too, and what comes to hosting, the server application seems to run even worse than before (just a quick try: seems to stall when selecting a world, when in the past, I could actually set up the server and connect to it myself). Using "Host & Play" from the game menu, there is behaviour that I think was there not before, i.e., it seems to try to open the server application, but they fail.

Will try to look into it, but I doubt I can find out anything useful.
RE: Multiplayer support
by Xpander on Monday December 12th 2011, 14:01
what you mean by relay debug channel?
i have same problem cant connect to mp servers.
winedebug=+relay ? or something?
RE: Multiplayer support
by Chiitoo on Monday December 12th 2011, 14:23
Yes, exactly.

Just a while ago, I was testing it by redirecting the output into a file (makes the application run faster), but then I would not be able to get on the server again... weirdness! :S
RE: Multiplayer support
by Chiitoo on Tuesday December 20th 2011, 19:14
A little follow up on this: When I tested it again, I could confirm that it would only work when the debugging info went to the terminal, slowing the game down a lot and indeed if I redirect it to a file, thus speeding up the game, it just wont work every time I tried so it wasn't just one time.

Seems quite bizarre how slowing down the application allows something like that to work...
RE: Multiplayer support
by Renato Alves on Monday December 12th 2011, 18:15
The server is known to be buggy in Wine. It doesn't require Steam so you can launch it from the terminal directly. Use winecommand though or you won't be able to interact with it.
You can also download the standalone server from the official terraria website.

Following some of my tests I can now share a story of success, although I do not understand the reasons. If someone could reproduce it would be a good start to get some setup specific issues out of the way.

So I started by setting up a Terraria server in a machine running windows 7. If I connect to the machine directly I get the "Requesting tile data" message and nothing else. Still, the fact that I could connect to the virtualmachine in my previous test got me thinking... What if I can make the remote server look as if it was local to wine and the game? An hour later or so I had setup an SSH server on windows and I was forwarding the port (other tunneling software should work too). To my surprise the "Requesting tile data" message vanished in a second and I was in-game. The connection worked flawlessly as if I was playing locally, no lag or anything.

For SSH server I used an old version of CopSSH that you can still find for free in the web, newer versions are paid. Also tried freesshd but couldn't get it to run as it always complained that I didn't have admin rights even when running as admin (windows 7).

This was all with wine 1.3.34 and the normal install procedure.

Obviously this won't work for most servers as you are not allowed to create tunnels, but it should provide a good starting point to understand why does the game work if the connection is made to localhost but doesn't if done directly to a remote host.

Let me know how it goes for you.
RE: Multiplayer support
by Renato Alves on Monday December 12th 2011, 18:16
I meant wineconsole not winecommand.
RE: Multiplayer support
by Xpander on Thursday December 15th 2011, 18:19
i tested through hamachi. friend of mine hosted a server and we were in hamachi with direct tunnel and i was trying to connect but the same issue "requesting tile data" then i downloaded standalone server from the webpage..and started my server. i could join into my own via localhost or 127.0.0.1 but not with my hamachi ip or with my public ip.
if i joined with hamachi ip r public ip the server just crashed. or if someone else tryed to connect my server, the server crashed after message "someone connected..."
no further ideas
RE: Multiplayer support
by David Kowis on Friday October 11th 2013, 16:36
You can do ssh tunneling.

ssh localhost -L 7777:destinationserver:7777

Worked great for me :) It's an odd thing to work around, but this worked stupidly easy.
Back