找回密码
 点一下
查看: 1164|回复: 12

在做一个类弹幕的地图 发现T和J相比效率低了很多 不知道是不是我写法的问题

[复制链接]
发表于 2012-3-4 15:58:25 | 显示全部楼层 |阅读模式
我是开着显示帧率的软件测试的
在论坛里搜了个J写的弹幕演示
可以跑到1000个弹幕不卡
但是我自己用T写的跑到50个就不行了
我大概看了下
J的算法是用LOOP+INDEX (我描述不清 不过相信各位会J的可以猜到写法了)
我用T是把弹幕加入单位组来进行组动作
但是效率居然差这么多
理论上是这样么?从效率上看是不是我的写法有问题?
发表于 2012-3-4 16:02:07 | 显示全部楼层
T的话,应该不止50个,不过T的效率确实低
回复

使用道具 举报

 楼主| 发表于 2012-3-4 16:06:50 | 显示全部楼层

回 lo 的帖子

lo:T的话,应该不止50个,不过T的效率确实低 (2012-03-04 16:02) 
我在想如果我复制那个演示的算法 (循环整数+index)
用T来写的话 效率会不会有所提高
能提高多少?
回复

使用道具 举报

发表于 2012-3-4 16:26:55 | 显示全部楼层
不太清楚,不过如果直线弹道的话,只要单位组就够了,也不要索引什么的,100个以上似乎问题不大……
回复

使用道具 举报

发表于 2012-3-4 19:24:12 | 显示全部楼层
表示弹幕能运行多少严重依赖于那个单位的模型的说~

至于红点这种资源占用低到作弊的模型嘛~

不过50:1000的话lz的T写法应该还素有点问题的呢~(其实差不多方法的话T和J效率应该素没多大差别的说,T的本质即J)
回复

使用道具 举报

 楼主| 发表于 2012-3-4 19:47:29 | 显示全部楼层

回 夜の星 的帖子

夜の星:
表示弹幕能运行多少严重依赖于那个单位的模型的说~

至于红点这种资源占用低到作弊的模型嘛~

不过50:1000的话lz的T写法应该还素有点问题的呢~(其实差不多方法的话T和J效率应该素没多大差别的说,T的本质即J)

我试过用红点模型 但是效果不明显
甚至关闭过碰撞判断
只有把移动都关了(就是只把子弹创建出来)才见好转(这不废话么)
如果有空的话就麻烦看一下吧

触发在"射击系统"下
拿起地上的枪械点击装备 我已经把子弹消耗关闭了 按ESC显示子弹单位组中的单位数量
night_II.w3x (2.12 MB, 下载次数: 16)
回复

使用道具 举报

发表于 2012-3-4 22:16:00 | 显示全部楼层
那啥……各种高版本的YD函数。。我的YD只有1.20,开不了
  

话说弹幕的那个触发名字叫什么?
好吧。。我找到了……


话说LZ为什么都用旧函数?YD的话那些后缀<NEW>神马的效率比较高
回复

使用道具 举报

发表于 2012-3-4 23:40:13 | 显示全部楼层
光是看代码比较难看出问题额…………
  

以下大部分应该与该问题无关,但是能提高一点效率
[trigger]
        如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
            If - 条件
            Then - 动作
                单位 - 创建 1 个 步兵 给 玩家1(红色) 在 ((可用地图区域) 的中心点) ,面向角度为 0.00 度
                动画 - 改变 最后创建的单位 <New> 的飞行高度为 0.00 ,变换速率: 0.00
            Else - 动作
                不做任何动作
[/trigger]
首先动作第一条会将单位加入最后创建的单位组,然后在创建前会先判断这个单位是否为闹鬼金矿,然后动作第二条“最后创建的单位”会调用获取最后创建单位的函数并返回一个bj单位变量,个人觉得效率没直接调用变量高;
“不做任何动作”是会调用函数的,完全可以不写任何动作,所以可以改成
[trigger]
        如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
            If - 条件
            Then - 动作
                设置 Unit = (新建 玩家1(红色) 的 步兵 在 ((可用地图区域) 的中心点) 面向角度:0.00 度)
                动画 - 改变 Unit 的飞行高度为 0.00 ,变换速率: 0.00
            Else - 动作
[/trigger]
================================================
[trigger]
        特殊效果 - 在 ((可用地图区域) 的中心点) 创建特效: Abilities\\Spells\\Human\\ThunderClap\\ThunderClapCaster.mdl
        特殊效果 - 删除 (最后创建的特效)
[/trigger]
可以改成 删除(新建特效)

================================================
[trigger]
        单位组 - 添加 (触发单位) 到 (新建的空单位组)
        单位组 - 为 (新建的空单位组) 添加 (触发单位)
[/trigger]
LZ用的是第一条动作,但第一条动作实际是调用了第二条动作,所以用第二条动作更快

================================================
[trigger]
        循环动作[循环整数A]从 0 到 1, 运行 (Loop - 动作)
            Loop - 动作
                点 - 清除 P[(循环整数A)]
[/trigger]
为何不直接写 清除 P[0] 和 清除 P[1]?循环会有循环数+1的动作

================================================
[trigger]
        设置 R = (P[1] 和 P[2] 之间的距离)
        如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
            If - 条件
                R 大于 0.00
                R 小于 10.00
            Then - 动作
            Else - 动作
[/trigger]
还有SS_TargetSize_wide[I[2]] + BF_BD_DamageRadius[I[1]]也一样,LZ在条件里写了两次加运算和两次(P[1] 和 P[2] 之间的距离),效率自然下去了,用变量记录然后调用变量比再计算一遍快多了~
回复

使用道具 举报

 楼主| 发表于 2012-3-5 14:35:22 | 显示全部楼层

回 chyj4747 的帖子

chyj4747:光是看代码比较难看出问题额…………
&#160;&#160;
以下大部分应该与该问题无关,但是能提高一点效率
[trigger]
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
.......&#160;(2012-03-04 23:40)&#160;
感谢指导 以后我会注意这些的

再观望一下看有没有高人来指出一下我这地图卡的根本原因哦。。。
回复

使用道具 举报

发表于 2012-3-5 17:40:35 | 显示全部楼层
龙把触发帖出来了……于是看到大量泄漏……
可用地图区域中心点这个东西,每用一次就有一个点泄漏……
可以设置点X=可用地图区域中心点
然后创建什么的都用点X,这样只创建了一个点,引用点X本身不会造成泄漏

还有就是新建的空单位组了,有对应的删除单位组的触发么?或者创建的不多?要是持续创建的,这个也泄漏严重了……
回复

使用道具 举报

发表于 2012-3-6 03:44:18 | 显示全部楼层
龙把触发帖出来了……于是看到大量泄漏……
可用地图区域中心点这个东西,每用一次就有一个点泄漏……
可以设置点X=可用地图区域中心点
然后创建什么的都用点X,这样只创建了一个点,引用点X本身不会造成泄漏

还有就是新建的空单位组了,有对应的删除单位组的触发么?或者创建的不多?要是持续创建的,这个也泄漏严重了……
猫咪误会了…………
那些T是我写的,LZ排泄了。。
LZ那个图因为用了YD1.21a以上版本的YD函数所以我打不开。。于是是解压了J文件看的……
然后有问题的地方我自己写了下T发上来的……
回复

使用道具 举报

发表于 2012-3-6 10:36:18 | 显示全部楼层
这样啊……话说1.22以后的版本各种不好用……1.20又打不开高版本的东西……纠结啊纠结……
回复

使用道具 举报

发表于 2012-3-7 01:03:56 | 显示全部楼层
弹幕啊。。。。
感觉是各种卡机~~~~~~~~~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-10-6 11:57 , Processed in 0.033842 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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