网络游戏服务端用什么语言写区别是不是不大? Java /C++/C#哪个用得更多,为什么? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Game Engines
Unreal Engine
MyCryENGINE
rv54ntjwfm3ug8
V2EX    游戏开发

网络游戏服务端用什么语言写区别是不是不大? Java /C++/C#哪个用得更多,为什么?

  •  1
     
  •   rv54ntjwfm3ug8 2022-03-12 19:12:14 +08:00 5445 次点击
    这是一个创建于 1373 天前的主题,其中的信息可能已经有所发展或是发生改变。
    24 条回复    2022-03-18 12:59:30 +08:00
    kiracyan
        1
    kiracyan  
       2022-03-12 19:13:20 +08:00
    c++ go
    BrettD
        2
    BrettD  
       2022-03-12 19:14:55 +08:00 via iPhone   2
    C++,游戏服务端业务时延敏感
    paoqi2048
        3
    paoqi2048  
       2022-03-12 19:19:36 +08:00
    主要看项目的技术选型,一般是 C++写底层再搭配一门脚本语言如 Lua/Python ,另外就是 Java 、C#、PHP 、Erlang 和 Go 这种
    whitehack
        4
    whitehack  
       2022-03-12 19:22:59 +08:00
    我们用的 nodejs 和 go
    nightwitch
        5
    nightwitch  
       2022-03-12 19:24:36 +08:00
    和游戏品类有关系。。moba/fps/mmorpg/SLG/消消乐所用的服务器技术差很多
    Kasumi20
        6
    Kasumi20  
       2022-03-12 19:39:54 +08:00
    rv54ntjwfm3ug8
        7
    rv54ntjwfm3ug8  
    OP
       2022-03-12 19:40:50 +08:00
    @Kasumi20 #6 .NET 不是语言,而且我已经写上了 C#了
    newtype0092
        8
    newtype0092  
       2022-03-12 19:49:40 +08:00
    除了上面说的 C++,有些延时不敏感的会用 Java ,比如回合制卡牌、棋牌、益智类小游戏等。
    ragnaroks
        9
    ragnaroks  
       2022-03-12 19:58:01 +08:00
    具体看游戏类型和数值设计,如果是那种战力养成的游戏还真挺吃优化的,像仙境传说老游戏没啥氪金点就可以直接 dotnet+mysql 1c2g 带 50 多人
    forgottencoast
        10
    forgottencoast  
       2022-03-12 21:33:10 +08:00
    @theklf4 哈哈,#6 莫名其妙。
    ly841000
        11
    ly841000  
       2022-03-12 22:06:47 +08:00
    go 不用强行刷存在感吧?哪个著名点的游戏用 go 了?
    magicdawn
        12
    magicdawn  
       2022-03-13 00:46:09 +08:00
    咋没有 rust 啊
    luckyrayyy
        13
    luckyrayyy  
       2022-03-13 02:43:52 +08:00
    ZGC 能做到 TB 级别内存的 stw 时间低于 1ms 了,应该很少有游戏会严苛到这种级别吧?未来会不会有很多游戏后端用 Java ?
    Leviathann
        14
    Leviathann  
       2022-03-13 02:52:43 +08:00
    @luckyrayyy 我认识一人在页游公司,他们用的 jvm 生态,语言是 kotlin 好像还有 akka 框架
    Brian1900
        15
    Brian1900  
       2022-03-13 09:54:43 +08:00
    @magicdawn 还没毕业吧
    magicdawn
        16
    magicdawn  
       2022-03-13 10:33:43 +08:00
    bruce0
        17
    bruce0  
       2022-03-13 12:13:06 +08:00
    以前基本都是 C++,现在的分游戏类型了
    像卡牌(阴阳师),养成类的(暖暖),等对延时不敏感的游戏现在大多数用 go 就可以了, 广州那边很多用 erlang 的,听说还都是用一个框架出来的, 听说过有用 java 的, 但是认识的没有用的

    像 fps, moba, mmorpg 这些, 基本还是 C++, 毕竟对延时很敏感, go 有 GC 还是会有影响的

    像我司, 卡牌都是 go 新开的 fps 用的 C++

    @ly841000 游族的少年三国志 就是 go 写的
    documentzhangx66
        18
    documentzhangx66  
       2022-03-13 15:16:06 +08:00
    其实如果性能允许,能用 Java 、C#、node 、python 、甚至 php 写后台,谁愿意用 C 或 C++。

    很多游戏后台用 C++,那不是优势,而是无奈。
    kimown
        19
    kimown  
       2022-03-13 16:05:41 +08:00 via Android
    @whitehack
    nodejs 是网易的那个吗
    BrettD
        20
    BrettD  
       2022-03-13 17:13:42 +08:00 via iPhone
    @magicdawn 除了 Embark 没见过有什么工作室有用 Rust
    whitehack
        21
    whitehack  
       2022-03-13 19:49:13 +08:00
    @kimown 是的 pomelo 不过我们用的 ts 版 叫 pinus
    tousfun
        22
    tousfun  
       2022-03-13 19:57:00 +08:00 via iPhone
    @whitehack 啥公司
    kimown
        23
    kimown  
       2022-03-13 20:56:11 +08:00 via Android
    @whitehack
    pomelo 用起来简洁又易用
    timethinker
        24
    timethinker  
       2022-03-18 12:59:30 +08:00
    语言用 C++是有优势,但是相比较之下,良好的架构更加重要,要兼顾到日常逻辑开发的便利性,如何权衡取决于公司的用人成本。用 Java 配合 Netty 已经足够承载绝大多数游戏类型了,并且招人也很方便。

    游戏服务端一般是有状态的,而 web 开发大多数是无状态的,有状态就意味着容易出现单点事故,比如网络不可靠,机房出现故障,服务端宕机等等,因此就需要通过日志的方式来存储状态变更操作,尽量减少事故带来的影响。类似于 redis 的 AOF ,mysql 的 binlog 。

    要知道大多数在线游戏后端主要是计算密集型的应用,跟 web 开发的区别之一就在于基本上所有的状态都会保存在进程内存中,目的就是尽量避免 IO 操作。数据库的作用仅仅只是用于存档落地,甚至简单的来讲都可以不要数据库,直接二进制文件也可以。比如我经常在开发调试的过程中将整个玩家对象序列化为一个 JSON 文本,特别方便用于测试的时候,设置各种玩家的快照还原。

    还有很多关于游戏后端开发的知识要点,一次也说不完,比如线程模型,元数据(配置)管理,网络 IO ,二进制消息协议,GM 管理后台,第三方系统集成等等,是一个很庞大的内容。

    值得庆幸的是,随着用户的爆炸增长,现代的服务部署以及运维都比以前要好上太多了,使用云服务和容器成本更低,更有保障,但一切的前提是要根据游戏类型选择合适的技术架构。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5188 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 53ms UTC 08:29 PVG 16:29 LAX 00:29 JFK 03:29
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86