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.
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.
#2
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."
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
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
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
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" :)
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
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
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
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.
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
Thanks for the reply.
05/07/2006 (4:48 pm)
Good point, Stefan. I was thinking about something along the lines of that.Thanks for the reply.
Torque Owner Chris Schirlinger
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