为了账号安全,请及时绑定邮箱和手机立即绑定

集群游戏服务器的D或Go

集群游戏服务器的D或Go

Go
RISEBY 2021-05-10 05:14:42
我正在设计游戏,但是此问题适用于需要在集群中的节点与主服务器之间进行双向通信的任何情况。我对集群很陌生,但是我经常在Go中编程,偶尔在D中进行编程。我真的很想使用现代语言(不是C / C ++),所以我选择了这两种语言,因为:数组切片良好的并发支持跨平台和本地编译(具有多个编译器实现)GC(均在精确GC上工作)我已经阅读了https://stackoverflow.com/questions/3554956/d-versus-go-comparison和 游戏开发的D编程语言。在较高的级别上,我的游戏将在服务器的大部分处理工作,而客户端只是从他们的角度呈现游戏状态。该游戏是按比例缩放的,因此需要以群集的形式进行操作。组件大多受CPU约束,并异步更新到与客户端共享游戏状态的主服务器。大多数计算取决于用户输入,因此这些事件需要向下发送到各个组件(因此是双向RPC)。我喜欢D的原因:手动内存管理模板/ CTFE代码安全性(@safe,合同,输入/输出)我喜欢Go的原因:标准库(pprof,RPC)去例行程序go工具(尤其是go get -u用于安装/更新远程依赖项)客户端可能会用D编写,但这不会对服务器产生影响。我倾向于D,因为手动内存管理已嵌入到该语言中。尽管它没有用于RPC的漂亮的库,但从理论上讲我可以实现它,但是我不能在Go中优雅地实现手动内存管理。考虑到两种语言之间的选择,您将使用哪个解决方案?
查看完整描述

2 回答

?
ITMISS

TA贡献1871条经验 获得超8个赞

我希望这两种方法都能起作用,并且很大程度上取决于您的喜好,尽管如果您使用D做客户端,我建议您仅使用D做服务器,因为这样会涉及较少的语言。如果您使用两种语言,那么项目中的任何人通常都必须同时了解这两种语言,而就他们的用户群而言,Go和D两者都足够小,几乎没人会同时使用这两种语言-尽管这只是您的工作而已它,您显然已经知道他们两个。

不过,我想指出,如果用d的问题是缺乏一个RPC库,那么这不是一个问题,因为d是支持的Apache节俭。因此,D确实有一个可靠的RPC库,即使它不在其标准库中(实际上,它也是D首次参与Google的“代码之夏”的成果之一)。


查看完整回答
反对 回复 2021-05-17
?
浮云间

TA贡献1829条经验 获得超4个赞

我对您的游戏一无所知,如果服务器的良好并发性很重要,那么我会投票支持Go。

我在Go中开发了通信服务器,该服务器实现了与PUSH技术的通信。Go非常适合执行此类任务。简洁明了的代码,易于理解。

自动化内存在并发应用程序中很重要。

客户端应用程序不像服务器应用程序那样并发。客户端应用程序应始终保持较高的帧速率。

因此,没有全局GC锁定的手动内存管理对客户端应用程序更好。


查看完整回答
反对 回复 2021-05-17
  • 2 回答
  • 0 关注
  • 227 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信