Cocos2d-x 独立开发之路–第②个游戏Fly Your Sister 总计

本文来源肥宝故事之路,引用必须表明出处!

正文来源肥宝遗闻之路,引用必须注明出处!

娱乐上线了,加个链接先 点击打开链接

2016年12月5日

《Fly Your Sister》作为第一个比较完好的手游,算是完了了对象。不过从接触cocos2d-x起来,到现在也有大概年了,才做出如此品质的二十日游,不得不说执行力太低了,而且多数工作都以近7个月做完的。将来进展计算:

14.
数组使用大括号早先化,是C++11的新剧情,好像大家linux的g++的版本不可能帮助这些。

壹 、开发条件的搭建:

CRoleSkillPosPtr po = new CRoleSkillPos(gateEntity->getEntityId().id, posIdx, skillCode, seriesId);
Message::Db::Tables::SeqTPlayerRoleSkillPos roleSkillPoss = { po->_tPlayerRoleSkillPos }; 
_skillPosMap[posIdx] = po;//保存数据库
CDbHelper::getIRoleDbPrx()->saveOrUpdateRoleSkillPos_async(NULL, roleSkillPoss);

一起初的windows下的工程,是同事成功包发给自个儿的,连HelloWorld都是她搞掂。好像直到未来作者还不掌握怎么搭建cocos2d-x的支付环境。

===============================================好久没有分割线了=====================================================================

搭建环境的,依旧问谷歌(谷歌(Google))和度娘吧!

2016年8月20日

贰 、一句一句抄程序

13.装完VS后,编写翻译,全体报错说找不到winsock2,找个windows
sdk装一下。因为网管有时候装的体系是阉割版的,漏了部分事物。

程序员都是闷骚的,做游戏的程序员特别闷骚。作者想没有人会为了做二个HelloWorld而去商讨2个没接触过的框架吧。一早先我们想的更加多的是怎么落到实处网络通讯,怎么创设服务端,怎么落到实处支付,那几个东西,多么遥远啊,到最近还没当真接触过。

===============================================再来叁次分割线=======================================================================

不了然在哪儿下载的cocos2d-x超简洁笔记,照着做,学了多少个Action,Scene,Layer,Coca Cola,就大多把特别笔记看完了。觉得差不离了,先把服务端和客户端的通讯底层做出来再算,于是跑去商量凡二的最底层。看了有些fastdb,ICE,ACE之类的事物,终究今后有没用本人不晓得,如今是没用上的。后来觉得知道了一小点,但是怎么都不做不出来3个不难易行的选取例子来。于是又跑回来看cocos2d-x。看了本《cocos2d-x课程》,内容全面点,基本也是跟着做。后来又写了找了一些《捕鱼》、《萝莉快跑》、《魔塔》等局地代码,网上都有得下载,看多了也就这回事,究竟是例证工程,不会有太高深的东西。假若说框架《捕鱼》的思路应当是比较成熟的,不知情是否《捕鱼达人》的源码简化的。到这一个时候,好像大概也是7月份了啊。

2016年7月29日

Cocos2d-x的求学进度,没啥困难,其实就是接触新东西,不懂的就把某部类,有些函数复制到谷歌(Google)方面去,也就那回事,关键是须要知道cocos2d-x的考虑吗。毕竟自身一贯做服务端的,还真没掌握客户端的机制。很多标题都是由于思路错了。

12.在VS上,每便运维程序的时候,都亟需编写翻译某几个公文,程序执行也没觉察怎么难题。不过每一趟运维,就一定要编写翻译一下。

不过作为一个初专家,学一些,调节和测试一点,多上谷歌(Google)正是了。不要想太多少深度入的职能,其实写个HelloWorld出来,假使手动能力够强,心思承受能力够强的话,应该去试试真机调节和测试了,那样能省很多武功。

改了系统时间导致,在此之前某次改时间来测试有些成效的时候,境遇过。

三、山寨FlappyBird

譬如前天是2015年十二月三十一日,因为测试供给,改到二11日。

越南小鸟真的很多人山寨,网上一搜还有源码啥的,逻辑也简要,美术资源也有了。不过没找到cocos2d的代码。决定自个儿写个,顺便作为未来游戏的底蕴代码。

接下来又一点都不小心改了代码,保存了,那几个时候文件修改日期是二零一四年八月二二十三日。

埋头写代码,八日就写出个demo了,在那之中还画了相当长日子商讨box2d。接着就进入漫长的调节,和优化。最终还把box2d优化掉了。简单的相撞,不须求物理引擎了。究竟本身不熟。Windows版的flappybird就那样做出来了。整个经过正是写代码。以后回想,对程序员来说,谷歌(Google)百度能搜到的题材,根本不是题材。一大堆教程什么的,其实那么些都未曾关联到笔者的主干利益。当然,在现有的根底上修修补补的写程序,也不算什么难题。所以说,不要认为温馨薪水低是高管吝啬,其实本身根本不值钱。接着开头真机调节和测试,恶梦才起来了。

新生测试截止,改回不奇怪的种类日期二零一四年三月二十一日。

四 、真机调节和测试

以此时候点击编写翻译也许运维程序的时候,VS就会查看到有个别文件修改时间(21二十一日)比最新的编写翻译的时光进而新,就会编写翻译一下。每一次都如此。

写好的代码平素在windows上运行多美意思啊。因为没有苹果电脑,只好先搞搞android咯。因为cocos2d-x选用了C++语言,所以自个儿要好其实某个都没接触android。网上有篇小说叫令人欲仙欲死的android环境搭配,起的名字真好。细节就不写了,网上海人民广播电视台湾大学,其实自个儿也不记得了。

化解办法就是修改一下,在此之前改过的公文,保存,就会变成6日的文件了。恐怕等到次日,文件时间过了。大概文件太多,时间又太远,只可以交给,然后删掉,从SVN下载下来重新编写翻译一下了。

首先是jdk的标题,尼玛笔者明日还不掌握干什么作者的计算机配的门径为啥没效的。必须用管理员权限才能起成效。

改系统时间还会有那多少个题材,一定要小心再小心!!!

IDE:一发端想用MyEclipse的,结果搞了一点个本子,居然都12分的不可能导入ADT,最后只得吐弃了。装了Eclipse,2遍就附加插件成功了。

=================================================淫荡的分割线=======================================================================

Cygwin:网上有一种编写翻译方式是用到那一个事物,可是好像每一遍编写翻译,都以再一次编写翻译的。

2016年7月21日

NDK:万恶的兲朝防火墙,根本连不上google服务器,百度了各个情势都尤其,结果不着调哪位大神发现能够连微软的代理去下载,即便慢,至少能下载。mirrors.neusoft.edu.cn 端口80。用了多少个钟头好满面红光的下载了一一版本的库。

11.后天两次三番找那几个突然中断的bug。

看似差不离了,工具都安装完,然后是安顿文件,mk文件啥的,一堆,网上的很乱,只好从别人发的帖子里面有些角落的死灰复燃找到灵感,你抓到了就能缓解难点,抓不到的,依然得慢慢看。尼玛居然练出了一双看英文技术帖子的眸子。这进度很曲折,其实假设是一伊始就接触android的人应有不会这么蛋疼的。可是自己又不想话太多时光在java地方,很拮据的编写翻译过了。

(1)空指针,看堆栈发现是定时器,可是定时器是在其余贰个线程的,而且由于空指针,差不离从不其余有效的音信方可查看。

好呢,调节和测试,android模拟机,配了N个,查了N多东西,居然都运维不了作者的次第。打日志吧,logcat不会用,百度去,搞了很久都尚未看出cocos2d的日志,最终只能重新插配置文件,居然发现配置文件配重复了。日志有了,原来不补助openGL。好啊,换版本,那个时候蒙受的下载ndk库的题材。蛋疼了二日。网上海人民广播电视台湾大学人都说真机调节和测试,小编直接觉得是把程序放到手提式有线电话机上跑就行了,但是尼玛又保留不了日志。搞了好久特然醒悟,真机调节和测试跟真机测试接近区别哇。。。。。。下载个Android USB调节和测试包,一插上手提式有线电话机,果然能调节。关键是能开发银行。第一天再试,发现那多少个了,查了很久不知晓怎么回事,插线拔线好三回才成功连3次。前日才发觉难题,连不上是因为中华人民共和国特色社会主义的标题,参预提式有线电话机的时候记得把360,搜狗,腾讯,酷狗等您所驾驭的拥有兲朝本土软件都关闭,不然有只怕占用端口。

(2)平常蒙受那种气象,最好正是看看能还是无法再现,能重现就能猜测出更加多的音信。伊始发现是在应战中才会师世的。

调剂是蛋疼的事,在windows下运行卓绝的主次,到android就各类失灵了。从一开头搞起,把代码注释掉,一句句调。终于意识是读取xml文件的标题。搞了长期,用了N种形式,终于明显到,android上是读取不了apk包的财富的,要用cocos2d的函数来读取。那也是从有些帖子一个不引人注意的东山再起中看见的,几十条回复中招到那么几个字得出的灵感不易于啊。最终用cocos2d去除的流文件中用rpaidxml来分解。程序终于运营起来。可是很想获得,到了一部分对讲机下边就挂了。没有实体机,也不能了。安卓那些标题很要紧。接着优化了几天。发现居然有那么些了,尼玛小编遗忘提交SVN了。又把代码注释掉,又来一句句看。就这么加起来,程序化解了,不过放进手提式无线电话机又挂了,此次很神奇,最终发现仍然照旧rapidxml的标题,好吧,读不了,只好用cocos自身的tinyxml2了。网上一堆人推荐用rapidxml,小编备感,那些人百分之九十不是人,是其余垃圾网站写的爬虫程序爬回来的,帖子连回复都一致。剩下的10%中,听人家说就这么说,还有局地人,是IOS的呢。甚至只怕过四个人都不曾几人亲自从0起初写1个戏耍。换了tinyxml2过后,就不曾赶上有个别代码上的难题了。

(3)在CellApp中,全局搜索一下,发现中间使用的定时器不多,Life、Buff、Boss
AI、Boss refresh,还有一部分跟打仗完全非亲非故的。

伍 、美术财富

(4)看了刹那间代码,是在看不出什么地方非凡,此前发现cancel在此以前把timer置空了,后来补回来了,依然出现。

先后搞完了,就得换美术能源啦,好啊,百度“美术财富”,尼玛全是要钱的。难道程序员自个儿做个游戏就这么难么。网上没有当面包车型大巴,就去偷咯,孔乙己说“那叫窃,不是偷”。下载了过多娱乐,apk解压很简短,把后缀名改成zip就行了。至于反编译嘛,参考旁人的代码?算了吧,晚点再说。解压出来的文本夹里面,有就有,没有就从未有过的了,大家不要浪费时间,成熟点的店铺都会加密,我们下载多几个凑一下就好了。最终不记得在何地找的图样,放进去搞搞,发现意义勉强能够。立即上了一个程度。

(5)用客户端试了好四次,依然硬找出了一些新的法则。

六、广告

必然是在打仗中冒出。

选了有米来练练手先,为何选有米,因为它是本乡本土的,做得绝对成熟。将来住户是有米的万分了,笔者可能一屌丝,总得看看有米有多牛逼。好吧,那里提一下,有米只负责发广告,呈现出来,怎么消灭,他们无论的。不熟知active怎么写,只好让广告先直接显示着了。

为了下跌影响,把主角拉进3个不曾其余事物的副本,刷了一只怪来打。

七、发布

率先次交锋是不会产出的,唯有主演被打死,然后复活,再去打怪才晤面世。

网上何时个平台,小编是在有米的sdk文书档案上边有个渠道消息标签知道的,1个个百度,记得加个“开发者”,多少个三个找到的,注册开发者账号吧,那么些提议大家在家没事看TV的时候渐渐注册吧,而且越早越好,到明天还没任何由此审查批准呢。

不是第四回战斗就必将会并发,可是概率比较高,即便不出现,也会在此后自然出现。

交给应用也是个蛋疼的事,图标,描述,截图啥的,一堆东西要搞,提出大家想好点。每一种平台都有协调的后台,都有友好的一套规则,360、豌豆荚这一个还要都要版权证明,天涯论坛还一贯说要版权证书,作者也不晓得是否被客服忽悠了。跟客服打交道是个很蛋疼的事。客服这么些事情一向都以无法缓解难题的,能化解难点也就不须求做客服了。化解难点,照旧不可能靠客服,只可以硬着头皮明白本人想要的消息,做出调整。

改了测试接口,能够调不通的血,只要血丰硕,一定会见世。

好呢,就说这么多了,继续等审批吧,全体都在审查批准,没有2个通过的。就算是寨子产品,不过不至于都不给上呢。

从岁月上来看,是打着打着出新的,并不是一攻击就涌出抛锚。

图片 1

(6)其实那个规律并从未缩短了有些范围,因为一贯都明白是作战的。是在无法,最终先把buffTimer注释掉看看。发现依然有标题。

(7)然后再注释LifeTime的时候,发现就不会中断了。

(8)最终鲜明难题,先贴多少个代码先。

void
CellApp::CLifeManager::processLifePool()
{
if (!_fightEntity || !_fightEntity->isPlayer())
{//不是玩家
_lifePoolTimer->finalLifePoolTimer();
_lifePoolTimer = NULL;
return;
}
void CellApp::CLifeManager::enterFightStatus()
{
if (!_fightEntity->isPlayer())
{
return; //那一个if语句是新兴加上去的!!!!!!!!!!!!!
}
cdf::CReactor::instance()->cancelAll(_lifePoolTimer);
//进入战斗
cdf::CReactor::instance()->schedule(
_lifePoolTimer,
NULL,
cdf::CInterval(4000),
cdf::CInterval(4000)
);
}
其一是跻身战斗的时候调用的函数。lifeTimer是在构造函数的时候伊始化了。然而在下边被清了。在其次次跻身战斗的时候。开启定时器,传进去的实际上是空指针。

其一是LifeTimer调用的施行函数,那里把不是player的实体的定时器,都置空了。

底层代码也平素不检测空指针。在时光足够了接触,就产生了空指针的谬误。

现行反革命对待一下从前的一望可知:

率先次交锋是不会并发的,唯有主演被打死,然后复活,再去打怪才会产出。

不错,第2遍战斗就吧boss的lifeTimer清掉了,所以率先次不会有事。

不是第三回交锋就必定会现出,可是概率相比高,就算不出新,也会在之后自然出现。

定时器是4秒循环,借使在这一个时辰内,把玩家打死,是不会产出难题的。

改了测试接口,可以调不通的血,只要血丰盛,一定会冒出。

血够多导致4秒内打不死,触发定时器。

从岁月上来看,是打着打着现身的,并不是一攻击就应运而生抛锚。

或许定时器的难题,定时器触发的突发性有个别随机性

杀鸡取蛋措施:

并非传空指针进去cdf::CReactor::instance()->schedule()函数

===========================================弱弱的分割线=======================================================

2016年7月20日 新增

10.今天发现CellApp的实体在剥离副本之后生命管理器还在回血,没有解除,各样音信完整保存。伊始看上去,FightEntity的fianl函数,析构函数都有设置为Null。调节和测试的时候发现,指向为三个,final了FightEntity之后,还有四个地方并未去掉掉。那是LifeManager的定时器和LifeManager相互指向,指针没有被释放。

本来,设计是树形的,FightEntity ->
LifeManager ->
LifeTimer。一层一层析构还能很安全地推行清除。可是为了方便,实际指针是双向的。FightEntity
<-> LifeManager <->
LifeTimerd,单独清贰个,链接造成还存在引用而漏掉。

消除办法:在finalEntity()里面清除全体音讯是足以,不过不少,而且便于漏掉。将来规定是种种下级的结构,都不可能不有二个final函数,独自清除下级自身的剧情。在finalEntity()里面调用lifeManager->finalxxxx(),在LifeManager->finalxxx()里面调用lifeTimer->finalXXX().

总结的话,正是不用把太多解耦的动作放到析构函数里面,其它弄多少个final函数出来,主动调用解耦 

===========================================强悍的分割线=======================================================

2016年7月14日 新增

9.调剂战斗的时候,突然意识没事指针,看堆栈,发现是定时器的标题。

而是定时器是三个单独的线程,堆栈中没有大家协调写的代码,而且定时器为Null。

着注明,不晓得哪里写了设置为Null,然而又忘记cancel掉了。

本次是由此不停打日志,裁减范围,最后分明具体地点。发现cancel了其它二个定时器,然后删掉本来的。于是就好像此了。

===========================================华丽的分割线=======================================================

1.在IOS上运转,发现没地图,其余地点平常

探访编写翻译的是何等文件,默许好像是生成lib的。选取fanren
Mac,

文件太多,报错没看获得

2.客户端一开辟某些界面,调用有些接口,就被唤起断线
服务端对没有登记的接口,被调用了,就立时断线。所以去找服务端二弟吧

3.略带时候飘字一串非常短的事物,能来看是D盘,有文件目录,差不多意思是系列化错误。
事实上这一个目录是服务端代码的目录。接收到来自客户端的数据包,举办反系列化的时候,出现错误。那是因为调接口时候传的参数结构对不上

4.每一次登陆后都出以往出生点
9成是服务端难点,首先要规定移动的时候,服务端有没有修改地方,看数据库能够看出。
随即看刷新登陆后,是还是不是健康初始化
一旦还没找到难题,看看cellapp有没有进入成功

5.底层engine关联难点,表现很多,没有规定的一望可知
那种难点应该只会在页游的代码出现,页游服务端要配包括库之类的事物,看看是还是不是近期项指标。
手游应该不会,手游是对相对地方的lib文件夹的。

最近新的服务端都改了,应该很少碰到了。

6.服务端的,别的APP发到GateApp之后,直接转载给客户端,收到的布局是空的
权且还没觉察何地出了难题,同样的代码在jxy和dbtx都不会产出难题。
把内容重新社团三个发过去是能整成的,待消除!!!!!!!!!!!

7.src\Client\project\fanren\Resources\FanRen目录的lua文件是怎么加密的?
LuaSvn_JenKins.sh/////还没细看

8.代码生成例如cdl2lua、cdl2cpp之类,点了运营不奇怪,正是没有观望此外报错,就停在那边,也从没公文生成出来
后来发觉是尚未相应的目录,程序不能够自动生成目录。要创造好相应的目录

图片 2

发表评论

电子邮件地址不会被公开。 必填项已用*标注