Пробовал, fps поднялся немного (около 40fps с тем же количеством объектов). Но тем не менее нагрузка все равно большая.
ZZYZX:
Я извиняюсь, но зачем? В нормальной карте должны быть односторонние стены, которые отсекают огромные количества акторов сходу.
У меня, к сожалению, большая открытая карта с разной техникой, а не нормальная. Например, при использовании вертолета на большой высоте я отключаю рендеринг мелких объектов, но на слабых машинах все равно тормоза сильные. Хотя если эти мелкие объекты совсем удалить, то вполне играбельно становится, вот и пытаюсь найти способ их полностью отключать...
У меня, к сожалению, большая открытая карта с разной техникой, а не нормальная.
Вот уж точно к сожалению, гздум вообще не предназначен для 3D карт, поэтому подъём на большую высоту никак не влияет на производительность.
Ну я тут уже ничего посоветовать не могу. Можно порталы попробовать %) И ненастоящую карту внизу показывать во время полёта на вертушке. И прикрыть облачками, чтобы не очень в глаза бросалось.
может, знает кто, как сделать проверку на загрузку бруталдума? хочу сделать совместимость, а для этого надо отрубать один скрипт.
я видел такое в HDoom, это возможно..
и да, я пытался посмотреть, как это сделано в ХэДум, но там исходники закрыты
Array<Actor> spots;
ActorIterator it = ActorIterator.Create(тут тэг);
Actor mo;
while (mo = it.Next())
spots.Push(mo);
// а тут берём spots[random(0, spots.Size()-1)].pos и спавним в этих координатах
Спавнить можно выражением Actor.Spawn(класс, координаты). Читать gzdoom.pk3/zscript/actor.txt.
Парни, у меня проблема с BFG 9000, в Gzdoom выпускает плазму шар, а Zandronum 3.0 не выпускает!
Скрипт взят из мода скуба стива (Action Doom Weapons) и немного изменил...
Скрытый текст:
ACTOR SuperBFG : BFG9000 replaces BFG9000
{
Weapon.UpSound "ActionBFG/Up"
Weapon.BobStyle "Alpha"
Weapon.BobSpeed 1.2
Weapon.BobRangeX 0.5
Weapon.BobRangeY 0.75
Weapon.AmmoUse 1
Weapon.AmmoGive 2
Weapon.AmmoType "Cell_"
States
{
Ready:
ABFG A 1 A_WeaponReady
Loop
Deselect:
ABFG A 1 A_Lower
Loop
Select:
ABFG A 1 A_Raise
Loop
Fire:
TNT1 A 0 A_PlayWeaponSound("ActionBFG/Fire")
ABFG A 40
ABFG ABCDEFG 5
ABFG HIJK 4 Bright
ABFG L 1 Bright A_FireBFG
TNT1 A 0 A_SetPitch(pitch-3.5)
TNT1 A 0 A_SetAngle(angle-3.5)
ABFG L 1 Bright
TNT1 A 0 A_SetPitch(pitch-0.25)
TNT1 A 0 A_SetAngle(angle-0.25)
ABFG L 1 Bright
TNT1 A 0 A_SetPitch(pitch+0.25)
TNT1 A 0 A_SetAngle(angle+0.25)
ABFG L 1 Bright
TNT1 A 0 A_SetPitch(pitch+0.25)
TNT1 A 0 A_SetAngle(angle+0.25)
ABFG M 1 Bright
TNT1 A 0 A_SetPitch(pitch+0.25)
TNT1 A 0 A_SetAngle(angle+0.25)
ABFG M 1 Bright
TNT1 A 0 A_SetPitch(pitch+0.25)
TNT1 A 0 A_SetAngle(angle+0.25)
ABFG M 1 Bright
TNT1 A 0 A_SetPitch(pitch+0.25)
TNT1 A 0 A_SetAngle(angle+0.25)
ABFG M 1 Bright
TNT1 A 0 A_SetPitch(pitch+0.25)
TNT1 A 0 A_SetAngle(angle+0.25)
ABFG N 1
TNT1 A 0 A_SetPitch(pitch+0.25)
TNT1 A 0 A_SetAngle(angle+0.25)
ABFG N 1
TNT1 A 0 A_SetPitch(pitch+0.25)
TNT1 A 0 A_SetAngle(angle+0.25)
ABFG O 1
TNT1 A 0 A_SetPitch(pitch+0.25)
TNT1 A 0 A_SetAngle(angle+0.25)
ABFG O 1
TNT1 A 0 A_SetPitch(pitch+0.25)
TNT1 A 0 A_SetAngle(angle+0.25)
ABFG PQRST 2
ABFG A 2 A_ReFire
Goto Ready
Spawn:
WBFG A -1
Stop
}
}
actor SnappyBFGBall : BFGBall replaces BFGBall
{
speed 8
-noteleport
decal "BFGLightning"
+grenadetrail
+ripper
+skyexplode
states
{
spawn:
TNT1 A 0
TNT1 A 0 A_BFGSpray("BFGExtra",20)
BFE1 A 1 bright light("BFGBALL_X1")
BFE1 B 2 bright light("BFGBALL_X2")
BFE1 C 2 bright light("BFGBALL_X3")
BFE1 A 1 bright light("BFGBALL_X1")
TNT1 A 0 A_ScaleVelocity(8)
TNT1 A 0 A_ChangeFlag("ripper",0)
spawn2:
BFS1 A 1 bright light("BFGBALL") A_SpawnItemEX("SnaptionBFGtrailA",Random(-2,-2),0,Random(-2,-2))
BFS1 A 1 bright light("BFGBALL") A_SpawnItemEX("SnaptionBFGtrailA",Random(-2,-2),0,Random(-2,-2))
BFS1 B 1 bright light("BFGBALL") A_SpawnItemEX("SnaptionBFGtrailB",Random(-2,-2),0,Random(-2,-2))
BFS1 B 1 bright light("BFGBALL") A_SpawnItemEX("SnaptionBFGtrailB",Random(-2,-2),0,Random(-2,-2))
loop
death:
TNT1 A 0 A_BFGSpray("BFGExtra",20)
BFE1 A 2 bright light("BFGBALL_X1")
BFE1 B 1 bright light("BFGBALL_X2") A_Explode(512,640,0)
TNT1 A 0 A_SetScale(1.3)
BFE1 B 2 bright light("BFGBALL_X2") A_Quake(3,21,0,512)
TNT1 A 0 A_SetScale(1.5)
BFE1 B 5 bright light("BFGBALL_X2")
BFE1 C 7 bright light("BFGBALL_X3")
BFE1 D 6 bright light("BFGBALL_X1")
BFE1 E 7 bright light("BFGBALL_X4") A_Quake(1,21,0,640)
BFE1 F 8 bright light("BFGBALL_X5") A_FadeOut(0.2)
wait
}
}
actor SnaptionBFGtrailA
{
+nointeraction
renderstyle add
height 1
radius 1
states
{
spawn:
BFS1 A 1 bright A_Fadeout(0.2)
Loop
}
}
actor SnaptionBFGtrailB : SnaptionBFGtrailA
{
states
{
spawn:
BFS1 B 1 bright A_Fadeout(0.2)
Loop
}
}
По моему уж лучше норм ЯП выучить чем в зскрипт вникать, синтаксис там прост, как и в др. си подобных, но кол. функций которые хз пойми что делают без норм. описания и примеров.. жуть.
Да и к тому же имхо если человек не программист и не знает ни одного полноценного ЯП и возникла необходимость вникать в зскрипт, это явный сигнал что пора перебираться на более продвинутый движок
А так.. думаю большинство модеров и обычный декорейт плоховато знают и не используют те же аргументы, декорейт переменные, константы, анонимные функции..