Ich arbeite mit Java und ich mache ein Spiel. In diesem Spiel ist die Echtzeit sehr wichtig. Aus diesem Grund versuche ich die Echtzeit mit Ntp zu bekommen.Wie bekomme ich Echtzeit für ein Spiel
Was ich im Web gefunden habe, ist dieser Code.
import java.net.InetAddress;
import java.util.Date;
import org.apache.commons.net.ntp.NTPUDPClient;
import org.apache.commons.net.ntp.TimeInfo;
public class test{
public static void main(String args[]) throws Exception{
String TIME_SERVER = "time-a.nist.gov";
NTPUDPClient timeClient = new NTPUDPClient();
InetAddress inetAddress = InetAddress.getByName(TIME_SERVER);
TimeInfo timeInfo = timeClient.getTime(inetAddress);
long returnTime = timeInfo.getReturnTime();
Date time = new Date(returnTime);
System.out.println("Time from " + TIME_SERVER + ": " + time);
}
}
Mein Problem ist, dass diese verwendet wird, wird das System immer noch die System.currentMillis bekommen(); weil es tatsächlich die Zeit ausdruckt, zu der Ihr lokaler Computer die Zeitnachricht erhalten hat. Aus diesem Grund ändert sich die Spielzeit, wenn der Spieler seine Desktop-Zeit in die Zukunft ändert.
Wenn jemand helfen könnte, um die Echtzeit zu haben, wäre ich sehr dankbar. P.S. Ich habe keinen Server, mein Spiel wird auf Kongregate spielen und die Daten werden auf dem Computer des Spielers sein.
Vielen Dank im Voraus.
intern Ihre eigene Uhr laufen. vergleiche die Zeiten, in denen du vs. die Zeiten, die du tatsächlich hast, und wenn es einen großen Unterschied gibt, rufe Shenaningans an. –
'getReturnTime' gibt Ihnen nicht die Zeit des Servers, den es Ihnen gibt * die Zeit, zu der das Nachrichtenpaket von der lokalen Maschine empfangen wurde. * (Gemäß dem Javadoc). –
Ist das was die 'getDelay()' und 'getOffset()' Methoden sind? – Arkadiy