posts - 5,  comments - 13,  trackbacks - 0
  置顶随笔
     摘要: 近期手上项目需要选择一配置信息保存方案,现就XML、JSON、Protocol Buffer(以下简称PB)、Lua做一次横向对比。首先要说明的是Lua严格来说属于嵌入式脚本语言,而XML、JSON、PB都属于数据交换格式,两者之间不属于同类别,按理说不应该放在一起比较,但是就项目需求来讲,Lua也能够实现配置信息保存。故而将Lua和XML、JSON、PB放在一起做横向对比。   XML JSON...  阅读全文
posted @ 2008-11-06 12:44 虾虾 阅读(833) | 评论(6) |  编辑
  2009年4月17日

最近在用Ogre+CEGUI+OIS做游戏。在开发的过程出现了种种问题,现将问题一一整理,并将解决方案释出,供同好参阅。

OIS默认鼠标占用模式是鼠标独占使用,表现为鼠标指针无法移除当前窗口。那么如果想把鼠标指针移除窗体怎么解决呢?让OIS使用鼠标协作模式啊!代码如下:

 

//创建设备

OIS::ParamList pl;

size_t windowHnd = 0;

std::ostringstream windowHndStr;

 

m_Window->getCustomAttribute(Ogre::String(”WINDOW”), &windowHnd);

windowHndStr << windowHnd;

pl.insert(std::make_pair(std::string(”WINDOW”), windowHndStr.str()));

pl.insert(std::make_pair(std::string(”w32_mouse”), std::string(”DISCL_FOREGROUND”)));

pl.insert(std::make_pair(std::string(”w32_mouse”), std::string(”DISCL_NONEXCLUSIVE”)));

m_InputManager = OIS::InputManager::createInputSystem( pl );

 

 

这下好了,鼠标可以移除当前窗体了,突然发现没对,怎么有两个鼠标指针?好嘛,我就在当前窗口隐藏掉系统的指针!代码如下:

 

ShowCursor(0); //隐藏系统鼠标指针

 

这回应该没问题了吧~~~啦啦啦,还是没对哦!鼠标定位不准确~~~~~~~~,行!那就在mouse::MouseMoved 事件中把 Moved(e.state.X.rel, e.state.Y.rel) 替换成Postion(e.state.X.abs, e.state.Y.abs)

 

在编译运行,矣~~~~~~咋个指针在一个很小范围内移动呢?哦,原来OIS默认宽和高是50px啊,来设置成RenderWindow的宽高即可!代码如下:

 

_mouse->getMouseState().width=_render_window->getWidth();

_mouse->getMouseState().height=_render_window->getHeight();

 

嘿嘿,这下完美了!ohmy god~~~~~~~~为什么这样对我?鼠标都移除窗体了,为什么窗体内的那个指针还要动,那我就在MouseMoved中做边界检查,对了为了防止误点,还要在mousePressed mouseReleased 做边界检查,代码就不啰嗦了!~~~=

 

 

       至此OGRE+OIS+CEGUI鼠标非独占使用,完美解决!

posted @ 2009-04-17 00:54 虾虾 阅读(2625) | 评论(2) |  编辑
  2008年11月20日
posted @ 2008-11-20 17:04 虾虾 阅读(1831) | 评论(4) |  编辑
  2008年11月6日

 

近期手上项目需要选择一配置信息保存方案,现就XMLJSONProtocol Buffer(以下简称PB)、Lua做一次横向对比。首先要说明的是Lua严格来说属于嵌入式脚本语言,而XMLJSONPB都属于数据交换格式,两者之间不属于同类别,按理说不应该放在一起比较,但是就项目需求来讲,Lua也能够实现配置信息保存。故而将LuaXMLJSONPB放在一起做横向对比。

 

 

  XML JSON PB Lua
数据结构支持 复杂结构 简单结构 较复杂结构 复杂结构
数据保存方式 文本 文本 二进制 文本
数据保存大小 一般 一般
解析效率 一般 稍快
语言支持程度 非常多 C++/Java/Python
开发难度?繁琐? 繁琐 简单 简单 相对繁琐
学习成本
适用范围 数据交换 数据交换 数据交换 数据保存及脚本处理

 

最终我的选择为Lua,理由如下:
首先配置文件可能很复杂;其次需要脚本功能;Lua性能较好;语言支持程度好,本项目除了用c++做主要开发外,可能还有大量辅助软件开发,就要求快速开发,性能适用就好,因此可能会选择其他语言做快速开发。而lua的多语言支持还可以。

posted @ 2008-11-06 12:44 虾虾 阅读(833) | 评论(6) |  编辑
  2008年8月16日

最近公司要和某网游公司合作推广某网游X

公司领导让我们这些小员工们都玩

每天还要定任务,必须达到多少多少级,并写下对游戏的看法

这对于很少玩网游的我来说不得不说是一个痛苦,

不觉突然想起,既然是网游就有辅助程序吧,网上搜索

发现该网游还真的有了,辅助程序,

Down下来,用用,还不错,

有时间限制?

正好 好好整理整理自己对 ASM 的学习成果,干掉之

 

找来 od 

干掉辅助程序,

哈哈,可惜啊 用ASProtect 混淆过了?

花指令tnnd真多

 

看看吧,是分析他得算法 模拟一个Server出来

还是 直接干掉吧

 

明天在试试 如果能去掉花指令 成功分析出算法

就模拟一个Server出来

不行就干掉吧

 

 

ps:本文仅用于自己学习过程的记录,文中所提网游辅助程序,并非本人开发,本人进行分析,也是为了研究学习。

 

posted @ 2008-08-16 04:31 虾虾 阅读(78) | 评论(0) |  编辑
  2008年8月10日

呵呵,一直都在园子里面潜水 看各位大大的好文 努力学习ing

 

不想注册Id 这么麻烦 还要人工审核 万幸的是 我一次通过 还好还好

posted @ 2008-08-10 08:52 虾虾 阅读(19) | 评论(1) |  编辑