在Cocos2d-x分会场,资深游戏引擎程序员卞安发表了《Cocoss2d-x开发流程工具化思想与实现》主题演讲,主要讲述了Cocoss2d-x开发流程工具化思想与实现。

资深游戏引擎程序员 卞安

以下是文字实录:

希望大家在工具这一块,可以有更多一些了解。在使用Cocos2d-x的时候,大家是否使用了这个工具,如果要是说大家使用了工具,请大家举一下手,我看大概占多少比例。好像很少。因为我的工作主要是负责引擎开发,所以我对于引擎包括工具这一块,一直是比较关注,当Cocos2d-X出现在我面前的时候,我首先考虑的是有没有一套可以让大家去使用,让大家去方便去进行游戏开发这样的工具,我们在开发游戏过程中,我们就是说会把这个游戏去分成数据和逻辑两个部分,这是软件开发,就是说在看软件本质上一个分析。所有的游戏它其实就是数据和逻辑。在我的这个观点来看,比如说我们开发出一个小游戏,看着很炫,数据和逻辑部分的分很细。

比如动画,数据数据源是什么,是图片,逻辑就是播放动画桢,这样一套逻辑,有了数据源,或者一张大的平和图,再加上播放它的控制逻辑,这样就能形成一套序列动画,同样骨骼动画数据员图片,身体部件的图片,逻辑就是控制它的骨骼更新,在任何一桢的时间点进行骨骼的更新。界面也是,我们做界面现在有一些工具,比如说Cocos2d,我相信还是有一些人有使用经验的,但是现在在工具这个界面编辑这一块,还是有很多团队并没有使用工具,在真正去制作的时候,它这个数据量非常大,界面的这个数据比如说控件一些属性,控件位置,控件大小,对应图片ID,对应属性非常非常多,如果没有ID我们都要手动去写。按一个按纽,响应的时候触发什么,有数据和ID才能构成完整的界面。场景也是一样,这个数据不是单指一些数值,相对于这个模块来说有一个数据源,对于动画来说它的数据你可以理解成它的数据源就像图片,逻辑就是播放控制。

如果我们把这个游戏拆分成很多数据和逻辑结点的时候,非常碎的时候,就会非常烦琐,如果没有一套好的工具连,我们在开发时候,程序员就会花费很大精力在数据部分,这一部分其实我个人认为其实有很多工作是可以由美术包括策划去担当的,我们程序员更多还是关注逻辑部分,如果说把这个时间大部分都用在控件位置属性,包括一些ID调整上的话,我们开发效率就不会太高。


如何实现

今天我结合我对于工具的一些实践,介绍一下我对这一块是怎么实现的。现在先看一下我对于这个开发流程,它的一个定义,游戏的一个过程,比如说我们经常会做一些小DOMO。这个小DOMO就是说它是一个坦克大战,比如开始界面,开始界面就有一个界面有两个按纽,有开始游戏和退出游戏按钮。在这个流程中,设计框架->编写开始界面->编写故事动画->编写关卡界面->编写场景、角色、以及各种效果->编写结束界面。在整个流程我们如果没有工具,很多时候一点一点纯手工去写,虽然很多人已经很有经验去手写这些东西,实际上我们程序员在流程中,其实担当了大部分数值工作。为了更好能够提高我们开发的效率,所以说我很关注工具这一块,但是Cocos2d-X目前没有提供给我们广大开发者很好一套工具链。目前是Conference,但是使用人不是很多,另外功能不是很全。我们要去开发游戏的时候,可能就是我们演讲嘉宾刚才说的,我们不可能去等。我们在手游时代尽可能快,因为首游开发周期本来就短,我们必须以最快的速度去开发出一个产品,那么大家很多时候比的就是速度,比速度你如果没有工具,你的这个竞争力就会下降。

我刚才说游戏的软件本质,数据和逻辑,我们在做游戏的时候可以首先把游戏提炼一下,你在考虑整个游戏过程中,它这个流程结点中都有哪些数据都有哪些逻辑,我们从逻辑和数据中归纳我们要做什么工具。这样才能够非常实际的应用在我们工作中。

使用工具的话,首先就是刚才我提到说程序承担了很多数据方面的工作,现在我们要细化这些工作,改善程序的工作内容。就是方便这个数据一些创建,包括编辑,包括保存,提高大家的工作效率。如果说你自己通过代码上去控制这些数据的话,在修改的时候,其实有很大的不方便,每次修改打开代码去找数值,修改以后还要去运行去看,这个过程特别烦琐。界面特别量特别大,而且控制也经常频繁进行修改这种。我们肯定会头疼,做界面这一块其实一直都是非常头疼的。

第三点我们可以有了工具以后,把我们游戏开发流程更清晰化,可以优化我们工作流程,有了工具以后我们去做一款游戏的时候,我们首先会想到这个游戏它需要什么工具,它的这个工作流程是什么样的流程,它哪些部分有哪些结点,对人大脑有一些概念上一些凝固作用。

我们再继续开发游戏的时候,时间一长就形成工作流程,对我们高效开发游戏是有帮助的,否则我们写游戏单独为它考虑一套流程。我们写下一个游戏流程的时候很困顿,一旦有了工具就很容易把这种流程凝固。形成非常清晰的开发思路。

我开发这个是在网上直接提供下载的,让大家去玩一下。Cocostudio,毕竟是专业的东西,官方推荐的。模块还有一些少,另外就是毕竟官方在出工具的时候,它要考虑东西非常多,所以在时间上可能有很多项目组可能会等不及。那怎么办,要不然我们就自己开发,有能力的团队都会想到自己开发,也有一些我们利用第三方一些东西,包括有一些其他的工具,可以从像Flash动画中去导出,或者其他第三方软件导出我们相应一些数据。

很多游戏开始是2D首先关注还是说图片。因为图片数据会使你这个游戏基础,有很多游戏到上线的时候,发现比如说内存过大,发现它包太大,这种情况很多。不仅是小团队,而且很知名的团队也有,为什么呢?是因为他们在第一步的时候,在图片这一步就没有根本进行考虑,没有考虑好图片大小尺寸,还有颜色深度,没有考虑到评核,没有考虑他们进入内存时候的状态。


重要工具:

如果没有这样一种意识的话,你开发的游戏,它肯定是要存在着内存过大,或者是效率慢这样一种情况。其实并不是说有多难,但是这就是一个经验问题,在这个格式大小这些调整上,在端由十年的发展,已经积累了很好一些经验,所以我们可以去借鉴一下。首先就是说我们要关注的就是图片的一个管理,那么我们需要一个图片管理器,这个图片管理器去把我们这些零散的图片,去进行一个有效的资源整合,去转化成一个高效资源,一个数据源。

第二个是动画编辑器。把图片管理器导出这些数据源,再导成序列桢和骨骼动画。我们在国内还是用序列桢的比较多,用骨骼动画不多,我相信后来随着游戏设计越来越复杂,因为它骨骼动画,对于内存会有一个很好一个减压作用。它利用小的碎的身体部件能拼合成完整的动画,而且是不受桢长的限制,比如一千桢或者一万桢,但是它内存就是那么小,这个是重点。怎么去做这个骨骼动画呢,现在国外有一些不错的工具,但是国内好像Cocostudio好像也有,还有就是Flash,好像有个插件,可以把Flash骨骼动画导出成龙骨插件。

第三特效编辑器。各种爆炸效果,还有跳带效果,连线效果这一类,特效编辑器对我们游戏会有一个美好作用,因为一个游戏它的特效肯定是非常多的,我们做游戏不会都只用单调图片去做,我们会做很丰富动画或特效。坦克打在另外一个坦克会有烟花效果,爆炸效果,有一团火,包括你胜利会有一些界面上的效果,这些都是游戏开发的重点,我们没有一套工具的,一个一个去做不现实的。

第四个角色管理器,角度管理器用到工具这一块,我在开发Cocos2d-X的时候,序列桢的加载看起来很简单,如果有很大量动作,走、跑、跳、出生死亡,一些攻击,非常多动画的时候,我们要为每一个动画去写载入,去写相应一些控制和逻辑。这个其实也挺烦琐的,所以有一个工具,比如说我把这个角色按照一个分类去分好类,然后这些角色把所有动画能够指定成动作名称,我们在载入角色动画数据,角色的这个数据的时候,数据包的时候我们能够通过指示角色名称,指示播放名称,内部调用相应资源去组成播放动画,这样大大减少我们出错机率,优化数据和逻辑。

第五界面编辑器,界面又是比较烦琐的,界面编辑器重点就是控件,各种控件,我们手机游戏上可能使用的控件不是说特别多,毕竟屏幕小,主要像按纽,或者说像一些滚动条,滑动条之类,不会特别多,但是对于界面的需求,控件需求也非常多。

第六场景编辑器,场景编辑器,现在我们看这个手机游戏很多做的时候,还是有的用一张单图就可以做了,但是随着时代的发展,往后我们肯定会做手机游戏,场景规划就会成重点,你在做一个RPG,或者做策略型的,或者一些这种横版过关的时候,你都必须有一套场景的规划。场景的大小如果一旦就说场景规模大了以后,就说你对于场景的把控能力就会弱,你想很好去控制这个场景,你单靠你人脑是相当难的。所以我们就需要一个场景编辑器。场景编辑器就可以把这个比如说基于格子的,或者基于各种角度的这种场景的规划给编辑好,我们只需要说在场景中去创建这样一个格子,向上刷图,刷动画或者刷一些人物,这样场景就可以构成。场景编辑器是整个编辑器工具连中相对比较复杂的一环。因为它涵盖相对比较多一些,涵盖动画效果包括图画都会涵盖在里面,还会有一些角色布怪这方面,包括碰撞,一些事件路径都会用到,对于场景编辑器制作可能会稍微复杂一点。

第七数据编辑器,Cocos2d-X,读数据方面一些格式,数据编辑器很多公司都会有物品编辑器,人物编辑器,物品编辑器肯定里面会有很多分类,物品编辑器一般比如说有道具,有装备、武器,还有一些包括NBC什么之类,都会有,你看你游戏具体有什么需求。

数据编辑器大家制作起来不会特别麻烦,它就是一个数据,没有太多像图象现实,或者逻辑控制,它就是数据导入和导出,但是数据编辑器必不可少的。

上面七个,让我感觉到整个工具化中比较重要一些结点,其他的部分可能根据各自的需要,一些具体小的应用会再进行补充。


图片管理器

1、图片格式转换。

比如说把GPG,或者是TGA,根据它一些色深去转化成我们游戏中所想用的这个数据格式,比如说PNG,或者PVR之类的。像这个东西你肯定是需要工具的,你不可能自己去手写一个转换,你肯定是需要一个工具去转,因为会给你很多图片,进行整体批量化一个工具去做这个事情。

2、就是图片拼合及Plist生成.

那时候做这个游戏的时候都尽量把图片去做成二幂次方,这样一张纹理涵盖很多纹理,我们在渲染的时候,引擎在显示一张图片或者一张精灵的时候,先设一次纹理,就可以把纹理所有部件,只设一次纹理就可以批量渲染。因为在引擎渲染的时候,纹理的切换是非常耗效率的。我们在渲染的时候,我们都是散图,我每次去渲一个小精灵要切换一次纹理,整体效率就会下来。所以这是我们为什么要进行拼合的一个原因。

现在Cocos2d-X里面提供有批次结点,有这个批次结点,就是专门做批次优化做的,大家做的时候尽量去使用,提高运行效率。

3、整图切分及Plist生成。

这个图里面是有一些小的部件,但是没有Plist,就能够进行很好切分,生成它的Plist,有了这三项图片管理这一块,基本上就完成了。它可以生成我们所需要的一些图片,数据源。

我现在可以给大家演示一下工具箱图片管理器,大家理解一下我说话这个意思。这是我那工具箱,工具箱开始的其实这就是一个图片管理器,有图片格式转化,以及碎片拼成大图,大图碎成小图。真正做引擎的时候,对于效率和流程都是非常关注的,都希望提供一套工具这套工具能够把数据源能够很好高效、快速、方便转化。

这个格式转换比如说我们现在选一个转换图片的一个目录,这个图片这是我女儿,这个图片比如说JPG,我们把它转换成PNG,导出以后就会有PNG的图片,这是原来JPG,这就是格式转换。

我们再看一下其他两个功能,比如说碎图拼成大图,这面有一些小的图片,我们想把它拼成一个整的一张大图,拼出来就是为了提高效率嘛。现在我们已经把这个图已经拼合成一个大图,然后我们其实使用的时候,使用的是这个整张大图,他们里面这个图块号,在这个Cocos2d-X,使用纹理所有小土块顶点在同一个批次里去进行渲染,这样在渲染过程就不需要再进行纹理的切换,可以大大提高效率。大图切碎图,比如说像这幅图片,这是一张整图,但是它没有Plist,我们要生成一下,这样的话大就会生成相应的Plist,这一块就是我刚才说的图片这一块,一个管理器的部分。现在我们看这个图,看它相应生成的Plist。这个图片管理器的功能大概就是这样。


动画编辑器

现在我们看一下动画编辑器,有两部分,一部分大家常用的序列帧。不太复杂,网上也有爱好者提供一些工具,可以将这些碎图,做成一个序列帧动画。这个骨骼动画就比较复杂了,目前可能使用骨骼动画还不是很多,一会儿我们可以看一下骨骼动画是一个什么样的动画。

现在我们再切换到刚才工具箱的部分,第二部分就是动画编辑,动画编辑我们可以打开看一下,这是一个Cocos2d-X事例里面一个小人,序列帧就是一堆图,实现生成序列。最后它会导出一个Plist,在这个地方会有一个Plist,它是把一堆小图按照它的命名规则去生成一个Plist。然后我们还可以说从一个整图去升成,而不是通过序列图,因为序列图它的图片量非常大,最好拼到一个图上,它就可以提高效率,我们从一个整图上去做这个动画。

大概给说一下这个意思,它是一个整图,我们通过带Plist整图,能够生成序列帧动画,最后我们来看一下骨骼动画。这一块是骨骼动画,骨骼动画原理其实它就是一套数结构,通过根结点,然后对于各个子结点进行更新,这个数结构在每一个结点进行骨骼数的更新,它的位置包括其他状态属性的更新,这个更新通过当前幀,再加上有些时候骨骼权重的混合计算,这方面在2D用得不多,在3D会用到。2D差值,我们看第0帧和第20帧骨骼动作变化。首先是一个根结点,会有它的子结点,下面还会有很多个子结点,通过一层一层的骨骼连接在一起的,当我们在一个关键帧,得出当前帧骨骼点对应图片应该是一个什么状态,这样就形成一个骨骼动画。这个动画是我做的,非常烂,就是能够给大家演示一下,大概是个什么情况,骨骼动画。

让程序员做美术其实挺难受的,实在是没有那种天赋。它是可以运行的,它已经具有了骨骼动画的雏形,或者表现。

大家为什么没有去用骨骼动画呢,骨骼动画非常好,它使用的图片量非常少,但是它内存压力非常小,也许我这个动画可以做得很长,实际上它就是几个小图片去构成的。就像我现在上面这个,它就是有一些身体部件的图片,就可以去构成整个一套动画。我们可以给它做很多动作,比如跑步,过程走的、跳的,其实它可以只用一套图片,这样内存压力就会非常小。

大家没有使用骨骼动画其实有一个很重要原因,还是因为工具没有推广开,没有很好制作骨骼动画的工具现在。已经知道的就是像Flash导出龙骨插件,可以导出Cocos2d-X的格式,毕竟使用的还是少,没有一套很好的。我们在做的时候,我们在这块数据和逻辑的处理上,如果说人只是通过编程来做的话,就会非常非常的烦琐。

动画编辑器大家刚才有看到了,可能对于有些没有使用工具的有个启蒙,动画它是怎样的一种形成的一个方法。他们大概就是说他们表现,以及制作工具,我这个工具是怎么样制作这些东西的,大家简单通过刚才演示可以看到。


特效编辑器

这一块也是比较重要的部分,因为我们游戏要表现得绚一点,肯定特效是一个重点,特效大家就是在Cocos2d,Cocos2d系统做得很好,里头有很多很多模板,包括火焰、雨、雪,而且它数值提供给我们修改和保存,我们其实简单的做一下的话,可以载入一个模板的粒子系统,我们通过一些按键,或者是通过简单的一些调整,就可以保存成我们想要的这个Plist。这个Plist在游戏中可以直接载入,形成粒子效果。但是如果说我们想更做更绚的效果,你如果只能做一个粒子效果就不能满足目标需求。

这时候怎么办呢?我们就要开发一个特效编辑器,能够将多个粒子进行组合,或者是形成一些路径,形成一些轨迹,或者跟随一些调整。

左边这些就是说我们这个特效编辑器上面一些粒子,我们可以简单来看一下,这边这个第三个粒子编辑是原生的粒子效果,也是Cocos2d-X本身内置的,比如像火,我们可以看到这些都是Cocos2d-X本身提供的一些模板,就是不同参数的考核。重力的模式,还有环形的模式,只要把粒子系统看懂以后,可以很方便进行调整,可以根据自己需求,可以做出很多很绚很不错的一些效果。

这也是模仿大掌门桃花那个效果,简单做了一下。我们来看一下这个效果编辑,当我们有更高特效方面编辑需求的时候,我们就需要这样一个效果编辑器,它首先把一些粒子效果进行一些组合,可以同时播放很多个粒子效果。像刚才这个爆炸效果,是由四个粒子系统去组成的。你看这是第一个粒子系统,比如第二个粒子系统,一直到第三个,第四个,当我们全部都做完以后,组成一起能形成比较丰富的效果。一个粒子,单单一个粒子系统表现其实还是很有限的。

这个是一个带轨迹的一个粒子系统,还有一个粒子的跟随,可以跟随一个轨迹去表现。像这个编辑器它们刚才说,我说关注一个是数据,一个是逻辑。之所以做编辑器是很希望把程序员把大量数据工作这一块给解脱出来,不希望把时间花在数据的调整上。

比如说效果这个数据调整根据各个属性,我们可以让美术去根据它的需要去调整,而不是说我们程序去花时间去做。我们把做好的效果在合适时间加载,并在合适时间去播放就可以了。

这个也是一个简单的粒子效果。效果编辑器,我们现在做的有这样一些功能,以后肯定还会根据需要,还会增加更多功能,但是它的基本的情况,就是说把多个粒子效果进行组合,或者有一些条带或者轨迹,这样复杂一些功能,让美术去编辑,而不是让程序在这上面花时间。我们把时间都用在真正游戏上,而不是用在引擎的使用或者是一些优化,或者是一些开发上,因为这些方面很烦琐,而且是相当复杂,我就建议有的团队做到最后,游戏做完了发现效率上不去,或者内存太大这些问题,很头疼很头疼。那就是因为它开始时候没有很好工具去支持它,没有很好流程规划。


角色管理器

我们看完这个特效编辑器,我们可以看下面角色管理器这一块,角色我现在做有一个角色分类管理,因为游戏会有很多种角色,有玩家,有怪物,有NPC,还有其他方面,甚至把地上物什么之类,都会可拾取一些东西都可以做成角色。为了优化动画的Plist和动作名称之间一个动作关系。

像超级玛丽有一套图片,蹲下、跳,我们写的时候肯定要找哪一个图块该对应哪个动作,很复杂,容易出错。如果把这部分工作给策划给美术,叫他们把图片跟动作进行联系,我们播放一个动作,就可以去播放出相应的序列帧动画。

我们可以来看一下角色这一块,这边是坦克大战的,坦克大战的角色管理,这里面有一个分类,坦克分类,下面有一些角色和玩家、敌人,还有子弹,再下面是一些动画,当然这些动画现在这里面只有一个单帧,直接载入是序列帧。我再具体在Cocos2d-X去使用的时候,我载入一个角色,我输入比如说PLayer,我们就可以很方便,而且不容易出错。我们就不需要特别去理会里面动作序列帧去进行管理。而这部分工作是由策划或者由美术去完成,这样工作就非常清晰,而且非常省力。


界面编辑器

我左边找了一些图片,就像大掌门,或者找你妹,或者MT,都有一些界面元素,就是控件,带着动画或者效果也好,其实他们都是由各个控件组成的。

我也是临时做了一个界面,让大家可以看一下,也是很简单,程序员做界面其实也很痛苦的,这个界面它是由什么呢,由一个九宫格,这样九宫格的面板,然后按纽,还有一个背景的序列帧动画,这个是一个骨骼动画,做的一个骨骼动画的一个面板。还有一个小背包的一个面板。通过类似骨骼动画一种组织形式,数结点一种组织形式,可以将一个对话框,和所有子控件进行联系,一个面板下面其实是可以有无数个控件,所以你看这个界面就是有一个,首先是由一个根结点,根结点下面有一些九宫格面板。它这种数的层级,父子关系。在我的博客上有一篇文章专门解释数结点,大家要是有兴趣的话可以去看一下,那里面其实还有一个事例,也是讲怎么通过数结点,魂斗罗的界面。

像这些控件都是我们会用到的比如说面板,我们可能画一个面板放在这里,现在这个面板是作为九宫格子结点,那么它也可以跟随移动,这个面板比如说我们可以给它选中一个图片。这样美术就可以根据这个界面的需求,去使用这些图片或者动画或者一些效果,去制造出真正的一个数据源,这个数据源就是界面导出Plist,可见不可见,包括图片一些信息,这是界面编辑器一些工作。

有了界面编辑器,我们程序就不需要再花费精力,关心界面数据这部分,只需要美术跟策划之间怎么做好这个界面,美术根据需求去做图,把这个界面在编辑器中去编辑好,保存出来,程序只需要加载一下这个界面就可以了。

坦克大战,子结点可以显示一个动画的。这样界面我在做这个游戏时候就非常快了,实际上在做游戏我很多精力就关注于控制,还有一些逻辑,比如说攻击到对方的时候,对方是不是要扣血或者死亡,只关心这些,具体界面我都不关心了。这是界面编辑器,下面我们再继续往下看场景的编辑,场景的编辑,是所有的编辑器中最复杂的一环,因为它涵盖元素特别多,不单纯是图片或动画,里面有一些组织,规划这些方面的一些信息,首先场景的创建,2D游戏中经常会有,比如说普通视角的,还有斜视角,一些位置,一些逻辑处理都会比较麻烦。


场景编辑器

有了场景编辑器我们才能够去进行一个大规模的,或者比较大一些场景的制作,否则的话,这个场景去人为去写,基本上面也是非常耗时间。

1、场景的创建。

2、网格刷图。

我们国内开发者需求变化其实挺大,中国这块游戏开发,前进的速度非常快,有很多东西刚开始在去年你会觉得这个工具还不错,到今年你会感觉已经不满足你的需求了。

3、摆物件,摆场景效果。

我们在场景中,我们肯定要摆放一些建筑,或者是一些树木,这些属于摆物件。摆场景,灯光照耀效果,或者雪粒子效果,这是属于场景效果。

4、阻挡设置。

后面是一些时间点和阻挡的一些设置。比如阻挡的设置,其实对于格子地图,我们如果说一个格子一个格子单独设置阻挡也是比较麻烦的,而且就是说我们一旦要修改的时候,我们就要考虑格子的阻挡要删除掉,我们设定这个格子是要阻挡的,但是我们要把这个阻挡移到另一个地方,单独移动阻挡这个格子没有被消除掉。在设计这一块的话就要考虑到,你这个阻挡应该跟着物件去走,物件移动到哪里,阻挡就要跟随到哪里。

5、事件设置。

6、布置NPC与怪物。

超级玛丽。第一层背景层,第二层是一些小花怪物,第三是基于网格的一些设置,第四层是一些小怪。总体能构成这样一个场景。

我们比如在设置具体的这个阻挡的时候,我们在格子上刷这个阻挡,我觉得应该更好的方式是我们对物件直接设阻挡,物件本身就带阻挡,我消除掉带阻挡自动就应该没有。这个格子在这个地方有一个阻挡,它会根据自己实际的面积会进行一个扩展,在游戏碰撞中这一块都是有阻挡的。

这是一个斜视角的,比如说地表这样的网格,可以刷一些地表,在上面刷一些图片,可以刷一些地表。植物,这是一些建筑,如果说没有工具的话,你比如说做这些事情,基本上就不太可能,你不可能说你单纯去看这一个场景,你就能写这样一个程序,我觉得这样很难,所以说必须有这样一套工具,你才能完成。你把这套工具给美术给策划,把这些编辑好,把这些时间点程序画好,我们程序更多是载入,或者是到最后释放一下,我们花更多精力在游戏具体攻击和AI上。

这个也是我前一段做的打地鼠的小休息,这也是一个分层,它有一个背景层,格子层,这格子它是有角度的,其实这角度我们也是可以调整的。比如说简单的改一下,60,它就会更扁一些。我们可以根据自己的需要去进行一个调整,这是另一层上面放了一个粒子效果,当这些我们都做好的时候,把这些图层组合在一起,就可以形成我们所需要的场景。这是一些场景模式所必备的。现在就是这个场景编辑器这一块就这样。


物品编辑器

我个人觉得方式是说通过一个网页的形式来去做,因为物品编辑器很多时候因为它分类很多,包括物品,装备,技能、很多很多分类,那么去使用它的使用者可能会有很多人,有可能好多个策划都在去用,那么你这个数据包就会产生共同访问的问题,你以文件保存形式就会独占。我曾写过一个任务编辑器,大家都在用,好多人都在用,一到保存的时候可能互相就会产生覆盖,所以我就加了一个功能,我还专门写了一个服务器,我这个任务一上线谁现在正在使用,你使用时候点占用,别人只能看不能写。这其实很麻烦,没有必要,难道写一个工具还要写一个服务器吗?以我个人感觉做成网页是最好的。写一个网页根据分类去动态去生成对应的输入框,或者是生成动态的生成输入界面。

你想想中国用户手机用户非常多,大家都去缴费,不可能产生独占问题,你如果使用网页完全不存在这个问题。你在真正使用的时候通过写一个小的导出工具就可以了,这一块编辑器,其他没有太大必要去做,最好是根据你的需求,去交给网页程序员去写。

这个界面也可以通过这个动态生成,开始的时候,我们先输入,我需要哪些编辑框,它是属于什么类型,我们一旦把这些输入的这些控件给定义好了以后,我们写一个网页去读这个控件这个属性表,然后去动态生成一个提交表单,这个动态提交表单,我们随着发现,有一些条件,最后奖励,我们在做工具时候,策划又来找我了,又要增加一个属性,一定要改界面,最后载入也要改,由网页生成,完全不要考虑这个问题了,而且不会有任何独占的问题。全公司都带访问这个网页也不会有什么太大问题,因为数据库在最终写入的时候有锁,不可能你往里插入这个数据,别人插入一个数据,就乱了什么的。真正做项目找一些网页组,找一些这方面同仁帮你去做就好了。希望大家可以有兴趣的话可以去试一下,效果比做数据编辑器效果要好。

后来还有一个小的演示,字体这一块,其实我没有特别专门去写,因为这一块虽然也是很重要,但是还是比较小的一块,国内我看好像没有好的字体编辑器,我在这块有点经验,因为之前曾经专门开发过字体编辑器,所以我也就把这块加上了,我们很多时候Cocos2d也会用到字体。

比如我可以在这边输入一些文字。这些英文我们可以选择一个字体,我们开始生成,生成以后它就会这样一个,其实是一个图片,它会把点拽文字信息写到图片上,写到图片上以后,我们可以比如说设置颜色,设置间距,设置它的毛边,比如说整体外围都有,还有方向。会有一些着色信息,这字体我不想用纯色,我想用纹理。这个是用这样一个图片去混合,这是颜色,纹理颜色的替换、叠加。在真正用的时候我们需要导出。这样在Cocos2d-X中,我们就可以用这个图片和它对应的PNT,FNT就可以。

而且里面会生成一个Plist,它也可以把大图切成小片,我们如果说这边是根据这个编码去排列的,我们如果想把这个图想换成一个其他的图形,我们可以美术去进行修改,修改以后再导进来就可以了,比如说有些时候,我们想说个,比如说LOVE,直接把字母替换成图片,或者把爱字替换成心型。我们在游戏中输入爱,它输入是一块小心。

字体编辑国内也是很缺乏这块工具,国外有一些,国内还是很少,这一方面后面也会就是说使用也会比较多。这边还有一个载入文档,直接把一个Windows,比如说版本说明,直接把一个Windows,一个TXT直接载入进来,做成所需要的字图,这样一个意思。

提问环节:


我刚才看粒子,有些粒子不一样。要求的轨迹每次都有变化。


卞安这个是随机的还是预先定好的。  如果是随机的话,就写个随机算法,我们工具也可以做一个加一个随机的按纽,工具上去处理,加一个随机按纽,你在真正有了这个选项的时候,加一个随机值。还有在效果编辑器里面加一个专门的路径,有路径轨迹点设置,这边不能添加,它应该有这个功能,我们添加一些轨迹点,我们预先先做好,轨迹点平滑程度,像你说的30种,就保存成30个,这样我们用的时候根据需求随机调取一个就可以了,这个保存就是路径点,还有一个就是平滑类型,不需要把这些资源都保存。

Cocoss2d-x开发流程工具化思想与实现相关推荐

  1. 前端开发的工具化与工程化

    概述 近年来,随着浏览器性能的提升与移动互联网浪潮的汹涌而来,Web前端开发进入了高歌猛进,日新月异的时代.这是最好的时代,我们永远在前行,这也是最坏的时代,无数的前端开发框架.技术体系争妍斗艳,让开 ...

  2. Docker容器化开发流程(一)介绍

    文章目录 目标 容器化开发模式 生产环境使用docker 的问题 容器化流程 目标 了解容器化开发模式 了解容器化开发流程 参考: Docker技术入门与实战 第二版 书籍 [认识容器](https: ...

  3. ETL工具Informatica开发流程 综合应用 电信通话计费系统开发项目案例10

    一.准备数据源 在Oracle数据库中创建 OLTP用户导入源数据 oracle_oltp_data.sql 在Mysql数据库中创建表,插入产品相关数据 mysql_product_data.sql ...

  4. 基于AUTOSAR开发工具链的AUTOSAR软件实战开发---基于工具链AUTOSAR架构的开发流程

    前一节简单介绍了CP AUTOSAR及它的分层结构,本节介绍基于工具链AUTOSAR架构的开发流程,对于多数使用AUTOSAR架构开发汽车电子软件的工程师而言,主要关注的还是如何将AUTOSAR架构应 ...

  5. 【图解UDS】UDS汽车诊断开发流程及Vector解决方案工具链介绍

                                   [图解UDS]UDS诊断开发流程及Vector解决方案工具链介绍 目录 为了便于学习ISO 14229 UDS诊断协议,提供三个资源链接: ...

  6. 【开启全民开发时代】无代码RPA 赋予业务人员IT能力,简单易学的工具化软件

    朗思RPA-开启全民开发者时代 RPA 2.0时代,无代码工具化RPA可以让一线业务人员直接参与开发,技术将不再是业务人员的"壁垒",零代码可视化,无需专业的IT人员,避免了传统代 ...

  7. 4-2 能力提升与优势打造-工作流程梳理-从执行跃迁到流程的方法流程化、工具化、清单化

    本次目标: (1)获得从基础琐碎的工作中锻炼能力.干出成绩的方法 (2)学习流程化.工具化.清单化这三个方法 (3)沉淀工作经验,迅速摆脱基层岗位的经验束缚 (4)具备管理岗位具备的能力,加速职业发展 ...

  8. 百度飞桨全流程工具最新发布!零门槛 AI 开发平台全面升级

    从 1936 年 5 月,艾伦·图灵在<论数字计算在决断难题中的应用>里提出了"图灵机"模型设想 ,到 1997 年的 5 月,"深蓝"国际象棋超级 ...

  9. 改进公司代码版本管理工具CCMS及优化开发流程

    2010-12-31更新的内容 目前本人在做developer,日常工作中与代码打交道的机会不少.公司使用CCMS对产品进行版本控制,这套系统的工作原理类似于SVN,它的全称可能是叫做什么什么Code ...

最新文章

  1. MongoDB 主从复制集搭建
  2. Paper:2017年的Google机器翻译团队《Transformer:Attention Is All You Need》翻译并解读
  3. c++的线程安全静态检查
  4. python 声明变量_Python的变量声明
  5. 后端:循环遍历的用法介绍
  6. 另一个Java 8 Lamdbas和Streams示例
  7. WinCE BSP的BIB文件介绍
  8. 2020年3月数据库流行度排行:疫情烽烟四起,数据价值为王
  9. java运费模板设计_猿实战17——实现你未必知晓的运费模板
  10. 测试驱动开发心得体会
  11. 黑苹果 - 图形卡 显示器 7MB
  12. 中职计算机ps教案ppt,photoshop课件ppt
  13. arduino下载库出错_纯干货!关于Arduino 库在多种操作系统安装使用最详细、最全面的指南及常见问题解决办法!...
  14. 微信公众号吸粉软件助你快速增加粉丝数和文章阅读量!
  15. BOS EAS 实体增加字段,关联核算项目
  16. 判断当前时间是否是法定节假日或工作日
  17. java求出1~100之间,既是3又是7的倍数的自然数出现的次数?
  18. 【月夜特效------附 效果+源代码】
  19. PXE网络批量装机+Kickstart无人值守安装
  20. linux设置为adhoc模式,Linux下两台笔记本电脑adhoc模式搭建局域网跟adhoc无线自组织网络...

热门文章

  1. 达梦数据备份还原(物理逻辑)
  2. 编程爱好者网站试题中心 的一道题:关于*(p++)
  3. 详解多站点应用CSMA/CA原理进行无线传输的过程
  4. Linux中Python程序CPU占用高排查
  5. 【工具】Gamepad Tester游戏手柄在线测试平台
  6. 游戏直播平台新赛程:负重前行与危中求生
  7. 365值得吗 office_对于一个大学生来说,Office365是否值得购买?
  8. python 搜索引擎 词位置加权_网站搜索引擎推广公司,360关键词推广
  9. 计算机无线网卡,电脑如何无线上网 电脑无线网卡买什么好
  10. Android穿山甲SDK接入信息流广告