随笔分类 -  lua

1

lua相关
Lua配置表优化-二进制方案
摘要:#需求 随着项目组越来越大,Lua配置表内存占用越来越大,峰值超过60M。这导致在1G内存设备想达标就很困难了,可以说是必须解决的问题。 #优化思路 把Lua配置表转成二进制自动格式,导出到Lua成一个Userdata,通过给userdata一个特别设计的Metatable,使它访问起来和普通的配置 阅读全文

posted @ 2022-11-08 10:58 marcher 阅读(1238) 评论(0) 推荐(0)

lua定点数库
摘要:开源定点数库fpm,并导入到lua中使用 https://github.com/MikeLankamp/fpm # 本质 把浮点数*65336,取整。所有运算是整数运算,从而保证一致性 # 问题 效率通过对比,差不多有一倍略多的损耗。 # 改进 lua53中,支持//操作,对于操作数都是整数的情况下 阅读全文

posted @ 2021-06-02 16:24 marcher 阅读(1089) 评论(0) 推荐(0)

c#与lua交互里,错误处理
摘要:如果是c#代码出错了 会在所有导出的方法里,增加try catch,然后把错再抛到lua里。 如果是lua代码出错了 会同时抛出c#的exception,这样c#的栈才能正确处理 阅读全文

posted @ 2019-04-18 17:33 marcher 阅读(535) 评论(0) 推荐(0)

lua53编译
摘要:#下载lua包lua-5.3.5 #vs2017新建个空工程,删除lua.c,luac,c,设置配置类型 动态库.dll #编译完成 阅读全文

posted @ 2019-03-15 17:22 marcher 阅读(276) 评论(0) 推荐(0)

unity里c# gc优化 -字符串
摘要:1使用unsafe,直接修改字符串 修改text部分 但是有个坑,lua是utf8编码,而c#里是ucs2b编码,所以需要做个转换,明天补上 需要2个方法,一个是获取utf8编码个数 一个是从utf8转到unicode(utf16) 修改text部分 阅读全文

posted @ 2018-09-04 22:02 marcher 阅读(456) 评论(0) 推荐(0)

mono下c#和c交互,字符串处理
摘要:起因是ulua里,从luajit读字符串到c#里,做了编码转换,如下 public static string lua_tostring(IntPtr luaState, int index) { var kind = lua_type(luaState, index); if (kind == L 阅读全文

posted @ 2018-09-04 21:59 marcher 阅读(441) 评论(0) 推荐(0)

cocos2dx的ui封装
摘要:cocos2dx里加载cocosudio导出的ui配置文件,在这之上封装了一下,封装核心类包括UIManager,UILayer,UIOwnerUIManager是所有ui总的管理类,代码如下:UIManager = { battle = 1, city = 2, login = 4, ... 阅读全文

posted @ 2014-06-23 16:32 marcher 阅读(842) 评论(0) 推荐(0)

cocos2dx使用cocostudio导出的animation
摘要:local uilocal function createLayerUI() if not ui then ui=cc.Layer:create(); createLayerUI=nil; end return ui;endlocal sclocal function createLayerSc... 阅读全文

posted @ 2014-06-18 17:57 marcher 阅读(876) 评论(0) 推荐(0)

cocos2dx使用cocostudio导出的scene
摘要:local uilocal function createLayerUI() if not ui then ui=cc.Layer:create(); createLayerUI=nil; end return ui;endlocal sclocal function createLayerSc... 阅读全文

posted @ 2014-06-18 15:54 marcher 阅读(325) 评论(0) 推荐(0)

cocos2dx使用cocostudio导出的ui
摘要:local uilocal function createLayerUI() if not ui then ui=cc.Layer:create(); createLayerUI=nil; end return ui;endlocal sceneGame=cc.Scene:create()sce... 阅读全文

posted @ 2014-06-18 13:59 marcher 阅读(303) 评论(0) 推荐(0)

手游引擎
摘要:2d手游引擎,至少要提供5个解决方案:1UI2角色怪物动画3场景4粒子5音频视频语言选择使用c++,脚本使用lua,c++需要提供的核心API包括1图片加载接口_Image.new2图片文字渲染接口_Image:draw()3音频视频接口soundgroup:play4事件接口_app:onIdle... 阅读全文

posted @ 2014-06-17 01:01 marcher 阅读(295) 评论(0) 推荐(0)

页游手游服务器(五)sql缓存层
摘要:sql的通用缓存,是实现最麻烦的一部分,对于查询结果的缓存,主要有如下的结构来缓存:cache tablename--player statement--select * from player where vip>1 key1 key2 ... 阅读全文

posted @ 2014-06-14 18:01 marcher 阅读(417) 评论(0) 推荐(0)

页游手游服务器(四)事件机制
摘要:事件机制主要用于服务器逻辑处理,形式如下:define.Func1{Arg1=0, Arg2=‘abc'}--定义事件,Func1为事件名,Arg1=0, 指Arg1参数默认值为0,Arg2='abc'指Arg2参数默认值为0,主要用于参数类型验证when{}function Func1(Arg1,... 阅读全文

posted @ 2014-06-14 17:31 marcher 阅读(302) 评论(0) 推荐(0)

页游手游服务器(三)lua网络层
摘要:在(一)中,介绍了c对lua层的拓展,这边主要写lua层的网络部分,目标是实现RPC调用,实现主要是三部分:1通信协议(消息的序列化和反序列化)rpc调用主要信息包括方法名,方法参数,设计的通信协议如下:字节长度(4字节)|方法名|方法参数因为方法参数是由1个表序列化来的,必然以’{‘开头,所以可以... 阅读全文

posted @ 2014-06-14 15:54 marcher 阅读(354) 评论(0) 推荐(0)

页游手游服务器(二)c支持mysql
摘要:上一篇说的是liua的net拓展,这一篇说lua的sql拓展,准确说是mysql拓展,这里推荐下postgre,比mysql好用,支持数组,各种好,不过腾讯平台不支持,所以你的公司要和腾讯合作,掂量下吧c部分本质使用prestatement接口:_sql.new(host, user, passwo... 阅读全文

posted @ 2014-06-14 11:54 marcher 阅读(224) 评论(0) 推荐(0)

页游手游服务器(一)c实现拓展lua网络
摘要:把工作几年服务器相关的部分内容,通过服务器解决方案,做一次总结。整个实现的主体是lua脚本,lua实现主要缺少的两大块:1网络部分2数据库部分这两部分必须通过c/c++做扩展先来做net,主要是服务器net,和客户端net。服务器发起连接的情况主要是用于和平台验证,上报之类的,还有服务间通信,接口如... 阅读全文

posted @ 2014-06-13 19:12 marcher 阅读(618) 评论(0) 推荐(1)

lua2json
摘要:lua对象json序列化,很简单,没做中文的unicode编码了local function bool2json(v) return v and "true" or "false";endlocal function string2json(s) return table.concat({"\"", s, "\""});endlocal allowedkey={ ["boolean"]=true, ["number"]=true, ["table 阅读全文

posted @ 2013-11-26 21:56 marcher 阅读(528) 评论(0) 推荐(0)

lua调试小技巧
摘要:lua中,如果碰到某个属性值改变了,但是修改的地方又特别多,调试就特别麻烦了,有个小技巧,直接贴代码local m = { __index = function( t, k ) if k == "x" then-- print( "看看属性", k );-- print( debug.traceback() ); end return t._old[k]; end, __eq = function( t, k, v ) print( "看看属性", k ); t._old[k]=v; end, __newindex = functio 阅读全文

posted @ 2013-11-23 22:06 marcher 阅读(283) 评论(0) 推荐(0)

lua面向对象封装
摘要:lua面向对象的一个封装,直接贴代码--swfclass = {};local cs = {};function _class( child, base, ... )-- _.s( child ); if( cs[ child ] ) then error( "duplicate class : " .. child ) end; local c = _G[child]; table.copy( c, base or {} ); for ii = 1, select("#", ...) do table.copy( c, select(ii, ...) 阅读全文

posted @ 2013-11-23 21:50 marcher 阅读(401) 评论(0) 推荐(0)

lua解析json
摘要:自己写的lua解析json,带容错,如果要是用于格式检查,得修改下。很简单直接贴代码--------------------------------------------------json解析----------------------------------------------------------local function json2true(str,from,to) return true, from+3endlocal function json2false(str,from,to) return false, from+4endlocal function json2nu 阅读全文

posted @ 2013-11-23 21:36 marcher 阅读(6660) 评论(0) 推荐(0)

1

导航