lua table & python dictionary

本文探讨了在处理C++、Lua和Python混合技术栈时遇到的问题,特别是如何高效地处理和组合多个Lua表格数据。作者提出将静态数据结构提前生成并存储,以避免在游戏中动态生成消耗性能。解决方案涉及使用Python将多个Lua表格转换为单一表格,并介绍了slpp库在Python 2和3中的应用,以及自定义输出格式的实现。
摘要由CSDN通过智能技术生成

遇到的问题

公司前端的技术栈是 C++ & lua & python, C++、lua做业务开发,python做工具。
lua特别好用的东西就是load, 将某些数据(一般是excel)转成lua的table存储,用的时候直接load进来。
但是,有些数据,并不是excel转过来的,通过多个excel来组成。

例如:
描述: 一个卡牌游戏,肯定有一张卡牌表,在表中我可以知道每张卡牌属于哪个职业。

Question: 在游戏中,我想知道某职业所有卡牌,怎么办呢?
我需要遍历这个卡牌表,然后把相应职业的卡牌筛选出来。
但是,这个方法随着卡牌库的增加,所花费的时间也不断增加,早晚会出事呀。
当然,可以通过各种人为规定,算法设计来加快速度。
可是,都没有根本去解决问题。
回过头来,可以发现,当我们有了这张卡牌表,我就可以知道某职业都有哪些牌。
这就是像卡牌表一样,不需要在游戏中动态去生成,直接可以本地存储静态的一个职业对应卡牌的表。
这样,即使生成这张表再慢,也不会消耗游戏运行中的时间和性能。




解决问题

分析

现在目标很明确了,我要把n个表,根据需求组合拼装成1个表。
麻烦的是,表的生成这些东西,我们都已经做成脚本,交给策划生成了。
这个东西,肯定也需要交给策划进行。
不可能让策划打完表以后,程序再去执行一遍lua脚本。
(PS:这种东西一定要规避掉,一定要学会自动化,工具化。不要把我们的时间浪费在这些可以自动化、工具化的东西上。)

所以,目前状况是:
语言:python
输入:n张lua表
输出:1张lua表
逻辑:一系列插入、查找、遍历等

中间的逻辑就不用多说了,python的dict 和 lua的table用法也挺像的。
主要处理两个问题:

  1. 将lua table 转换成 python dict
  2. 将python dict 转换成 lua table


大概思路

在动手前,肯定要看有没有好的现成的轮子。重复造轮子还是不要了吧,不一定造的比人家好呢。
经过一番查找,发现了 slpp[ https://github.com/SirAnthony/slpp ]
它可以实现lua table 和 python dict之间的转换。
但是,它是python2.x版本。
然后,在推送请求上看到,有人已经做了python3.x版本。 slpp-23[ https://github.com/IlyaSkriblovsky/slpp-23 ]


一些细节

大概的方向差不多了,剩下的就是符合我所需要的格式。
因为,我的文件格式是这样的:

        local xx_xx = {
            [1] = {
                ...
            },
            [2] = {
                ...
            },
            ...
        }
        return xx_xx

对于输入要求,还简单一些:

        """
            描述:
                将lua的table转成python的dict

            参数:
                table_file_name - string
                    文件名(需要加后缀)

            返回:
                dict格式的table
        """
        def convertLuaTableToPythonDict(table_file_name):
            content = ""
            with open(table_file_name, 'r', encod
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值