V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
zzlettle
V2EX  ›  问与答

游戏开发数据库选择的问题

  •  
  •   zzlettle · 2018-05-16 11:56:25 +08:00 · 3443 次点击
    这是一个创建于 2370 天前的主题,其中的信息可能已经有所发展或是发生改变。
    本人对游戏和数据库方面都是新手。
    但因为爱好,想开发一款自己的游戏
    类型是多人网络游戏
    现在的问题是数据库选型遇到了困难
    说下具体的需求
    1:服务器是分布式的,这个很好理解,为了满足不同地区的玩家,美服,欧服,亚服起码都要开一个服务器
    2:高并发
    在上面两个基础上,要实现的一个功能就是
    我需要记录下玩家的实时数据,来验证是否在开外挂作弊

    比如:
    1:记录下玩家移动坐标,然后比对规定时间内他的位移距离,如果超出游戏的设定,那肯定是开了外挂
    2:记录下玩家在进攻时,用的装备或者道具时间,如果间隔时间太短,那肯定开了外挂
    这些判断需要在游戏当中实时快速做出检验,这样才能对其他玩家公平

    这样一个高并发,需要海量数据中对其中一些值来计算,判断的数据库
    不知道大家有什么推荐了?
    谢谢先
    第 1 条附言  ·  2018-05-16 14:03:12 +08:00
    我的问题归纳起来很简单:
    因为我对数据库不是很了解,特别现在各种各样的新型数据库框架的出现
    关系型数据库,非关系型数据库
    mysql pgsql mongodb。。。
    我希望对这方面比较懂得人,给我推荐下,
    我要开发一款游戏的项目,用哪个数据库比较适合,或者混合多种数据库
    18 条回复    2018-05-16 19:57:23 +08:00
    ThinkCat
        1
    ThinkCat  
       2018-05-16 13:55:55 +08:00
    我有一个简单的需求,就像淘宝京东那样的。。。。
    taojing10
        2
    taojing10  
       2018-05-16 14:06:14 +08:00 via iPhone
    需求太粗糙,怀疑楼主开发水平
    zhuanzh
        3
    zhuanzh  
       2018-05-16 14:11:22 +08:00 via Android   ❤️ 1
    新手 爱好 高并发 海量数据 美服欧服亚服都要开

    lz 我不想嘲讽你,为什么不先从一个简单的做起…
    lingo
        4
    lingo  
       2018-05-16 14:14:24 +08:00
    欧服美服这个考虑的有点早了。。。
    changnet
        5
    changnet  
       2018-05-16 14:15:32 +08:00 via Android
    数据库根本不是问题,列出的那几个随便做。不过根据楼主的问题我觉得你连运营架构都不知道,大概也不知道游戏的“高并发”。所以先做出来再优化才是王道
    th00000
        6
    th00000  
       2018-05-16 14:23:27 +08:00
    就你的需求来说, 市面上任何一种数据库都能满足
    fuxiaohei
        7
    fuxiaohei  
       2018-05-16 14:31:57 +08:00
    不明确你的是手游还是端游,实时性要求高不高。
    一般的架构都是缓存数据库比如 redis 来顶住压力,关系型数据库做永久存储异步处理。
    如果实时性要求高,还有很多别的事情,数据库不是重点。
    sunny352787
        8
    sunny352787  
       2018-05-16 14:41:20 +08:00
    随便找个先用着,接口封装一下,觉得性能不行随时换
    sunny352787
        9
    sunny352787  
       2018-05-16 14:42:28 +08:00
    如果连封装数据库接口隔离逻辑和数据都做不到的话,就先别想那么多了
    zzlettle
        10
    zzlettle  
    OP
       2018-05-16 16:36:12 +08:00
    @lingo @zhuanzh 我在贴里面就说了,自己是新手,处于爱好。我这里只是个举例,意思是想说,分布式的,不是独服

    @fuxiaohei 端游
    John60676
        11
    John60676  
       2018-05-16 18:04:25 +08:00
    @zzlettle 你还不懂三楼的意思吗,就是说不如你先别想这么多,先做个简单的“游戏”试一下,在逐渐扩展,不要走路还没学会就去跑步
    qooweds
        12
    qooweds  
       2018-05-16 18:10:29 +08:00
    一般是放内存里吧,玩家移动的话怎么可能放数据库,IO 要爆了
    csuzhangxc
        13
    csuzhangxc  
       2018-05-16 18:15:45 +08:00 via iPhone
    作弊判定放内存。
    不同地方玩家如果玩法上能接受,就近接入游戏服(说不定都可以不用全球同步数据?)
    csuzhangxc
        14
    csuzhangxc  
       2018-05-16 18:16:51 +08:00 via iPhone
    能算出来的数据,尽可能就不存数据库
    WuwuGin
        15
    WuwuGin  
       2018-05-16 18:20:51 +08:00 via Android
    你这个纯粹是伪需求,你想的是要拓展性考虑,万一火了呢是吧。但是对不起,在做到那一步之前,需求和结构都是随现实改变的,Facebook 这种网站在没有遇见性能瓶颈的时候不还是 php 用的欢,到时候再说也完全来得及。
    另外你这样用数据库,楼上也说了,IO 会爆的。
    tvallday
        16
    tvallday  
       2018-05-16 18:24:21 +08:00   ❤️ 1
    我觉得大家都低估楼主了,也许楼主有 5 年的自由时间和 300 万的拆迁补偿还有 3000 个以上的死忠粉。
    zzlettle
        17
    zzlettle  
    OP
       2018-05-16 19:45:48 +08:00 via iPad
    @tvallday 开发个游戏需要这么高的要求吗?
    sunny352787
        18
    sunny352787  
       2018-05-16 19:57:23 +08:00
    @zzlettle 就你的这个游戏的规模来看,这要求还挺低的了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2685 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 10:03 · PVG 18:03 · LAX 02:03 · JFK 05:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.