V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Game Engines
Unreal Engine
MyCryENGINE
chashao
V2EX  ›  游戏开发

网络游戏里面,配表可以改为使用数据库么?

  •  
  •   chashao · 2021-01-20 16:44:13 +08:00 · 4660 次点击
    这是一个创建于 1433 天前的主题,其中的信息可能已经有所发展或是发生改变。

    很多都是策划配表然后导出放到客户端服务端的,大佬们有没有使用数据库来实现这种功能?比如 sqllite ?

    27 条回复    2021-05-11 17:22:31 +08:00
    hanxiV2EX
        1
    hanxiV2EX  
       2021-01-20 16:53:49 +08:00
    当然是导出编程语言的数据结构更合适啊,比如 python 的 dict,lua 的 table,js 的 json
    tmackan
        2
    tmackan  
       2021-01-20 17:04:55 +08:00
    excel 对游戏策划更容易上手吧
    GM
        3
    GM  
       2021-01-20 17:08:08 +08:00   ❤️ 1
    理论上当然可以,但是实际中使用会涉及到工具链、工作流、大量员工重新培训的问题,几乎不可能推得动的。除非你能一次性拿出一整套比现有方案有明显优势的解决方案出来。
    assiadamo
        4
    assiadamo  
       2021-01-20 17:15:57 +08:00
    当然可以,历史原因和各种各样取舍而已
    winnerczwx
        5
    winnerczwx  
       2021-01-20 18:00:34 +08:00 via iPhone
    见过一个折中的办法,策划表 excel 把二进制数据错数据库,服务端直接读二进制解析配置
    sunny352787
        6
    sunny352787  
       2021-01-20 18:07:36 +08:00   ❤️ 1
    可以啊,我就这么干的,客户端用的 iBoxDB https://www.iboxdb.com/
    whitehack
        7
    whitehack  
       2021-01-20 18:09:53 +08:00
    一直是 excel 转数据. 想转成啥都行
    不要对策划要求太高.策划能给你提个逻辑完整的案子你就烧高香吧
    ETiV
        8
    ETiV  
       2021-01-20 18:30:22 +08:00 via iPhone
    在用 Excel,数据库没有可用的 UI
    比如跨不同的分支搬配置表内容,就需要打开两个不同的 Excel 文件,互相 copy 。用数据库的话是没有这样的工具的(但是我在做,Excel 也不方便…)

    我想应该可以用 protobuf 的定义,当成 scheme 作为配表的约束

    数据库应该用不大上
    bruce0
        9
    bruce0  
       2021-01-20 19:05:18 +08:00
    技术上是没问题的

    看策划的学习能力和接受程度了,一般都是让策划直接操作 Excel

    公司一般都会写一个工具,把 Excel 转成程序需要的文件,json; xml; yaml; protobuf 等等
    livepps
        10
    livepps  
       2021-01-20 19:10:05 +08:00 via Android
    excel 导出数据,要什么格式看程序,存到数据库里面也可以,服务器有这么干的,客户端主要还是用文件吧,不然呢怎么增量更新配置,出 sql 语句客户端本地执行,不大现实,服务端就没有这个问题,直接替换表,或者刷库,都可以的?
    koolob
        11
    koolob  
       2021-01-20 19:48:33 +08:00
    因为策划经常需要做公式拉表之类的操作,而 excel 提供了各种各样丰富的功能。如果能开发一个满足策划需求的操作界面,就可以比较容易推进这种改动了。
    paoqi2048
        12
    paoqi2048  
       2021-01-20 20:29:47 +08:00
    可以,不过你需要提供一个转换工具
    chashao
        13
    chashao  
    OP
       2021-01-20 20:44:05 +08:00
    @hanxiV2EX 主要是策划人数多了以后会出现很多人一起编辑一个 excel 的情况,这样只能锁整个表。。如果是数据库可能会好一些?
    chashao
        14
    chashao  
    OP
       2021-01-20 20:45:21 +08:00
    @sunny352787 牛批,我去看看,这种客户端的数据库怎么热更新呢?
    chashao
        15
    chashao  
    OP
       2021-01-20 20:46:24 +08:00
    @livepps 确实客户端如果要热更还是文件比较方便。。
    shpkng
        16
    shpkng  
       2021-01-20 20:53:51 +08:00
    我们的项目就有一个数据库来存放数据,策划可以在网页端协同操作
    大量的数据增删就用导出和导入 xls
    sunny352787
        17
    sunny352787  
       2021-01-20 21:04:40 +08:00
    @chashao 本质上还是从 Excel 转存到数据库文件,类似 sqlite 的 db 文件,然后压缩后缀名改成 bytes 这样就可以用 Unity 的文件接口处理了,貌似你们是编辑过程中出现的冲突,如果实在解决不了那就用在线文档协作方式编辑,然后需要导入 Unity 的时候取出 xlsx 文件用
    no1xsyzy
        18
    no1xsyzy  
       2021-01-20 22:49:50 +08:00
    @winnerczwx 这真的叫折中吗?是套娃吧……
    hanxiV2EX
        19
    hanxiV2EX  
       2021-01-20 23:33:54 +08:00 via Android
    @chashao 只能把表拆细一点了,或者使用在线共同编辑的那种 excel,因为数值策划需要 excel 公式的
    byzf
        20
    byzf  
       2021-01-21 05:50:44 +08:00
    有公司这么用,策划用 navicat 这种,excel 里直接拷贝进数据库。
    SupercatX
        21
    SupercatX  
       2021-01-21 08:48:17 +08:00 via iPhone
    没问题的,大型网游大都是利用数据库来存储配置表的,至于用什么库就没有定论了
    SupercatX
        22
    SupercatX  
       2021-01-21 09:06:21 +08:00 via iPhone
    数值类的肯定是策划在 excel 里调试计算的,然后利用中间程序把最终的表格上传 /转化到游戏项目中的,至于最终游戏里利用数据库还是直接读取转化后的文件根据游戏和技术的习惯来定。
    开发阶段 excel 肯定是逃不过的,总不能让策划一条一条的自己录数据,也不能让策划自己敲代码调试数值吧?
    GM
        23
    GM  
       2021-01-21 11:42:20 +08:00
    忘了一个,配置表导出成 txt 有个好处是可以入源码库做版本管理,出了 bug 可以和前一个版本做 diff,要是直接存入数据库,那就没办法做版本化管理了,或者需要很大的精力去做。
    chashao
        24
    chashao  
    OP
       2021-01-21 12:39:58 +08:00 via iPhone
    @GM 确实,版本控制挺重要,但是导出的文本一般会去掉空白符,基于行的版本控制也没啥用吧……
    levelworm
        25
    levelworm  
       2021-01-21 13:00:46 +08:00 via Android
    中间加一个会一些编程的 BA,帮策划把需求翻译成数值然后写进数据库如何?或者你写个 VBA 但是估计会有很多骚操作需要考虑。
    GM
        26
    GM  
       2021-01-22 09:58:02 +08:00   ❤️ 1
    @chashao
    还是很有用的。
    首先,diff 可以忽略空白符。
    其次,最坏的情况下,也可以人肉对比两个版本。
    QING0
        27
    QING0  
       2021-05-11 17:22:31 +08:00
    我们是这样处理的:

    策划配置 excel,然后我自己写了一个导出 /转换工具,把 excel 的数据导入到 sqlite 中,游戏运行时就读 sqlite 中的数据。

    对于热更新,就是热更 sqlite.db ,十多 MB 的 db 压缩为 zip 之后,也就 3MB 左右

    整个工具已经开源在 github,可以看看我这篇文章有介绍如何使用: https://www.cnblogs.com/zhaoqingqing/p/7440867.html
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1075 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 170ms · UTC 19:10 · PVG 03:10 · LAX 11:10 · JFK 14:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.