|
以下的文字可能全部早就被人翻烂了…………除了AI寻路的………………
只是个人在做这个系统的时候的记录的一些无聊的东西而已
自己会在最后的括号里吐槽的…………
吐不了的就可能是别人没说过的。
【TerrainDeform的Handle值为0的问题】
TerrainDeform的handle值是从0递增的。
如果使用
[jass]
<TerrainDeform> !=/== null
[/jass]
来对第一个TerrainDeform进行判定,则必定为null。
而第一个TerrainDeform的Handle值是0。
则我们可以判定,jass虚拟机对于判定一个handle变量是否为null时,是直接比较handle值是否为0。
貌似在使用TerrainDeform时,才会注意这个问题。其他的handle的值貌似是不会为零的…………
texttag在创建了第100个之后,如果他的handle值是100-0(到1就没有问题),可能新创建的texttag都会直接判为null………………
(事实上这玩意可能根本不对)
===============================
【Vjass【extends】研究】
5个地形变化都有共性,于是乎想到了extends。
稍微研究了一下extends后,struct的原理。
struct X extends Y
这样,创建一个X,即创建一个Y,创建一个Y,X没有创建,但同时,这个Y的index也不会被占用。
其实就是X的allocate()就是一个调用Y.allocate()的接口而已……………………
至于interface,那纯粹是一个文本上的约定而已………………
但是,罪大恶极的是,居然interface也使用父结构的allocate()…………………………
Vjass太恶心了………………………………
引起的弊端是,一个父子结构网中的所有结构都会使用最上方的祖先结构的allocate()…………
换句话说,一个父子结构网,中所有的结构实例的数量是不能超过8190的………………………………………………
然后这样:
struct a
static method create takes real x, real y returns nothing
...
struct b extends a
...
static method create takes real x, real y, real z returns nothing
local b B = b.allocate( x, y )//必须写成这样,要不缺参数…………
endmethod
呵呵,真好玩~~
===============================
【单位受到攻击到发动攻击的间隔研究】
众所周知,单位受到攻击事件触发时,单位并没有真正发动攻击,而是要等待一段时间后,才会进入“不可逆转的攻击阶段”,但是要等待多长时间呢?这由什么决定呢?为了能让单位在受到攻击事件时就进入“不可逆转的攻击阶段”(否则模拟投射物将会有Bug,如果想没有Bug,必须计算单位的实时攻击力和防御力,这就基本不用玩了……),我先看看单位本身有什么属性会影响到这个等待时间。
不费劲就找到了决定的因素——战斗 攻击X 动画伤害点。
如果将这个设为0,那么玩家不管怎么狂摁S都不会重复触发单位受到攻击事件。
其余的“动画恢复点”和平衡性常数中的攻击反应延迟都不会影响到这个触发的时刻。
(这玩意早被老狼说过了)
===============================
【共享视野对隐形单位的特殊作用】
当对一个隐形单位使用共享视野时,这个隐形单位也会看成隐形的(既没有效果%_%),但是在小地图上会显示它的一个点……………………
===============================
【关于播放音效遇到的小小的Bug】
如果在
[jass]StartSound[/jass]
之前运行
[jass]KillSoundWhenDone[/jass]
那么音效会被直接删除…………
(…………还没Do呢……就被Kill…………)
===============================
【尸体】
隐身在暂停之后(隐身后暂停会结束隐身效果)。
隐身在蝗虫之前(在蝗虫之前,才能被当做目标,自身的隐身可以排除)。
隐形在蝗虫之后(忘了原因是什么了…………)。
而隐身、暂停、蝗虫都应该有。
暂停不用,使用Abun(禁止攻击)+Amov(禁止移动)+Aloc(蝗虫)+钻地解决。
喷血效果:
无法解决,貌似和单位模型有关。
(另一个位面的人也会看到这个位面的单位死亡后的喷血…………这玩意一点也不好……)
===============================
【永久隐形(幽灵)研究】
单位死亡后,隐形效果解除。
使用【近战】攻击,不会看到投射物。如果单位能被看见,也不会显示。
使用【立即】攻击,不会看到投射物。如果单位能被看见,被攻击的单位会显示来自攻击者的投射物。
使用【炮火】攻击,会看到投射物。
使用【炮火(穿透)】攻击,会看到投射物。
使用【箭矢】攻击,会看到投射物。
使用【箭矢(溅射)】攻击,会看到投射物。
使用【箭矢(弹射)】攻击,会看到投射物。
使用【箭矢(穿透)】攻击,会看到投射物。
使用技能,除少数技能以外,创建的模型基本都会被看到。
虽然只是猜测,但我觉得有90%几率正确的结论:
但凡是附加在单位身上的模型,随单位一起隐形/显形。
其余模型,全部显形。
此类单位的幻影也会具有此类单位的全部特性。
单位没有碰撞体积,别的单位会直接无视此单位的碰撞体积,但对此单位发布移动命令,单位会视别的单位有碰撞体积。
特定情况:当单位迎面而来的是同样的此类单位时,互相无视碰撞。
这种情况会使得玩家命令一队单位移动到一个点时,所有的单位全部叠在一起……
设置单位——开启碰撞可解决此问题。
添加在单位身上的特殊效果不受半透明效果影响。
自己人看到隐形的单位会变成半透明的。但设置“是一个建筑”为true,即可解决此问题。
设定“是一个建筑”为true,会引起以下问题:
1.当玩家框选时,如果被选中的范围内有普通单位,则被选中范围内的此类单位不会被选中。
虽说“是一个建筑”,但释放技能时基本不受影响,该被锤子晕的就晕了。
在这里我做了2个特殊测试:
1是释放“乌云技能”,发现完全无效。
2是释放“地震”,发现只有减速,没有伤害。
3是释放大法的回程,发现有效,而且会使被作为目标的隐形单位显形,不会将此类单位传送过去
(50%是对于这个最终系统来说的废话)
===============================
【视野Bug】
(实际上这是个冷笑话类型的记录…………话很多,但实际上最后就一语中的……)
玩家的视野探测过的地方,但现在没有视野的地方,如果有其他玩家(非盟友or不在同一世界)的单位的话,则会显示单位的模型,可以视其为目标(按A后点击模型,会出现闪烁的红/黄圈),鼠标放上去可能会变红/黄,最可恶的是小地图会显示他的位置………………而且单位移动则模型也移动(进入黑色阴影后也会有模型),但是每秒帧数大约也就1帧…………
估计是单位本身的0视野造成的。
解决办法:
不完美:创建全地图的设置黑色阴影的可见度控制器。
使用此办法,除了单位本身会模糊一些……其余的没有改变………………
完美、但肯定行不通的办法:
禁用战争迷雾……………………
如果直接共享敌对双方视野,不使用马甲的话…………只要是同一个世界的,所有的视野都会得到。
相当于同一世界内的所有玩家共享视野…………
理想但绝对不高效的想法:
有马甲,每0.XX秒扫描所有正常(非马甲)单位,对于每个玩家,如果此单位在其视野之内、且在同一世界内,就单独对那个玩家显示此单位(不会拥有此单位的视野),如果不在则不显示…………
啊啊啊啊啊啊啊啊啊啊啊啊啊啊…………为什么最棒的方法却是最不高效的方法……
相当于每次扫描就得O(m*n)
m=用户玩家数,n=这个地图所有的正常单位数……………………
如果m=6,n=200(有点大),那玩家们估计是卡得都不行了……………………
当然如果地图比较小,或者你有办法控制时间点最大单位数,那么基本上还是可取的……………………
脑子已经混乱了…………呜呜…………………………
好吧,几个办法的效果描述如下,觉得哪个好点就选哪个吧……没有最好的………………:
1.有马甲,0视野,单位会在战争迷雾和黑色阴影里显示。小地图有显示。
2.有马甲,0视野,创建黑色阴影可见度控制器。与1比起来单位更模糊。
3.有马甲,0视野,禁用战争迷雾,在黑色迷雾里仍有模型。
4.没有马甲,单位本身视野,同一世界的所有玩家共享视野,没有Bug。
5.有马甲,0视野,完全不高效,没有Bug。
6.有马甲,0视野,需要全开地图,和4比起来根本没有意义。
其中我推荐4、5,因为没有Bug。
4高效,但是属于不符合逻辑的。
5是梦幻的解决方法,没有Bug,符合逻辑…………但是卡的要死………………啊啊啊啊啊啊啊啊啊啊啊啊啊啊………………
如今我什么也不想说了,真想拿把砍头刀把自己砍了,太没用了…………呜呜呜呜呜呜呜呜呜呜呜呜呜呜
有马甲的先存上一个地图。
真没想到居然到最后又绕了回来……………………呜呜……………………不活了………………………………砍头砍头…………
总算发现原因了,居然就是因为“是一个建筑”为true的负效果………………(即建筑在阴影里的残影效果……)
现在看来只能用钻地了。
(一个冷笑话)
===============================
【钻地研究】
虽说这钻地比永久隐形不好用得多,而且费了老半天劲才可以使用技能(对第一次钻地后的单位再添加一次变形参数为0,也就是什么也没有的钻地即可,这是kook大人的方法)。但是既然头目使用这个,我自然要看看这到底和幽灵比起来有什么好的。
虽然没有测试,但是我猜测应该是和永久隐形效果是一样的…………而且还有很多麻烦…………为什么头目大人会想到用这个钻地呢?
最后,通过从疯人那里得到的情报,我才知道,这个和隐形比起来唯一的优点是自己人看这类单位不会有透明度的影响………………
(这个东西有力地又证明了一次……头目是绝对明智的……在我一年以前,就早已经意识到该用哪个隐身了…………)
然后是关于AI路径的研究………………好好虐待自己吧~ |
评分
-
查看全部评分
|