V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
vidon
V2EX  ›  程序员

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

  •  
  •   vidon · 2015-07-09 21:30:32 +08:00 · 4446 次点击
    这是一个创建于 3426 天前的主题,其中的信息可能已经有所发展或是发生改变。
    想用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
    你需要长连接啊 亲
    lxrabbit
        7
    lxrabbit  
       2015-07-09 22:58:27 +08:00
    只要你的客户端能连得上,你用csv文件都没人说你
    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   ·   实用小工具   ·   3587 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 10:59 · PVG 18:59 · LAX 02:59 · JFK 05:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.