cf使用的cf体验服是什么么游戏引擎?

查看: 961|回复: 8
QQ火钻3 最后登录积分5150注册时间帖子
专家曼陀罗, 积分 5150, 距离下一级还需 4850 积分
RT求进行一下全面的介绍!!是干什么用的?谢谢了~~~
火钻103 最后登录积分29095注册时间帖子
头像被屏蔽
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
QQ所属战队刺青火钻6 最后登录积分52484注册时间帖子
大师兰, 积分 52484, 距离下一级还需 7516 积分
<img id="md_"从无到有,一起来吃掉ZERO
视频地址复制
Flash地址复制
Html地址复制
离线看更方便
用或其他应用扫描二维码
Clickteam Fusion 是一款十分强大的 2D 多媒体开发引擎,可以用于各种程序开发、制作,编译。目前被广泛的用于 2D 游戏制作当中。而在 大为火热的Steam 平台上已经有多款该软件制作的游戏上架,可见,这个开发引擎的强大之处。
广播电视节目制作经营许可证:(沪)字第1248号
| 网络文化经营许可证:沪网文[6号 | 信息网络传播视听节目许可证:0910417 | 互联网ICP备案:沪ICP备号-3 沪ICP证:沪B2- | 违法不良信息举报邮箱: | 违法不良信息举报电话:转3
公司名称:上海宽娱数码科技有限公司 | 公司地址:上海市杨浦区政立路485号 | 客服电话:逆战用的是什么游戏引擎?_百度知道
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。
逆战用的是什么游戏引擎?
我有更好的答案
虚拟3D给分吧
采纳率:20%
要是用的虚幻3,那画面还那么垃圾吗?楼上一伙傻
其他1条回答
为您推荐:
其他类似问题
游戏引擎的相关知识
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;查看: 4835|回复: 62
QQ火钻0 最后登录积分1012注册时间帖子
精英波塞冬, 积分 1012, 距离下一级还需 188 积分
本帖最后由 莲生白昼 于
12:24 编辑
虽然CF模式那么多,我买了那么多神器,但是上游戏还是会感到厌倦,为什么?作为完了6年的玩家了,我经过思考,得出了主要原因:地图内容单调,归根结底是游戏引擎不行。想想吧,地图内就那几样主要物体:箱子,石头,但是却那么吃电脑配置是为什么?难道不是游戏引擎 有问题吗?最近刚出的CSOL2,虽然就几个模式,就单单一个躲猫猫模式就百玩不厌,原因不就是因为地图内容逼真,游戏引擎好才能做出这么逼真的物体。CF难道不该反思反思吗?CF如果想再发展下去,就必须往逼真了做,哪怕是更换游戏引擎。没阳光没影子的游戏,活不了多久。
QQ<dd title="45630火钻30 最后登录积分4450注册时间帖子
精英黑鹰, 积分 4450, 距离下一级还需 550 积分
= =& &&&看腾讯心情&&
QQ所属战队无(* ̄︶ ̄)y 湖北一区火钻92 最后登录积分189575注册时间帖子现在做游戏很简单,大把代码给你参考,大把框架给你使用,Windows帮你作完了大部分事情。我们那个年纪写游戏时,家里还没有Internet,什么资料都查不到,什么开源引擎都没有,95年左右你要写一个游戏,你起码面临:&br&&ul&&li&同显卡打交道,显卡著名的 ModeX显示模式,估计现在没几个人听过了吧,直接写显卡端口,N多trick才能初始化成功。&br&&/li&&li&直接访问显存,记得当年有个优化是,((char*)0xa0000L)[x + (y && 8) + (y && 6)]=c,把y两次左移相加代替y * 320。&br&&/li&&li&用调色板绘图,256色的调色板,建立若干索引表,来快速索引两个颜色混色的结果。&br&&/li&&li&保护模式编程,自己初始化GDT和LDT,后来找到 dos4gw,牛逼的 watcom c++。&br&&/li&&li&自己实现线程,编程8254时钟控制器,给CPU的IRQ0发中断,来调度不同最多32个任务,到时间靠一条IRET指令实现切换。&br&&/li&&li&自己控制声卡,通过220端口控制声卡(估计也没几个人用过吧),再用DMA传送音频,实现声音播放。&br&&/li&&li&自己实现混音,同时播放多个音源时,需要重采样成声卡格式,并且每次DMA中断时混音后给声卡。&br&&/li&&li&自己播放音乐,利用声卡338端口的 FM Synth合成器来播放MIDI音乐里面不同音轨的乐器音符,并用之前实现的线程系统,在后台线程运行。&br&&/li&&li&大量汇编代码,图形拷贝,图块缩放,RLE,显卡控制,多边形填充,键盘中断接管。&br&&/li&&li&自己绘制字体,HZK16,估计听过的人也没几个了。&br&&/li&&li&自己读取图片,GIF,PCX, BMP。&br&&/li&&li&自己播放视频,自己实现解码播放 animator, 3ds输出的 FLC视频格式的视频。&/li&&li&自己实现脚本,没有LUA,没有PYTHON,但是你需要给你的游戏实现脚本来描述一些简单的剧情,没见过其他游戏是怎么做的,没有任何参考代码的情况下,意识到开发游戏需要靠脚本来提高效率,然后自己实现一套脚本系统。&br&&/li&&li&凭空实现游戏,从来没见过任何一款游戏代码的情况下,自己想想状态机应该怎么写,游戏对象应该怎么同时移动,图像前后遮挡该怎么做,游戏各种逻辑该如何写。&/li&&li&学习美术设计,虽然没有美术功底,但得熟练应用当时常用的animator,3ds,等软件,自己制作一些简单的界面和角色,自己能对其他图片进行二次加工,画像素图,合并调色板。&/li&&/ul&---------------------------&br&记住,当初你没网络,没有现在那么多开源软件,书店里书基本都是C语言调用BGI绘图的,偶尔一两本讲显卡原理的,偶尔一两本讲声卡原理的,你就算捡到宝了,《电脑报》《编程技巧与维护》上面,谁发一篇文章教你FLC格式的视频动画格式原理,你可以欣喜弱狂了。&br&&br&记住,当初你没网友,没有朋友可以交流,很多东西都考仔细观察,猜测和反复试验来完成,我记得95年我看到仙剑奇侠时很惊讶它的效果,根本不知道斜45度图像该如何现实,如何处理遮挡关系,身边没有问不了任何人,然后左思右想,发现远来可以靠 (x+y)进行对象排序,自己一实验,果然成了。我记得92年小学时,写第一个游戏,以前编程都是从头到尾一件事情一件事情的干,想不通十多量飞机怎么能同时飞,当时又没多任务,我也还没实现模拟任务系统,绞尽脑汁,有一天在书上看到介绍UNIX分时系统的逻辑是每个任务运行一小段然后切换,顺着这个思路想下去,终于想通所谓状态机模型,每帧处理每架飞机时根据当前的状态移动一小步,然后更新状态,再处理下一辆飞机。然后兴奋的跑到电脑面前,编码一整天,终于实现。然后拉着同学来自己家玩,看到她们玩的那么兴奋的样子,突然感觉创造游戏,是一件多么令人愉快的事情。&br&&br&当年做款游戏都快要写出半个操作系统来了,整个城市就你一个人在研究这些,老师只会教NOI,书本上只会教你用BGI绘图,没有任何一本游戏开发相关书籍出版,关键是你还在读中学,什么组成原理编译原理,计算机图形学你都没学过,全靠书店几本破书,杂志上的零零碎碎和自我领悟。比起今天的小孩,windows都帮她们做了那么多的事情了,自己买本书,照着书上实现下三角形绘制,模型导入,场景管理,碰撞检查,不懂可以问知乎,不行可以随便上 &a href=&///?target=http%3A//gamedev.net& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&gamedev.net&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&,游戏写不来可以看人家的代码照着抄,脚本可以用lua,python。简直是生在天堂里呀,有什么值得称道的地方呢?&br&&br&行业总是要发展的,我也从《编程技巧与维护》《VGA显示原理》。。。和各种杂志上获取了不少知识,当年写这些文章的人,和身边搞计算机的,都比我大很多,我幼小的心灵里总有一份冲动,冥冥之中觉得将来自己肯定能超过他们,这不是因为我看不起她们,异或我狂妄自大,而是只有这样,站在她们肩上,才能对得起大家共同爱好的这个行业,大家共同追求的事业。&br&&br&而今天,我会尽量利用业余时间,于各处培训游戏开发,帮助大家该如何实现各种东西,目的也只有一个,让今天的小孩将来有一天能够超过我,不是因为她们狂妄自大,异或我妄自菲薄,而是因为只有这样,让她们站在我的肩上,才能对得起大家共同爱好的这个行业,大家共同追求的这个事业。
现在做游戏很简单,大把代码给你参考,大把框架给你使用,Windows帮你作完了大部分事情。我们那个年纪写游戏时,家里还没有Internet,什么资料都查不到,什么开源引擎都没有,95年左右你要写一个游戏,你起码面临: 同显卡打交道,显卡著名的 ModeX显示模式…
&p&&b&网上找到一篇文章,主场景300左右行代码,一天时间做出来,你信么?&/b&&/p&&p&&b&原文链接: &a href=&///?target=http%3A//blog.csdn.net/touchsnow/article/details/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&flappy bird游戏源代码揭秘和下载&i class=&icon-external&&&/i&&/a&&/b&&/p&&br&&p&&b&————————————————————————————————————&/b&&/p&&p&&b&背景:&/b&&/p&&p&最近火爆全球的游戏flappy bird让笔者叹为观止,于是花了一天的时间山寨了一个一模一样的游戏,现在把游戏的思路和源码分享出来,代码是基于javascript语言,cocos2d-x游戏引擎,cocos2d-x editor手游开发工具完成的,请读者轻砸;&/p&&p&ps:运行demo必须配置好cocos2d-x editor,暂不支持其他工具;&u&还有demo是跨平台的,可移植运行android,ios,html5移动系统等,csdn博客里会介绍代码如何移植,请持续关注;&/u&&br&&/p&&br&&p&&b&Android Apk下载演示:&/b&&/p&&p&暂时先移植到android平台&/p&&p&下载地址: &a href=&///?target=http%3A///cac18d8c58d40bf2401b3fdeeb6bcb2f& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/cac18d&/span&&span class=&invisible&&8c58d40bf2401b3fdeeb6bcb2f&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&br&&p&&b&代码下载:&/b&&/p&&p&
csdn下载:&a href=&///?target=http%3A//download.csdn.net/detail/touchsnow/6912707& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&download.csdn.net/detai&/span&&span class=&invisible&&l/touchsnow/6912707&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&
百度云盘:&a href=&///?target=http%3A///s/1pJnWDb9& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/s/1pJnWDb&/span&&span class=&invisible&&9&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&
金山快盘 :&a href=&///?target=http%3A///file/id_45384.htm%3Fsource%3D1& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&/file/id_2534&/span&&span class=&invisible&&4.htm?source=1&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&br&&br&&p&&b&代码如何移植到各平台:&/b&&/p&&p&Android:&a href=&///?target=http%3A//blog.csdn.net/touchsnow/article/details/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&blog.csdn.net/touchsnow&/span&&span class=&invisible&&/article/details/&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&html5:
&a href=&///?target=http%3A//blog.makeapp.co/%3Fp%3D245& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&blog.makeapp.co/?&/span&&span class=&invisible&&p=245&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&br&&p&&b&效果图:&/b&&/p&&br&&figure&&img src=&/4f058aba5a_b.jpg& data-rawwidth=&1355& data-rawheight=&706& class=&origin_image zh-lightbox-thumb& width=&1355& data-original=&/4f058aba5a_r.jpg&&&/figure&&figure&&img src=&/57c9fec294_b.jpg& data-rawwidth=&1352& data-rawheight=&712& class=&origin_image zh-lightbox-thumb& width=&1352& data-original=&/57c9fec294_r.jpg&&&/figure&&br&&p&&b&开发工具:&/b&&/p&&p&
cocos2dx editor,它是开发跨平台的手机游戏工具,运行window/mac系统上,javascript脚本语言,基于cocos2d-x跨平台游戏引擎, 集合代码编辑,场景设计,动画制作,字体设计,还有粒子,物理系统,地图等等的,而且调试方便,和实时模拟;&/p&&p&cocos2dx editor下载,介绍和教程:&a href=&///?target=http%3A//blog.csdn.net/touchsnow/article/details/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&blog.csdn.net/touchsnow&/span&&span class=&invisible&&/article/details/&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&;&/p&&p&cocos2dx editor官方博客:&a href=&///?target=http%3A//blog.makeapp.co/%3Fcat%3D8& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&blog.makeapp.co/?&/span&&span class=&invisible&&cat=8&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&;&/p&&br&&p&&b&思路和源码:&/b&&/p&&br&&p&
1 场景设计MainLayer.ccbx,如下图;主要分三层,开始场景、主场景、游戏结束场景,通过显示隐藏控制三个场景的切换。&/p&&p&
MainLayer.ccbx代码&/p&&div class=&highlight&&&pre&&code class=&language-text&&&?xml version=&1.0& encoding=&UTF-8&?&
jsControlled=&true&
jsController=&MainLayer&
resolution=&default&
&Resolutions&
&Resolution centeredOrigin=&false& ext=&iphone& height=&1280& width=&720& name=&default& scale=&1&/&
&Resolution centeredOrigin=&false& ext=&iphone& height=&720& width=&1280& name=&default1& scale=&1&/&
&/Resolutions&
&Animations&
&Animation autoPlay=&true&
name=&Default Timeline&
length=&10&
chainedId=&0&
offset=&0.0&
position=&0.0&
resolution=&30&
scale=&128&&
&CallbackChannel&
&/CallbackChannel&
&SoundChannel&
&/SoundChannel&
&/Animation&
&/Animations&
positionX=&0& positionY=&0.0&
sizeType=&Percent&
width=&100& height=&100&
anchorPointX=&0.5& anchorPointY=&0.5& ignoreAnchorPoint=&true&
scaleX=&1& scaleY=&1&
&Sprite positionType=&LeftBottom& width=&720.0& height=&1280.0& positionX=&0& positionY=&0& anchorPointX=&0&
anchorPointY=&0& src=&Resources/bg.png& name=&& var=&& target=&None& scaleX=&1& scaleY=&1& visible=&true&/&
&LayerColor positionType=&LeftBottom& width=&720& height=&1280& positionX=&0& positionY=&0& anchorPointX=&0&
anchorPointY=&0& color=&#fff2e8ff& visible=&false&/&
&Menu positionType=&LeftBottom& width=&40& height=&40& positionX=&356.0& positionY=&237.0& anchorPointX=&0.5&
anchorPointY=&0.5& scaleX=&2.4& scaleY=&1.725&&
&Sprite positionType=&LeftBottom& width=&840.0& height=&281.0& positionX=&0& positionY=&0& anchorPointX=&0&
anchorPointY=&0& src=&Resources/ground.png& var=&ground& target=&Doc&/&
&Node positionType=&LeftBottom& width=&40& height=&40& positionX=&800& positionY=&250& anchorPointX=&0&
anchorPointY=&0& var=&hoseNode& target=&Doc&&
&Sprite positionType=&LeftBottom& width=&86.0& height=&60.0& positionX=&-500& positionY=&400& anchorPointX=&0.5&
anchorPointY=&0.5& src=&Resources/flappy_packer.plist/bird3.png& var=&test& target=&Doc& visible=&false&/&
&Sprite positionType=&LeftBottom& width=&86.0& height=&60.0& positionX=&-550& positionY=&500& anchorPointX=&0.5&
anchorPointY=&0.5& src=&Resources/flappy_packer.plist/bird1.png& var=&bird& target=&Doc& scaleX=&1& scaleY=&1& rotation=&0& visible=&true&/&
&Node positionType=&LeftBottom& width=&40& height=&40& positionX=&303.0& positionY=&500& anchorPointX=&0.5&
anchorPointY=&0.5& var=&readyNode& target=&Doc& visible=&true&&
&Sprite positionType=&LeftBottom& width=&508.0& height=&158.0& positionX=&95.0& positionY=&584.0& anchorPointX=&0.5&
anchorPointY=&0.5& src=&Resources/flappy_packer.plist/getready.png&/&
&Sprite positionType=&LeftBottom& width=&286.0& height=&246.0& positionX=&73.0& positionY=&236.0& anchorPointX=&0.5&
anchorPointY=&0.5& src=&Resources/flappy_packer.plist/click.png&/&
&Node positionType=&LeftBottom& width=&40& height=&40& positionX=&300& positionY=&500& anchorPointX=&0.5&
anchorPointY=&0.5& var=&overNode& target=&Doc& visible=&true&&
&Sprite positionType=&LeftBottom& width=&590.0& height=&298.0& positionX=&72.0& positionY=&219.0& anchorPointX=&0.5&
anchorPointY=&0.5& src=&Resources/flappy_packer.plist/base.png&&
&Sprite positionType=&LeftBottom& width=&508.0& height=&158.0& positionX=&286.0& positionY=&458.0& anchorPointX=&0.5&
anchorPointY=&0.5& src=&Resources/flappy_packer.plist/gameover.png&/&
&Menu positionType=&LeftBottom& width=&40& height=&40& positionX=&0& positionY=&0& anchorPointX=&0.5&
anchorPointY=&0.5&&
&MenuItem positionType=&LeftBottom& width=&290& height=&176& positionX=&-65.0& positionY=&-92.0& anchorPointX=&0.5&
anchorPointY=&0.5& normalImage=&Resources/flappy_packer.plist/start.png& target=&Doc& onClick=&onStartClicked&/&
&MenuItem positionType=&LeftBottom& width=&290& height=&176& positionX=&230.0& positionY=&-92.0& anchorPointX=&0.5&
anchorPointY=&0.5& target=&Doc& normalImage=&Resources/flappy_packer.plist/grade.png& onClick=&onGradeClicked&/&
&/Document&
&/code&&/pre&&/div&&br&&p&2 代码编写MainLayer.js&/p&&p&
首先,小鸟在向前飞,其实是底部的路和水管在向左移动,相对的你就感觉小鸟在向右飞了;路循环移动代码:&/p&&div class=&highlight&&&pre&&code class=&language-text&&MainLayer.prototype.groundRun = function ()
var action1 = cc.MoveTo.create(0.5, cc.p(-120, 0));
var action2 = cc.MoveTo.create(0, cc.p(0, 0));
var action = cc.Sequence.create(action1, action2);
this.ground.runAction(cc.RepeatForever.create(action));
&/code&&/pre&&/div&&br&
初始化高低不同的水管,每一关卡都由上下两水管和空隙组成。总长度相同,空隙也一定,随机取下面水管的长度,就形成错落有致的水管关卡;&div class=&highlight&&&pre&&code class=&language-text&&MainLayer.prototype.newHose = function (num)
var hoseHeight = 830;
var acrossHeight = 300;
var downHeight = 100 + getRandom(400);
var upHeight = 1100 - downHeight - acrossH
var hoseX = 400 *
var HoseName = FP_MAIN_TEXTURE.HOSE;
var ccSpriteDown = cc.Sprite.createWithSpriteFrameName(HoseName[0]);
ccSpriteDown.setZOrder(1);
ccSpriteDown.setAnchorPoint(cc.p(0, 0));
ccSpriteDown.setPosition(cc.p(hoseX, 0));
ccSpriteDown.setScaleY(downHeight / hoseHeight);
var ccSpriteUp = cc.Sprite.createWithSpriteFrameName(HoseName[1]);
ccSpriteUp.setZOrder(1);
ccSpriteUp.setAnchorPoint(cc.p(0, 0));
ccSpriteUp.setPosition(cc.p(hoseX, downHeight + acrossHeight));
ccSpriteUp.setScaleY(upHeight / hoseHeight);
this.hoseNode.addChild(ccSpriteDown);
this.hoseNode.addChild(ccSpriteUp);
this.hoseSpriteList.push(ccSpriteDown);
this.hoseSpriteList.push(ccSpriteUp);
&/code&&/pre&&/div&&br&
一开始进入游戏让底部路不断移动,初始化水管,显示准备游戏场景;&div class=&highlight&&&pre&&code class=&language-text&&MainLayer.prototype.onEnter = function ()
cc.AnimationCache.getInstance().addAnimations(&Resources/flappy_frame.plist&);
this.groundRun();
this.ground.setZOrder(10);
this.birdReadyAction();
this.bird.setZOrder(20);
this.readyNode.setVisible(true);
this.overNode.setVisible(false);
for (var i = 0; i & 30; i++) {
this.newHose(i);
&/code&&/pre&&/div&&br& 点击屏幕,小鸟向上飞60dp,然后更快的速度下落(移动动画),同时闪动翅膀(帧动画);&div class=&highlight&&&pre&&code class=&language-text&&MainLayer.prototype.birdRiseAction = function ()
var riseHeight = 60;
var birdX = this.bird.getPositionX();
var birdY = this.bird.getPositionY();
var time = birdY / 600;
var actionFrame = cc.Animate.create(cc.AnimationCache.getInstance().getAnimation(&fly&));
var flyAction = cc.Repeat.create(actionFrame, 90000);
var riseAction1 = cc.MoveTo.create(0.2, cc.p(birdX, birdY + riseHeight));
var riseAction2 = cc.RotateTo.create(0, -30);
var riseAction = cc.Spawn.create(riseAction1, riseAction2);
var fallAction1 = cc.MoveTo.create(time, cc.p(birdX, 50));
var fallAction2 = cc.Sequence.create(cc.DelayTime.create(time / 6), cc.RotateTo.create(0, 30));
var fallAction = cc.Spawn.create(fallAction1, fallAction2);
this.bird.stopAllActions();
this.bird.runAction(cc.Spawn.create(
cc.Sequence.create(riseAction, cc.DelayTime.create(0.1), fallAction),
flyAction)
&/code&&/pre&&/div&&br& 检测碰撞,如果小鸟碰到地面和水管,发生碰撞,这里碰撞直接用cocos2d-x 里面的图片和图片交叉函数 cc.rectIntersectsRect;&div class=&highlight&&&pre&&code class=&language-text&&MainLayer.prototype.checkCollision = function ()
if (this.bird.getPositionY() & 60) {
cc.log(&floor&);
this.birdFallAction();
for (var i = 0; i & this.hoseSpriteList. i++) {
var hose = this.hoseSpriteList[i];
if (!this.isInScreen(hose)) {
if (cc.rectIntersectsRect(hose.getBoundingBox(), this.bird.getBoundingBox())) {
cc.log(&hose positionX==& + hose.getBoundingBox().x);
cc.log(&this.bird positionX==& + this.bird.getBoundingBox().x);
cc.log(&i==& + i);
cc.log(&birdFallAction&);
this.birdFallAction();
&/code&&/pre&&/div&&br&碰撞后,小鸟先下落,游戏结束场景显示;&div class=&highlight&&&pre&&code class=&language-text&&MainLayer.prototype.birdFallAction = function ()
this.gameMode = OVER;
this.bird.stopAllActions();
this.ground.stopAllActions();
var birdX = this.bird.getPositionX();
var birdY = this.bird.getPositionY();
var time = birdY / 2000;
this.bird.runAction(cc.Sequence.create(
cc.DelayTime.create(0.1),
cc.Spawn.create(cc.RotateTo.create(time, 90), cc.MoveTo.create(time, cc.p(birdX, 50))))
this.overNode.setVisible(true);
&/code&&/pre&&/div&&br&游戏的难度主要在于多个水管的移动,小鸟触摸动画,检测碰撞;&br&&br&&p&再次提示代码下载地址:&/p&&p&
csdn下载:&a href=&///?target=http%3A//download.csdn.net/detail/touchsnow/6912707& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&download.csdn.net/detai&/span&&span class=&invisible&&l/touchsnow/6912707&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&
百度云盘:&a href=&///?target=http%3A///s/1pJnWDb9& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/s/1pJnWDb&/span&&span class=&invisible&&9&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&
金山快盘 :&a href=&///?target=http%3A///file/id_45384.htm%3Fsource%3D1& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&/file/id_2534&/span&&span class=&invisible&&4.htm?source=1&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&br&&p&楼下有求图片的,地址:&a href=&///?target=http%3A///db1ff99f553afff58b7a2& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/d73228&/span&&span class=&invisible&&232bc0b1ff99f553afff58b7a2&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&br&&p&&b&更多内容:&/b&&a href=&///?target=http%3A//blog.csdn.net/touchsnow/article/details/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&blog.csdn.net/touchsnow&/span&&span class=&invisible&&/article/details/&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&&b&官方博客:&/b&&a href=&///?target=http%3A//blog.makeapp.co/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&blog.makeapp.co/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&&b&联系笔者:&/b&zuowen@makeapp.co (邮箱)&/p&&br&&p&&b&想了解其他游戏开发可关注:&/b&&a href=&/question/& class=&internal&&消灭星星(Popstar)游戏是怎么开发实现的?难不难?经常看到有人玩这个,很好奇里面的逻辑,拜求高手解答!&/a&&/p&&br&&br&&p&附录:其他游戏例子学习 &a href=&///?target=http%3A//blog.csdn.net/touchsnow/article/details/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&blog.csdn.net/touchsnow&/span&&span class=&invisible&&/article/details/&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&;&/p&&br&&figure&&img src=&/baffb4b4ee6_b.jpg& data-rawwidth=&1364& data-rawheight=&738& class=&origin_image zh-lightbox-thumb& width=&1364& data-original=&/baffb4b4ee6_r.jpg&&&/figure&&br&&br&&figure&&img src=&/0ab4dee739e43d9b366f2_b.jpg& data-rawwidth=&1360& data-rawheight=&726& class=&origin_image zh-lightbox-thumb& width=&1360& data-original=&/0ab4dee739e43d9b366f2_r.jpg&&&/figure&&br&&figure&&img src=&/aafb_b.jpg& data-rawwidth=&1358& data-rawheight=&728& class=&origin_image zh-lightbox-thumb& width=&1358& data-original=&/aafb_r.jpg&&&/figure&&br&&figure&&img src=&/abdee6f10d30cda1edb6aff4c8d07b10_b.jpg& data-rawwidth=&1361& data-rawheight=&727& class=&origin_image zh-lightbox-thumb& width=&1361& data-original=&/abdee6f10d30cda1edb6aff4c8d07b10_r.jpg&&&/figure&&br&&figure&&img src=&/6fd502bb93f_b.jpg& data-rawwidth=&1358& data-rawheight=&728& class=&origin_image zh-lightbox-thumb& width=&1358& data-original=&/6fd502bb93f_r.jpg&&&/figure&
网上找到一篇文章,主场景300左右行代码,一天时间做出来,你信么?原文链接:
————————————————————————————————————背景:最近火爆全球的游戏flappy bird让笔者叹为观止,于是花了…
除去各种底层技术值得专研外,请不要忽视了一个重要的东西 &b&GamePlay&/b&,你是游戏程序员,不是完成需求的机器。&br&&br&给你讲讲我比较佩服的一为朋友的经历,国内金牌制作人,名字就不提了。他本科学的平面设计,计算机是自己中学自学的,从小就爱开发游戏,但是他的关注点是 “如何创造有意思的游戏”,单纯说技术,他自己都承认,自己的技术很烂,但是我每每看到他用各种“很烂”的技术开发出来的东西都会被吓一大跳:&br&&br&&b&机器人大战&/b&&br&&br&&figure&&img src=&/39b5d31d216abe6fbfa56bc99cc64e8e_b.jpg& data-rawwidth=&550& data-rawheight=&587& class=&origin_image zh-lightbox-thumb& width=&550& data-original=&/39b5d31d216abe6fbfa56bc99cc64e8e_r.jpg&&&/figure&&br&这是一个他学生时候写的人工智能竞赛游戏,有多种机器人类型可供购买。为渴望挑战人工智能及喜爱收藏的人们提供了新的交流方式。同时机器人品种的可扩展性带来了很多乐趣,虽说该游戏在入手方面有点难度,但是在 PCHome 上一度登上游戏类下载排行榜。&br&&figure&&img src=&/f9baded656cfe10b3cebf034acc28675_b.jpg& data-rawwidth=&554& data-rawheight=&594& class=&origin_image zh-lightbox-thumb& width=&554& data-original=&/f9baded656cfe10b3cebf034acc28675_r.jpg&&&/figure&&br&他花了两个月用 TurboC 独立开发出来的,今天看起来效果一般,但你今天别用U3D,别用cocos,去 turboc下实现试试,何况抛开图形,就游戏核心玩法的复杂度,放在今天熟练的程序员也要开发很久,可人家还是学生时候做的。当时引起了很多人群的关注,他们学校里同学们用这个作品组织了一场校际比赛,结果引起了极大的反响,虽然在一开始没有多少人主动参加这次比赛,但是比赛的那天有很多同学被精彩的对抗所吸引,几乎所有的观众都在自己的座位上看完了整个比赛。他说:“现在想想那时候的情景都能让我兴奋不已。”&br&&br&&b&多人乱斗&/b&&br&&br&&figure&&img src=&/7a3ffe6da7cf788a4c8e_b.jpg& data-rawwidth=&569& data-rawheight=&493& class=&origin_image zh-lightbox-thumb& width=&569& data-original=&/7a3ffe6da7cf788a4c8e_r.jpg&&&/figure&&br&他大学时候继续使用落后的 TurboC 开发的游戏,没学习过 3D 但是美术学过透视作图,相似三角形计算远小进大,然后用伪3D 的模式开发出来。游戏中既有远程射杀武器,又有近距离搏斗技巧,还有夸张的碰撞效果,还可以躲避敌人的视线来实现隐秘行动,这个游戏手感很爽快,可玩度很高,但是图像的确太糟糕了,于是他又做了一款改进版:&br&&figure&&img src=&/b4dfdd72f3cd2d4dc1b91d67_b.jpg& data-rawwidth=&578& data-rawheight=&714& class=&origin_image zh-lightbox-thumb& width=&578& data-original=&/b4dfdd72f3cd2d4dc1b91d67_r.jpg&&&/figure&&br&加入了简单的多边形绘制,镜头自由移动,不知道zbuf,但是他知道远处东西先画近处东西后画的画家算法,没学习过3D,但是他最厉害的就是 “创造性” 三个字上:&b&能充分发挥现有技术,创造出让人眼前一亮的效果来&/b&,效果上有所提高的同时加入了更多武器,潜入玩法,敌人有视线范围,还有比较拟人的AI,你要注意避让,还可以从后面上去偷袭,当然,如果技术够好,被敌人发现了也不怕,一场激烈的枪战而已,可以利用各种武器制胜,还要充分利用地形,比如射击汽油桶会爆炸,普通墙壁可以躲避。我玩了一下,还真有点合金装备的意思呀。&br&&br&我当时问他,为什么不再 Windows 下开发,更简单了,他说他没有学习过 Windows 程序设计,主要是把时间花在实现游戏各种乐趣上了,Windows 下程序设计他也看过,但是 Dx, OGL好多东西新学费时间,没个一年多他弄不出来,不过 DOS 下内存少载入的东西多了就退出,我说我给你写个简单的框架吧,写起来也挺简单的,他试用了一下,觉得不好用,还是习惯 DOS 编程,后来我给他用 Watcom C++写了一套库,满足他 DOS 下继续开发游戏的想法,解决了图像弱智,没有音乐,没有音效,性能上不去等问题,他用着很爽,又用它开发了好几个游戏,他虽然不擅长钻研底层技术,但是确实能够充分的将他会的东西发挥的比较淋漓尽致的人。&br&&br&&b&即时战略&/b&&br&&br&&figure&&img src=&/7c84695abe9f832fb66ae_b.jpg& data-rawwidth=&557& data-rawheight=&620& class=&origin_image zh-lightbox-thumb& width=&557& data-original=&/7c84695abe9f832fb66ae_r.jpg&&&/figure&&br&这还是他学生时候开发的即时战略,虽然比起商业即时战略弱智很多,但还是有很多经过他自己精心设计的部分,如:支持双人对战;机器人会变形,幻影战车(速度快,激光导弹难以瞄准),士兵由农民进入兵营训练而成,弹药补给,自己组配士兵装备以及战车配置等。&br&&br&他经常羡慕我知道各种底层技术,但是我面对他的一款款作品,却自愧不如,他是能够将现有技术充分发挥作用的人。计算机的技术再怎么发展终归都是有限的,而人的创造却是无限的,以无限的创造衡量有限的技术,以无法以为有法,以有限而为无限。即便是只使用 DOS 下几种弱智绘图方式,他手底下也能点石成金,变成一个效果上超出大家预期,充满乐趣的游戏。&br&&br&比如他读中学才学习电脑的时候,接触的是 FoxBase 这个财务软件,他无师自通的使用 FoxBase 开发出一个 RPG 游戏来: &br&&figure&&img src=&/7f607c44737bbaecce3682650ada5a13_b.jpg& data-rawwidth=&394& data-rawheight=&730& class=&content_image& width=&394&&&/figure&他高中时候 FoxBase 下的 RPG 游戏,玩起来别有一番风味。对于他而言,技术是达到目的的手段,发掘快乐的本源,完善游戏各种细节,流畅的手感,有张有弛的节奏,这一切才是 GamePlay的核心。&br&&br&2003年时我闲着无聊,帮他优化了一款动作游戏,《Hurricane2》,主要是他开发的,一款比较爽快的动作游戏,虽然图形一般,但他后面又修修补补加了很多有趣的元素,这是我硬盘上至今保存的比较完整的他的作品了:&br&&a href=&///?target=http%3A//www.skywind.me/mw/images/a/ac/Hurricane2.7z& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&skywind.me/mw/images/a/&/span&&span class=&invisible&&ac/Hurricane2.7z&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&&br&这是他学生时候为了做游戏,自学美术的一些手稿:&br&&figure&&img src=&/bcaa9531feaad5d728de83_b.jpg& data-rawwidth=&590& data-rawheight=&770& class=&origin_image zh-lightbox-thumb& width=&590& data-original=&/bcaa9531feaad5d728de83_r.jpg&&&/figure&&br&他当年毕业后以程序的身份去到盛大,因为工作中出色的表现,几年后便升为产品经理,为盛大开发了两款月入六百万级别的 RPG 游戏,不算太高,但是当时的端游,失败率那么高的情况下,第一次做产品经理,没赔也算挺不错了。&br&&br&工作至余,他继续保持学习和提高,除了在电影,美术和动画方面学习各种知识外,他终于学习了 C#,正式步入游戏圈子自然结识到了更多朋友,其中一位志同道合的伙伴为他开发了一套支持卡通渲染的 XNA 图形引擎,于是他开始了独立的 C#游戏开发之路,因为小时候学习武术他一直希望能够做出一款武打游戏来,于是自己学习3DMax,自己学习骨骼动画,学习展UV,学习蒙皮,这些技巧性的不算难,难的是游戏里几个主角全是他自己画出来的。&br&&figure&&img src=&/b5c3233ebb582d40b4c00c48ffbea183_b.jpg& data-rawwidth=&490& data-rawheight=&322& class=&origin_image zh-lightbox-thumb& width=&490& data-original=&/b5c3233ebb582d40b4c00c48ffbea183_r.jpg&&&/figure&&br&这就是当年他开发的 DOS下《&a href=&///?target=http%3A//www.skywind.me/mw/images/a/ac/Hurricane2.7z& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Hurricane2&i class=&icon-external&&&/i&&/a&》的高级版本,沿袭 前作爽快的节奏感和简单的操作,最牛的是几个主角传神的武打动作都是他一个人一点点调出来的,超过很多专业调动作的美术:&br&&figure&&img src=&/8a6e66dd49b0b0acaf09b_b.jpg& data-rawwidth=&490& data-rawheight=&324& class=&origin_image zh-lightbox-thumb& width=&490& data-original=&/8a6e66dd49b0b0acaf09b_r.jpg&&&/figure&终于有机会将他动作游戏的想法付诸实践了。不过这是他业余开发的单机游戏,并不是什么网游,XBox Live上却卖了好几万分,还在国际上得了个什么奖。&br&&br&他工作上的取得的成绩我就不说了,上面说的都是他在没有任何人要求他的情况下,业余搞出来的东西。而且业务,开发,策划,美术,音乐,各个环节他都有涉猎。&br&&br&程序也是半个策划,直接面向玩家的人,即便写的再明白的策划案,不可能写到像素级别交给你,如何更好的实现各种效果,如何让游戏变得更有趣,如何充分发挥现有技术的优势,是值得到家深刻考虑的问题,游戏本来就是艺术和技术的合体,GamePlay 做得好,游戏是有灵性的,是有生命力的,而只知道呆板实现的人,同样的东西,做出来的效果却是一塘死水,毫无生机。&br&&br&之前公司在开发一款模仿《DiabloII》的游戏,虽然碰到很多坑,但是开发者的态度令我敬佩,他们为了实现 DiabloII里面金币掉落的效果,试了很多次,抛物线,不像;加大重力(两倍G)有点象但是还缺点什么,找半天就是找不到,后来他们把 D2的录像拿过来一帧帧的播放,一帧帧的分析,金币到底是怎么掉落的,最后才发现,D2的金币掉落是和物理知识反着来的,首先金币加速上升,然后悬空停顿,最后重重的砸到地下,按照这个过程配合恰如其分的音效终于实现了D2的效果,让金钱掉落的过程充满快感。对于这个效果,策划案上就只有几个字:“模仿D2钱币掉落”,而美术也就给了几个金钱状态的图片,后来又听他们说了如何做鼠标的手感,飞行武器如何判定,地图如何自动生成等。&br&&br&听完后我想,一个小小的金币掉落,他们都能花这么长时间,不管游戏最终如何,但精品游戏还真得这么一步步的扣出来。真正做得好的游戏,都是玩家觉得好玩,但是却又说不出来好玩在哪里,大量的精心制作的细节支撑起一款款成功的 3A 游戏。&br&&br&游戏对于程序员而言,有蛮多值得挑战的东西,GamePlay就是其中重要的一环,如果你想突破自己,请始终不要忘记,你是做游戏的,不是一个工具,更不是一架只会完成需求的机器。游戏本来就是快乐的,如果开发者本身没有任何感情去做他,本身都不快乐,那你怎么能让玩家快乐呢?&br&&br&如果开发者丝毫不考虑玩家感受,没有产品意识,只知道实现策划的功能,象一架机器一样麻木的完成各种需求,那么这样永远得不到成长。&br&&br&现在游戏挣钱了,很多人进来开发游戏,更多的是冲着钱字进来的,比起早年开发游戏的人来说,更少了一份 “纯粹” 多了几分 “浮躁”。我面试时也碰到很多年轻人声称自己 “喜欢游戏”,可我想问一句,你说你喜欢游戏,你为 “喜欢” 二字付出过什么?对比起我上面说的这位朋友几十年不停息的努力,你这个喜欢又算得了什么?&br&&br&现在我也不想谈 “情怀” 两个字,这两个字已经被说烂了,我说个更烂的 “梦想” 两个字,请问你作为这个行业的新人而言,你的梦想是什么?你为它付出了多少?
除去各种底层技术值得专研外,请不要忽视了一个重要的东西 GamePlay,你是游戏程序员,不是完成需求的机器。 给你讲讲我比较佩服的一为朋友的经历,国内金牌制作人,名字就不提了。他本科学的平面设计,计算机是自己中学自学的,从小就爱开发游戏,但是他的…
楼主,我没说过这句话。&br&&br&——————&br&更新:&br&这个回答得到的赞数,居然远远超过我在技术问题下面花几个小时的回答。杯具啊。&br&&br&有个晚上我做梦,梦到了这个问题的正确回答,然后第二天醒来只记得我梦到了这件事,却不记得正确答案是什么了。今天下午翻知乎,努力回忆了一下。我应该是讲过这样的话:&br&&br&&b&『Cocos2d-x的开发借力了OpenGL ES的跨平台性』&/b&。&br&&br&可能是采访录音或者速记的错误,导致以讹传讹,到楼主看到的时候就已经走样了。&br&&br&也就是说,Cocos2d-x的跨平台层,很大程度得益于OpenGL ES标准在不同手机平台上都可以运行,即使在wp8上也有Angel Project把OpenGL ES调用转换到DirectX,所以我们一套OpenGL ES调用可以横跨iOS, Android, WP8三个主要平台。如果像以前主机平台那样,各平台有各平台自己的渲染API,相互不兼容、没有工业标准,那么Cocos2d-x跨平台做起来就相当苦逼了。&br&&br&当然好日子也差不多到头了,苹果极力推他们的Metal,所以在Cocos2d-x v4.0里面我们开始做GPU抽象层,也就是无法再借力OpenGL ES的跨平台性了。现在感觉还好,但回过头去看,这样重的研发成本在早期我们还是小团队的时候是无法承受的。
楼主,我没说过这句话。 —————— 更新: 这个回答得到的赞数,居然远远超过我在技术问题下面花几个小时的回答。杯具啊。 有个晚上我做梦,梦到了这个问题的正确回答,然后第二天醒来只记得我梦到了这件事,却不记得正确答案是什么了。今天下…
&b&----答案多图 流量预警----&/b&&br&跟你简要说一下我的自学路,以免你走弯路&br&&br&&b&背景:&/b&&br&有工作,而且很忙;在不影响工作基础上用业余时间鼓捣(经常会因为工作耽搁学习进度);基本没技术背景(初中qbasic、高中pascal半吊子),大学文科,工作也不是搞代码。因此我感觉我的自学路跟你还是挺契合的。 &br&&br&&b&&i&1&/i&&/b&&br&两年前的一天,决定要做独立游戏制作人。选定引擎cocos2d,开始学习objective-c语言;(如果你打算只在iOS平台开发可以学obj-c配合cocos2d或者sprite kit;如果打算跨平台就要用cocos2d-x和c++了;当然unity什么的也不错但是我还没尝试过,一直很向往)&br&&br&&b&&i&2&/i&&/b&&br&我跳过了iOS程序开发(似懂非懂看完了斯坦福那一系列的教学视频),结合当时情况直接选择了cocos2d引擎,这时开始接触 &a data-hash=&12e091df58a35bfe005b9d6f525eea54& href=&///people/12e091df58a35bfe005b9d6f525eea54& class=&member_mention& data-editable=&true& data-title=&@吴一刀& data-tip=&p$b$12e091df58a35bfe005b9d6f525eea54& data-hovercard=&p$b$12e091df58a35bfe005b9d6f525eea54&&@吴一刀&/a& 推荐的博客;我主要看的是子龙山人&&a href=&///?target=http%3A///andyque/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&子龙山人 - 博客园&i class=&icon-external&&&/i&&/a&&、Ray Wenderlich&&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Ray Wenderlich&i class=&icon-external&&&/i&&/a&&、Himi&&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&黑米GameDev街区&i class=&icon-external&&&/i&&/a&&这些博客里最基本的例子,知易那个以我当时的水平还看不懂。&br&&br&&i&&b&3&/b&&/i&&br&尝试开始设计自己的简单游戏,我做打地鼠!当然比教学例子里的打地鼠复杂多了&br&&br&&i&&b&4&/b&&/i&&br&这个过程中发现自己懂的实在是不够,所以又开啃这本书:Learn cocos2d 2 by Steffen Itterheim & Andreas Low&br&&br&&i&&b&5&/b&&/i&&br&慢慢的发现需要一些趁手的工具和编辑器,并发展出一套自己构建于cocos2d之上的游戏设计架构。我目前的情况是这样:&br&&br&&br&&b&关卡编辑&/b&我使用plist文件配合自己写的类;&br&&br&&br&&b&sprite sheet&/b&使用TexturePacker&&a href=&///?target=http%3A///texturepacker& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&TexturePacker&i class=&icon-external&&&/i&&/a&&;&br&&br&&br&&b&动画/UI编辑&/b&最初自己手写太累,后来选择了cocosbuilder,请注意现在这个软件已经停止维护,转而引导用户使用SpriteBuilder&&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&SpriteBuilder&i class=&icon-external&&&/i&&/a&&(域名都做了自动跳转;SpriteBuilder我木有研究过,建议你研究一下)。&br&&br&&b&粒子编辑&/b&我自己还没实际用到,如果真正需要我感觉cocosbuilder的够我用的。//更新:后来用到了ParticleDesigner和cocosbuilder两个软件的粒子编辑混搭&br&&br&我当时遇到的一个大麻烦是如何让cocosbuilder、cocos2d版本互相兼容且cocosbuilder无问题。大概情况是这样:&a href=&/question/& class=&internal&&cocosbuilder2.1和cocos2d-iphone2.0及2.1版本都不协调怎么办?&/a&;&a href=&///?target=http%3A///questions//what-version-of-cocosbuilder-and-cocos2d-iphone-should-i-choose& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&What version of Cocosbuilder and Cocos2d-iphone should I choose?&i class=&icon-external&&&/i&&/a&&br&&br&目前我使用的cocosbuilder 2.1版本(渐变层有bug、并且很可惜动画播放完没有触发消息的机制,我只好把每个动画时长都手动记录一下自己处理)&br&&br&======3月12日更新======&br&在 &a data-hash=&115f6fcf853e& href=&///people/115f6fcf853e& class=&member_mention& data-editable=&true& data-title=&@GarfieldKwong& data-tip=&p$b$115f6fcf853e& data-hovercard=&p$b$115f6fcf853e&&@GarfieldKwong&/a& 指点下发现这个版本动画播放完是可以触发消息机制的,更高级版本3.x支持的效果应该是在动画中就加入callback的关键帧&br&新技能get√&br&&br&具体代码可见下面学习案例的第一个例子里Explosion部分&br&=====================&br&&br&cocosbuider的学习可以看两个例子&a href=&///?target=http%3A///2012/10/creating-a-game-with-cocosbuilder/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Creating a Game with CocosBuilder&i class=&icon-external&&&/i&&/a&;&a href=&///?target=http%3A///23996/introduction-to-cocosbuilder& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Introduction to CocosBuilder&i class=&icon-external&&&/i&&/a&;然后就是多用多尝试。&br&&br&&i&&b&6&/b&&/i&&br&整个学习过程要学会查资料、学会寻求帮助,我主要用的stackoverflow(话说刚刚发现stackoverflow的reputation喜过15,终于可以投票了:)&br&&br&在学习过程中得到了子龙山人(我认为本尊是这位 &a data-hash=&bab870fc7d89ae2b84bee& href=&///people/bab870fc7d89ae2b84bee& class=&member_mention& data-editable=&true& data-title=&@屈光辉& data-tip=&p$b$bab870fc7d89ae2b84bee& data-hovercard=&p$b$bab870fc7d89ae2b84bee&&@屈光辉&/a& )、LearnCocos2d作者Steffen、 &a data-hash=&8da5e5ee5fb135e453d0& href=&///people/8da5e5ee5fb135e453d0& class=&member_mention& data-editable=&true& data-title=&@kubisoft& data-tip=&p$b$8da5e5ee5fb135e453d0& data-hovercard=&p$b$8da5e5ee5fb135e453d0&&@kubisoft&/a& 以及众多网上朋友的帮助,再次表示感谢。&br&&br&&br&&i&&b&7&/b&&/i&&br&硬件及开发者资格:看完c++开始看obj-c,这个过程一直是使用的vmware虚拟机安装的mac系统写程序;然后入手一个最便宜的mac pro、以及iPhone,尝试玩各种游戏;从看c++开始大约过了1年半(已经有非常简陋的游戏demo)才真正购入iOS开发者资格并开始真机测试。&br&&br&&i&&b&8&/b&&/i&&br&尝试过的一些其他工具、各种弯路和坑、以及发散内容:&br&可以拖拽方式写代码的stencyl &&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Stencyl: Make iPhone, iPad, Android & Flash Games without code&i class=&icon-external&&&/i&&/a&&;&br&最初学的不是ojc-c而是谭浩强老师的c++程序设计(虽然有人不喜谭老师,但那书是中文的让我对面对对象程序设计有一些初步的概念,再看英文的obj-c不至于太摸不着头脑,反正手头正好有这么一本买了6年没看的c++。。。);&br&尝试过&&a href=&///?target=http%3A//www.mapeditor.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Tiled Map Editor&i class=&icon-external&&&/i&&/a&&但自己目前的坑没有用到;&br&尝试过一点物理引擎和粒子,但自己目前的坑没有用到;现在粒子用到了,做了火焰等效果,也挺美的;但是一定要注意CPU占用优化,内存方面我最低支持4S没遇到大问题&br&&br&学习音乐制作,这个我小时候学琴一直也喜欢音乐所以有一点点底子,如果没有基础可能上手有门槛;开始用的软件LMMS,但是音源插件在64位系统的问题我一直没解决掉时间精力也不多,所以是暂时停滞了;最近发现Garage Band可能也可以写歌;另外还试过一个很有历史的微软的音乐自动编辑器,很好玩,用来做背景音乐也不错。&br&&br&入手手绘板学画画(这中间纠结了好久才决定用位图不用矢量图),如果你能找到热爱游戏的美术同学一起搞那最好不过。但是我一直对画画心痒难搔。。。所以入了这个深坑,晒一晒:&br&熟悉板绘:&br&&figure&&img src=&/752b62e5eb4fdbb47ff1_b.jpg& data-rawwidth=&422& data-rawheight=&357& class=&origin_image zh-lightbox-thumb& width=&422& data-original=&/752b62e5eb4fdbb47ff1_r.jpg&&&/figure&&br&你可以看到我真的是0基础哦,画线我手那个抖的。。。&br&&br&&figure&&img src=&/f518d3d74fffb_b.jpg& data-rawwidth=&381& data-rawheight=&317& class=&content_image& width=&381&&&/figure&&br&这些是看了&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&THE DAILY MONSTER:&i class=&icon-external&&&/i&&/a&每天画一个怪物,自己也画了几个玩&br&&figure&&img src=&/7a11b32f87b50a4cb0731_b.jpg& data-rawwidth=&299& data-rawheight=&381& class=&content_image& width=&299&&&/figure&&br&&figure&&img src=&/dc72f1f3deaf8ab150a4382_b.jpg& data-rawwidth=&363& data-rawheight=&337& class=&content_image& width=&363&&&/figure&&br&&br&但是这些不顶用啊,咱需要彩色的,于是尝试上色&br&不能怕丢人,晒一下初期作品。。。(其实是缩小了的,原始大小惨不忍睹)&figure&&img src=&/a09de1b625d6ed8d65b2_b.jpg& data-rawwidth=&175& data-rawheight=&146& class=&content_image& width=&175&&&/figure&&br&虽然自己看着都过不去,但也要坚持要有进步&br&&figure&&img src=&/02e9fbef17ea441c8d93_b.jpg& data-rawwidth=&171& data-rawheight=&123& class=&content_image& width=&171&&&/figure&&br&&br&&br&&br&自己这没基础的水平连明暗面都分不清&br&比如&br&&figure&&img src=&/827c92a550cfdfcaee5ba_b.jpg& data-rawwidth=&144& data-rawheight=&146& class=&content_image& width=&144&&&/figure&&br&为了进步(其实是看不下去自己画的了)咱临摹吧,临摹了一个本以为很简单其实对于我来说很复杂的冒险岛online里的boss朱诺(作为一个奔三男生我很喜欢这游戏不要鄙视我= =)&br&&br&&br&&figure&&img src=&/56a6d39775ede03bb0bba57_b.jpg& data-rawwidth=&472& data-rawheight=&570& class=&origin_image zh-lightbox-thumb& width=&472& data-original=&/56a6d39775ede03bb0bba57_r.jpg&&&/figure&(应邀已换大图)&br&&br&不知道你发现没有,我的习作都是按个算的。。。因为咱精力时间实在有(hen)限(lan),作为游戏爱好者不投入一些业余时间到游戏里也说不过去对吧。。。&br&&br&后来基于喜爱(其实是为了简单)选择了KingdomRush的风格发展(网上认识一个做游戏的好友Way,在做安卓的RPG游戏《灰王子》,我很喜欢他的美术风格,所以主要临摹了他的一些同人作品)&br&这是临摹的KingdomRush里抠出来的素材&br&&figure&&img src=&/4f044c9b6def644ad2bd07_b.jpg& data-rawwidth=&96& data-rawheight=&126& class=&content_image& width=&96&&&/figure&&figure&&img src=&/1a85e21f9cdf456c893aced7e3a9f2ce_b.jpg& data-rawwidth=&58& data-rawheight=&78& class=&content_image& width=&58&&&/figure& KingdomRush的素材又小又不过瘾&br&这是临摹的way的作品&br&&figure&&img src=&/843ebfa39ffa_b.jpg& data-rawwidth=&485& data-rawheight=&487& class=&origin_image zh-lightbox-thumb& width=&485& data-original=&/843ebfa39ffa_r.jpg&&&/figure&&br&&br&同样临摹way的&br&&figure&&img src=&/2d0ea383ec05e0081878a_b.jpg& data-rawwidth=&382& data-rawheight=&338& class=&content_image& width=&382&&&/figure&&br&&br&还是临摹way的&br&&figure&&img src=&/22944c83dbaa0f2e1cef64df_b.jpg& data-rawwidth=&219& data-rawheight=&325& class=&content_image& width=&219&&&/figure&&br&怎么样,他画风很不错吧? :)&br&&br&然后用习得的上色技法,重新上色我的老鼠&br&&figure&&img src=&/db6b9673c8afdc99e4cfdbe53c90c17e_b.jpg& data-rawwidth=&144& data-rawheight=&152& class=&content_image& width=&144&&&/figure&&br&呃。。。怎么说呢,感觉怪怪的,好像得了皮肤病。。。&br&&br&这时俺的游戏打算推倒重做,因为打地鼠玩法实在是没意思。&br&结合我(mei)不(ji)羁(chu)的运笔方法、半瓶子咣当的上色技法,画了一组 帧! 动! 画! 哇,好牛b的赶脚~~&br&&figure&&img src=&/f469a411ffad1e8f98ef_b.jpg& data-rawwidth=&1279& data-rawheight=&307& class=&origin_image zh-lightbox-thumb& width=&1279& data-original=&/f469a411ffad1e8f98ef_r.jpg&&&/figure&&br&提问:&br&谁来猜一下朝代?&br&这是临(chao)摹(xi)哪个游戏的动作?&br&&br&不管怎么说,我的游戏总算有了原创的小兵动画了,这时距离发下做游戏之宏愿已经过去了。。我算算。。21个月&br&&br&这个小兵后来又补充了武器、死亡动画,但是攻击以及其他角色动画还都是用汉字代替的。。。坑待填&br&&br&有了小兵,很自得哦~ 咱得搞个像样的场景罢!&br&&br&以前一直用风景照ps的,看腻了&br&找来找去看雨血风格不错,以咱的水平还能学(chao)习(xi)的来,说干就干:&br&&figure&&img src=&/7a05edc9f9c7faf3d70213_b.jpg& data-rawwidth=&428& data-rawheight=&653& class=&origin_image zh-lightbox-thumb& width=&428& data-original=&/7a05edc9f9c7faf3d70213_r.jpg&&&/figure&至此,美术方面停滞不前&br&这个场景,我实在画不下去了。。。&br&希望有不计较能赚多少钱而热爱游戏的的美术一起入坑,帮咱圆一个做游戏的梦&br&&br&=============不好意思发散那么远的分割线=================&br&&br&&i&&b&9&/b&&/i&&br&自学之路的困难&br&&b&难点A&/b&&br&最难的就是持之以恒&br&因为工作太(tai)忙(lan),又经常沉迷于电影美剧知乎,而且要投入时间和精力研究&br&游戏&br&&figure&&img src=&/7c189243bdf50b1dcaf181e342ea270b_b.jpg& data-rawwidth=&27& data-rawheight=&28& class=&content_image& width=&27&&&/figure&&br&所以经常好多天什么进步都没有&br&为了避免自己止步不前,我用excel表记录每天的进步,也当作一个todolist。目前记录了7个月,做好了就绿色,没做就红色,黄色是做了但没做完的,时刻提醒自己不要放弃&br&(虽然经常忘记看这个表。。。)&br&&br&&figure&&img src=&/2f36cb0ca57b1d3a127a392eb778e43f_b.png& data-rawwidth=&484& data-rawheight=&1024& class=&origin_image zh-lightbox-thumb& width=&484& data-original=&/2f36cb0ca57b1d3a127a392eb778e43f_r.png&&&/figure&&br&&br&这样回头一看虽然满眼红色触目惊心,但还是有成就感的。&br&&br&另外别小看绿色的那么少哦,有时短短一行绿其实凝聚着不少心血。&br&&br&&br&&br&当然也不要小看红色哦! 有时短短一行红色前面日期写着xx/xx~xx/xx。。。&br&&br&&br&&br&&b&难点B&/b&&br&我这种没技术基础和实践的,自己写了的类都记不清类的关系,也记不清各种CCNode的parents/children关系。中间推倒重做时,维护了一个visio的表,供提醒自己各种关系用。&br&&figure&&img src=&/acd813e54db4f318aa35d_b.jpg& data-rawwidth=&776& data-rawheight=&513& class=&origin_image zh-lightbox-thumb& width=&776& data-original=&/acd813e54db4f318aa35d_r.jpg&&&/figure&强烈建议你一开始就注意这一点,自己写的各种主要的类大概什么关系、编辑关卡时的注意要点等等都记录下来,不然时间长了自己会搞混的。&br&&br&更新:后来做天赋系统发现MVC结构很好用;就算不用上面那个visio表也没有太大关系&br&再更:重要的架构设计都注意写文档,不正规的文档也可以,因为时间久了一定会忘的,想再修改很麻烦。&br&&br&=============
再次更新==============&br&后来我辞职啦,专心做游戏,决定就将打地鼠进化版做成我的处女作。添加了很多玩法,自己玩的不亦乐乎啊~ 游戏模式和策略有很多可挖掘的地方。然后就是配音效、音乐、文案翻译、测试等等。时间拖到本周,hello world游戏终于完成,已经在appstore上线,叫做涂鸦防守dooDelfense,想玩一下的请猛戳 &&a class=& wrap external& href=&///?target=https%3A///app/doodlefense-doodle-defense/id& target=&_blank& rel=&nofollow noreferrer&&dooDlefense (Doodle Defense) on the App Store on iTunes&i class=&icon-external&&&/i&&/a&&。&br&&br&我这里更新一下美术方面的内容吧,看着比技术说明更过瘾= =&br&画风经过反复尝试最后确定用涂鸦风格,在看完不需洗眼的前提要求下,以下截图就是我目前的最高水平啦-。-
&br&&br&&b&生气的果冻&/b&。。。是普通粉嫩果冻的加强版&br&&figure&&img src=&/cbedd3c5cfadc15204e01e_b.jpg& data-rawwidth=&568& data-rawheight=&320& class=&origin_image zh-lightbox-thumb& width=&568& data-original=&/cbedd3c5cfadc15204e01e_r.jpg&&&/figure&&br&&br&&b&巨嘴鲸--普通态&/b&&br&&figure&&img src=&/7edfc3d46ca25766ae59e_b.jpg& data-rawwidth=&568& data-rawheight=&320& class=&origin_image zh-lightbox-thumb& width=&568& data-original=&/7edfc3d46ca25766ae59e_r.jpg&&&/figure&&br&&b&巨嘴鲸--巨嘴态
&/b&友情配音 &a data-hash=&79cc0ddf6b35fc237c53a& href=&///people/79cc0ddf6b35fc237c53a& class=&member_mention& data-editable=&true& data-title=&@Plath& data-tip=&p$b$79cc0ddf6b35fc237c53a& data-hovercard=&p$b$79cc0ddf6b35fc237c53a&&@Plath&/a&&br&&figure&&img src=&/da96def2c8a17dfd025ec73aed10f65d_b.jpg& data-rawwidth=&822& data-rawheight=&760& class=&origin_image zh-lightbox-thumb& width=&822& data-original=&/da96def2c8a17dfd025ec73aed10f65d_r.jpg&&&/figure&&br&&br&&b&独眼毛团&/b&&br&&figure&&img src=&/aae2f7c4c6d12cb8987b6_b.jpg& data-rawwidth=&863& data-rawheight=&637& class=&origin_image zh-lightbox-thumb& width=&863& data-original=&/aae2f7c4c6d12cb8987b6_r.jpg&&&/figure&&br&&br&&br&&b&小幽灵&/b&&br&&figure&&img src=&/ed1cdbcf2c1d2f_b.jpg& data-rawwidth=&246& data-rawheight=&205& class=&content_image& width=&246&&&/figure&&br&&b&小幽灵 【终极奥义·戳】&/b& (知乎貌似不支持gif,请连起来看= =)&br&&figure&&img src=&/2d9ec53ba580a1a3ad541055fae40b0e_b.jpg& data-rawwidth=&291& data-rawheight=&209& class=&content_image& width=&291&&&/figure&&figure&&img src=&/7c619e12d6d2e58cc4db4b1dd2687990_b.jpg& data-rawwidth=&291& data-rawheight=&209& class=&content_image& width=&291&&&/figure&&br&&b&蜗牛。。。呃。。。蛞蝓炸弹&/b&&br&&figure&&img src=&/42f2a6e90b5cf84b7b4afbb384f08be2_b.jpg& data-rawwidth=&568& data-rawheight=&320& class=&origin_image zh-lightbox-thumb& width=&568& data-original=&/42f2a6e90b5cf84b7b4afbb384f08be2_r.jpg&&&/figure&&br&&br&&b&性感的丝光&/b&&br&&figure&&img src=&/b7aa40dda77cd301aa0febe_b.jpg& data-rawwidth=&568& data-rawheight=&320& class=&origin_image zh-lightbox-thumb& width=&568& data-original=&/b7aa40dda77cd301aa0febe_r.jpg&&&/figure&唔。。唔。。。真好次&br&&figure&&img src=&/c196babd5e50e0eead9ad0b_b.jpg& data-rawwidth=&165& data-rawheight=&143& class=&content_image& width=&165&&&/figure&&br&&br&&b&小火龙
&/b&友情配音 &a data-hash=&79cc0ddf6b35fc237c53a& href=&///people/79cc0ddf6b35fc237c53a& class=&member_mention& data-editable=&true& data-title=&@Plath& data-tip=&p$b$79cc0ddf6b35fc237c53a& data-hovercard=&p$b$79cc0ddf6b35fc237c53a&&@Plath&/a&&br&&figure&&img src=&/e27fb7f1bfbdf1fffa98dc41e06befc7_b.jpg& data-rawwidth=&204& data-rawheight=&342& class=&content_image& width=&204&&&/figure&&br&&br&&b&Inktopus&/b&&br&&figure&&img src=&/f4d2562e75cafbd85ab20b01fb8f1e4b_b.jpg& data-rawwidth=&568& data-rawheight=&320& class=&origin_image zh-lightbox-thumb& width=&568& data-original=&/f4d2562e75cafbd85ab20b01fb8f1e4b_r.jpg&&&/figure&&br&噗~~~~~~~&br&&figure&&img src=&/5c9aabe021e9a017db130d5f_b.jpg& data-rawwidth=&883& data-rawheight=&494& class=&origin_image zh-lightbox-thumb& width=&883& data-original=&/5c9aabe021e9a017db130d5f_r.jpg&&&/figure&&br&&br&&b&斯巴达&/b&&br&&figure&&img src=&/615cec8fb340e_b.jpg& data-rawwidth=&369& data-rawheight=&317& class=&content_image& width=&369&&&/figure&&b&晒黑的斯巴达&/b&&br&&figure&&img src=&/ba2247243baa7dfdd52ced2_b.jpg& data-rawwidth=&486& data-rawheight=&420& class=&origin_image zh-lightbox-thumb& width=&486& data-original=&/ba2247243baa7dfdd52ced2_r.jpg&&&/figure&&br&&br&&br&老画阳光的不过瘾,必须来点刺激的(怕审核通不过,所以偷偷放在了后期关卡里,主题渐渐偏离了涂鸦萌娃的正轨。。。)&br&&br&&b&肉!山!大!魔!王!&/b&&br&&figure&&img src=&/7d3f064a9119d8bdcdb2_b.jpg& data-rawwidth=&484& data-rawheight=&507& class=&origin_image zh-lightbox-thumb& width=&484& data-original=&/7d3f064a9119d8bdcdb2_r.jpg&&&/figure&这个很厉害的,打死会分身成四个小魔王&br&&br&&b&沼泽之眼&/b& 谁知道这个的出处? ^o^&br&&figure&&img src=&/f356ce692a8c2cee47def1_b.jpg& data-rawwidth=&1136& data-rawheight=&640& class=&origin_image zh-lightbox-thumb& width=&1136& data-original=&/f356ce692a8c2cee47def1_r.jpg&&&/figure&&br&&b&沼泽之眼·怒&/b&&br&&figure&&img src=&/bcaa1cdec98c9c836fc0cc_b.jpg& data-rawwidth=&389& data-rawheight=&335& class=&content_image& width=&389&&&/figure&&br&&br&&br&下面这是我最喜欢的,&b&缸中之脑。。。花&/b&&br&&figure&&img src=&/0bbc9db3a7_b.jpg& data-rawwidth=&1136& data-rawheight=&640& class=&origin_image zh-lightbox-thumb& width=&1136& data-original=&/0bbc9db3a7_r.jpg&&&/figure&&br&大功告成,吐血三升&br&&figure&&img src=&/8cbefefb4_b.jpg& data-rawwidth=&351& data-rawheight=&165& class=&content_image& width=&351&&&/figure&&br&&br&插几张截图:&br&&figure&&img src=&/c8ad57d9e2eca_b.jpg& data-rawwidth=&1136& data-rawheight=&640& class=&origin_image zh-lightbox-thumb& width=&1136& data-original=&/c8ad57d9e2eca_r.jpg&&&/figure&&br&&figure&&img src=&/beedda80de0e1aa5e5d060_b.jpg& data-rawwidth=&568& data-rawheight=&320& class=&origin_image zh-lightbox-thumb& width=&568& data-original=&/beedda80de0e1aa5e5d060_r.jpg&&&/figure&&br&&figure&&img src=&/dee7ee253eaf735efdeba67_b.jpg& data-rawwidth=&568& data-rawheight=&320& class=&origin_image zh-lightbox-thumb& width=&568& data-original=&/dee7ee253eaf735efdeba67_r.jpg&&&/figure&&br&&figure&&img src=&/a83acda102a0f9e85f7243_b.jpg& data-rawwidth=&568& data-rawheight=&320& class=&origin_image zh-lightbox-thumb& width=&568& data-original=&/a83acda102a0f9e85f7243_r.jpg&&&/figure&有没有哪里看起来很眼熟 ^o^&br&&br&&br&关于游戏起名,最开始叫WhackTheM,因为是打地鼠嘛(Whack the Mole),但我的怪有很多种,就是没有地鼠,所以简写了一下叫WhackTheM;后来为了配合画风,改成叫Doodle Defense。这名字一眼看过去就能明白还兼顾了关键词,但是遇到了一个问题,太长在手机上显示不全。想来想去,就叫dooDlefense好了,又有doodle又有defense,搜索结果肯定错不了。&br&&br&---------------开心 update-----------------&br&第一个作品喜上总榜top100 (* ̄▽ ̄)y&br&&br&---------------视频 update---------------&br&有些天赋、兵种的搭配还没有人发现,作为作者我深感痛惜啊!&br&因此录制了一些有特色的后期搭配,希望能启发大家发掘出更多的玩法~&br&&a class=& wrap external& href=&///?target=http%3A///v_show/id_XMTI2NjcxOTQ0OA%3D%3D.html& target=&_blank& rel=&nofollow noreferrer&&iOS独立游戏【涂鸦防守 dooDlefense】兵种天赋超强搭配&i class=&icon-external&&&/i&&/a&&br&&br&&a class=&video-box& href=&///?target=http%3A///v_show/id_XMTI2NjcxOTQ0OA%3D%3D.html& target=&_blank& data-video-id=&& data-video-playable=&& data-name=&iOS独立游戏【涂鸦防守 dooDlefense】兵种天赋超强搭配—在线播放—优酷网,视频高清在线观看& data-poster=&/5853CDB6EF1B3E663-8A03-3C09-FFA8-B52F59B76420& data-lens-id=&&&
&img class=&thumbnail& src=&/5853CDB6EF1B3E663-8A03-3C09-FFA8-B52F59B76420&&&span class=&content&&
&span class=&title&&iOS独立游戏【涂鸦防守 dooDlefense】兵种天赋超强搭配—在线播放—优酷网,视频高清在线观看&span class=&z-ico-extern-gray&&&/span&&span class=&z-ico-extern-blue&&&/span&&/span&
&span class=&url&&&span class=&z-ico-video&&&/span&/v_show/id_XMTI2NjcxOTQ0OA==.html&/span&
----答案多图 流量预警---- 跟你简要说一下我的自学路,以免你走弯路 背景: 有工作,而且很忙;在不影响工作基础上用业余时间鼓捣(经常会因为工作耽搁学习进度);基本没技术背景(初中qbasic、高中pascal半吊子),大学文科,工作也不是搞代码。因此我感…
&p&做游戏技术主要讲究的是套路,以及对套路的掌握程度。比如说你要搞个体积光,那么从用mesh+uv动画,到volumetric scattering你都得知道,而且要知道这些方案的优缺点,以及具体的实现细节,比如camera会不会到体积光里边之类的,这种细节的了解会让你更加有信心做出各种技术决策。&/p&&p&所以3a级游戏的大神技术也是对各种领域的套路玩得比较溜,这里我也分享一些做游戏20来年自己领悟出的一些套路吧。&/p&&p&美术用工具输出的3d模型,材质一定要做一个导出插件,否则做出来和进引擎效果不一样,就只能做做手游这种无光照的手绘贴图质量的产品了。&/p&&p&动画要想不滑步,就只能用animation driven的方法,这个需要跟策划做好深度的沟通,得让策划知道移动不是说配置一个速度就可以了,得去找动画师一起调整移动的动画。&/p&&p&动态天气的困难不是制作上的困难,是可以用lightmap的物件会少很多,性能不一定扛得住,这个要在项目初期一定得和制作团队沟通清楚。&/p&&p&球类游戏要达到非常自然的动画,一方面动画肯定是要动捕的,另一方面更重要的是搭建一套动画选择机制,然后根据运动中的球类位置来选择最合适的动画来匹配,再加上小部分的ik。&/p&&p&头上冒字和冒血这种hud就应该用hud的标准方法来制作,切记不能涂省事用ui的方法,对性能效率会有非常大的影响。&/p&&p&音频对最终品质影响很大,一般遵循46原则,即图像资源在最终包中占6成,音频资源占4成。给音频设计师配置一个独立的程序来达成音频的设计需求。&/p&&p&状态机最好是用可视化的方法来实现,游戏中80%的bug都是和状态没切对有关,有个可视化的状态机对于找bug非常方便。&/p&&p&control是最需要状态机化设计的(不同的情况下按同样的按键达成不同的逻辑)&/p&&p&做面部表情,如果不是捕捉就用骨骼简单搭搭就好,如果是捕捉,制作成本会变得非常的高(制作各种morphing target)&/p&&p&对最终画面影响最大的是镜头效果,所以尽量节省渲染时间留给镜头特效。一般影响最大的是校色,如果硬件平台允许尽量给美术提供带深度校色的工具。&/p&&p&有比较宽广视野的游戏,室外可以用一些很取巧的方法来模拟mie scattering和rayleigh scattering,加上哪怕是假的对画面的提升也是巨大的。&/p&&p&对于不同的数据采用不同的配置方法,不要什么数据都用excel,对于有可视化需求的配置,比如ui或者角色身上需要装配一些武器的,提供可视化的工具。对于需要描述父子关系的例如技能树解锁之类的用json或者xml来描述,对于纯数字逻辑的就用csv就好了。&/p&&p&场景的材质如果制作normal map对于你们团队比较复杂,多加一层detail map也能对效果获得较大的提升。&/p&&p&角色的材质,如果性能有限或者说制作成本无法承受的话specular map比normal map的效果要好。&/p&&p&如果角色会近距离看脸,脸部的眼睛一定要单独拿出来处理,脸可以糊,眼睛一定不能糊。&/p&&p&脚步声的标准做法是在地面上放一层低模做和脚的碰撞检测(脚步声如果追求真实,最少得有3个以上的样本随机)&/p&&p&如果要提升动画效果,考虑主角的前臂加上twist骨骼,左肩和右肩不要从脖子上搭建骨骼,要从胸口开始(做head lookat的时候效果会更好)&/p&&p&衣服的标准做法是通过贴图来控制哪些顶点受skin和物理影响的权重比,那张贴图还可以用一个通道来控制流汗的时候哪些地方的smothness要提高。&/p&&p&搭建一个运行时数据库,并且游戏中经常需要访问的数据都放入数据库,可以类似redis那样非常简单的提供一个set和get就行了,运行时数据库可以帮助你找到绝大多数bug。&/p&&p&制作ai尽量使用行为树,并且花时间一定要让策划具备编辑和调式行为树的能力。&/p&&p&顶点色可以各种花式使用,无论是用来bake ao还是决定detail map的权重,都可以用很低廉的代价来获得非常棒的效果。&/p&&p&动画不是在任何时候都可以blend的,要想效果好,牢记:左脚落地的时候只能blend到左脚落地开始的动画,右脚同上。&/p&&p&做上下楼梯的locomotion的时候,用椭球碰撞体会非常简单的获得还不错的效果。&/p&&p&如果画面会经常快速的运动,可以加入一个vector based motionblur,效果会出奇的好。&/p&&p&要想场景生动,一定要使用decal,一个方便美术的decal工具可以让美术一天之内让整个场景提升几个档次。&/p&&p&暂时想到这些,不说了,休息好了继续干活。&/p&&p&~~~~~继续更新一波套路&/p&&p&解决alpha透贴排序的标准方法是两次绘制,第一次在不透明队列里渲染一次alpha test(cutout),打开zwrite,第二次在transparent队列里开alpha blend不开zwrite,ztest lessequal渲染就能还原美术在maya里看到的效果。&/p&&p&弹簧是个非常好用的物理组件,其虎克系数可以有效的模拟力的衰减来做出很多感人的效果,从乳摇,臀摇,尾巴,头发马尾,布料,脸上被重拳击中的肌肉变化都可以看到弹簧的身影。&/p&&p&adobe fuse cc + mixamo可以非常快速的搭建模型和动画来帮助策划找到剧情的场景的感觉。&/p&&p&脚下ik从程序来讲是很方便实现的,大多数引擎都有ik功能,但是工作流程我发现很多公司都没有正确使用。正确的流程是对输出的动画有一个左右脚高低的分析工具,逐动画生成每个脚步离水平面的高度曲线,然后运行时根据脚步的高低来决定ik和skin的权重。&/p&&p&镜头的设置很重要,最好给美术一个和相机镜头类似的算法来反过来计算fovx和fovy,我看到很多产品的fov都是一水的60之类的。&/p&&p&对于类似铁丝网或者其他半透物体的mipmap的标准做法是先自动生成mipmap,然后要美术手动的来降低不同lod贴图的alpha,换句话说近处看有铁丝网,远看就只有框中间近乎全透了来降低锯齿感。&/p&&p&dx10以上的平台上特效的shader加一句根据当前depth和已经绘制的depth的差来控制alpha可以实现简单且效果不错的软粒子效果。&/p&&p&头发的物理效果可以参考衣服的做法,发根受skin影响多,发梢受物理多一些即可。(额前刘海受物理要关掉重力)&/p&&p&如果实时sss负担太重,可以简单的把模型厚度信息烘培在顶点色的某个通道上,然后只需三两行代码就可以让皮肤有sss效果。&/p&&p&看到好多项目用双面材质只是在shader中简单加一句cull none,这个是完全错误的实现。正确的做法是需要把三角形索引信息走vs传递进来,然后判断是否顺逆时针,对于反面需要把法线反转才能获得正确的渲染结果。&/p&&p&先更新到这。&/p&&p&完了,感觉思绪开始打开了,又更新一些,怕一会会忘。&/p&&p&动画驱动的模式下,转向最少需要8个动画,原地左转90,右转90,左转180,右转180,移动同样四个,然后根据控制器的输入来决定混合的权重,一般神海这种级别的产品光locomotion牵扯到的动画会在40-50个这种量级。&/p&&p&对于衣物和皮肤,detail normal十分重要,可以瞬间让你的衣服能看出针织的材质。&/p&&p&处理声音的时候,远处的声音混响需要程序来手动提升,近处降低混响,对临场感增加很多。&/p&&p&声音如果样本有限,也一定要做随机,哪怕就一个脚步声样本,播放的时候也应该随机pitch和volume。&/p&&p&给策划提供一个调整动画曲线的工具,横轴是动画时间,纵轴是动画播放的速度,策划通过这个工具可以调整出情绪非常饱满的动画效果(例如:攻击前摇动画速度变慢,攻击过程加速之类的)这个需要和动画师沟通清楚,要求他们只需要k好几个相关pose即可。&/p&&p&卡通渲染的时候有一步是非常关键也是很多公司都忽略的,就是手动调整模型法线,这一步得在美术工具内完成,通常是定义toon shading的光方向之后,通过调整法线来让一些部位有“看起来”较为舒服的受光,主要是鼻子,腋下和两个胯这三个位置。&/p&&p&游戏加载的正确做法是,在出包的时候对各资源的单位加载时间进行预计算(适合配置固定的主机游戏)。之后在运行时加载的时候,根据每一帧cpu的可用空闲时间来决定当前帧可以加载的资源类型和数量。&/p&&p&渲染阴影的时候,很多人都会忽略绘制阴影那个pass的优化,以前做上一代游戏机的时候所有会有实时阴影的模型都会做一个低模和专门的材质(如果有透贴阴影的需求)。&/p&&p&对于写实类型的游戏,decals的正确制作方法是拿相机去拍,比如地上的水渍,墙上的裂痕,车上的划痕之类的,开闪光灯拍照,然后回来在ps里面抠出来。&/p&&p&有很多arpg的游戏中都有霸体的设计,霸体中不会受击,其实这个的正确做法是动画新增一个受击层,在播放霸体动画的同时轻微的blend一个受击动画,打击感会舒服很多。&/p&&p&午饭时间!&/p&&p&反响不错啊,再来一波=)&/p&&p&写实风格的贴图,推荐尽量使用Substance制作,打包不同目标平台的时候,可以根据目标平台的实际硬件情况,决定是Bake出Texture还是用Procedual Texture,其实很多时候会发现很多PBR贴图除了Google图片出来修改之外,只有Substance才能比较好的制作出来。&/p&&br&&p&有一个关于Animation Driven的系统中,AI的制作问题,主要是因为动画状态机自己有自己的行为准则,所以传统的AI设计思路就变得比较无力,比如说我希望我的NPC每0.3秒攻击一次,但是攻击动画本身就超过0.3秒了,怎么办?或者说状态机的逻辑无法响应到0.3秒的攻击。这个时候需要跟策划沟通,在Animation Driven的系统下,要完全的分开设计,NPC的大脑是AI,NPC的体格是动画状态机,很多时候AI的设计要根据体格的情况来酌情调整。要在行为树里增加一些检查身体体格的节点,比如说,我要转向某个方向,那么在适当的时候需要检查自己的身体是否真的转到指定方向了;同时对于大脑向身体发送的指令要分优先级,优先级的实现方法是该指令的有效时长,比如说我的身体在受击的状态中,但是我的大脑仍然下命令让我攻击一次对方,这条指令优先级存在时间0.2秒,如果受击状态在0.2秒内复原了,则该指令身体可以执行一次,如果0.2秒内身体仍然无法攻击,就丢掉此次指令。&/p&&br&&p&Volumetric Cloud/Fog/Light的使用一定要提前和美术进行商量,因为计算过程中牵扯到大量的Depth sampling,所以画面中多大会存在多大面积的这类效果一定需要严格控制,否则到了后期不得不移除这些效果的时候会让整个产品瞬间降低一个档次。&/p&&br&&p&在一些中低端设备上可以用一些简单的压缩算法来把RGB + Luminance除以一个除数来压缩到32bits的颜色空间中来获得非常划算的HDR效果,相比较RGBM,用除数可以免费获得“假”正确的alpha blend效果。这一条无需和美术沟通,直接上就行。(移动平台可用,效果很好)&/p&&br&&p&关于差值,差值计算最大的问题是需要和策划沟通清楚,越是符合现实生活运动规则的,只能使用物理的方法进行差值,物理的方法是没有办法精确的保障差值的最终位置和时间,但是却可以获得完美的差值效果。这里有一个非常小的tips来实现物理差值:一个物体从旋转R0,位置P0,差值到旋转R1,位置P1,需要差值的时候,在物体上挂一个弹簧,弹簧的另外一端挂在位置P1上,另外物体的运动规则增加两条:1,每帧运动转角不能超过XX度;2,物体的实际运动位置是当前朝向 * 力矩;即可,差值出来效果棒棒哒,无论是飞个火球还是跟踪导弹都可以用这个。&/p&&br&&p&美术资源的优化,这件事情比较好的方法是要严格的关注,但是尽量不要过早的修改这些问题,因为开发的过程中始终要留一些空间用来提升画面效果,所以过早的修改掉性能瓶颈,可能会导致到最后不得不放弃已经集成进版本的一些效果,非常不划算。所以等大家都对画面比较满意了之后,再进行一轮性能优化,结果还能再增加一些效果,对于美术大兄弟们来说就变成一件很好的事情了。&/p&&p&本来没打算写这么多,只是开始写了个头,就发现还有很多类似的问题也都可以罗列出来,于是出现这么多杂乱的内容,回头有时间会仔细整理整理,比如说配个图什么的,如果有朋友对于一些tips有疑义或者想知道一些详细的实现细节,欢迎私信单聊。&/p&&br&&p&应某同学的要求&/p&&p&更新一波手游的经验ヽ(o?ωo? )ゝ&/p&&p&贴图进版本的时候做一个alpha通道的剥离,一方面可以比较方便的适配安卓ETC1压缩格式,另一方面后期要压包的时候alpha通道可以随意缩大小,美术基本无感知。&/p&&p&如果是UI资源比较重的游戏可以采取layout和资源分离的方式来获得大量的性能提升。针对unity引擎来说就是遍历ui里所有用到的material,把里面的贴图替换成4*4的空白贴图,另外建立一个从材质对应贴图的索引。因为手机是ssd的缘故所以磁盘io读取贴图的速度是非常快的,这样就可以把整个ui的layout都留在内存中不用切场景释放,不同场景对应加载不同的贴图做一个运行时的对应即可,加载ui的时间能提升80%。这一步建议新项目中前期使用,后期项目做这种级别的修改不划算,风险高。&/p&&p&如果是动画资源比较重的产品,建议使用自定义的动画格式,采取float16的四元数储存关键帧数据,然后加载时还原引擎需要的动画数据,以前做wii上的产品,1000个左右的人形动捕数据可以压缩到23m左右。&/p&&p&经历过很多手游项目的全屏大图比较多(推广图,loading图),有的会占到整个贴图量的30%甚至更多,这时候一定要优化大图的制作工艺,和美术沟通把背景,文字和前景拆开制作,一方面可以更好的压缩(方形,2的次幂),另一方面背景图可以采取比较极端的压缩参数。&/p&&p&加载的过程中往往最后会卡一下,这个是第一次shader提交到gpu产生编译消耗的时间,可以通过在屏幕上绘制一个透明的三角形来完成warmup,这一步基本上主流引擎都有接口,如果单帧消耗过高,可以考虑分布在若干帧里完成。&/p&&p&打击感的一个小trick,击中的一瞬间把时间tick调成0持续个0.1秒左右,又轻巧效果又好。&/p&&p&搭建UI框架的时候给每页ui增加一个fadein和fadeout的接口并且管理好状态机的切换,今后可以很方便策划或者美术增加ui打开和关闭的动态效果。&/p&
做游戏技术主要讲究的是套路,以及对套路的掌握程度。比如说你要搞个体积光,那么从用mesh+uv动画,

我要回帖

更多关于 cf体验服是什么 的文章

 

随机推荐