A good server/client setup doesn't trust the client as far as it can throw them. Clients should send input and render visuals/audio. Server should be authoritative for everything else.
I see the value in this but doesnt that put alot of load on the server?
Basically, the client should tell the server "player clicked on this object while at its current location", and the server will be able to determine "that's standing in front of a control lever, so now they've opened the bay doors, which I will update the game state with and notify all my clients and AI/physics routines".
So 3d mesh collisions are handled server side? I can understand not being able to trust the client with saying what direction it was facing cause then you end up with CS snap shooting shenannigans, but this seems a little odd to be completely server side. Could you elaborate on the physics portion of this?
As a side note once i get a firm understanding of all of this i plan to post a conceptual template of where each piece of behavior takes place and the general structure/routine of these engines.
Graphics(shaders, cameras, animation (which can overlap with physic...) ) Physics Input Networking AI Content/resource management (level loading, scenegraphs, segment-culling or segment-pausing, etc)
This is more along the lines of what im looking for, thank you.
So what would you like more specific information on?
As far as multiplayer games are concerned, i know some of these functions are offloaded from the client and placed on the server. I know its a balancing act of just how much do you place on the server, but any guidelines would be helpful.
This is what i know so far: Client Side- User Input, Graphics, Physics, Resource management, and of course some aspects of networking.
Server side is a little more enigmatic, aside from managing connections, what does the server handle? I imagine AI, keeping track of locations, and informing clients of what they can see?
I am a computer science major, and very familiar with C#. The idea here is to create an engine from scratch. Im just not sure where to begin. I have XNA and OpenTK which are great to keep from reinventing the boilerplate but as far as how to structure an engine has proven a bit enigmatic.
Thanks for your help so far.