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
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云平台推荐
随便看看
- 2021-09-13黑科技优质网站
- 2022-08-05关于网络排查工具MTR那些你必须了解的事情
- 2021-08-22Smokeping+Promethues+Grafana搭建网络质量监控
- 2021-01-24Zabbix4.0本地安装部署教程
- 2023-03-06Docker清理垃圾数据卷volumes和清理无用镜像