自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

cbbbc

博客博客

  • 博客(54)
  • 收藏
  • 关注

原创 lua环境的配置以及c++调用lua的简单例子

虽然上年暑假的时候,我看完了《lua程序设计》,那时候主要是把主要概念背熟,还有把几个面试要问的问题弄明白了,但实际上却很少写代码,写的lua代码可能都不超过1000行,哎,怪不得,才半年多,几乎所有东西都忘光了!    好吧,那现在就重新学一遍吧!这次就重在实践!而且那时候都是在VS2010上写代码的,由于趁着请假的时间,我学会了基本使用GCC和make,这次就可以脱离VS写代码了

2015-04-15 00:12:28 5739

转载 tolua++参考手册

原文地址: http://www.codenix.com/~tolua/tolua++.html     译者注:在网上貌似没有对应的tolua中文版文档,故心血来潮,翻译了第一部分:tolua使用。第一次翻译,出了很多错误。可能还潜在很多的错误,建议和原版一起阅读。如果有错误,希望各位看官指出,谢谢。    tolua++是tolua的升级版,是把C/C++和lua代码结合使用的一种

2015-04-30 18:18:50 2440

转载 cocos2dx-lua绑定之代码编辑器

享受脚本语言灵活、更新方便、免于编译的好处,但也不能忍受离开那些方便的IDE特性(跳转、自动完成)。搜集整理了一些使用Sublime Text编辑cocos2dx-lua工程的资料,希望能给大家带来帮助。一、自动完成(auto-completion)A.输入过的单词本文件内输入过的单词,ST(sublime text)均会给出补全提示。这点甚至比大多数IDE都要强(一般只给

2015-04-29 21:05:11 959

转载 cocos2dx的lua绑定

话接上篇(tolua++实现分析)一、cocos2dx对tolua++绑定的修正A.c对lua回调函数的引用在使用cocos2dx编写游戏时,我们经常会设置一些回调函数(时钟、菜单选择等)。如果采用脚本方式编写游戏的话,这些回调函数也是需要写在脚本里的。实现这个功能,就需要lua将自己的函数传递给c++,c++保持对这个函数的引用,不要让这个lua函数被垃圾回收,并在适当的时候回调这个

2015-04-29 21:03:20 587

转载 tolua++实现分析

项目正在使用cocos2dx的lua绑定,绑定的方式是tolua++。对大规模使用lua代码信心不是很足,花了一些时间阅读tolua++的代码,希望对绑定实现的了解,有助于项目对lua代码的把控。从阅读结果上来看,起码在内存管理上,帮助还是很大的。1.tolua++如何将c++对象导入到lua里tolua++为每一个传入lua的对象建立一个userdata,userdata的值,是

2015-04-29 21:00:56 731

转载 骨骼动画原理及简单实现

骨骼动画的含义,一句话,骨骼的朝向和位置,影响顶点的位置。骨骼动画的计算方法,一句话,顶点在骨骼空间里的坐标,不受骨骼本身变化影响。因此,我们只要先将顶点从模型空间变换到骨骼空间,在骨骼发生旋转位移后,再把骨骼空间的坐标变换回模型空间即可。这方面的详细介绍已经有很多了,这里推荐http://www.wazim.com/Collada_Tutorial_1.htm这个向导从骨

2015-04-29 20:13:07 2881 1

转载 游戏动画技术的发展

2d游戏中的动画,最简单直接的实现方式就是一帧一帧的静态图片依序播放,也被称作精灵动画(sprite)。考虑到大量图片导致的内存消耗问题,发展出了一些2d动画精灵压缩方式。例如一个人物走动的动画,可以将身体、胳膊、腿单独切成一个个碎片图,然后在每一帧里,用同样的身体碎片图,配上不同的胳膊、腿,形成完整的一帧。动画只需要导出身体、胳膊、腿的碎片图即可。这样既节省了动画里大量的不变部分,同

2015-04-29 20:10:27 1399

转载 lua调用C++函数崩溃时,查看lua的调用栈信息(特别适用于tolua++)

cocos2d-x这个开源引擎目前在移动开发领域挺火,我用了一阵子,非常喜欢它的lua绑定,一旦理解了其工作机制,用起来相比C++有不同的感受。        但是想要用好lua脚本,实在不是件容易的事情。要让lua绑定变得非常好用,可能依然需要大量工作。        这里记录一个很实用的技巧:在lua调用cocos2d-x的接口而导致崩溃时,无法直接看到lua的调用栈,也就无法知道目前

2015-04-29 16:23:30 1987

转载 值得推荐的C/C++框架和库

值得学习的C语言开源项目- 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行。下载链接:http://home.tiscali.cz/~cz

2015-04-25 11:10:41 1252

转载 Cocos2d-x数据加密解密详解

C++的Base64算法实现/* * base64.cpp * * Created on: 30/04/2011 * Author: nicholas */#include "base64.h"#include //#include #include namespace base64{namespace{static const std::string BA

2015-04-23 22:39:39 1646

转载 Cocos2d-x-lua工程的lua脚本加密

前言部分1、本文是以cocos2d-x-lua项目为例说明的。2、我这里只说下我自己遇到的问题和解决方法,当大家也遇到时可以参考下。3、我所使用的cocos2d-x版本是cocos2d-2.1rc0-x-2.1.3,这个版本使用的是luajit,而不是源生的lua,luajit有很多好处。---------------------------------------

2015-04-23 22:21:54 800

转载 修改lua的文件加载器,自定义lua文件加载

Lua提供高级的require函数来加载运行库。     1. require会搜索目录加载文件     2. require会判断是否文件已经加载避免重复加载同一文件。     require使用的路径和普通我们看到的路径还有些区别,我们一般见到的路径都是一个目录列表。require的路径是一个模式列表,每一个模式指明一种由虚文件名(require的参数)转成实文件名的方法。更明确地

2015-04-23 22:11:14 1274

转载 关于cocos2dx手游lua文件加密的解决方案

很多使用cocos2dx+lua做游戏的同学,都会想到一个问题,我的游戏一旦发布,怎样才能保证的我脚本代码不被破解,不泄露代码。虽然这和开源、共享的原则不合,但是代码也是coder的劳动成果,理应得到保护。特别是商业游戏更是如此,不希望被别人破解掉源码并且进行修改。      今天的话题就是如何实现lua脚本文件的加密和解密。      我在网络上查过,都没有成熟的解决方案。然后我经过考虑

2015-04-23 21:53:49 1312

转载 Cocos2d-x-Lua出乎意料的性能短板——那个getPosition的binding

这次要来说一个吹水的话题,关于性能方面,最近在用Cocos2d-x + Lua写一个小游戏,因为实在太简单,就完全没想过会有什么掉帧的情况。结果一到手机上运行,在关卡场景里的帧率立刻降低了,大概只有16到30帧,这个帧率对这个游戏来说,实在是有点可怕。找了一下原因,凶手是某个update函数,因为每帧都要调用,遍历200到400个对象,主要是做碰撞检测,就在这里帧率下降了一半。优化也很

2015-04-23 21:15:39 1912

转载 Cocos2d-x中luajit的使用

新版本的cocos2d-x使用了luajit来替代原始的lua,好处一是可以极大的提高运行速度(android下可以开jit,运行速度提高10~60倍,ios下不可以开jit,运行速度也可以提高2~3倍)。 二是luajit编译的字节码现阶段来说无法反编译,也就是说无法破解。 这里对luajit进行详细的说明。       1、基本使用。这个很简单,不用修改任何代码,与lua5.1完全兼容

2015-04-23 20:50:41 1286

转载 os库-时间函数

一、时间的三种格式1、用数值表示时间值 用数字值来表示时间值,实际上时间值的本质就是一个数字值。例如:d = 1131286477 这里的 1131286477 是一个以秒为单位的 格林威志时间(gmt),注意不同时区的时差2、用字符串表示时间 用字符串来来表示时间。例如:d = "2005-11-06 22:18:30" --2005年11月6日

2015-04-23 20:34:43 617

转载 状态机的实现

现在很多人在利用比较流行的开源游戏引擎cocos2d-x开发游戏,在游戏中免不了使用状态机,这里给大家一种我自认为好的状态机的实现O(∩_∩)O~。先贴上代码: #ifndef BASESTATE_H #define BASESTATE_H template class BaseState {

2015-04-23 16:22:01 530

转载 Lua中的table函数库

一部分的table函数只对其数组部分产生影响, 而另一部分则对整个table均产生影响. 下面会分开说明. table.concat(table, sep,  start, end)concat是concatenate(连锁, 连接)的缩写. table.concat()函数列出参数中指定table的数组部分从start位置到end位置的所有元素, 元素间以指定的分隔符(sep

2015-04-23 16:07:48 521

转载 用lua从写一次最大子数组问题

这回由于Lua 的语法比较强大,所以直接写出代码 别的不多说了,我们可以看到lua写这种逻辑是多么有快感。可以返回多个值,使算法看起来是这么的自然。附上源代码:      function FIND_CROSSING_SUBARRAY (A,low,mid,high) local left_sum = -10000; local sum

2015-04-23 16:04:25 900

转载 Lua动态加载模块

重新加载模块function reload( moduleName ) package.loaded[moduleName] = nil require(moduleName) end使用以上代码即可重新载入一个文件。这样修改完lua代码后,可以不用重启程序立刻生效。 原代码模块A: A = {}

2015-04-23 15:52:02 1064

转载 Lua自定义方式加载模块

很多人苦于lua脚本被别人破解导致整个游戏被他人抄袭而苦恼,现在来说说最近刚研究通的一种修改办法,可以加载自己加密过的脚本,而且又不会导致普通的lua脚本无法执行,这样既可以运行加密脚本也可以运行普通的脚本,这是多么爽的一件事情。好了接下来我直接给出我们需要修改的地方;打开文件loadlib.c这个文件我们可以看到有几个函数loader_Lua,loader_C等函数;我们可以仿写一个 ,实现

2015-04-23 12:44:23 622

转载 以自定义方式加载 lua 模块

今天我们的一个小项目开始做内部测试发布前的资源打包。这个项目基本上是用 lua 做开发的。整个开发过程中,我们的代码是直接把 Lua 源代码放在项目的发布目录下的。发布版因为安全或是整洁等种种原因,我们必须给所有的脚本代码打包。     这种事情以前在大话2 里也干过,当时用的 lua 4.0 而且也没多少经验,我们是直接去修改的 lua 的代码,适应我们的打包格式。这次,不想这么干了。希

2015-04-23 11:20:41 955

转载 Lua内存泄漏应对方法

结合之前的Lua内存检测原理这篇文章来看,下面这篇文章是这个原理的部分实现与应用。有代码真的好,让你快速了解。   由于目前正在负责的项目是一个二次开发项目,而且留给我们的代码质量实在让人无力吐槽,所以遇到了不少大大小小的坑,好在慢慢都淌过去了。最近就遇到了一个内存泄漏的问题,泄漏发生在lua里,项目代码里以前的开发团队留下了检测泄漏的代码,但也仅限于此。由于代码量庞大,所以想从逻辑上

2015-04-23 10:36:33 1336

转载 Lua的内存监测和回收

Lua内存是自动收集的, 这点跟Java类似, 不被任何对象或全局变量引用的数据,将被首先标记为回收,不需要开发者做任何事情.但是,正如Java也会有内存泄露一样, Lua也会有, 只不过,跟C++的不同,它是由于代码执行所装载的资源,并没有被彻底销毁而导致,其中,最臭名昭著的就是不小心把局部变量声明成了全局变量(忘了加local修饰符)。 类似这样造成的内存泄露, 跟任何其他语言的内存泄露一样,

2015-04-23 09:56:04 716

转载 lua内存泄露检测原理

上次写了一个lua内存泄露检测的脚本,现在将它的实现原理拿出来和大家分享一下,希望能有所帮助。lua内存泄露:        首先第一点,lua中的内存泄露和我们所说的c/c++中的内存泄露本质上是不一样的。        lua中有垃圾回收机制(GC),所以理论上是不会有内存泄露的。当它进行GC的时候,会从根部开始扫描所有的对象,如果某个地方对这个对象还有引用,就不会把这个对象内存c

2015-04-22 21:25:54 1399

转载 利用userdata metatable和pushlightuserdata绑定c++类

本文主要讲解了userdata、metatable、pushlightuserdata的使用,以及介绍了绑定C++类到lua的核心问题--生命周期。值得学习!   void *lua_touserdata(lua_State*L,intindex);如果给定索引处的值是一个完整的userdata,函数返回内存块的地址。如果值是一个lightuserdata,那么就返回它表示的指针。否则,返

2015-04-20 23:01:00 4127

转载 了解lua setmetatable和__index的小例子

local _a1 = {20, 1, key1 = "hello", key2 = "world", lang = "lua"} print("the table _a1:") for _,v in pairs(_a1) do print(v) end local _a2 = { key1 =

2015-04-20 21:56:44 771

转载 Lua游戏脚本热更新机制

一、设计要点        能够在服务器运行期间更新程序逻辑代码以实现修正程序Bug、修改游戏数据的目的。游戏框架代码的热更新暂不考虑。例如:某个业务处理函数逻辑有Bug,服务器运营期间发现,在不停机情况下及时更新代码修复。 技能数值表策划填写出现手误错误,致玩家战斗异常,在不停机情况下及时更新内存中的数值表。     更新代码时要保护非代码数据,尽量不用重新载入存盘数据。例如

2015-04-20 20:35:56 2957

转载 为 lua 封装 C 对象的生存期管理问题

原文地址:http://blog.codingnow.com/2009/03/lua_c_wrapper.html    原文内容如下:把 C 里的对象封装到 lua 中,方便 lua 程序调用,是很常见的一项工作。里面最大的问题是生命期管理问题。通常有两种方案:第一:编写 C 库的时候,完全针对 lua 设计,所有对象都有 lua_newuserdata 分配内存。对象和

2015-04-20 17:02:01 866

转载 为 Lua 绑定 C/C++ 对象

这篇主要说了C/C++绑定Lua的思路,而无过多的实现代码,这对我这等小白来说,简直悲剧。       原文地址:http://blog.codingnow.com/2013/01/binding_c_object_for_lua.html。原文内容如下:如何绑定 C/C++ 对象到 Lua 里?通常是创建一个 userdata ,存放 C/C++ 对象指针,然后给 userd

2015-04-20 16:56:41 784

转载 手游弱联网手游如何防作弊

本文是看到《乐元素CTO凌聪:弱联网手游如何防作弊?》之后,我觉得这篇文章讲的东西都很实用,贴合我们实际,比你看那些理论的书籍强多了,而且也非常佩服乐元素能把这些东西拿出来讲,虽然在某些人眼里,这些都不算什么,但是这些人有把你们所了解的技术拿出来分享?确实这篇文章能很多小白了解各种技术的契机,如果你能拓展所说的概念,那么你会学到很多东西。原文内容如下:    在刚刚举行的MDCC活动上,乐元素

2015-04-20 15:23:03 3316

转载 手游基本框架的介绍

本文是看到《乐元素CTO凌聪访谈:游戏引擎技术选型之王道》这篇文章后,我觉得还是挺有道理的,其他也说出了一些手游的基本框架,对于小白来说,还是挺有概念价值的。但是说到实际,概念归概念,到最后能写出代码才是王道,管你什么框架。部分内容如下,方便以后自己查看。    一:你们为什么喜欢上脚本化,并且选择了Lua语言?      因为Cocos2d-x里面也支持挺多的脚本引擎,包括Lua、J

2015-04-20 14:25:26 4261 2

转载 浅析LUA中游戏脚本语言之魔兽世界

LUA游戏脚本语言之魔兽世界是本文要介绍的内容,随着《魔兽世界》(以下简称wow)在世界范围内流行,脚本渐渐被人们所熟知。由于wow强大的自定义界面系统,Lua这一脚本语言一举成名。其实早在Lua脚本语言被大众所熟知以前,游戏业内人士就已经开始使用脚本来开发游戏了。我们熟悉的很多国内的网络游戏大都运用了脚本开发,比如网游的长青树“梦幻西游和《大话西游2就大量应用了脚本技术。特别是《大话西游2》

2015-04-19 10:29:29 14057

转载 Lua开发环境Decoda详解

关于LUA开发环境Decoda详解是本文要介绍的内容,主要是来了解lua开发工具的应用,在网上找到了这么有用资料,也与友们进行分享一下,来看本文详细内容讲解。今天项目组的同事提起来要整个调式lua的工具,由于近期项目中用到lua的脚本日趋增长,导致脚本出问题的几率也日益增加~~ 。调试起来也不是特别方便,所以有必要整一个。于是就先找到了一个调式器,暂时可以满足项目的需求。下面先转帖一下网上一位

2015-04-19 10:27:59 2881

转载 使用Lua编写Wireshark的Dissector插件

使用Lua编写Wireshark的Dissector插件是本文要介绍的内容,Dissector 插件可以用来对特定的协议内容进行分析展示,在分析自己实现的应用层协议时还是很有用的。 dissector插件一般用 C 来实现,具体如何实现可以参考 Wireshark 代码目录下面的 \epan\dissectors 中的源代码和 plugins 目录下面的源代码。一些简单的对性能要求不高的

2015-04-19 10:27:39 1749

转载 Lua中使用Web开发

LUA中使用Web开发初探是本文要介绍的内容,主要是来了解并学习在lua中如何实现web开发的,具体内容来看本文详细内容讲解。Kepler环境搭建:我本身是做Web开发的,自然喜欢把新学习的东西往Web方面联系。提到Web和Lua,所有人都会自然而然的想起一个开源的项目Kepler (http://www.keplerproject.org/)。它给我最大的感觉就是短小精悍,实在有点难以置信,

2015-04-19 10:23:39 2921

转载 Lua Package定义

LUA中关于Package定义学习笔记是本文要介绍的内容,主要是来学习lua中对Package,具体内容俩看本文详解。Package是个很逻辑的概念。也就是说很可能不是语言直接提供的设施。cpp里的namespace可以用来实现package,在LUA中则是依靠table机制来实现。实现的方式大同小异,本文总结了在《lua中文手册》中出现的3种方式。方式一: 直接将所有组成包的数据和方法定义在

2015-04-19 10:17:53 652

转载 Lua 5.1 API函数(二)

Lua 5.1中关于API函数学习教程是本文要介绍的内容,主要是来学习API函数在lua中的应用,具体内容来看本文详解。lua_State* luaL_newstate() Lua脚本的编译执行是相互独立的,在不同的线程上执行。通过luaL_newstate()函数可以申请一个虚拟机,返回指针类型 lua_State。今后其他所有Lua Api函数的调用都需要此指针作为第一参数,用来指

2015-04-19 10:01:39 631

转载 Lua 5.1 API函数(一)

Lua中关于函数库基本操作学习笔记是本文要介绍的内容,主要是来学习函数库在lua中的应用,具体内容来看本文详解。基本函数库为Lua内置的函数库,不需要额外装载。assert (v [, message])功能:相当于C的断言,参数:v:当表达式v为nil或false将触发错误,message:发生错误时返回的信息,默认为"assertion failed!"collectg

2015-04-19 09:55:20 611

转载 Lua源文件目录分析

关于Lua源文件分析是本文要介绍的内容,主要是来聊lua的源文件,本人认为作为初学者应该去了解并学习这些内容,具体来看本文详解。lua 5.1.4核心的源代码共55个文件,大致分析如下:lapi.c // Lua API,C调用API lapi.h // Auxiliary functions from Lua API lauxlib.c // Auxiliary function

2015-04-19 09:46:24 1295

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除