Game Development Community

Dedicated Server...

by Kane Hart · in Torque Game Engine Advanced · 07/09/2005 (8:39 pm) · 18 replies

We can't run the dedicated server load the terrain.. Apprently you can't do dedicated server? Anyone have a fix usally I would say no problem but when I got 2 doller video cards it's not going to run a server well in game mode...

Anyone know of this I did use search no luck of fixes..

#1
07/09/2005 (10:56 pm)
More specifics, such as console log output, and the exact command you are using to launch the server would be required before help can really be offered.
#2
07/10/2005 (1:14 am)
Ok here is more infomation.

AshbrookPrime.exe -mod abp.client -dedicated -mission abp.client/data/missions/simple.mis

(And for the record no the simple.mis is not the mission that comes with water demo. This is a terrain and texture I created in terragen and converted over. Yes it does work in single player mode. Loads up just fine and I can run around on the terrain and such)

*** LOADING MISSION: abp.client/data/missions/simple.mis
*** Stage 1 load
*** Stage 2 load
Executing abp.client/data/missions/simple.mis.
AtlasResource::loaderThread - 16 iterations before death.

And that is where the Dedicated Server instance crashs out.

The above mission / terrain / ect works 100% in single player mode or if I start the game with the multiplayer box checked and someone else connects up.

Any ideas why it would load and work one way as opposed to the other?

-Tom
#3
07/10/2005 (2:02 am)
I take it from watching the client load and reading the log outputs that after the AtlasResource LoaderThread is done it should eather precache the instance or do a MissionCleanup.
#4
07/11/2005 (12:27 am)
No ones helped really on this I would like to bump this topic..
#5
07/11/2005 (4:17 am)
I'm going to test this out later this week, I'll post with whatever I find.
#6
07/11/2005 (7:34 am)
I'm running a dedicated TSE server and it's been up for a couple weeks now, so I know it works. Not sure whats happening your way.
#7
07/11/2005 (7:50 am)
Are your running the server with a Atlas terrain block though.

I have tried with 10 different Atlas terrain files and every one of them crashs upon caching of the terrain on the server side. (If the server is doing caching of the terrain or whatever function is right after that.

I have also tried three clean builds of the latest TSE source and they all do the same thing. So I thought ok well maybe it is my scripts causeing the problem. So I did a line by line comparsion and recheck of all the script files with a stock 1.3 Torque server. 90% of everything matchs except where I had to add in the materials.cs , shaader.cs and afew other lines to get the Altas Terrain to load.

The issue wouldnt bother me as much if I knew it was a bad terrain file or something but it makes zero sense that the terrain will load in a single and multiplayer game as long as its not run in a dedicated server mode.
#8
07/13/2005 (9:17 am)
This is happening on our side as well.. same place..
#9
07/13/2005 (10:29 am)
I didnt think I was the only one having this problem. There has to be some issue with the Atlas terrain and the way it is loaded in a dedicated server mode.

Because if you switch to the stock TGE Terrain mode everything works ok.

Maybe Ben will hop in and take a look and see if there might be some issue with the way it is handleing the terrain.
#10
07/13/2005 (10:37 am)
Anyone know whats up that made it.. they saud works.
#11
07/13/2005 (5:21 pm)
Callstack of the crash?
#12
07/13/2005 (5:55 pm)
I will try and get you a debug of crash log. First I have to download the Oct extras release so I can compile the engine in debug mode. (Useing VC6)
#13
07/13/2005 (11:26 pm)
Ok after getting a debug build of TSE made and trying to run a dedicated server I have found the following.

After it loads the AtlasResource::loaderThread It then attempts to get a GFX Device. That is the reasion the dedicated server is creasting. It is returning

Fatal: (c:\tsecvs\tse\engine\gfx\gfxdevice.cpp @ 29) Attempting to get invalid GFX device.

For some reasion it never showed on the release build of TSE only the debug build.

I just wanted to note that this machine runs TSE fine in non-dedicated mode.
#14
07/13/2005 (11:28 pm)
Sorry attached Callstack of the crash as asked.

GFXDevice::get() line 29 + 90 bytes
AtlasResourceInfo::prepare() line 200 + 5 bytes
AtlasResource::sync() line 327
AtlasResource::precache() line 863 + 17 bytes
AtlasResource::loadServerInfo(AtlasInstance * 0x01925234) line 822
AtlasInstance::onAdd() line 119
SimObject::registerObject() line 341 + 13 bytes
CodeBlock::exec(unsigned int 211, const char * 0x019016b8, Namespace * 0x00000000, unsigned int 0, const char * * 0x00000000, unsigned char 0, const char * 0x00000000) line 600 + 29 bytes
CodeBlock::compileExec(const char * 0x019016b8, const char * 0x01921e84, unsigned char 0) line 523
cexec(SimObject * 0x00000000, int 2, const char * * 0x00de0bc8) line 957
CodeBlock::exec(unsigned int 288, const char * 0x018b97b0, Namespace * 0x017f4970, unsigned int 0, const char * * 0x00de0bc8, unsigned char 0, const char * 0x00000000) line 1162 + 23 bytes
CodeBlock::exec(unsigned int 189, const char * 0x018b8fd8, Namespace * 0x017f4970, unsigned int 2, const char * * 0x00de0bc8, unsigned char 0, const char * 0x00000000) line 1088
CodeBlock::exec(unsigned int 245, const char * 0x018b8c2c, Namespace * 0x017f4970, unsigned int 2, const char * * 0x00de0bc8, unsigned char 0, const char * 0x00000000) line 1088
CodeBlock::exec(unsigned int 121, const char * 0x018b7dbc, Namespace * 0x017f4970, unsigned int 0, const char * * 0x00de0bc8, unsigned char 0, const char * 0x00000000) line 1088
CodeBlock::exec(unsigned int 421, const char * 0x0184e818, Namespace * 0x01473bec, unsigned int 0, const char * * 0x00de0bc8, unsigned char 0, const char * 0x018b7e78) line 1088
CodeBlock::exec(unsigned int 1326, const char * 0x00000000, Namespace * 0x00000000, unsigned int 0, const char * * 0x00000000, unsigned char 0, const char * 0x00000000) line 1088
CodeBlock::compileExec(const char * 0x00000000, const char * 0x018a73dc, unsigned char 0) line 523
Con::evaluate(const char * 0x018a73dc, unsigned char 0, const char * 0x00000000) line 795
ceval(SimObject * 0x00000000, int 2, const char * * 0x0012d774) line 974 + 16 bytes
Namespace::Entry::execute(int 2, const char * * 0x0012d774, ExprEvalState * 0x00de8f20 class ExprEvalState gEvalState) line 850 + 22 bytes
Con::execute(int 2, const char * * 0x0012d774) line 820
Con::executef(int 2) line 879 + 16 bytes
initGame() line 378 + 19 bytes
DemoGame::main(int 6, const char * * 0x01360e90) line 457 + 5 bytes
run(int 6, const char * * 0x01360e90) line 840 + 26 bytes
main(int 6, const char * * 0x01360e90) line 918 + 13 bytes
mainCRTStartup() line 206 + 25 bytes
KERNEL32! 7c816d4f()
#15
07/14/2005 (1:06 am)
The work around for now is to initialize the canvas on your dedicated server. It won't be rendering anything so you can have a very shitty graphics card in it. The next Atlas update will have a fix for that. Or you can just add an if statement around GFX to avoid nastiness (ie, if(!GFX) return; or somesuch).
#16
07/14/2005 (6:47 am)
Thanks Ben.

Worked like a champ.
#17
07/14/2005 (10:00 am)
Nice works guys :)
#18
11/07/2006 (4:47 am)
Still present in MS4.