Game Development Community

Load testing the server (client side bots)

by TheMartian · in Torque Game Engine · 01/05/2005 (11:56 am) · 4 replies

Was curious if anyone had written a test app to make it easier to load test the torque server.

for example if I want to see what happens and profile the server as I try to reach, say, 200 players on a map, I dont own enough hardware to run 200 instances of the torque client
to even begin to simulate the load. (oh and 200 bots running around is not the same thing)
(you need 200 connections, with 200 client bots running around to at least approximate
a real load).

would be nice to have a client side bot that just does some simple things like runs in a circle.

still cant run 200 of them, so a client with no rendering, no sound, etc would make it so you could run more, probably not 200.

a final stage would be a client that creates 200 connections, each one a client bot that runs around. each connection/bot would be in its own thread sharing the map data making it more practical to run a lot of them on one machine (within reason, there would still be bandwidth issues obviously).

has anyone done any of this? (any of these steps, part of them for example?)

figured I might as well ask before I go ahead and write it all myself. might save some time, and it seems since the engine is multiplayer by default someone would hopefully have something started just for regular testing purposes. (if your not you should be otherwise youll realize too late that all your changes you made reduced the servers ability to handle as many players as the default version of the engine : )

#1
01/05/2005 (8:32 pm)
I have not seen what you are looking for, but I noticed you were talking about 200 players. Torque has a hardcoded limit of 128 players. This is probably not a particularly difficult thing to change, but no one has bothered to because 128 is already a lot of stress on one server. If you need more players than that in your game world, the standard method is to divide your game world up into zones (connected to eachother by some sort of portal) and use a different server for each zone. Most MMORPGs do this, and it has been done before with Torque. Someone is working on an MMORPG starter kit now that you might be interested in.
#2
01/06/2005 (6:44 am)
Yeah I understand the concept :) (ive worked on many MMO's) but I can tell you that several MMO's out there support way more then 128 players per map/server. You really have too to help reduce your hardware expenditures when you launch and as you grow.

But I dont want to sidetrack the thread, this isnt about acrhitecture for a MMO game, this is about being able to load test the server. even if you were only going to want 100 on a cpu you still need to be able to stress test your server to make sure you havent introduced anything that has hampered the servers ability to support that many players (or whatever number your shooting for).

I think the hard limit was removed as well so Im not sure its still at 128, but the point is whether anyone has already developed something like this. and I agree with you I havent seen anything like this either, yet.

Thats why I decided to ask, since maybe someone has started something like this and I could help them or ill just need to develop it myself if no one has a test application like this.
#3
01/06/2005 (7:16 am)
Other than a script based process generation scheme (probably linux would be more efficient, but that's just my lack of Windows scripting knowledge speaking) would be the most efficient, but I'm not aware of any (and I've looked) setups or resources for the automated regression/load testing your discussing (yet).

As you well know there are professional tools such as LoadRunner that are designed for this type of thing, but nothing exists at the Indy level that I have been able to find--and it's a very important need.

[hint]
Yet another little resource or even low price support application that IMO would be very useful for many projects.
[/hint]
#4
01/11/2005 (8:30 am)
Torque is not threadsafe. :) If you want to do some loadtesting like that I'd suggest lobotomizing the resource load and client side prediction code, and making the clients shove some random or prerecorded moves down the network connection. That way clients take minimal CPU time, letting you focus on the server.