Game Development Community

General 'Release Phase' question with my needs

by Nathan Huffman · in General Discussion · 05/07/2006 (2:45 am) · 7 replies

Hey,

My current project loads a mission in the 'background' of the main login GUI. Also, my game is MMO.

Well, based on how Torque is made (the major influence of server/client), I just realized that I'm going to /have/ to give my 'client' "server files/capability" in order to display those missions in the background.

Or do I?

Does anyone know how I can work around this? I don't want 'server files' on the client. (for many reasons, including discouragment of 'private server' creation)

Thanks.

#1
05/07/2006 (3:31 am)
Generally in MMOS your clients do have their "levels" on the clients side, the graphics, layouts, maps of the landscape, dungeons, are all client side

What you keep server side are things like the players stats, inventory, equipment, the monsters, their stats, the status of the player the and monsters (health and position) and you pass that down to the client when asked, but you *NEVER* trust the client when they say they do something

(For example, client says "I hit for 10000 damage with my sword of WTFBBQ L33TNESS" - you check DB, see he has no such item and say "No you don't... client disconnected from server")

In this way you keep the monsters stats, position and what it's doing server side. The client already has the models of that monster as well as animations and so on.

In the same way, the client has the levels, animations, particle effects, models of players, pictures of items and so on...

From there, I imagine in Torque you'd ask the server "Where am I?"
Server says you are at X and Y on map Q... You load map Q from the local disk, place the player at X and Y then ask... "What do I see?"
Server tells you and so on, and so forth

The user can't easily make a private server because they are missing the code that handles the important stuff, the intelligence. Using the client without a server would have no monsters, no quests, no inventory control just a empty, dead world
#2
05/07/2006 (3:43 am)
Quote:
(For example, client says "I hit for 10000 damage with my sword of WTFBBQ L33TNESS" - you check DB, see he has no such item and say "No you don't... client disconnected from server")

This is not a good approach at all. The client should never tell the server what it does. The server tells the client what the client does, and the client shows it to you, the player. In the above approach one could easily cheat.

Basically:

Client says: "Swing my weapon!"
Server says: "You hit for monster for 14 damage with your sword."
#3
05/07/2006 (4:06 am)
Quote:This is not a good approach at all. The client should never tell the server what it does.

That's actually what I said/ment (I shouldn't have put in the "1000 damage" though, that was misleading sorry, however since my point was "don't trust the client" the server would have just not trusted the 1000 and rolled it's own damage :) )

Client sends "I cast spell ASSETID_8 on ENTITY_5" and the server determins the rest and returns results
#4
05/07/2006 (5:36 am)
You're still telling the server what entity you're casting your spell on, which might work for a RPG with targeting, but not for a FPS or the like.

A simple function to check if the entity is in range or visible could be made, I know - but I still think you're trusting the client too much.

In any case, I think we agree that: "Never trust the client" :)
#5
05/07/2006 (2:40 pm)
I don't think I was clear - at all. Thanks for the responce, however.

What I'm talking about is just the client connecting to a single player level as a 'background' for the main menu. I've constructed a level for the camera to fly around in the background of the login and character selection menus.

However, due to the mere nature of Torque, this means I must leave some 'map hosting capabilities' on the client's EXE.

I was wondering if there were any methods done of displaying a level without client/server connection. That way, when I release my client it doesn't need any 'host-ability' code.

Wish I was 1-up on terminology to make myself understood better. I can't seem to word it better than that at the moment :P
#6
05/07/2006 (3:22 pm)
I understand perfectly now!

I worked with this recently for our game, and there's a few things you should remember.

To my knowledge, there is no way to play a level without making a client/server connection, as Torque is built around this structure. You could modify it enough, but then again.. what's the point?

Remember, the Torque demo is freely avaiable to download so there's no point in making a game and thinking no one will replicate or hack it, if you're not changing how the core works (they can hack it no matter what, but adds time until it's hacked).

Edit: To summarize:

If you're using stock Torque for all your networking

Everyone will have access to your server logic anyway, via this site and the SDK.

If you're using your own networking version

Use stock Torque for the MainMenu, who cares if someone "hacks" it anyway?

Use your MMO enhanced version with different logic, for the gameservers.
#7
05/07/2006 (4:48 pm)
Good point, Stefan. I was thinking about something along the lines of that.

Thanks for the reply.