Windows游戏服务器缺少.NET3.5环境依赖而诱发的时间戳转换问题
1、什么是DateTimeOffset?什么是UtcNow?
关于DateTimeOffset和UtcNow详情可参考:https://www.cnblogs.com/redmoon/p/5104098.html
2、游戏业务异常表现
游戏业务在做update操作时,依赖本地时间转换的时间戳,但在实际运行中发现,本地环境运行游戏程序,时间戳生成的时间间隔是1-3ms,而在新服务器环境运行的时间间隔是15-20ms。如下图:
注:.NET Framework 3.5是微软推出的一款开发平台,许多老旧软件和游戏依赖于它来行。

测试代码用例C#:
using System;
using System.Threading;
namespace test
{
    internal static class Program
    {
        private static void Main(string[] args)
        {
            int i = 0;
            while (true)
            {
                Thread.Sleep(1);
                Console.WriteLine(new DateTimeOffset(DateTime.UtcNow).ToUnixTimeMilliseconds());
                if (i == 100)
                {
                    break;
                }
                i++;
            }
            Console.ReadLine();
        }
    }
}已经封装可执行exe程序: test.zip
test.zip
3、安装.NET3.5相关程序依赖
(1)打开服务器管理器:可以通过在开始菜单中搜索“服务器管理器”

(2)打开服务器管理器后,点击左侧的“仪表盘”--“添加角色和功能”,如下图所示

(3)弹出下图所示“添加角色和功能向导”

(4)一直点击“下一步”,直到“服务器角色”选项卡


(5)点击‘下一步’,“功能”选项卡,点击“.NET Framework 3.5 功能”前面的小三角,展开,勾选“.NET Framework 3.5(包括.NET 2.0和3.0)”前面的复选框,如下图所示,点击下一步。





(6)如下图所示,点击下面的“安装”或“指定备用源路径”


(7)安装完成,找到ASP.NET服务,启动类型改为“自动”

安装完成后,再次启动游戏程序,发现时间戳抖动恢复正常。

作者:UStarGao
链接:https://www.starcto.com/application_of_operational/314.html
来源:STARCTO
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
UCloud云平台推荐
随便看看
- 2022-03-01Linux CPU与内存常见问题处理技巧
- 2021-05-21第三方常用工具收录
- 2021-02-12MySQL修改非事务引擎
- 2021-08-22UCloud UHub容器镜像仓库使用教程
- 2025-03-12Linux软件RAID方案-mdadm命令



