Hi I am currently in the early stages of developing a 2D mobile game in C++ using cocos2d-x and box2d to handle the physics simulation. It is meant to run on multiple platforms and eventually I am planning on adding a mobile cross-platform multiplayer aspect which I would like to also be able to run over the mobile network. Looking ahead I understand that due to float handling and device architecture differences I would get differences in the physics simulation between devices. The gameplay is turn-based ( 1v1 )and asynchronous( players should be able to take their turn at any point in time regardless of how long ago their opponent moved ).
Each turn has two phases in which
first: the player will first move all of his characters and
next: be able to attack( phase where the physics simulation will take place ).
Ideally I would be able to replay the events which occur in one simulation onto the other device.
What is the best way to set up networking architecture in order to maintain the same physics simulation ( or results ) on both devices?
Should I run the simulation on one device and then send the resulting information to the other? Or should I set up a server which could handle user input, simulate the physics and then send that to both devices?
From what I understand about synching physics in games is usually people fix the TimeStep and GameTicks across devices however this is more for realtime synchronization correct? Would this be useful for my project since the physics does not have to occur simultaneously ( just needs the same output )? Are there better techniques I should look into?
I am new to networking so any information one any viable techniques could be useful although I have done some research on the subject. I would also consider writing my own physics to bypass issues with network integration.