又一款游戏项目上线测试了,深刻体会到服务端在上线前的这段日子是比较“难熬”的。因为除了原有的开发任务,还有大量的第三方接口支持、统计支持、日志分析需求等,以及服务器各种测试和后续测试BUG的排除。其中测试关系到后续服务器能否满足要求稳定运行,马虎不得。
写这篇文章的目的主要是记录一下上线前服务器测试的个人经验,如果觉得内容有不妥或者遗漏的地方欢迎交流。
Read More →又一款游戏项目上线测试了,深刻体会到服务端在上线前的这段日子是比较“难熬”的。因为除了原有的开发任务,还有大量的第三方接口支持、统计支持、日志分析需求等,以及服务器各种测试和后续测试BUG的排除。其中测试关系到后续服务器能否满足要求稳定运行,马虎不得。
写这篇文章的目的主要是记录一下上线前服务器测试的个人经验,如果觉得内容有不妥或者遗漏的地方欢迎交流。
Read More →很早就想写一篇关于Tars网络包处理的文章,但是又不知道从何写起,因为心里想着无非就是基于Linux Epoll的那一套东西,加上一些线程间的数据交互。
直到遇见了BUG!
这不是Tars框架本身的BUG,只是使用者在没有吃透Tars包处理运作机制情况下发生的BUG。
本文会围绕这个BUG从头到尾来谈谈Tars对网络包处理。
(文章不会贴出整段代码,会以代码片段+说明的形式展开,源码: https://github.com/Tencent/Tars ,版本:5237058b91c5350be881205249f196970c503614,Date: Tue Jun 19 20:56:02 2018 +0800)
Read More →原文链接 – OpenAI Five
我们由五位神经元网络组成的队伍,OpenAI Five,已经开始在DOTA2中击败非职业队伍。虽然现在还有一些约束(译者注:功能不完善,文末有说明),我们的目标是在8月的TI8比赛上使用限定的英雄池击败最顶级的职业队伍。我们可能不会成功:因为DOTA2是现在世界上最流行、最复杂的电子竞技之一,拥有着富有创造力和积极态度的职业选手,他们一整年的进行训练为了在DOTA每年近四千万刀的奖金池里分一杯羹(世界上奖金池最高的电子竞技)。
OpenAI Five每天通过自我对抗的训练数据等值于正常游戏时间180年。训练使用大规模版本的Proximal Policy Optimization,运行在256个GPU和128000个CPU核心上 – 相当于去年TI7上AI Solo比赛使用的大规模版本。他对每个英雄配置非人类玩家数据,通过LSTM学习到了非常明显的游戏策略。这表明了强化学习通过大量且能完成的计算量可以实现长期训练 – 并不需要对训练、学习算法有突破进展,这和我们在开始这个项目时的估计相反。
为了测试我们的进展,我们会在2018年7月28号与顶尖玩家举行一场比赛,你可以在Twitch上在线观看或者申请成为挑战者。
Tars框架自带服务监控(stat)与特性监控(property)的功能,入口在如下图:
(直接点会是空白,你得先点开你的一个Server才会出现曲线图)
依靠监控功能,你可以快速的定位问题,观察接口的使用状态,进程运行状态,甚至自定义观察数据直观的在Tars管理页面上显示出来。
你可以自行做二次开发,利用入库数据做成自己的短信告警机制。总之就是数据在,想怎么围绕展开都行。
以下内容都是基于Unreal Engine版本:4.18.2-0+++UE4+Release-4.18。
操作系统是:Window10 x64专业版。
编译工具:VS2017 企业版。
承接上一篇文章UE4 ShooterGame Server研究最后遗留的内容,这篇文章主要是讲一讲对UE4控制服务器(后文简称ControlSvr)的思考实现。
在采用tars2cpp工具自动生成c++文件时,相应的file.tars会自动生成file.h文件。在.h文件里会生成你自定义接口的RPC方法,一共有四种:
sync/async方法在官方文档里都有使用的样例,对于不满足sync/async,然后想在Tars下使用Future/Promise的同学看看此文或许会有帮助。
文章内容、样例都是基于Tars框架下提供的Future/Promise进行分析,与boost、C++11、以及其他语言提供的Future/Promise不完全相同。
以下内容都是基于Unreal Engine版本:4.18.2-0+++UE4+Release-4.18。
操作系统是:Window10 x64专业版。
编译工具:VS2017 企业版。
在上一篇文章UE4 ShooterGame Standalone Dedicated Server(Windows & Linux),主要讲述如何编译、部署一台ShooterGame服务器。这篇文章里会讲述一些UE4 Server相关的基础知识,以及如何修改ShooterGame Dedicated Server的内容为我们所用。
阅读过一点ShooterGame代码再读此文效果更加,后面Server若无特指,均表示Dedicated Server。
参考文献:https://docs.unrealengine.com/latest/CHN/Gameplay/Networking/Server/index.html
以下内容都是基于Unreal Engine版本:4.18.2-0+++UE4+Release-4.18。
操作系统是:Window10 x64专业版。
编译工具:VS2017 企业版。
文中提及目录路径都是相对路径,例如UnrealEngine-release\Engine\Binaries\Win64,全路径为D:\ue4\UnrealEngine-release\Engine\Binaries\Win64,其中D:\ue4为每个用户自行选择的UE4安装目录。
ShooterGame的全路径D:\ue4\ShooterGame。
最近因为项目原因接触到了C++11的移动语义(move-semantics),参考了大量资料。不少资料都是从C++左右值的概念到C++11的右值引用,再牵扯出构造函数的实现方式,最后给出一个“实际”意义不高的一串代码,到最后也看不出这个新加入的语义是为了解决什么问题。
于是想自己记录一篇文章,用几句话来解释一些基本概念,几段代码来展示它我个人认为最直观的用途。