acemod / ACE3

Open-source realism mod for Arma 3
https://ace3.acemod.org
Other
1k stars 735 forks source link

[Weather Module] Synchronize overcast #1552

Closed Cyruz143 closed 1 year ago

Cyruz143 commented 9 years ago

As discussed with Ruthberg. ACE2 port where setOvercast wasn't a command so this needs adding to current weather module.

ulteq commented 9 years ago

Step 1:

Step 2:

shadez95 commented 9 years ago

Maybe use "BIS_fnc_setOvercast". According to the BI wiki the overcast value distributes evenly across the network but does not for JIPs.

shadez95 commented 9 years ago

https://community.bistudio.com/wiki/BIS_fnc_setOvercast

shadez95 commented 9 years ago

"0 setovercast 1; (serverside) ForceWeatherChange; (applied afterwards on server)

--> syncs weatherstate from server to clients including simulweatherchange.

to be checked: JIP and nextweatherchange values in MP (seems still strange)"

From http://feedback.arma3.com/view.php?id=14296

kymckay commented 9 years ago

I don't know if this is the best idea, wouldn't proper synchronization require using skipTime a bunch (as setOvercast has to compute the volumetric clouds over a period of time) and simulWeatherSync which takes a second to compute?

Cyruz143 commented 9 years ago

I agree it's a pain, at the moment we're skipping back 24, then forward again.

But without it you're not really synchronizing weather properly, hopefully someone has an idea about how to progress with this.

nicolasbadano commented 9 years ago

But without it you're not really synchronizing weather properly,

Well Arma 3 weather system is completely broken; maybe syncing overcast is simply beyond what's feasable without access to the engine.

Cyruz143 commented 9 years ago

Just had a quick play. Started a mission at 0 overcast, ran

if (isServer) then {[1] call BIS_fnc_setOvercast;};

This updated on both clients connected, I dc'd, reconnected, had the correct overcast levels. Then fully closed arma to make sure it wasn't being cached anywhere and joined again, still the correct values.

Perhaps BI fixed this?

shadez95 commented 9 years ago

Can someone try and replicate what @Cyruz143 did on their server. If someone is able to replicate and it is indeed fixed, a note needs to be made on the BI wiki.

ViperMaul commented 9 years ago

Keep in mind the following recent test reports on setOvercast for MP and other commands/features as noted here Source: 0018237: Weather desync issues [PRIMARY REPORT]

whiztler commented 9 years ago

Don't forget to up-vote: http://feedback.arma3.com/view.php?id=18237#c94352

Cyruz143 commented 9 years ago

Today's dev branch had some weather sync fixes in, no specifics though, will see if further information can be found.

Edit: The target was this issue: http://feedback.arma3.com/view.php?id=3028. Some more details:

PabstMirror commented 9 years ago

1.48 said it added some weather synchronization Has anyone tested this?

Cyruz143 commented 9 years ago

If the ticket in my previous post is to be believed it looks like post 1.48 the following now works correctly.

Nothing about rain and the following things don't sync at all:

Will try and find some time to do proper testing on this.

Edit: Currently we've disabled ace_weather_syncWind due to a nasty bug (https://github.com/acemod/ACE3/issues/1708) and ace_weather_syncMisc as it seems to remove fog from the clients even when set on the server.

Cyruz143 commented 9 years ago

Did some quick tests on this tonight with the following settings:

class ace_weather_enableServerController {
    value = 1;
    typeName = "BOOL";
    force = 1;
};
class ace_weather_useACEWeather {
    value = 0;
    typeName = "BOOL";
    force = 1;
};
class ace_weather_syncRain {
    value = 0;
    typeName = "BOOL";
    force = 1;
};
class ace_weather_syncWind {
    value = 0;
    typeName = "BOOL";
    force = 1;
};
class ace_weather_syncMisc {
    value = 0;
    typeName = "BOOL";
    force = 1;
};

BIS_fnc_setOvercast works on mission start and for all clients (inc JIP) when changed mid-mission (executed server-side only)

BIS_fnc_setFog works on mission start and for all clients (inc JIP) when changed mid-mission (executed server-side only)

Both of these have a slight variation between clients (around 0.00005 difference).

Not sure if having the weather controller running will impact this when values are set to zero for the specific sync classes.

PabstMirror commented 8 years ago

Tried playing with this, vanilla overcast sync in 1.54 is still not good. http://feedback.arma3.com/view.php?id=18237 The simple version is that the client will set their overcastForcast to the server's current instead of server's forcast, so they will always lag behind. Worse, the client has a maximun rate of change lower than the server.

Setting the slider from 0 to 1 in 30 min, will have a rate of change of about 1/1800 seconds. Clients can barley do half that so their overcast values diverge pretty quickly.

0 setovercast 0.5;  
forceweatherchange; 

Has perfect effects and sync, but introduces a stutter that is very noticable, so is impossible to use.

TBH, this is something BIS should fix, I don't see anyway to script this. And it is a real shame because overcast is used in things like temp calculation.

The interim solution is going to be for mission makers to limit the rate of change of overcast;

Mike-MF commented 1 year ago

Closing due to age, inactivity or already solved. May be re-opened if the issue is still present, even better just open a new up-to-date Issue.