Creating an Authoritative Client and Server

Hello guys,
Thank you for your time to come and read my question!
I’m Brazilian, sorry for my English!
I’m studying to be able to create a multiplayer war game between tanks, robots … cars, I’m still not thinking about how the final project will be but I need to create the basic mechanics for this type of game.
I currently work with web development but my very passion is specifically multiplayer games.
My experience with games was the collaboration in projects of Server Emulators for Lineage2 / PB … among others.
I can say that I master programming languages ​​… logic etc.

I realized that: making servers for games with the client running is one thing, now creating the client and the server is being painful for me because I can not trust everything that the client sends.

I definitely can not:
1 - Receive the xyz position of a player and only broadcast to others.
2 - Accept that a hit on an object was successful.

To solve the problem of item 1, through studies I concluded that I need to make the server authoritarian, but I can not get a player to send a command and wait a latency to move, so I’ll use the forecasting technique Of the entity movements, so I can make the move on time and then the server would send me a package to check the position and a possible reconciliation.

Do I need to make the player send the time of each event so I can also solve the correct item 2? Because I need to check if at any given moment the player who received the hit was in the place of the time it was hit … because we have to know that each entity that the player is seeing may be 100ms in the past due to the delay of sending Of data …

Now one thing I can not conclude is what time is it? Time.deltatime?
This time should be initialized by who, server or client? What if the customer changed the date of his watch or something? How do I compare Time.deltatime to two players if they can be divergent …

Thanks if anyone could refer me or even be kind enough to show me the light at the end of the tunnel …

I already have functional gameserver to receive udp / tcp data and I also created a library in C # that connects to my gameserver …

Please try Photon for developing multiplayer game. You will get

Here you get methods PhotonNetwork.time (Time synched with server) and PhotonNetwork.GetPing (Round trip time for photon serever ) .

OnPhotonSerializeView is there for synchronization .