I am using ZDoom 2.2.0 and I had an FPS of 87-92 (the 90's are mostly because of the rain).
Intel Core 2 Duo T5550 @ 1.83 GHZ. I have 2.00 GB RAM, and I am using Windows Vista. My screen resolution is 1024 X 768 in ZDoom.
JonnyFive wrote:I think the erroneous spawning might be due to a delay between the assignment of a TID to the player and the start of the weather code. I'll have to look into it more to see if it can be fixed.
JonnyFive wrote:I think the problem is that the particles spawned inside the void but the game engine didn't destroy them (because they were in the void, after all). There was no timeout for the particles, so they would remain forever. I noticed the same problem trying it out in a bigger GZDoom WAD.
JonnyFive wrote:Is there a more solid way to check the player position besides assigning them a TID? GetActorX(0) and such only works if the player is the activator of the script, and doesn't seem to work in a function.
JonnyFive wrote:EDIT: Any chance you could post your example map with the version of weatherFX you have it running?
JonnyFive wrote:I'll look this over later tonight (I have a class in ten minutes) to see if I could add in some kind of check to the spawner itself to prevent it from spawning in void space. Canning the issue with stuff spawning in the ceiling should be easy enough using a z-check in DECORATE on the spawner itself.
Enjay wrote:JonnyFive wrote:I'll look this over later tonight (I have a class in ten minutes) to see if I could add in some kind of check to the spawner itself to prevent it from spawning in void space. Canning the issue with stuff spawning in the ceiling should be easy enough using a z-check in DECORATE on the spawner itself.
Question, presumably every time you add a check, it adds to the processing time for deciding whether a particle will spawn or not. Is there a danger that adding additional checks may cause more delay than leaving it alone and accepting that, occasionally, there might be some spawning in the void?
Also, any idea why the ones spawning in the void were definitely doing so in such a well defined, rectangular area - almost as if that had been set up as a weather zone? I've checked and double checked my weather spots.
Enjay wrote:OK, thanks. Hopefully I'll get a chance to check this when I get home.
Is it possible for you to identify and post exactly what bits of script changed/were added? It would make it easier for me to copy/paste into one of my test files. If not, I'll probably be able to track it down myself.
for (int i=0;i < Density;i++)
{
xSpawn=Random(xMin,xMax);
ySpawn=Random(yMin,yMax);
//START OF NEW CODE
if (xSpawn <= xMax && xSpawn >= xMin && ySpawn <= yMax && ySpawn >= yMin)
{
Spawn(WeatherType,(xSpawn*65536),(ySpawn*65536),(zSpawn*65536));
}
//END OF NEW CODE
}
//Get default spawn x and y max/min from map spots
xSpawnMin=GetActorX(UpperLeft)/65536;
xSpawnMax=GetActorX(LowerRight)/65536;
zSpawn=GetActorZ(UpperLeft)/65536;
ySpawnMin=GetActorY(LowerRight)/65536;
ySpawnMax=GetActorY(UpperLeft)/65536;
//Get default spawn x and y max/min from map spots
xSpawnMin=GetActorX(UpperLeft) >> 16;
xSpawnMax=GetActorX(LowerRight) >> 16;
zSpawn=GetActorZ(UpperLeft) >> 16;
ySpawnMin=GetActorY(LowerRight) >> 16;
ySpawnMax=GetActorY(UpperLeft) >> 16;
RAIN A 175 A_JumpIf(waterlevel >= 1, "Death")
Stop
RAIN A 1 A_JumpIf(waterlevel >= 1, "Death")
Loop
RAIN AAAAAAAAAAAAAAAAAAAAAAAAAA (etc...) 1 A_JumpIf(waterlevel >= 1, "Death")
Stop
Enjay wrote:Is that one of the "minor changes"?
I think there may be 2 problems with this. I think a code pointer on the first frame of a spawn state does not get executed. Also, with the frame having a very long duration, it's not going to work. I'm pretty sure that pointers get executed at the start of a frame's duration. So, even if the pointer was being used, the particle will be spawning and executing the special immediately. Presumably at this time, the particle will be spawning above the water. By the time the particle hits the water, it has already checked whether it is below water or not and so does not disappear. It's not too obvious in your test map because of the blue underwater colour, but if you look closely, you can see raindrops under the water.
RAIN AAAAAAAAAAAAAAAAAAAAAAAAAA (etc...) 1 A_JumpIf(waterlevel >= 1, "Death")
Stop
DoomRater wrote:
- Code: Select all • Expand view
RAIN AAAAAAAAAAAAAAAAAAAAAAAAAA (etc...) 1 A_JumpIf(waterlevel >= 1, "Death")
Stop
DECORATE will not compile this, complaining that you can't have JumpIf statements on multiframe lines.
Users browsing this forum: No registered users and 3 guests