Я работаю с Java, и я делаю игру. В этой игре реальное время - очень важная часть. По этой причине я пытаюсь получить реальное время, используя Ntp.Как получить реальное время для игры
Что я нашел в Интернете, это код.
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);
}
}
Моя проблема заключается в том, что с использованием этого система все еще получает System.currentMillis(); потому что он на самом деле печатает вам время, когда ваш локальный компьютер получил сообщение о времени. По этой причине, если игрок изменит свое рабочее время на будущее, время игры также изменится.
Если кто-то может помочь, чтобы иметь реальное время, я был бы очень благодарен. P.S. У меня нет сервера, моя игра будет играть на Kongregate, и данные будут на компьютере игроков.
Заранее спасибо.
запустить собственные часы внутри. сравните время, которое вы ДОЛЖНЫ получать vs. время, которое вы на самом деле получили, и если есть огромная разница, позвоните в shenaningans. –
'getReturnTime' не дает вам времени на сервере, которое дает вам * время, в которое был отправлен пакет сообщений на локальном компьютере. * (Согласно javadoc). –
Это методы 'getDelay()' и 'getOffset()'? – Arkadiy