金庆的专栏

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  330 随笔 :: 0 文章 :: 454 评论 :: 0 Trackbacks
网游服务器csv配置设计

(金庆的专栏 2017.2)

巨人网络Lua手游服务器中csv配置系统的设计

配置文件为 csv 格式。
csv文件全部放置于 csv/ 目录。
csv/可以有子目录。
csv目录下所有csv文件可以热更新。

策划数据也会导出到csv.
csv编码为utf8带BOM。
如果不带BOM,excel打开中文显示乱码。

xlsx批量转为utf8的csv
http://blog.csdn.net/jq0123/article/details/49512877

要求csv解析器允许多行字段,允许双引号,忽略BOM。
csv解析采用:https://github.com/jinq0123/csv_parser_RFC4180

csv按以下规范建立:
第1行:字段说明,可以多行,可以中文,仅供注释用。
       说明放第1行的好处是:多行说明不影响下面的数据显示,征途的csv也是说明在先。
第2行:字段名,英文,区分大小写,尽量不用特殊字符。
       同一表内各字段名必须不同。
       建议全部小写,用下划线连接单词,如"server_type", "equip_id".
第3行:类型,有3种:string, int, float, 缺省为string, 无法识别也按string处理。
       int, float数据缺省值0, 解析有错时也按0处理。

所有csv加载后,通过以下接口查询

* 获取表格 get_table("test/test.csv") -> csv/test/test.csv
* 取全部记录 table.get_all_records()
* 按索引取记录(可能多个)
    + 取第1个 table.get_record("field1", val1, "field2", val2)
    + 取多个 table.get_records("field1", val1, "field2", val2)
* 按列名取字段
    + record.get_string("field3")
    + record.get_int("field3")
    + record.get_float("field3")
* 自动索引,首次查询建立索引
* 索引可以是多列组合

posted on 2017-02-15 16:18 金庆 阅读(118) 评论(0)  编辑 收藏 引用 所属分类: 2. 网游开发

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理