收藏本站腾讯微博新浪微博

经典论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

蓝色理想 最新研发动态 网站开通淘帖功能 - 蓝色理想插件 论坛内容导读一页看论坛 - 给官方提建议

论坛活动及任务 地图和邮件任务 请多用悬赏提问 热夏来袭,选一款蓝色理想的个性T恤吧!

手机上论坛,使用APP获得更好体验 急需前端攻城狮,获得内部推荐机会 论坛开通淘帖功能,收藏终于可以分类了!

搜索
查看: 1973|回复: 6

[服务器端交互] shineZ(紫*极光)年度游戏大作:H.O.T.战机发布.(修复bug)[程序思路稍候]

[复制链接]
发表于 2008-10-7 10:44:42 | 显示全部楼层 |阅读模式
中秋之前发过一帖..当时是beta版..因为没做完的关系被老大删进水区了...呵呵...
这次做完了直接发出来了..老大行行好哈.手下留个情.不是我不写心得之类的.当时没时间.而且我也没写过..不知道怎么写..我只想把东西拿出来展示.大家一起讨论中间的制作步骤,程序思想之类的..让我主动写点东西好难的..
好了..废话不多说.直接放图先..晚点找个地方传下.欢迎大家讨论,有不懂的地方我愿意给大家详细解说..也希望大家一起提高...
游戏进度:完成;
游戏bug:1.暂时发现主角挂掉后有可能会卡死FlashPlayer,初步判断是因为程序结构原因.没办法改动;  2.游戏玩久了会变慢.判断应该是flashplayer垃圾回收机制问题.虽然清除了场景外的mc,也清除了mc的onEnterFrame,但是mc好像并未从内存中清除..无法解决;
制作周期:两个月,实际用时两星期;
制作人:紫极光;
素材处理:街机游戏+PS抠图+bridgeM截取音乐+golewave处理音乐循环;
游戏关卡:5关;
游戏类型:BT级飞行射击类(其实没达到我的要求,因为FP性能不太高,所以现在已经是极限了,再BT的话会慢)
开发语言:Action Script 2.0
游戏大小:源文件Fla(29.2M),游戏Swf(3.12M),整理后素材+源文件+游戏(376M)
游戏说明:应该没有人能够全部通关..HOHO!~除了用修改器;如果有心人愿意做的话我提示一下.主角有个best的布尔值,当best为true时,主角是无敌状态(形态半透明+外层防护圈),无敌状态会持续5秒,并且不可累加;所以只需要每隔个1秒检测这个值就行了..呵呵...

好了.就说这么多.放图先..版主老大请先手下留情...打字很累...

游戏下载地址:纳米盘下载[]

[[i] 本帖最后由 zijiguang 于 2008-10-9 15:23 编辑 ]
H.O.T..jpg
游戏beta截图.jpg
 楼主| 发表于 2008-10-7 11:22:38 | 显示全部楼层
=====================================================
游戏下载地址:纳米盘下载
游戏演示地址:临时演示点(带下载地址)
=====================================================

思路:
游戏是一个项目.所以,根据一般的项目实施流程,我们应该在制作游戏之前应该在心里很清楚的知道自己到底要做一个什么样的游戏出来!如果这点都做不到.那么注定这个游戏不会太顺利..所以这一点一定要非常注意...正所谓磨刀不误砍柴工咯!~花几天的时间在设想游戏构架和流程上面是非常有必要的..这个不光是游戏.任何项目都适用...
我的游戏主要的思路就是:一般的飞机游戏,需要能量系统,还要有小飞机系统,少不了主角的保险系统.主角接受不同参数配置生成各种形态,这点就是可以设定主角的攻击力,主角的移动速度等..可以用一套系统来生成N个操作手感不同的主角.这点没什么好说的..基本的类功能..游戏关卡滚屏.这个技术有点点复杂,稍后详细讲解.其它就是敌人的移动轨迹.这个也稍后讲角..游戏思路和基本飞机一样.主角消灭敌人.打倒BOSS...呵呵..当上面是废话好了..

制作过程:
首先,首先,首先.....准备素材..为什么要把这个写上三个首先.因为素材在游戏中非常重要.呵呵..:P..先期准备素材的好处就是,你不会边处理后面的代码边为增加了一个敌人而到处找敌人的图片吧!呵呵...素材准备不全..制作游戏的时候很容易产生不想做的想法.呵呵..
我的游戏素材从街机中收集,模拟器截图.然后使用PS拼接起来,音乐用goldwave录音并处理成循环音效.差不多就齐了..这时候是个体力活.没有太多技术含量..

然后,在动手写代码之前,请将你的游戏思路在大脑里过一遍.想一下游戏中有没有重大问题以及有可能会变动的地方..怎么说呢.个人做游戏最大的难题就是有些参数之类的经常写死了..结果越往后面做越发现有很多东西需要的代码是一样的.就只是参数有些不同..可是代码太多太杂导致没有办法处理..所以,思路清晰非常重要,我们没有办法写出完美的程序,所以我们只能以清晰的思路来写稍微容易理解,效率高的代码...

写代码是个很枯燥的过程.因为这中间会有很多问题出现.比如做游戏需要测试.每次增加一个功能后一定要测试,不要等到快成型了再测试.因为中间也许会穿插大量的bug,或是程序运行顺序,程序变量混杂等不可控的问题.到时候基本上游戏算是爆废了.所以.经常测试是个好习惯..虽然麻烦也很影响进度...但是至少保证游戏bug不会多得连修改都无从下手...

最后,发布前清除掉自己添加测试用的一些功能...比如我做的时候为了能够快速掌握各关卡的情况以及新增加的切换卡功能,就自己留了几个键作为关卡切换,增加子飞机,增加切换卡,切换无敌状态等功能键...结果发给朋友玩的时候被发现了..呵呵..要是这样的作品发出去.估计很容易通关了..那样就没有意思咯...

最后说一下在做这个游戏后学到的一些事项,
1.FP我们不可控,mc都已经remove了.但是mc中的事件onEnterFrame还在继续运行..很可怕...也许几个mc无所谓..但是飞机游戏中的每个子弹,敌机,都是mc.如果不在remove之前清除掉onEnterFrame.那你就等着电脑快速变慢吧.虽然我感觉就算清除了事件,mc仍存在在内存中,但是至少不会运行onEnterFrame这种BT事件了..
2.FLASH游戏的大部分情况下是在浏览器中运行.所以测试在浏览器中测试..我就是没考虑这个问题.尺寸设定在600*650,并且还在独立播放器中测试..结果发出来才发现,在浏览器中玩时有滚动条.并且速度慢..那是当然的了..浏览器的ActiveX运行SWF还真的比独立的FP慢不少...唉..这点一定要注意..虽然是个小问题..
3.很重要,很精华的一条.请记住,如果你的主角或是敌人(包括子弹)被消灭了,需要清除掉.....请先手下留情...原因第1条已经说了..当然更重要的一点就是在于解决第1条中内存问题..我们得充分利用现在资源..主角被消灭了,在我的游戏中并没有remove掉(之前是remove掉的,后来发现remove掉后有可能卡机,因为敌人的某些动作需要访问主角的变量,主角remove掉后变量为undefined,结果导致死循环卡机).我的主角在被击中时,播放被击中的画面,并且在瞬间移出场景.这样和被remove掉是一样的效果,但是重要的是主角的变量没有undefined了.所以解决了死机bug,由此我想到了..为什么要删掉这个mc呢?敌人也一样,子弹也一样.飞出了场景就删掉,这种方案不错..可惜FP有的时候好像没有在内存中将其删掉,总之性能没有再次利用高.唉..我现在的游戏要是用这种思路重做一下.估计不会有现在这么卡了..

随便写了点东西..算是总结在游戏制作中的一些想法吧.技术含量没有什么.就是写一堆的普通的小函数.然后组合起来运行..但是有很多东西是需要注意的.如我上面说的3个事项,在制作游戏的过程中请留意一下,特别是第3条,将会对您制作游戏有非常大的帮助.这一条应该类似于区块游戏中所谓的gotoAndStop卷轴引擎了..呵呵...

下面将会写下具体的函数思路和游戏中的技术方案.请大家等待..

[[i] 本帖最后由 zijiguang 于 2008-10-9 14:39 编辑 ]
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-9 15:23:02 | 显示全部楼层
map.jpg
因为地图在每一帧都不相同.所以不可能使用区域来平铺...
所以使用bitmapData对象来复制像素..虽然这样子比较占用空间.不过也是最优的做法了...速度也不错..呵呵..但是要注意bitmapData的2880限制.
上面是我所说的地图.为什么要讲一下呢?因为我的地图已经超过2880了.呵呵..所以才用拼接法来取像素了..
每个关卡的地图分别使用普通的闯关地图和BOSS循环地图.整体的思路是:
像上面的图片中所示,当页面中显示地图区域1的画面时,直接从闯关地图中复制像素,页面中显示地区区域2时,需要同时从闯关地图和BOSS循环地图中复制像素,并且将复制的像素拼在一起.然后在地图区域3中就不停的循环复制BOSS循环地图的像素,并释放部分闯关地图的资源;
在这里我引入了一个世界指针系统,这个指针的滚动范围是从两张地图的总高度到0,也就是从地图的最下面向上滚动(bitmapData是从上由下),当滚动到0时,再回到map_loop的开始区域向0滚动;
为了配合图片说明,我做个小的SWF来说明原理..
一起附上地图的类文件...稍后讲解下游戏中其它的系统工作原理..

[[i] 本帖最后由 zijiguang 于 2008-10-11 18:51 编辑 ]

地图示例.swf

36.33 KB, 下载次数: 111

myMap.as.rar

1.33 KB, 下载次数: 115

myMap.as.rar

1.33 KB, 下载次数: 112

回复 支持 反对

使用道具 举报

发表于 2008-10-9 15:29:38 | 显示全部楼层
支持下,楼主写详细些哦。
回复 支持 反对

使用道具 举报

发表于 2008-10-9 15:40:49 | 显示全部楼层
嗯,经验总结得比较混乱。。。。
其实文章写了,但是看上去很不清晰的感觉。。。。。
支持一下。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-9 15:44:29 | 显示全部楼层
兄弟.你是版主啊..但是这可是我几年来第一次自己写总结帖啊..根本就无从下手...但是马上要过了可编辑期了..为了从水区拉回来..没办法啦..
而且..不混乱吧.只能说不清晰..但是你看看我的第三条事项..我认为每个做游戏的朋友都应该使用这个方法来做..地图,敌人,主角,子弹之类的..都应该用这种方法.最大限度的节省资源和运算速度!~
回复 支持 反对

使用道具 举报

发表于 2008-10-9 18:57:31 | 显示全部楼层
顶下,读这篇文章感受最深的就是以下两点,我也碰到过类似问题,一直在抱怨FLASH的垃圾回收怎么这么差,无论是remove掉mc还是listener,"占茅坑不拉屎",不知道到哪天为止.希望你借这个机会把一些BUG清除掉,论坛中也有制作游戏的高手.
1.FP我们不可控,mc都已经remove了.但是mc中的事件onEnterFrame还在继续运行..很可怕...也许几个mc无所谓..但是飞机游戏中的每个子弹,敌机,都是mc.如果不在remove之前清除掉onEnterFrame.那你就等着电脑快速变慢吧.虽然我感觉就算清除了事件,mc仍存在在内存中,但是至少不会运行onEnterFrame这种BT事件了..
2.FLASH游戏的大部分情况下是在浏览器中运行.所以测试在浏览器中测试..我就是没考虑这个问题.尺寸设定在600*650,并且还在独立播放器中测试..结果发出来才发现,在浏览器中玩时有滚动条.并且速度慢..那是当然的了..浏览器的ActiveX运行SWF还真的比独立的FP慢不少...唉..这点一定要注意..虽然是个小问题..
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|Archiver|手机版|blueidea.com ( 湘ICP备12001430号 )  

GMT+8, 2020-9-21 09:09 , Processed in 0.155855 second(s), 12 queries , Gzip On, Memcache On.

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表