问题1、人物并不比地图高。否则就失去遮挡关系了。
问题2、在默认系脚本下,动画的z远高于人物,所以鱼老大使用了viewport来划分z,但是产生了问题1的bug。
问题3、如果不改变人物的viewport,解决问题1,但是问题2会产生脚印覆盖在人头上的情况,这时候可以修改RPG::Sprite来改变所有动画的Z值,默认是3000,改为self.z的话,那么生成脚印时指定z就可以解决1、2全部bug。这样听起来是解决好了,但是有一个问题,就是改动代价太大了,太底层了,同时实际上还有两个致命问题,这里两个BUG没太想出来怎么能处理:
致命BUG1:NPC没有脚印。
致命BUG2:由于创建脚印时候给出了x,y,所以屏幕不能移动。一旦移动就会发现脚印没有跟着动。
致命BUG1就比较麻烦了,因为这里使用的是在scene中监视,所以监视所有NPC代价不低。可以做,但是代价不低。致命BUG2就更麻烦了,因为这里的X和Y是根据realx和realy的算法得出来的,但是创建之后脚印就和人物无关了,只好监视屏幕的所有移动。可以做,但是这样代价也不低。
这几个BUG改起来挺费时间,而且你想要做的只是在30帧之内单事件刷新的系统负担转移为永久存在的update监视的负担(30帧是我这里的事件30帧消失)。这两个哪个效率比较高从表面上不好判断,但是只能说用sprite建立的话,首先你的监视是不能停的,当大部分人物在非雪地静止时候,负担很高;第二是对底层的修改过大(比如需要修改RPG::Sprite类的动画z值,需要监视地图移动,需要追踪realx和realy)。你可以尝试使用这种精灵的方法制作,作为另一种范例放出也未尝不可,这种方法其实可能会适合解决缺牙兔子的大地图大范围下雪——但是效果我不确定,因为这种把脚印作为基础效果而非特效效果的人太少了,我无法预测。
至于缺牙的兔子遇到的问题实际上和这个脚本无关,而是另一种理念的问题。你的地图是500*500的,这种大小的地图,就算不是BUG,你也是没有为玩家着想过。我们一般认为对单机玩家而言,单向移动应该在不超过20秒之内应该能达到目的地,而500的宽度至少需要2分10秒以上才能走完(此数值很容易测试),那么光看完你的地图就需要 2 * (500 / 15) = 66分钟。一张地图,纯看,不做任何思考地看,就需要耗费玩家1个小时,这个设计本身明显是有一些值得优化的地方的,就好比我们的场景有10万格,但是这并不是说一张地图上应该有10万格,按照正常的设计,至少我应该有100张地图,每张1000格,以策划和关卡设计制作人稍微消耗一些时间制作无缝链接地图来替换技术优化的时间。
另外还有一个你的想法似乎是不太对的,就是说,并不是屏幕上所有图像的算法都是一样的。举一个最简单的例子来说,我们看到很多游戏的阴影是半透明的叠加效果,但是并不是说整张画面所有位置都要用半透明效果(无论2D的绘制还是3D纹理贴图,都一样的)。真正的处理是整个屏幕使用colorKey一类的较快算法,而只对阴影部分使用alphaBlend等消耗运算时间的算法。同理,你可能见到某些游戏中有镜子,你自己还可以照镜子有倒影,但是这个镜子只是针对当时场景制作的一个小玩意,我相信你绝对不会在该游戏中见到镜子照了几十个人或者满屏幕都是镜子的情况。
这就是说,不要认为这个雪地脚印需要无限优化,这是舍本逐末。我们所要用的,只是在需要雪的时候,少量使用地形标志5,少量制作一些给玩家真实感的东西,就可以了。截止现在,没有任何一台主机能够在屏幕效果过于花哨的情况下不掉帧的,PS3、XBOX360也做不到,看龙穴、三国无双5把镜头拉低之后卡的程度就知道了,尤其三国无双五FPS甚至能掉到10以下,但这并不影响它是一个优秀的游戏,因为这种产生掉帧做法是非常规的。技术并不是万能的,我们追求的应该是在技术已经做过厚道的优化、实现了基本可行的效果之后,用策划和关卡设计来实现效果。如果你要做全屏幕都是雪地的情况,那么好了,我们需要根据全屏雪地来单独设计程序,比如在所有优先级为0的雪地上按同Z值生成一个Sprite的方法生成一些脚印专用层,并且在进入地图的时候直接创建,不管占用多少内存,一直保留着,然后需要脚印的时候再copyrect和调整透明度,或者不是每帧刷新而是每隔一段时间下一些雪等等。这是全屏的处理方法,我给出的是特效的处理方法。对于特效而言,下图的效果我自己已经满意了,请注意FPS:
http://rpg.blue/upload_program/files/snowsteps.jpg
我的意思是,不要永远认为脚本应该如何优化优化,当你的设计不太对的时候,无论用目前地球上任何一种系统或主机(RM还是PS3都无所谓),用多么牛的程序员,该掉帧就得掉帧。这时候先想想,你自己都觉得设计有点问题的地方,是不是也该改改了?
--------------------------------------------------------------------------------
>yangff :
直接创建图片不就行了?
--------------------------------------------------------------------------------
>刹那的微笑 :
以下引用yangff于2007-11-11 20:52:35的发言:
直接创建图片不就行了?
同样的BUG我不想再说第四遍了,如果你觉得能创建成功的话,欢迎做一个出来。
--------------------------------------------------------------------------------
>小真☆爱舞 :
如果我可以修改四个地方,只用十行脚本实现他现在的这个功能,楼主你能不能改一下这句话呢?
“不要认为这个雪地脚印需要无限优化,这是舍本逐末。我们所要用的,只是在需要雪的时候,少量使用地形标志5,少量制作一些给玩家真实感的东西,就可以了”
--------------------------------------------------------------------------------
>刹那的微笑 :
好啊,欢迎贴出来交流,开阔一下思路。现在这个系统已经讨论了两种做法,一种是我详细写的创建事件,一种是幻鱼和小林说的sprite,如果让我再说可能只有copyrect和fillrect的方法了,很希望能看到不同方向的技术思路。
不过对那句话可能得解释一下,因为他回帖在原帖里了。我说不适合用通用方法是针对他的500*500格大地图,而且我也认为对不同效果分类处理是程序优化的原则。只是具体到雪地脚印这个,可能目前的优化方法不够好,那么找到更好的效率优化方法后,可能就不存在效果分类的问题。但是这个脚印的优化结果对游戏编程需要分类处理的基本思路而言,至少对我来说,并没有什么影响。
至于说到对其他的程序员,就仁者见仁智者见智了。因为我自己能用在RM上的时间很少,必须在每周有限的几小时内完成计划做的内容,这样尽管可能不够优化,但至少能做出来不至于怠工。如果能用在RM上的时间比较多,比如每天都能投入一个小时,那自然技术路线就不同了。
--------------------------------------------------------------------------------
>小真☆爱舞 :
感谢指教。
PS:多谢合作,终于知道你是谁了~
--------------------------------------------------------------------------------
>Eclair :
以下引用小真☆爱舞于2007-11-11 21:07:39的发言:
如果我可以修改四个地方,只用十行脚本实现他现在的这个功能,楼主你能不能改一下这句话呢?
“不要认为这个雪地脚印需要无限优化,这是舍本逐末。我们所要用的,只是在需要雪的时候,少量使用地形标志5,少量制作一些给玩家真实感的东西,就可以了”
[本贴由作者于 2007-11-11 21:10:42 最后编辑]
问题1、人物并不比地图高。否则就失去遮挡关系了。
问题2、在默认系脚本下,动画的z远高于人物,所以鱼老大使用了viewport来划分z,但是产生了问题1的bug。
问题3、如果不改变人物的viewport,解决问题1,但是问题2会产生脚印覆盖在人头上的情况,这时候可以修改RPG::Sprite来改变所有动画的Z值,默认是3000,改为self.z的话,那么生成脚印时指定z就可以解决1、2全部bug。这样听起来是解决好了,但是有一个问题,就是改动代价太大了,太底层了,同时实际上还有两个致命问题,这里两个BUG没太想出来怎么能处理:
致命BUG1:NPC没有脚印。
致命BUG2:由于创建脚印时候给出了x,y,所以屏幕不能移动。一旦移动就会发现脚印没有跟着动。
致命BUG1就比较麻烦了,因为这里使用的是在scene中监视,所以监视所有NPC代价不低。可以做,但是代价不低。致命BUG2就更麻烦了,因为这里的X和Y是根据realx和realy的算法得出来的,但是创建之后脚印就和人物无关了,只好监视屏幕的所有移动。可以做,但是这样代价也不低。
这几个BUG改起来挺费时间,而且你想要做的只是在30帧之内单事件刷新的系统负担转移为永久存在的update监视的负担(30帧是我这里的事件30帧消失)。这两个哪个效率比较高从表面上不好判断,但是只能说用sprite建立的话,首先你的监视是不能停的,当大部分人物在非雪地静止时候,负担很高;第二是对底层的修改过大(比如需要修改RPG::Sprite类的动画z值,需要监视地图移动,需要追踪realx和realy)。你可以尝试使用这种精灵的方法制作,作为另一种范例放出也未尝不可,这种方法其实可能会适合解决缺牙兔子的大地图大范围下雪——但是效果我不确定,因为这种把脚印作为基础效果而非特效效果的人太少了,我无法预测。
至于缺牙的兔子遇到的问题实际上和这个脚本无关,而是另一种理念的问题。你的地图是500*500的,这种大小的地图,就算不是BUG,你也是没有为玩家着想过。我们一般认为对单机玩家而言,单向移动应该在不超过20秒之内应该能达到目的地,而500的宽度至少需要2分10秒以上才能走完(此数值很容易测试),那么光看完你的地图就需要 2 * (500 / 15) = 66分钟。一张地图,纯看,不做任何思考地看,就需要耗费玩家1个小时,这个设计本身明显是有一些值得优化的地方的,就好比我们的场景有10万格,但是这并不是说一张地图上应该有10万格,按照正常的设计,至少我应该有100张地图,每张1000格,以策划和关卡设计制作人稍微消耗一些时间制作无缝链接地图来替换技术优化的时间。
另外还有一个你的想法似乎是不太对的,就是说,并不是屏幕上所有图像的算法都是一样的。举一个最简单的例子来说,我们看到很多游戏的阴影是半透明的叠加效果,但是并不是说整张画面所有位置都要用半透明效果(无论2D的绘制还是3D纹理贴图,都一样的)。真正的处理是整个屏幕使用colorKey一类的较快算法,而只对阴影部分使用alphaBlend等消耗运算时间的算法。同理,你可能见到某些游戏中有镜子,你自己还可以照镜子有倒影,但是这个镜子只是针对当时场景制作的一个小玩意,我相信你绝对不会在该游戏中见到镜子照了几十个人或者满屏幕都是镜子的情况。
这就是说,不要认为这个雪地脚印需要无限优化,这是舍本逐末。我们所要用的,只是在需要雪的时候,少量使用地形标志5,少量制作一些给玩家真实感的东西,就可以了。截止现在,没有任何一台主机能够在屏幕效果过于花哨的情况下不掉帧的,PS3、XBOX360也做不到,看龙穴、三国无双5把镜头拉低之后卡的程度就知道了,尤其三国无双五FPS甚至能掉到10以下,但这并不影响它是一个优秀的游戏,因为这种产生掉帧做法是非常规的。技术并不是万能的,我们追求的应该是在技术已经做过厚道的优化、实现了基本可行的效果之后,用策划和关卡设计来实现效果。如果你要做全屏幕都是雪地的情况,那么好了,我们需要根据全屏雪地来单独设计程序,比如在所有优先级为0的雪地上按同Z值生成一个Sprite的方法生成一些脚印专用层,并且在进入地图的时候直接创建,不管占用多少内存,一直保留着,然后需要脚印的时候再copyrect和调整透明度,或者不是每帧刷新而是每隔一段时间下一些雪等等。这是全屏的处理方法,我给出的是特效的处理方法。对于特效而言,下图的效果我自己已经满意了,请注意FPS:
http://rpg.blue/upload_program/files/snowsteps.jpg
我的意思是,不要永远认为脚本应该如何优化优化,当你的设计不太对的时候,无论用目前地球上任何一种系统或主机(RM还是PS3都无所谓),用多么牛的程序员,该掉帧就得掉帧。这时候先想想,你自己都觉得设计有点问题的地方,是不是也该改改了?
--------------------------------------------------------------------------------
>yangff :
直接创建图片不就行了?
--------------------------------------------------------------------------------
>刹那的微笑 :
以下引用yangff于2007-11-11 20:52:35的发言:
直接创建图片不就行了?
同样的BUG我不想再说第四遍了,如果你觉得能创建成功的话,欢迎做一个出来。
--------------------------------------------------------------------------------
>小真☆爱舞 :
如果我可以修改四个地方,只用十行脚本实现他现在的这个功能,楼主你能不能改一下这句话呢?
“不要认为这个雪地脚印需要无限优化,这是舍本逐末。我们所要用的,只是在需要雪的时候,少量使用地形标志5,少量制作一些给玩家真实感的东西,就可以了”
--------------------------------------------------------------------------------
>刹那的微笑 :
好啊,欢迎贴出来交流,开阔一下思路。现在这个系统已经讨论了两种做法,一种是我详细写的创建事件,一种是幻鱼和小林说的sprite,如果让我再说可能只有copyrect和fillrect的方法了,很希望能看到不同方向的技术思路。
不过对那句话可能得解释一下,因为他回帖在原帖里了。我说不适合用通用方法是针对他的500*500格大地图,而且我也认为对不同效果分类处理是程序优化的原则。只是具体到雪地脚印这个,可能目前的优化方法不够好,那么找到更好的效率优化方法后,可能就不存在效果分类的问题。但是这个脚印的优化结果对游戏编程需要分类处理的基本思路而言,至少对我来说,并没有什么影响。
至于说到对其他的程序员,就仁者见仁智者见智了。因为我自己能用在RM上的时间很少,必须在每周有限的几小时内完成计划做的内容,这样尽管可能不够优化,但至少能做出来不至于怠工。如果能用在RM上的时间比较多,比如每天都能投入一个小时,那自然技术路线就不同了。
--------------------------------------------------------------------------------
>小真☆爱舞 :
感谢指教。
PS:多谢合作,终于知道你是谁了~
--------------------------------------------------------------------------------
>Eclair :
以下引用小真☆爱舞于2007-11-11 21:07:39的发言:
如果我可以修改四个地方,只用十行脚本实现他现在的这个功能,楼主你能不能改一下这句话呢?
“不要认为这个雪地脚印需要无限优化,这是舍本逐末。我们所要用的,只是在需要雪的时候,少量使用地形标志5,少量制作一些给玩家真实感的东西,就可以了”
[本贴由作者于 2007-11-11 21:10:42 最后编辑]
欢迎光临 Project1 (https://rpg.blue/) | Powered by Discuz! X3.1 |