UE4 Linux Dedicated Server with Windows

基本上按照这篇文章可以 https://wiki.unrealengine.com/Compiling_For_Linux
详细一些的可以看这里 https://wiki.unrealengine.com/Dedicated_Server_Guide_(Windows_%26_Linux)

但是容易漏掉的步骤是:安装了 Toolchain,设置好环境变量后,还需要运行引擎下的 setup.bat, 重新下载一些Linux下的so和标准库。

否则会发生 ”new” file not found 的错误。

这里还有两篇:

  • http://allarsblog.com/2015/11/06/Installing-Linux-Toolchain-On-Windows/
  • http://allarsblog.com/2015/11/06/Support-Dedicated-Servers/
  • Jenkins的log中显示乱码

    • 用Jenkins管理unreal4的自动化,出现乱码.
    • 查看Jenkins的 系统管理->系统信息, 显示 file.encoding GBK
    • 因为Jenkins启动时,读取了系统的encoding, 操作系统是中文的,但unreal输出的是utf8
    • 所以在启动的时候,要告诉Java, 用utf8的encoding.
    • Jenkins被安装为Service, 打开Services.msc, 在属性里,Jenkins的启动不能添加参数.
    • Jenkins的service启动,是调用Jenkins.exe. (不是 Java -jar Jenkins.war),所以不能加参数.
    • 查看jenkins的安装文档,
    • 当用Service方式启动时,会在Jenkins.exe的目录下,生成Jenkins.xml文件,这里面可以设置启动参数.
    • 修改Jenkins.xml文件,在 arguments 项中,加入-Dfile.encoding=UTF8 (需要加在前面一些.放在最后面貌似无效).
    • 再重启service.

    一个浮点数相加不正确的问题

    今天遇到一个问题:

     float CurTime = FApp::GetCurrentTime();
     UE_LOG(LogGame, Warning, TEXT("%3.2f"), CurTime);
     CurTime += 1;
     UE_LOG(LogGame, Warning, TEXT("%3.2f"), CurTime);
    

    结果两个数值的打印 有时相同, 有时结果相差2

    看汇编 也没什么问题

    000007FEB7EB9B37 movss xmm0,dword ptr [CurTime]
    000007FEB7EB9B3D addss xmm0,dword ptr [__real@42c80000 (07FEB7F7BAB0h)]
    000007FEB7EB9B45 movss dword ptr [CurTime],xmm0
    

    1个小时后的结论是: GetCurrentTime() 返回的是double型.
    应该是 double 赋值给 float 时, float的指数位用完了,所以加另一个浮点数时, 只取整数部份(大于1时, 小数部分进1)
    随着时间增长,有一天,这个结果会是”有时数值相同,有时结果相差4″