Maggi Posted June 15, 2011 Share Posted June 15, 2011 (edited) to mta developers: "Actions" model: CLIENT iteracts with server through actions: ACTION_FALL, ACTION_FALL_ON_GROUND, ACTION_BREAK_ARM(LEG) ACTION_TURN_HEAD, ACTION_DANCE, ACTION_VEH_TURN_LEFT(RIGHT), ACTION_THROW_GRENADE, ACTION_SWIM... etc... My idea is to change synchronization model from SYNC_MY_WORLD to ACTION model. Benefits: 1) no speedhacks, because client have to describe his actions. Ex: player entered server, spawned in the field. now he starts moving (ACTION_WALK+walk_data), looks at sky (ACTION_TURN_HEAD+turn_head_data), runs (ACTION_RUN+run_data(vector+speed)), enters vehicle, player is driving vehicle: press left button (ACTION_DRIVE_VEH_TURN_LEFT+data)... etc... CORE physics is on client side (as usual), server side only takes: [action+action_data] 2) Good for anticheats, because client have to describe his actions (what has been done!), there is no stupid synchronization. 3) Possibility to have multiple Element Syncers - if player uses GM while ramming another player or element, server sends action data to all streamed players. So, if 3 clients says that vehicle is damaged 30 units and 1 client says that vehicle damage is 0 units, then he maybe lies or there is lags or smth else, and then server accepts 30 units damage (there is also trusted level param desribed below) What will happened if player has no streamed players nearby? We can use special technique: streaming imitation (will be described below) CLIENT structure: client_ID, performance_value (fast computers have higher values), task_count (how many players are streamed in the client client, including virtually streamed clients), trusted_level (new players has trusted level = 1, admins and other good players have trusted level 1000). The main idea, as you understood is to make physics calculation at trusted clients... The main problem is how to make virtual streaming? PS: sorry for my bad english Edited June 15, 2011 by Guest Link to comment
Dark Dragon Posted June 15, 2011 Share Posted June 15, 2011 currently mta relies on key sync and position sync + interpolation, task sync will be part of a major rework aimed for mta 2.0 (source) other games handle synchronization differently as they have better room to work with. ideally the server would know the players environment but unfortunately its impossible to stream the entire gta world at once so mta implements syncers. eventually the same two game should generate the same reaction when there's the same action in both. we all know that this might not work perfectly but it does pretty well in our case. mta chooses which player you can mostly rely on in any situation based on their distance to the element, their ping and probably also on the players fps (unconfirmed). the implementation of server sided physics is also planned for the future but won't make it in the game any time soon (source) of course relying on what the players client says has the risk of cheating in it but there are already couple of methods to reduce the chance to cheat to a minimum. Link to comment
Recommended Posts