如何获得游戏的实时时间

 李磊g114826 发布于 2022-12-04 03:04

我正在使用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(); 因为它实际上会打印出本地机器获取时间消息的时间.因此,如果玩家将桌面时间改为未来,游戏时间也会发生变化.

如果有人可以帮忙以获得实时我会非常感激.PS我没有服务器,我的游戏将在Kongregate上播放,数据将在播放器计算机上.

提前致谢.

1 个回答
  • 只需在程序开始时通过NTP获取一次,然后使用System.nanoTime()获取之后的相对时间.它完全是单调的,不会通过设置系统时间来改变.

    2022-12-11 03:12 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有