Golang Go语言中有能支持TCP和UDP的游戏框架吗?

发布于 1周前 作者 h691938207 来自 Go语言

Golang Go语言中有能支持TCP和UDP的游戏框架吗?

目前选型一个类似网站荣耀这样的游戏服务端框架,想用 go,不知道有没有合适的大家推荐推荐。

11 回复

更多关于Golang Go语言中有能支持TCP和UDP的游戏框架吗?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


go 肯定性能不够

go 性能不够?不太懂,go 编译后的代码和其他编译后的语言不会有差别吧,数据库这些应该就是同样的,有其他门槛低一点的框架或语言吗?


当有有差别了 没差别的话岂不是只要是编译语言性能都一样了

性能不够就是字面意思啊哪里没懂 语言都是有 IO 速度上限的
当然你要是回合制,或者没有物理效果,或者非商业个人作品啥的 go 应该可以了
www.toptal.com/back-end/server-side-io-performance-node-php-java-go

还有就是 go 有著名的 2 分钟 GC peak, 直观感受就是每两分钟卡顿一下。大型 MMO 应该很明显了

所以我还是没太明白,你说的 io 上限主要就是在 io 操作上同步阻塞和异步非阻塞这块,这一块 go 肯定是做得比较好的,特别是 go 的异步能力,所以我不太理解有什么语言在异步 io 上能完全超过 go ?当然相差不大是有的,因为底层的 io 交互只要是异步非阻塞的 io 能力都会很强而且用的都是更底层的库。

有其他框架或者语言推荐吗?
我知道是有 C#,python,lua 这些,但是这些基本上也都是和 go 持平吧,只是可能框架熟练度高一点。
当然我对这块也不了解,不知道是否有通用性高一点的游戏框架?

我刚才看了一下 go gc 回收已经有很大改进和优化现在是异步的 gc 回收,而且时间基本都是在 10 微妙一下,高负载下也不会超过 100 毫秒。

go 做网络库还有性能瓶颈?

GC 的问题,网上搜了一下,现在已经可以压缩到 1.x 毫秒了

协议是不是很重要,之前试过 websocket+protobuf 协议的通信,后端 go 直接手写不用框架性能最高。。。

Golang中确实存在能支持TCP和UDP的游戏框架

对于TCP支持,Go语言的标准库net包已经提供了强大的支持,可以用于构建基于TCP的网络游戏框架。开发者可以利用net.Dial和net.Listen等函数来创建TCP连接,实现数据的可靠传输。此外,还有一些第三方的高性能网络框架,如goev,它支持异步响应,可以完美解决per-connection per-goroutine的问题,非常适合用于构建基于TCP的高性能网络服务,包括游戏服务。

对于UDP支持,Go语言的标准库net包同样提供了相关的函数,如net.DialUDP和net.ListenUDP,可以用于创建UDP连接,实现无序的、不可靠的、基于数据报的数据传输。虽然UDP在数据传输的可靠性上不如TCP,但在一些对实时性要求较高的游戏场景中,UDP的低延迟特性可能更具优势。

综上所述,Go语言具备构建支持TCP和UDP的游戏框架的能力,开发者可以根据具体需求选择合适的网络协议和框架来实现。

回到顶部