心血来潮想搞个游戏服务端,有些问题想问下 V 友们 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
vidon
V2EX    程序员

心血来潮想搞个游戏服务端,有些问题想问下 V 友们

  •  
      vidon 2015-07-09 21:30:32 +08:00 4723 次点击
    这是一个创建于 3751 天前的主题,其中的信息可能已经有所发展或是发生改变。
    想用RoR搭建一个游戏服务端, 数据库方面暂时想到用mysql, 不知道V友们有没有更好的建议??
    其实也说不上是游戏服务端, 就是客户端发送一个http请求, 然后返回游戏关卡数据. 类似这样子.
    请V友们给给建议~~~谢谢!
    第 1 条附言    2015-07-09 22:36:04 +08:00
    可能内容误导了大家, 其实我想表达的是数据库除了用MySQL, 还可以用哪些数据库?
    33 条回复    2015-07-12 14:31:32 +08:00
    foxkiller
        1
    foxkiller  
       2015-07-09 21:42:10 +08:00
    RoR这样的服务器响应请求太慢了。用C++写吧。游戏的数据吞吐很大的。并发和数据量都比较大的。
    vidon
        2
    vidon  
    OP
       2015-07-09 22:22:05 +08:00
    @foxkiller 我想做的是手机游戏服务端, 像刀塔传奇那一类的游戏模式.
    future0906
        3
    future0906  
       2015-07-09 22:28:46 +08:00
    DOTA 传奇也是长连接的;另外,你就随便抛出一个想法,就叫人给建议这也懒了点吧?你想别人给什么建议?
    itfanr
        4
    itfanr  
       2015-07-09 22:32:20 +08:00 via Android   1
    leancloud 有现成的
    lxrabbit
        5
    lxrabbit  
       2015-07-09 22:36:50 +08:00
    我印象中极少有用http的,各大游戏引擎基本上都有通信协议的封装呀
    zac
        6
    zac  
       2015-07-09 22:48:02 +08:00
    你需要长连接啊 亲
    td width="auto" valign="top" align="left">
        7
    lxrabbit  
       2015-07-09 22:58:27 +08:00
    只要你的客户端能连得上,你用csv文件都没人说你
    lxrabbit
    lxrabbit
        8
    lxrabbit  
       2015-07-09 22:59:19 +08:00
    服务器端,说错了
    macemers
        9
    macemers  
       2015-07-09 23:08:22 +08:00
    手游这种,java足以
    mengzhuo
        10
    mengzhuo  
       2015-07-09 23:12:56 +08:00 via iPhone
    我司纯python都没问题
    长链接没你们想象的那么难搞
    还上了tls

    最难的是各种不向gd妥协数据结构 向客户端妥协接口数据
    yueyoum
        11
    yueyoum  
       2015-07-09 23:17:37 +08:00
    @mengzhuo 你们用纯python做的 socket 长链接服务吗?
    lxrabbit
        12
    lxrabbit  
       2015-07-09 23:19:13 +08:00
    确实是负担很小的,手游的服务器端负载基本上跟页游是相近的,但是也是要跟客户端脚本用同一种语言哦
    maomaomao001
        13
    maomaomao001  
       2015-07-09 23:19:22 +08:00
    试试java的netty
    jadecoder
        14
    jadecoder  
       2015-07-09 23:29:40 +08:00
    考虑下nodejs框架pomelo,网易出的
    dcoder
        15
    dcoder  
       2015-07-10 03:47:01 +08:00
    @mengzhuo
    "最难的是各种不向gd妥协数据结构 向客户端妥协接口数据"
    没太懂这句, 还有 gd 是指什么
    mengzhuo
        16
    mengzhuo  
       2015-07-10 07:49:57 +08:00 via iPhone
    @yueyoum 是啊
    一个instance 3000左右的连接数
    跑3个起来以后就够用了
    mengzhuo
        17
    mengzhuo  
       2015-07-10 07:50:51 +08:00 via iPhone
    @dcoder
    game developer的缩写
    mengzhuo
        18
    mengzhuo  
       2015-07-10 07:52:45 +08:00 via iPhone   1
    @lxrabbit
    其实是端游的样子
    比页游低得多的请求量和负载
    ZnZt
        19
    ZnZt  
       2015-07-10 08:54:15 +08:00
    lua
    Catstyle
        20
    Catstyle  
       2015-07-10 09:26:00 +08:00
    python做手游服务端简直不能更愉快
    gevent随便搞一个出来
    要是能啃透greenlet/libev,参考一下沈大仙人的eurasia,性能杠杠的
    zhizhongzhiwai
        21
    zhizhongzhiwai  
       2015-07-10 09:26:10 +08:00
    试试 www.gametata.com吧。非常好用。
    whahuzhihao
        22
    whahuzhihao  
       2015-07-10 09:30:56 08:00
    试试云风大神的 [skynet](https://github.com/cloudwu/skynet/wiki)
    vmskipper
        23
    vmskipper  
       2015-07-10 09:55:46 +08:00
    肯定选择erlang
    lujiajing1126
        24
    lujiajing1126  
       2015-07-10 11:16:52 +08:00
    pomelo
    clino
        25
    clino  
       2015-07-10 11:31:11 +08:00
    数据库也可以用redis之类的,或者用redis来做缓存
    //不是行业内的瞎建议
    cnpaas
        26
    cnpaas  
       2015-07-10 11:46:16 +08:00
    能说说你们的一些具体需求吗?
    因为 CNPaaS 也打算面相游戏服务端做一些工作。
    msg7086
        27
    msg7086  
       2015-07-10 11:55:11 +08:00
    我来回到正题。除了MySQL以外还可以用Postgres。另外可以考虑上Redis加速。
    yueyoum
        28
    yueyoum  
       2015-07-10 13:07:24 +08:00
    @mengzhuo

    所以 你们3个instance (也就是3个进程 对吗?) 可以接收10k连接

    那么我的问题是 这几个 instance是一个 游戏服吗?

    如果是的话,
    不同 instance 之间是怎么通信的?

    比如:

    A 玩家在 1号 instance上,
    B 玩家在 2号 instance上,

    A ,B玩家之间的 聊天,甚至及时战斗操作 这些信息是如何 发送的?
    kkwezard
        29
    kkwezard  
       2015-07-10 15:08:31 +08:00
    游戏服务器一般很少用HTTP协议吧。基本都是基于TCP socket封装的。效率高,数据量小。HTTP的协议开销太大了。我们公司的手游服务器是C++做的, 不过我想Java, python在性能上都没有太大问题。开发速度C++是比较慢的,java和python应该更迅速。
    chinabrowser
        30
    chinabrowser  
       2015-07-10 15:09:41 +08:00
    PHP
    mengzhuo
        31
    mengzhuo  
       2015-07-10 18:40:09 +08:00
    @yueyoum

    对的,10K要3个网关,至少6个逻辑才跑得动

    zeroMQ 的pub - sub, 按需订阅

    另一种方法,是分布式的,嘿嘿~保密啦~
    yueyoum
        32
    yueyoum  
       2015-07-10 19:53:31 +08:00
    @mengzhuo
    我对这方面很有兴趣, 能否 加个QQ : 330912736
    我想和你好好请教一下。
    jziwenchen
        33
    jziwenchen  
       2015-07-12 14:31:32 +08:00
    建议:
    想法不错 楼主好好干.
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2138 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 16:11 PVG 00:11 LAX 09:11 JFK 12:11
    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