How Do Blockland Servers Work?

Author Topic: How Do Blockland Servers Work?  (Read 1527 times)

I don't know how networking works too much when it comes to video games. I understand there are packets and those packets tell clients what is happening and stuff like that but what's the whole client and server side thing about?
People say the Blockland servers are entirely server sided (except for maybe bricks since you can save them) but then this thread here http://forum.blockland.us/index.php?topic=236549.0 states how a user created a hack that runs C++ code in the game and the hack has an Aimbot, Wall Hack, Health Bar and some type of freezing thin etc. How does this work? Is it because this data gets sent to clients or is it because C++ code is running and not TorqueScript? What things in Blockland are server sided and what are client sided?

(Please don't reply harsh or like a know it all, I obviously know that I don't know so there's no new to be rude about it)
« Last Edit: July 14, 2013, 04:43:48 PM by Altiris »

You can freeze because the client sends its next move to the server, and the server processed it. If no move is sent nothing happens.

Aimbot

The client uses its own aiming vector and the positions of nearby players sent from the server (used for rendering and client-sided collision, for example), then does a few mathematical operations based on those two factors and sends an aiming vector update to the server.

Wall Hack, Health Bar

The client renders information like player positions and its own health onto the screen every frame.

some type of freezing thin

This is possible due to the way TGE's networking works. It's based off Q3A's networking, where the server only updates your player once it receives an update from your client. The client can simply not send any updates to stay in place.

The client uses its own aiming vector and the positions of nearby players sent from the server (used for rendering and client-sided collision, for example), then does a few mathematical operations based on those two factors and sends an aiming vector update to the server.
do you know if it also includes the projectile's speed in its calculations?

The client starts by sending packets that it wants to join, and the server replies back authentication takes place. The server starts sending datablock info. Ghosting involves receiving brick positions, colors. The served also tells the client the positions and velocities of players and vehicles at a rate of 32 updates per second with the default setting. The client will predict where these objects will be when the frame is redrawn (interpolation) until it receives an update.


Although access to player positions through the scripting engine has been blocked, the data still exists in memory and can be read by injection using another program. The injection program also functions as an aimbot that someone himself programmed.

If you want any further details, just ask.

do you know if it also includes the projectile's speed in its calculations?
no, I don't think there would be any way of detecting a weapon's projectile speed client sidedly

no, I don't think there would be any way of detecting a weapon's projectile speed client sidedly
Through the scripting engine, it is definitely possible, but it's not the easiest. In terms of using injection, that's a trivial thing.

Ya now that i think about it, you could figure out the speed if the projectile was fired once by you

Also note that all the servers send info to another server, which is the master server. That master server contains little info; including the host name, server name, players, amount of bricks, etc. basically everything you see on the master server list.

I simply think of it as the .exe file preventing code from being run.
(Is this true?)

I simply think of it as the .exe file preventing code from being run.
(Is this true?)
wat

So I understand how everything works now but now what's the server/client sided thing mean now? Is it similar to Minecraft where both people need to have such data in order to see something where as in Blockland only the host has to have such data and then the other players wil download and then see it too? I'm getting confused because I understand the server also needs to send information to the client otherwise the client has no idea what's going on, but then is what I stated above what classifys a server being server/client sided?

Why the hell is player health stored on the client?

So I understand how everything works now but now what's the server/client sided thing mean now? Is it similar to Minecraft where both people need to have such data in order to see something where as in Blockland only the host has to have such data and then the other players wil download and then see it too? I'm getting confused because I understand the server also needs to send information to the client otherwise the client has no idea what's going on, but then is what I stated above what classifys a server being server/client sided?
The client is configured to receive certain types of information from the server. This includes the object updates in-game, the individual files sent for content, and Datablocks (which are specialized pieces of code). What the server cannot send to the client is raw code, which is why for example you can't send GUI's to clients from the server. This is in place because if you can send code directly to a client, then the server host can potentially send malicious code directly to each client that can mess up their installation of the game, steal information from their client, and other possibly unwanted 'services'.

Why the hell is player health stored on the client?
I'm pretty sure it is not. To my knowledge, it can only be estimated based on the damage effects sent to the client or through a server script (Like Iban's health bar).

This entire thread makes me feel so stupid.... All these big words and technical jargon, my head's gonna implode.