语言本身其实还算适合吧,没union、重载会导致矩阵库不太好看,用法也有点丑,但问题不大。
大的障碍是库和基础设施的缺乏。
1.GL/input:
SDL 和 GLFW 都有 Go 绑定,用起来和 C/C++ 没大区别,Go 用起来其实还方便一点,API 调用方式和跨平台编译都比用 C++ 整 Makefile 更简单。
Learnopengl 的例子我用 C++ 写了一半,后来用 Go 全写了,法线贴图,AO,阴影,Bloom ,AA,半透明,PBR,这些用哪种语言做没大区别,工作量在 shader。 要效率的时候需要上非主流手段,Go 比 Java Python 优势大,比如清大片内存、调 C 库汇编,Go 更好搞。
2.图像解码
有两种选择,直接用 Go 自带的标准库,或调 stb_img 这类 C 库。
后者效率更高(差距大约30%-40%),但稳定性有问题,Go 标准库容错更高。我浏览大量模型,一些贴图用 stb 解码会崩(概率大概万分之几)。
两者都不支持 HDR 和 DXT 7/ETC 都得自己撸。我撸了 HDR /DXT 5,BC7 难度高没去研究。
3.模型加载
没现成的万能库,各种教程里面推荐用 assimp 导模型我也不建议。mod 爱好者们导的模型太容易出问题,你用 assimp 这种第三方出问题很难定位,而且早晚你得自己定模型贴图和打包格式,建议自己造轮子写导入器。
Go 的 IO 库很好,只要你能弄清模型文件规格写起来很快,这个倒比代码实现更要费时间。
有同好私信让我删掉资源站信息,因为国内太多倒爷,那就删了吧。我也说下,大 mod 组发布模型都会要求使用者不将模型用于色情和牟利,无关道德,而是如果用于这两方面,惹怒游戏公司走法律制裁,倒霉的是这些最初的发布者,好几个大 mod 组也因此销户了。mod 是个灰色地带,活一天算一天,爱玩模型的自己也能找到我说的站。





4.动画
没现成的,自己撸吧。我撸了简单的骨骼动画和帧压缩,120秒动画大概4m。插帧、 Dual blending 没撸。做 ps2 级的水准应该问题不大。

5.脚本
Go 有不止一个 Lua 实现,市面也有用 Go 实现 Lua 的书,造轮子的资料算多的了。
6.GUI
比较好的参考
前者思想比较好,以树为中心设计,后者本质是 imgui,nanovg 的go 移植版。
两者都能抄,但直接用不行, nanovgo 用的 glfw 是基于另一套 binding 实现,event 也不通用,原版 nanovg 为了美观用了很多贝塞尔,draw call 高,都得改。
7.碰撞&物理
还没沾,不好说。但没发现 Go 有现成能用的,binding的都没,这块得自己撸。这应该是所有轮子里难度最大的。
8.执行效率
Go 不用操心内存释放,但得避免频繁申请堆内存。很容易写出逃逸代码,效率差运行时内存还不断往上窜。
Go C call 有成本,但小规模场景和低模没问题。后端如果 VulKan 可以池化,问题可能更小,不过这是猜测得实际 profile。

显卡在低功耗状态,cpu 消耗是在动画矩阵更新,这版矩阵写得很烂各种逃逸效率很差,后面改良了但没实现动画。
9.网络
没搞过,扫过黑沙的私服的代码,感觉 Go 做这块应该不难,开发效率和内存可能还有优势,难的是具备游戏后端的工程经验和业务知识。
上面整完,runtime 的技术拼图可能差不多了,剩下工具链一大摊事。
严格说应该还有场景管理,camera,遮挡剔除,流加载,水体,大气, 天气,特效,人群,粒子,但语言上如果能搞定前面那些部分,那也就能搞定剩下这些部分,只是工作量和时间的问题。
如果做 stg ,低劣的伪 3d 格斗或银河城这种,Go 也许可以试试。实现ps2级的动画/物理+ps3,ps4中下水准画面,单干或几个人合作花3,5年也许能做到,不过要撸的依然非常多。
学习路线:
我能推荐的就是 Learnopengl 先用 C++ 上手写些例子,再往 Go 移植。
图形学我也是半吊子,入门都没脸说,知乎这块厉害的人很多,多跟专栏受益匪浅。
我没搞过游戏研发,以上算纯扯淡。