
lua
peter_teng
这个作者很懒,什么都没留下…
展开
-
Lua与C/C++的交互3:C/C++中读取Lua文件中的表
在第二章中,我在vs中通过用c/c++调用跟lua交互的C API,成功读取了lua配置文件中的内容:一个全局变量。这次,我要稍微深入一点:在lua文件中定义一个表,然后用C/C++读取表中的内容。这个其实跟第二章原理是一样的,只是,这里有个细节,这个细节就是lua_getfield. 以下是完整源代码:#include "stdafx.h"#include "stdio.h"exte原创 2012-11-13 10:59:42 · 5950 阅读 · 1 评论 -
lua全局环境变量_G小结
1.以一个模块(*.lua,后同)为单位,所有的全局变量都保存在table中,这个table放在_G中,这是一个全局空间(全局环境变量),可以简单的看作一个表。2._G中只保存全局变量,不保存局部变量。3.lua中真正存储全局变量的地方不是在_G里面,而是在setfenv(i,table)的table中,所有当前的全局变量都在这里面找,只不过在程序开始时lua会默认先设置一个变量_G=这个原创 2016-10-07 21:43:08 · 5609 阅读 · 0 评论 -
lua游戏服务器热更新
Lua热更新实现用途在生产环境上,总有可能出现不可预知的Bug,而通常修改好Bug仅仅又修改几句,停机维护的成本又太高,对于游戏来说,通常每个服就是单独的进程,也做不到像分布式环境下,关掉一部分机器,先升级一部分,再升级另一部分的无缝升级。这时候如果有热更就可以迅速的把Bug修复方案通过热更新进行修复,不会对用户任何的影响。例如:业务逻辑有Bug配置的数据有误需求发生变更转载 2016-10-07 19:00:17 · 6663 阅读 · 3 评论 -
lua闭包全面解析
在lua中,闭包(closure)是由一个函数和该函数会访问到的非局部变量(或者是upvalue)组成的,其中非局部变量(non-local variable)是指不是在局部作用范围内定义的一个变量,但同时又不是一个全局变量,主要应用在嵌套函数和匿名函数里,因此若一个闭包没有会访问的非局部变量,那么它就是通常说的函数。也就是说,在Lua中,函数是闭包一种特殊情况。简而言之,闭包就是一个函数加一个u原创 2016-10-07 16:30:07 · 3474 阅读 · 0 评论 -
lua中的weak table及内存回收collectgarbage
弱表(weak table)是一个很有意思的东西,像C++/Java等语言是没有的。弱表的定义是:Aweak table is a table whose elements are weak references,元素为弱引用的表就叫弱表。有弱引用那么也就有强引用,有引用那么也就有非引用。我们先要厘这些基本概念:变量、值、类型、对象。(1)变量与值:Lua是一个dynamically ty原创 2016-09-26 16:07:57 · 5233 阅读 · 0 评论 -
深入浅出cocos2d-x(1):Cocos2d-x 中“HelloLua” 深入分析
我们来看一下Cocos2d-x的HelloLua示例工程。首先编译运行一下这个工程,当然,因为我在HelloWorld工程中改动了CCApplication的run函数和initInstance函数,所以这里要修改一下,与HelloWorld保持一致才能编译成功。哇!一个很COOL的农场游戏。 这几乎是我转载 2013-12-26 11:55:49 · 1597 阅读 · 0 评论 -
深入浅出cocos2d-x(2):Cocos2d-x中LUA脚本引擎深入分析
好了,不说废话,本周奉上一篇初级入门教程博文,Cocos2d-x中的LUA引导与入门。做为惯例,一切都是以HelloWorld的样例为准。我们今天学习用LUA来完成一版HelloWorld。 大家既使没有看过我的“HelloWorld 深入分析”一文,想必也无数次运行过Cocos2d-x里的HelloCpp工程,对于运行的结果画面熟烂于心。我们回想一下,这转载 2013-12-26 12:09:29 · 2456 阅读 · 0 评论 -
FSM:网络游戏开发中的有限状态机(实践篇)
上一篇文章《FSM:网络游戏开发中的有限状态机(理论篇)》中,讲解了FSM的基础知识。这里,我结合图形及具体例子,讲解下FSM在实际开发中的运用。首先,图解下上篇文章中提到的各种action。1.InputAction:某状态下收到某事件,输出相应动作。这里不发生状态变更,只是对输入事件的一个响应。属于瞬时动作。2.LeaveAction:离开某一状态时的相应动作。这个原创 2013-06-22 16:45:44 · 8603 阅读 · 2 评论 -
Lua与C/C++的交互6:Lua调用C/C++函数
前几章都是C/C++调用Lua函数,即用Lua扩展C/C++,此时C/C++是应用程序代码,拥有主控制权。这次我想从Lua中调用C/C++,即把C/C++当作库程序,此时Lua拥有主控制权。扩展Lua的一项基本含义就是,应用程序将新的C/C++函数注册到Lua中。Lua调用C/C++函数时,也是通过一个stack来进行的。C/C++函数从这个stack中获取Lua中传过来的函数参数,同时把结果压入原创 2012-11-20 19:15:14 · 2428 阅读 · 1 评论 -
Lua与C/C++的交互5:C/C++调用Lua函数
我想在Lua文件中定义一个Lua函数,然后用C/C++进行调用。调用函数的API协议其实非常简单。首先,将需要调用的函数压入栈中,并依次压入函数的参数。然后,通过lua_pcall进行实际的调用。最后,将调用结果从栈中弹出。以下是完整源代码:#include "stdafx.h"#include "stdio.h"extern "C"{ #include "lua.h" #原创 2012-11-15 20:53:09 · 1444 阅读 · 0 评论 -
Lua与C/C++的交互4:往Lua中写入C/C++变量
在第二,三章中,我完成了用C/C++读取Lua文件。今天,我又有一个新的目标:将C/C++中变量设置到Lua文件(其实是设置到Lua全局变量表中,为了方便简单理解,我们看做是设置到Lua文件中)。以下是完整源代码:#include "stdafx.h"#include "stdio.h"extern "C"{ #include "lua.h" #include "l原创 2012-11-13 17:16:59 · 4512 阅读 · 0 评论 -
Lua与C/C++的交互1:C/C++与Lua最简单的互动
我想在VS中,实现C/C++与lua的交互。原理很简单,我们记住两条即可,1.lua里面的API都是用C写的。2.lua跟C/C++的交互是通过一个虚拟stack来进行数据的沟通的。在VS工程中,我们需要加入C API的头文件lua.h, luaconfig.h , lualib.h, luaxlib.h 。这几个头文件都是lua源代码,可以直接下载使用。lua.h提供原子级别的API,对栈的原创 2012-11-09 09:30:58 · 3871 阅读 · 0 评论 -
Lua与C/C++的交互2:C/C++中读取Lua文件
第一章中,我在VS中,实现了lua与C/C++的交互,了解了它们之间是通过一个虚拟的stack来进行交互的。现在我要继续往下进行,这次的目标很简单:我写一个lua脚本配置文件,然后在VS中通过调用C API,读取配置文件内容。这其实就是第一章说过的lua跟C交互的第一种形式,此时,C拥有控制权,lua只是作为一个库,我们通过C来访问lua。具体代码如下:#include "stdafx.h原创 2012-11-09 09:55:04 · 1680 阅读 · 0 评论 -
XLua在游戏项目中的应用
最近项目在开发游戏大厅,原来的游戏都是用unity C#开发,现在需要将这些游戏都移植到大厅。两种思路,一是游戏全部用lua重写,用tolua实现c#与lua的交互,以及热更新。思路二,在保持原有unity C#开发的游戏基础上,用XLua实现热更新。第一种方案有一套现成的比较成熟的框架,但重写成本前期相对较高;第二种方案是全新的尝试,但能够继续沿用原来的代码。考虑到开发周期因素,最后选择了XLu原创 2018-01-08 17:13:20 · 2985 阅读 · 9 评论