随笔分类 - Lua
摘要:最终出错的位置是: #define LUABIND_OPERATOR_ADL_WKND(op) \ inline bool operator op( \ basic_iterator<basic_access> const& x \ , basic_iterator<basic_access> co
阅读全文
摘要:require( "something")或者其他情况出现 Decoding error : Invalid UTF-8.一个解决方案是 尽量使用 utf-8编码:https://love2d.org/forums/viewtopic.php?f=4&t=8760另一个方案, 也是我设置了 utf8 编码后依旧显示 invalid utf-8 问题, 按照 http://love2d.org/forums/viewtopic.php?f=4&t=33279的提法是建议 开启love2d 的 console 查看是否有其他错误 导致出错 , love2D 输出
阅读全文
摘要:在游戏项目开发中, 需要涉及协议的定义及解析, 例如服务端使用c++底层, 前端使用 as进行 flash显示, 前后段数据通信采用 socket, 这就需要协议的定制了. 服务端使用 c++ 做底层网络维护, 搭配 lua 脚本处理逻辑 和 协议解析处理; 使用这种方式的好处时, 指定新协议或修改时, 无需重新编译 C++ 的底层, 只需要修改 lua 脚本, 并重启 服务端程序或 重新加载 lua脚本即可. 唯一的问题时, 当前项目在立项时, 被设计的不友好, 每个模块分配不同同事开发, 每个同事都需要了解协议的格式, 例如"交换背包内两个物品时", lua 这边需要有
阅读全文
摘要:不管是 现在开发中的游戏服务端, 还是近期love2D 开发的前端, 都使用 Lua 做脚本引擎, 需要涉及到 脚本的修改和重启. 第一种方法是 写个封装函数, 里面进行对所有 lua 脚本文件的 require() 操作, 这就要求 :1.对每个支持重新加载的文件进行package.loaded[ filename] = nilrequire( filename)2.文件加载要保持一定的顺序, 以免造成资源的错乱.就当前使用 love2D 前端来看, 其实只有一个 "启动"文件: main.lua, 并在其内进行 各个子功能脚本的 require 加载.如果在 重新加载时
阅读全文
摘要:(前置声明: 本随笔图片资源 选自 http://opengameart.org)这边继承上一篇随笔的代码, 修改后效果图将如:较之有以下改动:1.使用简洁的背景图片2.添加了调试文本输出框(下方红色框体)3.添加了角色属性查看蓝(右上方带背景的框体)4.添加带四个方向的2D角色模型5.绘制角色模型的图片sprite边框体5.鼠标控制移动角色模型1.使用简洁的背景图片将 welcome scene 的背景变更为 黑色图片:function WelcomeScene:Initialize() self:SetDesc( "welcome scene") self:SetBac
阅读全文
摘要:...添加 表示背景图片的类:-- Background.luaBackground = {}function Background:new( imgFileName, maxWidth, maxHeight ) local o = {} setmetatable( o, self) self.__index = self if imgFileName then o:SetImage( imgFileName ) end return oendfunction Background:SetImage( imgFileNa...
阅读全文
摘要:近期, 由于受前端资源的限制, 原本以服务端C++开发为主的游戏, 无法继续; 再一次, 我决定自己编写前端.此前, 也有过很多次此类想法和做法, 但都失败了, 有 flash, unity3d, cocos 和 directx; 但都因为时间不够, 开发较为繁重, 相继放弃.这次, 我选择了使用 love2D , 理由是轻便, 并且是自己一直使用的 lua进行编写.1.安装love2D. 采用love2D 官网的 0.8版本安装 ; 安装后, 这个程序结构如:其中的 love.exe 即是主程序( lua脚本的 宿主程序, 并且能够处理基本的图形显示, 当让, 还会包含音频, 视频, 其他物
阅读全文
摘要:error: using typedef-name `T' after `class'templateclass Factory{ friend class T;};class Foo{};int main(){ Factory f; return 0;}按照 http://stackoverflow.com/questions/6321191/using-friend-in-templates提供的解决方案是:使用间接方式:templateclass MakeFriend{public: typedef T Type; };templateclass Factory{...
阅读全文
摘要:有个体会, lua table 的 #操作 是针对 table.insert() / table.remove() 这一对操作的 “操作数维护”:每次调用 table.insert() 都会是 #操作值增加(这是我自己的表达, 即使 用 #table 取得表的 返回值);每次调用 table.remove() 都会减少 #操作值。table 内部元素维护 有两种方式:第一种是 使用 table.insert() / table.remove() 这一对第二种是 使用 operator[]另外, 采用默认值声明并定义表, 并且由positive key 时, lua引擎应该会“尝试”自动调用 t
阅读全文

浙公网安备 33010602011771号