栏目头部广告

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是微软推出的一款开发平台,许多老旧软件和游戏依赖于它来行。

2-22121420422C52.png

测试代码用例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程序:Windows游戏服务器缺少.NET3.5环境依赖而诱发的时间戳转换问题(pic2)test.zip

3、安装.NET3.5相关程序依赖

(1)打开服务器管理器:可以通过在开始菜单中搜索“服务器管理器”

2-22121419431L92.png

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

2-221214194613R3.png

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

2-221214195112314.png

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

2-221214195133951.png

2-221214195410O9.png

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

2-221214195551263.png

2-221214195I13Z.png

2-221214195910912.png

2-22121419594N22.png

2-22121419594N22.png

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

2-221214200029310.png

2-221214200R95Y.png

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


2-221214202641610.png

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

2-22121420393B34.png

作者:UStarGao
链接:https://www.starcto.com/application_of_operational/314.html
来源:STARCTO
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处

UCloud云平台推荐


UCloud新用户专属注册连接

UCloud CDN超值特惠专场

UCloud全球云主机(UHost/VPS)大促页面

UCloud快杰云主机大促页面

文章页广告

随便看看

栏目底部广告
`