Java 做强联网即时对战的手游服务器的技术可行性?

2019-09-25 10:22:35 +08:00
 SoarKyle

RT,一般强联网即时对战都采用 c++开发,java 是否可行呢? 9102 年了,Java 也有像 netty 这样比较成熟的高性能框架,而且服务器硬件性能也早就不是瓶颈了,开发效率也更高,也更易于维护。c++虽然运行效率高,但开发效率低,也会因为内存管理问题导致难以维护,甚至宕机。不知道两者之间是否还存在其他的一些差别,求教各位 v 友。

6939 次点击
所在节点    程序员
46 条回复
sunny352787
2019-09-25 14:15:35 +08:00
@across 韩国游戏大部分都是 C#的,SQLServer 存储过程用到飞起
ofblyt
2019-09-25 14:20:41 +08:00
不少游戏的服务端都是 C++,轮子多一些吧,个人感觉
zdt3476
2019-09-25 14:29:06 +08:00
就算是强联网其实还是得看具体的游戏类型,不同游戏类型差别还是很大的。不过理论上来说,问题不大。
th00000
2019-09-25 14:34:01 +08:00
完全可以,
作为游戏从业者可以大概介绍一下;
游戏一般根据类型可以大概来区分开发语言:
比如 SLG, 卡牌类, 这些用 Java 开发一点问题都没有, 而且开发效率很高;
对于消消乐, 养鱼这种游戏, 也没有问题, 因为都是单局玩法, 数据交互量比较小;
对于吃鸡, 跑跑卡丁车这种, 一般局外玩法用 Java 没有问题, 局内就没有用 Java 的了;
对于传统 MMORPG 完全没有用 Java 开发的;

当然不用 Java 开发的部分也不代表就用 C++, 要用的话一般是框架部分用 C++, 主要逻辑会用 Lua 开发, 效率高, 跟 C 结合起来很方便, 比如魔兽世界;

另外不是游戏就是用长连接, 用 Java 也不代表一定用 Netty,
英雄联盟在架构更新之前大部分服务都是基于 http 的, 仅推送服务会使用长连接。
lcf0030
2019-09-25 14:43:20 +08:00
我的世界 不就是 java 开发的?
SoarKyle
2019-09-25 14:54:06 +08:00
@th00000 请教下局内和局外是指的一局游戏? pvp 在线匹配即时对战用 java 呢,人数不多,最多 2v2
SoarKyle
2019-09-25 14:56:32 +08:00
@th00000 有英雄联盟的相关技术文章可以查阅吗?
th00000
2019-09-25 15:00:49 +08:00
@SoarKyle 我可以理解为你们想做一款游戏模式类似<皇室战争>这种模式的游戏吗
对于皇室战争来说, 局外就是公会, 排名, 宝箱, 组卡, 局内就是真正开始战斗, 局外这些没问题, 局内你们再仔细考虑考虑
dcalsky
2019-09-25 15:06:36 +08:00
@SoarKyle socket.io 那玩意都能用,你用 java 肯定没问题
abel1989
2019-09-25 15:17:03 +08:00
现在很多服务端都转 go 了
CallMeReznov
2019-09-25 15:36:17 +08:00
pomelo 了解一下?
sunny352787
2019-09-25 18:57:58 +08:00
@th00000 嗯...我手上过的俩 MMO 是用 Java 写的...
YUyu101
2019-09-25 22:07:23 +08:00
即时也有不同类型的吧,有的是客户端状态同步,有的要服务器模拟对局,有的可以靠动画骗过去有的不行,卡牌的不出牌都不用同步,mmo 那种和 fps 又不一样了。
KasuganoSoras
2019-09-25 22:18:15 +08:00
Minecraft 了解下? Hypixel 最高峰十几万人在线,全球最大的小游戏服务器,服务端也用的是 Java。
hkitdog
2019-09-25 23:26:40 +08:00
Dnf 是用 C++寫的
starsriver
2019-09-26 07:20:15 +08:00
建议 minecraft 节点
zazalu
2019-09-26 08:52:45 +08:00
可以,但是轮子少啊
janxin
2019-09-26 09:33:34 +08:00
MMO 看类型吧,有些有 GC 也不是不能接受吧,FPS 这种高实时性要求的也能不怕 GC ?怕不是手游吧...
nvioue
2019-09-26 09:40:22 +08:00
问游戏能不能用 Java 写,太抽象谁都无法回答。你要把问题细化。你的游戏是什么类型,对延迟是否敏感,在每个地图场景会发多少请求,每个请求要求的延迟是多少,你的代码能不能达到? 至于战斗,物品系统更不用说。
dreamycloud
2019-09-26 09:55:47 +08:00
Java 内存占用要比 c/c++高,比 go 也高,只有这点必须注意

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/603948

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX