随笔分类 -  游戏开发

记录在游戏开发中遇到的点点滴滴
摘要:最近使用友盟分享的sdk,没想到libWechatSDK.a居然和cocos2dx的符合冲突,提示base64.o重复了。 于是到网上找了一下解决方案,基本上去除微信的base64.o即可了。 用ar -x libWechatSDK.a发现不能直接解开,原来这静态库是多个cpu架构打包在一起的。 f 阅读全文
posted @ 2016-08-26 09:54 半山th 阅读(687) 评论(0) 推荐(0) 编辑
摘要:1、StageDelegate.setDesignSize ; 直接去掉,在3.x里是直接在index.html里设置如: data-content-width="960" data-content-height="640" 2、_getFrameLabelForFrame 用frameLabels 阅读全文
posted @ 2016-03-31 22:42 半山th 阅读(1174) 评论(0) 推荐(0) 编辑
摘要:通过cdn下载时,资源下载失败,后来发现是360随身wifi 拦截网络网络请求, 资源先通过他们的服务器检查,再发给客户。坑啊! 解决方法,发邮件到opensoft@360.cn提交申诉。 感觉还是用的cdn公司太小了,大家以后还是选择大公司的cdn。 阅读全文
posted @ 2016-03-22 20:19 半山th 阅读(433) 评论(0) 推荐(0) 编辑
摘要:记录下在cocos2dx 2.x时代遇到的问题 1、cocos2dx retain 在onenter时,在onexit时 release 2、先结束定时器再退出界面 3、在不同帧里数据是有可能不一致 4、ccaction 必须要是node的子类,ccnode不行 5、滑动判断 起点、终点 6、aab 阅读全文
posted @ 2016-03-22 20:04 半山th 阅读(517) 评论(0) 推荐(0) 编辑
摘要:记录下在cocos2dx 2.x时代遇到的问题 1、节点的观念,用节点来管理 2、pushscene popscene 和replacewithscene runwithscene对应 3、lua里释放定时器后,可以把定时器id设为-1,来判断是否释放 4、lua里的类型转换用tolua.cast 阅读全文
posted @ 2016-03-22 20:03 半山th 阅读(797) 评论(0) 推荐(0) 编辑
摘要:虽然已经转到服务端,但是对客户端的事情,偶尔还看看。公司的游戏用的是cocos2dx 3.2的版本,然而在Android 5 上却无法运行。先是没有触摸事件。在stackoverflow上看到,原因是没有加载编译生成的so文件。可是看了一下AndroidManifest.xml已经加载了。于是对比了... 阅读全文
posted @ 2016-01-14 15:48 半山th 阅读(629) 评论(0) 推荐(0) 编辑
摘要:两种方法其实都一样,CCLayer也是继承CCTouchDelegate。1、继承CCTouchDelegate添加触摸代理CCTouchDispatcher* pDispatcher = CCDirector::sharedDirector()->getTouchDispatcher();单点触摸... 阅读全文
posted @ 2014-04-15 17:32 半山th 阅读(265) 评论(0) 推荐(0) 编辑
摘要:在泰然论坛发个了帖子,没有人解答,内容如下:遇到奇葩问题了,cocos2dx 2.2 CCRenderTexture* tex=CCRenderTexture::create(100, 100); tex->clear(0, 0, 0, 0); tex->begin(); ... 阅读全文
posted @ 2014-04-14 15:01 半山th 阅读(282) 评论(0) 推荐(0) 编辑
摘要:本人不懂oc,一步一步按照友盟的文档做,好不容易把分享做好了,结果在分享图片的时候宕掉了。各种测试,搞了一下午终于搞定了。如下是友盟文档的做法,错误就在[UIImage imageNamed:@"icon.png"]这个函数里,[UMSocialSnsService presentSnsIconSheetView:self appKey:@"507fcab25270157b37000010" shareText:@"你要分享的文字" ... 阅读全文
posted @ 2014-03-04 20:07 半山th 阅读(480) 评论(0) 推荐(0) 编辑
摘要:用CCRenderTexture就可以了,不知是否有更好的方法。if (!miniMap) { miniMap=CCSprite::create(); miniMap->setZOrder(1000); CCDirector::sharedDirector()->getRunningScene()->addChild(miniMap); } miniMap->setVisible(false);//设为false后在visit的时候就不会画到CCRenderTexture里了 CCPoint sPoint=mScene... 阅读全文
posted @ 2014-03-04 19:56 半山th 阅读(630) 评论(0) 推荐(0) 编辑
摘要:这里记录一下我常用到的一些lua函数,不定期更新。1、cirleAdd函数是用来一个循环自增的,其中num是最大值,startNum是起始值,stepNum是步长,startFlag默认真起始值从startNum开始,为假时起始值从stepNum+startNum开始。用法为 i=circleAdd(9),则每次调用i(),i会自增1,当i达到9后会自动变为1.2、between函数图中已经明白了。 阅读全文
posted @ 2013-07-29 07:50 半山th 阅读(421) 评论(0) 推荐(0) 编辑
摘要:这里记录一些有用的love2d库,它们的文档都挺全的,若有需要我会写一些介绍,暂时记下这些,我会不定期更新。一、humphump是Helper Utilities for More Productivity(提高生产力的辅助工具)的简称,官网地址。它包含了,下面的七个库。hump.gamestate A gamestate system. hump.timer Delayed and time-limited function calls. hump.vector 2D vector math. hump.vector-light Lightweight 2D vector math.... 阅读全文
posted @ 2013-04-20 19:46 半山th 阅读(1240) 评论(5) 推荐(1) 编辑
摘要:说明现在已经开始复刻“金庸群侠传”了,对于通用的love2d用法我已经写的较多了,希望大家看后可以做一些自己的游戏。之后可能不会再像以前一样更新了,若是遇到通用love2d用法,我还是会继续写。由于复刻才开始,还没搭好框架,等以后搭好框架后我把代码托管到github/gitcafe上,这样大家可以和我一起开发。曾经我介绍过middleclass,可是后来在代码里基本没使用,主要原因有:1、自定义的类可以很方便的用middleclass重构2、以前的代码不涉及继承,不需要middleclass复杂的功能不过现在我要转向middleclass了,因为之后百分百会涉及继承、多态等面向对象的概念。正文 阅读全文
posted @ 2013-04-20 19:17 半山th 阅读(1411) 评论(4) 推荐(0) 编辑
摘要:之前学了两三个月的love2d,对love2d已经基本了解,是时候开始进行复刻了。总参考是其SDL复刻版,下面是我将使用的方法,以及如何实现。 自己第三方图形界面loveframes地图文字特效richtext路径搜索jumper精灵+动态加载lua+存档加密+(简单封装gzio,base64)中文输入法+定时器hump摄像机hump状态机hump事件hump类middleclass碰撞检测hardoncollider物理引擎Lope2d(让box2d易用)音效TEsound粒子+(仿hge)文件系统LoveFS没想到我居然要使用这么多的第三方库,以后若有需求,如不是太难还是争取自己实现,把自 阅读全文
posted @ 2013-04-18 22:15 半山th 阅读(813) 评论(0) 推荐(0) 编辑
摘要:中文字符串要想实现字符流水灯,先要实现中文字符串截取,因为在love2d里含有中文时string.sub失效。 可能学得不好吧,为了实现love2d的中文字符串截取,居然在此耗费了五六个小时。一开始我想的是通过编写C/C++扩展来实现,于是有了c++截取汉字和英文混合字符串这篇文章。可是等我生成dll后居然发现是乱码,以为是自己的代码问题,折腾了半天还是没有结果,后来吃饭后回来突然想到可能是编码问题。于是在win的命令行上右键查看属性是936编码,可见cmd是不支持utf-8的,而我的lua编码是utf-8,于是把lua文件另存为ansi码,再运行居然可以了。当我天真的想这下应该可以截取中文. 阅读全文
posted @ 2013-04-12 22:21 半山th 阅读(1394) 评论(7) 推荐(0) 编辑
摘要:这篇继续上篇love2d游戏1--1942game(一),分为两部分,一游戏背景、玩家和敌机的显示,二子弹发射和计分。(注:一些全局变量放在了conf.lua里)一、游戏背景、玩家和敌机的显示这个游戏的背景用的是一个32*32的图片,怎么才能让其在整个屏幕上显示呢?其实只需要加载图片后,用for循环让其在不同的坐标处显示即可,代码如下:-- 绘制动态的背景 for i = 0,4 do --绘制5列 for j = -1,4 do --绘制6行 --绘制坐标随时间变化,y坐标增大32*scale,这里32为图片的宽和高 love.graphics.draw(img... 阅读全文
posted @ 2013-04-09 21:58 半山th 阅读(1064) 评论(0) 推荐(0) 编辑
摘要:这一路来我感觉对love2d已经基本了解,但对于如何做游戏还是不太熟悉,于是便有 看一些的love2d游戏代码的想法。1942game来自此处,版权归其作者我只是略作修改,我将分两篇来讲解,此篇为游戏启动画面。当我们玩游戏时,进入我们的第一个界面便是启动画面了,启动画面一来可以作为游戏的宣传,二来可以用来预加载游戏资源。我们可以先建一个类,在里面放上启动画面的代码,代码里放上状态变量和时间控制。然后在main.lua里检测状态变量的值,并执行相应的操作。具体如下:main.luarequire('splash')function love.load() font = love. 阅读全文
posted @ 2013-04-08 22:27 半山th 阅读(1480) 评论(0) 推荐(0) 编辑
摘要:只要做一些可以运动的游戏,碰撞检测会成为家常便饭,简单的只要判断一下两个物体的坐标关系就可以了;复杂的则需要比较高级的算法。box2d里自带碰撞检测,它采用的是连续碰撞检测(在文档上看的,我也不知具体为何),可是我们并不想对整个游戏里角色都使用物理引擎。虽然可以只用它的碰撞检测,但是也挺麻烦的(不用box2d管理坐标,而是我们自己设置,之后把坐标传给box2d,再从box2d里获取)。而且我想做一个通用的碰撞管理类,我用box2d试了一下,可是它的坐标系是在物体中心,而love2d的坐标系是左顶点,而且我又比较懒,看到love2d的wiki上有做好的碰撞检测(叫hardoncollider), 阅读全文
posted @ 2013-04-05 20:21 半山th 阅读(1574) 评论(4) 推荐(0) 编辑
摘要:本文简译自一篇老外的博客,写得不错可惜我翻译的太烂,简译如下。(key--value常见翻译为“键值对”,我翻译为索引、值)在这篇教程里我会介绍Lua中一个重要的概念: metatable(元表),掌握元表可以让你更有效的使用Lua。 每一个tabel都可以附加元表, 元表是带有索引集合的表,它可以改变被附加表的行为。看下例:t = {} -- 普通表 mt = {} -- 元表,现在暂时什么也没有 setmetatable(t, mt) -- 把mt设为t的元表 getmetatable(t) -- 这回返回mt 如你所见 getmetatable 和setme... 阅读全文
posted @ 2013-04-02 22:17 半山th 阅读(13868) 评论(10) 推荐(1) 编辑
摘要:接上篇,今天又折腾了半天,终于可以解析grp文件了。 “金”的图片编码方式为rle8(行程编码),一个grp文件里存放一系列的图片, 图片编码的格式为:起始8个字节xxxx xxxx xxxx xxxx --xxxx表示两位二进制数,也是大端格式宽 高 x偏移 y偏移剩下的表示颜色数据,按行编码,每一行的第一个字节表示当前行所占的字节数, 第二个字节表示透明点的个数,接着的字节表示颜色点的个数,然后是颜色点的 颜色值,如此反复。ssss xxxx yyyy zz.......zz ssss xxxx yyyy zz......zz .... 阅读全文
posted @ 2013-03-29 19:58 半山th 阅读(1874) 评论(0) 推荐(0) 编辑