#dev_rc_branch

1 messages · Page 11 of 1

scarlet root
#

AI to "split" off from the main group - ie to hunt known targets

#

its based on combat behaviour state i think; can be influenced via scripting and also via human commanding

#

engage at will/loose formation

#

but yeah would been useful to have more sqf commands for subgroups

harsh orbit
halcyon moth
steep gust
#

Late to the DOF party, this is amazing and is pulling me back in to A3 again!
For PIP scopes and DOF - Is there conceivably a way to define an object's surface (aka the PIP display) in object builder to ignore the Z buffer or force it to infinity distance? This way we could have proper DOF bluring on the scope border while maintaining clear optic view and perfipherals?

full sonnet
#

not conceivable

steep gust
#

I noticed that glass windows ignore the DOF depth buffer so was just wondering if that might be a hidden way around

signal edge
#

i've made two other models, an egg and a sphere and both were able to be changed with command but then again i did that like almost 10 years ago

unreal arrow
lucid totem
#

I can't believe you filmed your screen

unreal arrow
#

you keep saying it and I keep doing it

lucid totem
#

who will break first

#

(the phone)

unreal arrow
#

no u

teal elk
harsh orbit
#

Hi. I haven't been following the dev lately. have you made a change to getRoadInfo and what it returns? I think it returns AGL position instead of ASL now because I was getting some really weird bugs with it the other day where end points of roads were under the terrain. I'll double check later.

harsh orbit
#

ok no that wasn't it.
@full sonnet did you change road initialization stuff? should getRoadInfo be working at pre init?

full sonnet
#

I remember that being a long story and I thought it was already solved

harsh orbit
#

nvm it was a bug in my own code. it was related to getTerrainHeightASL meowsweats

timid folio
#

Bit of a random question but will there ever be a pass done to A3's lighting system? or is that an engine limitation kinda thing

#

Just wondering because the audio with xaudio is a pretty huge change so not sure when a3 is gonna just be kinda "done" in relation to a4 coming out

carmine juniper
#

Everything is engine limitation at this point

timid folio
full sonnet
#

No, just some minor adjustments

timid folio
#

oh really hm I misunderstood then

#

but yeah regarding the lighting I guess it's just not doable

#

I don't really know much about old illumination methods

full sonnet
#

Everything is doable with enough time. There are no plans to spend that much time

tall pumice
#

shame

lucid totem
#

ye, that's the only thing in my "ideal Arma 3 world" list

unreal lava
#

honestly i think just having the ability to make light sources cast shadows (dedmen's gonna murder me for mentioning it again but here i am lol) would help a lot with creating more dynamic looking scenes

#

like a lighting system rework by itself probably isn't even worth it and can only go so far; for example it won't magically make arma's metalness-less and roughness-less materials look modern

#

(refrained from saying pbr because technically having specularity, reflections, and refraction is a part of pbr advancement, but you get the idea)

iron vault
#

Hello! Do you know when the dev branch will be released ?

ebon quail
#

@iron vault ^^

ocean sail
#

Getting error Cannot load texture a3\editorpreviews_f\data\cfgvehicles\land_mrl_magazine_01_f.jpg on current Dev branch, all ok on stable

strong rose
#

I don't know where to ask this.
But are there any plans for any changes related to ragdolls in multiplayer? Because the current implementation is really bad. Since the body is processed on the server and the limbs on the client, it looks terrible. Is it possible to implement full ragdoll processing on the client?

And sorry to ask here... but how do I access the recoil mask? I couldn't find these parameters in the config.

full sonnet
#

no
I don#t know what a recoil mask is supposed to be

strong rose
#

Maybe I'm calling it something wrong) Recoil is an animation that is applied to a unit through a mask with weight on different bones) For example:

    recoil[] = {"head", 0.4, "neck1", 0.4, "neck", 0.4, "weapon", 0.6, "LeftShoulder", 0.4, "RightShoulder", 0.4, "Spine2", 0.4, "Spine3", 0.4};

Well, or something like that))

#

And perhaps you know where to find this parameter in the config)))

unreal lava
#

Arma's animation system is somewhat primitive but if youre creative with sqf and manipulate the state machine in just the right way you can get good results

#

Imho a masked animation system for things like aim offsets instead of the current pivot-and-rotate method would be awesome but it would require refactoring a ton of vanilla stuff so thats probably never happening

vapid zephyr
#

I asked a long while ago, but I'mma ask again.

Could we get a horizontal/lateral velocity vector for MFDs? I'm trying to make a helicopter HMD that shows an accurate velocity vector.

strong rose
strong rose
#

And the question is actually... the information about the recoil mask is stored somewhere) Because the basic recoil acts on the upper part of the body.
And if it's there somewhere... then it can be changed and influenced)) The only question is how to find it))

unreal lava
#

and yeah it's unfortunate; it's a shame that gestures straightup override the animation rather than add onto it (maybe that could be an option that's less desctructive to implement, cuz at least then you wouldnt have to make hundreds)

unreal lava
#

so in short you wouldnt be able to change it without messing up the aim offsets

#

all of the masks are exposed in an animation's cfg

strong rose
#

?) class BlendAnims

unreal lava
#

gimme a sec

#

aiming = horizontal;
aimingBody = vertical
idle = seems to be whole body most of the time, no idea actually
head = freelook
leaning = leaning
legs = lower body essentially (used for prone mostly)
mask = weapon switching mask

#

unless the recoil mask is stored somewhere, it must be using either aiming or aimingbody, which is why the recoil pushes back your whole body

strong rose
#

upperTorso

unreal lava
strong rose
#

Okay, I can try changing the parameters and see what happens in the game. And calculate it that way.

But of course, if the recoil mask and the hull rotation mask are the same thing... then that's bad.

strong rose
full sonnet
#

"Ref to nonnetwork object" fun.

When you spawn a unit in Zeus, the unit is global, yet ref to nonnetwork object is thrown anyway.
Turns out, the units backpack is initialized and network broadcast before the unit itself even has a netId.
And the backpack links to the unit holding it.

So spawning any unit with a backpack in zeus or via createUnit command, always throws "Ref to nonnetwork object" on the client?
Did no-one notice this specific cause yet or am I doing something weird?

#

🤦‍♂️
getUnitLoadout when called on a classname, creates a temporary local-only unit.
When that units backpack is created, we pass a variable multiplayer = false. But.. That is a un-used variable, we network broadcast the backpack anyway 🤣

Luckily someone hacked a flag into the netcode that ignores all messages trying to be sent and just voids them. Specifically for this to disable network message sending. All that was needed for this is to not broadcast the backpack. But its nice anyway as it also blocks any networking done by the init script of that backpack.

full sonnet
#

Ugh.
Some projectile types are global, and some are local and every client spawns his own.
Like when a soldier shoots a bullet, its local. But a UGL grenade shell is a single global projectile.

But for I don't know what reason, that is different for vehicles.
If a vehicle fires a UGL grenade, its a local projectile, that it tries to send over network anyway...

Hopefully fixed a bunch of these next prof

halcyon moth
#

huh, same ammunition sim but different behaviour?

full sonnet
#

Yeah. Sounds fun right?

halcyon moth
#

Arma always manages to be weirder than my assumptions :/

nova wigeon
umbral orchid
#

man that's gonna cause some problems

full sonnet
#

Yea.
In the demining drone case it's a submunition shot, that has the same issue

umbral orchid
#

uuughh i bet the WP/gas scripts are running on each client then in spearhead, at least the ones shot from tanks/artillery

#

as it's just a local _projectile check

slender axle
# full sonnet Ugh. Some projectile types are global, and some are local and every client spawn...

Local projectiles create a lot of annoying issues when you want to interact with them.
For example, when a mortar fires, it spawns a local projectile on each client, and it's essentially impossible to track it down and delete it on every client without very hacky workarounds like labeling each projectile by sequence as they come out of the tube. Even doing that, if someone is tabbed out (my guess) and their client isn't executing your script in a timely manner, the mortar round will still hit and do damage. So far I haven't found a ciws script that kills mortars and works across multiplayer.

lament crow
#

I wonder how well the engine, after the recent optimizations, would handle just making every projectile global

full sonnet
#

Not that we'll probably.
But we already have projectile simulation multi threading now, for mines. Could use that but meh

halcyon moth
#

Hmm. I figured the reason for local projectiles was network traffic. You'd only need to send the startup info for them, no subsequent updates.

full sonnet
#

Position updates are separate.
Mines until recently were global projectiles without position updates

lament crow
tall pumice
#

Tweaked: Quadbike KIA crew now remains in KIA pose in the vehicle i always thought it made sense for them to get ejected on death

unreal arrow
tall pumice
#

make them ragdoll then :p

#

those sitting death animations in an open vehicle like that just feels .. i dunno, wrong

unreal arrow
#

Can always add mission option to revert to insta teleport

full sonnet
pallid cliff
#

Just make him ragdoll into space. No issues with walls there.

verbal venture
tall pumice
#

just sometimes the applied force seems really weird

#

better would be some dedicated falling off animation and then ejecting, i guess

uneven umbra
#

It would be amazing to see a real-time app developed that integrates directly with Arma Reforger, allowing players to place map markers and plan activities with instant in-game visibility. Imagine placing a marker on your phone or tablet and seeing it appear immediately in the game — seamless coordination on the fly.

Games like Zelda: Tears of the Kingdom and Metal Gear Solid V already feature this kind of intuitive map interaction. Even DayZ has a great external tool, iZurvive, for map marker placement — but it lacks real-time sync with the game, and requires manual group creation and invites within the app.

With how popular Reforger is right now, there’s a huge opportunity here. A real-time planning tool could be a game-changer for squads, communities, and content creators — and it could absolutely be a solid money-maker for the developer who builds it.

I know I’d happily pay for something like this. 💸
Let’s make it happen!

full sonnet
#

I made such an app for Arma 3 😄
Why you are posting about Reforger in the Arma 3 dev-branch channel I am confused about though.

broken fern
#

They're new to the server so probably this is the only channel it's showing them.

slender axle
#

Can there be the flag on the web browser GUI control that allows us to turn off the autoplay/interaction restrictions in chromium? When they're used in an overlay (started by cutRsc), there doesn't seem to be a way to send any user interaction into the page (tried all the browser actions including dialog/alert) so the restriction remains.
I want to be able to do:

const sound = new Audio("data:audio/wav;base64,...");  
sound.play();

Or even play videos in overlay (not just display/dialogs, which you can bait a user interaction). This is just about the overlay mode.
The current workaround is to dialog/alert the A3 api and play the sound back in arma, but allowing autoplay would be much nicer.

#

Additionally, it would be nice to force the browser to operate at >60 fps. For example, I made this HMD script, but it visibly lags the native HUD (it's updated as fast as possible in a Draw3D).

broken fern
#

That's really cool.

slender axle
#

Yeah the browser control is incredible, issues and all.

full sonnet
# slender axle Can there be the flag on the web browser GUI control that allows us to turn off ...

Its a iframe sandbox. I don't know without looking it up if I could.
But even if I could, I'm not sure...
For one I'm worried about users being plagued with sound they cannot influence, on the other hand you can already playSound in SQF.
On the yet another hand, browser sound is NOT going through the game sound system, so while the user can turn down the SQF played sound volume, they cannot do that with the browser one.
And I wouldn't like that happening to me.

#

I have no influence on the browser frame rate. That is on Steam.

dark hemlock
#

You can only disable autoplay through a command line flag afaik

grim lion
#

You might be able to setup keybinds that send a signal to the browser control that would allow for users to play/stop and turn up/down volume when utilizing cutRsc

full sonnet
slender axle
#

Looks like yeah there's no way to increase framerate you just paint when steam surface tells you it needs paint (I assume arma isn't the bottleneck). Bummer, I was just getting used to the higher framerate from the recent updates.

full sonnet
#

But I know you can watch youtube videos at 1080p in steam overlay no problem.
But, I have never tried to run a 60fps video and really watch if it is actually at 60

slender axle
#

The browser looks to be rendering at 60 fps. I was just wondering if it could go up to my monitor's refresh rate.

#

Oh yea looks like the overlay browser's limited at 60 too. I guess that makes sense.

#

Oh well, still a solid feature far beyond what the ingame hud allows for. And very low maintenance because basically all the steam's exposed apis are already implemented except mouse cursor.

grim lion
#

I must have misunderstood the question, I have a notification UI with the sandbox browser in which uses cutRsc and I can push a notification to the UI and it pops up

slender axle
#

Which you can do, just not in an overlay spawned by cutRsc. You have to have it be a dialog.

grim lion
#

Yes it would have to be a dialog, that's how the windows 99 os I made works but you'll convert the sound and videos to a base64 text file, I forget what the actual file is in order for the sandbox browser to work with videos and sounds/music. But there's also a buffer limit on how big the file can be as well.

#

I'll probably be releasing the first version of that os within the next month maybe even this week we'll have to see

signal edge
#

is the setovercast command ignoring the time given? if i put in _time=30;_time setovercast random 1; the command will change the overcastforecast but will not get to that point until the nextweatherchange seconds later rather than my specified time? i've been using the forceweatherchange command to get it to adjust but it causes a massive fps dip if i want to make it constantly randomize the weather in short intervals.

ruby edge
#

timeMultiplier also has an effect for the weather commands (except setRain for some reason).
the whole weather system is a mess imho

slender axle
#

The A3API.RequestTexture seems to work for some procedural textures but not others. For example, I can grab the data for simpler procedural textures like colors and perlin noise, but seems like render to texture and ui on texture do not work. (They do return: data:image/webp;base64,)
If possible, the expected output should be the image from the procedural texture at the moment it's requested.

full sonnet
#

That's probably related to the Image Format.
The WebP encoding only supports one specific format. And if the texture provider cannot supply it, it won't work.

slender axle
full sonnet
#

its never a paa

#

Yes I did not add format conversion to WebP encoding

teal snow
#

? I encountered an issuie a while back with the config TI resolution.
I cannot recall if this was answered or not, but
opticsPPEffects does not work on vehicles TI optics
and I cannot get scripted PP effects to function when the player is in thermals

teal snow
#

my goal is to have low res thermals, but blur the Pixels like a crt from 00's

full sonnet
teal snow
#

Il double check

teal snow
#

I can confirm Scripted PP effects are not functional in either inf scopes, or vic scopes

full sonnet
teal snow
#

I was just debugging using the PPeffect test scripts while in the scopes

full sonnet
#

Well I need repro steps

#

Doesn't matter much how specifically

teal snow
#

1 - utilise pp effect test scripts that affect vision quality, blur, film grain
2 - in either infantry thermal scope or vehicle, flip between thermal and normal vision

#

they don’t appear in thermal regardless of priority

full sonnet
#

Thats not repro steps.

#

I need the scripts

teal snow
#

Ah, give me a few minutes

full sonnet
#

next week is fine too

full sonnet
#

Be me, troubleshooting why since recently the game throws an Assert at exit. Thinking I caused a memory leak.
I did indeed cause one with the PBO loading cleanup stuff. Ok fixed, but there is a second one, a DirectX resource?
But I don't understand... how.. I cannot see.. who... OH.. 😠

pallid cliff
#

Wait, what has Discord to do with that

full sonnet
#

Apparently it locks our rendertarget 🤷
It should only need that when its actually open, but it does it constantly

tulip bane
#

Sending angry report to them? 😅

full sonnet
#

Hello people, I need some statistics.

How large is your MPMissionsCache
How many files are in there
How many files are larger than 50MB, and how large are they combined

Please post numbers in thread 🫂 Hopefully I get like a dozen data points

teal snow
# full sonnet next week is fine too

sorry, sometimes life is shit, and other times it hits you out of no where when you least expect it like the isekai truck

["DynamicBlur", 400, [10]] spawn
{
    params ["_name", "_priority", "_effect", "_handle"];
    while {
        _handle = ppEffectCreate [_name, _priority];
        _handle < 0
    } do {
        _priority = _priority + 1;
    };
    _handle ppEffectEnable true;
    _handle ppEffectAdjust _effect;
    _handle ppEffectCommit 5;
    waitUntil { ppEffectCommitted _handle };
    systemChat "admire effect for a sec";
    uiSleep 3;
    _handle ppEffectEnable false;
    ppEffectDestroy _handle;
};
full sonnet
#

But, dynamic blur scripted PP effect is quite different thing from config TI resolution

#

TI resolution is not a extra pp effect, its directly integrated into the TI code

teal snow
#

What I’m trying to do is have a low res TI which I have fine, but I want to blur the pixels together like an old style CRT screen

lucid totem
teal snow
#

thats my issuie the effects done work when in TI

#

if you have the effect and toggle between normal and TI, it only affects normal vision

#

is there even a diffraction PP effect?

lucid totem
#

chromatic aberration* mb

teal snow
#

will look into it when it works with ti

lucid totem
#

I believe it won't work… but it would be a nice request for effects to work with TI/NVG hint hint @full sonnet 👀 :3

tranquil sphinx
#

^ I have a mod that pixelates UAVs based on the frequency of transmissions, but it also means I have to disable TI on all UAVs

teal snow
tranquil sphinx
#

It does yeah, it's just TI

full sonnet
#

The postprocessing code is

if (thermalVision)
{
DoThermalBlur();
}
else
{
DepthOfField();
RotationalBlur();
if (nightVision) NVGNoise();
DoScriptedPPEffects();
}

lucid totem
#

could it be this?```sqf
if (thermalVision)
{
DoThermalBlur();
}
else
{
DepthOfField();
RotationalBlur();
if (nightVision)
NVGNoise();
}

DoScriptedPPEffects();

tall pumice
#

^ that seems more correct

lucid totem
#

yeah, better indent 😄

full sonnet
#

Why does blur make it red?

#

I think the blur might use the thermal temperature encoded texture, before post-processing turns it into grayscale.
Which makes it kinda useless?

#

But if all you want is to blur the TI..
Thermal imaging has 3 integrated PP effects. Resolution, FilmGrain and Blur.
Just use the blur that's already there blobdoggoshruggoogly

#

ok I can do that though

lucid totem
#

it might break some mod's backward compatibility, but all there is to do is add TI check in PP effects if needed
I am genuinely all up for it

full sonnet
#

Now the dilemma, I don't want to add a script command.
And backwards compat might not be nice if people don't expect the pp to be inside thermal.
So make alt syntax for ForceInNVG that applies to thermal 🤣 ☠️

teal snow
#

That works great

full sonnet
#

Some PP effects (like resolution) don't work though without extra fixing.
Its a bit disturbing.
If I give Resolution the same code as dynamic blur (which works) then Resolution works in neither rendering mode.

Chrom aber looks neat in thermal

lucid totem
#

condensation in the thermal optic 😄

full sonnet
#

It seems any scripted pp effect that's added, disables the TI's internal blur.
probably because that's rendered to a different target :/ Which is annoying to fix

full sonnet
#

"SSAO" and "RadialBlur" seem to not work.. uh.. at all?
the waitUntil ppEffectCommitted never finishes.
Should I be worried about that?

The rest works now

lucid totem
#

Should I be worried about that?
I hope it's not a memleak waiting

full sonnet
#

Now the question on how to enable them.

  1. Just let them be always enabled (like they already are in NVG except the color ones) and see if someone complains
  2. re-use ppEffectForceInNVG, with alt syntax
  3. New script command ppEffectForceInTI ☠️ So wasteful

Probably just 1. on profiling branch and see if someone complains in a few months

slender axle
#

Would be interesting. We had a drone jamming PP noise effect that basically renders it unflyable within a certain range and you could get around it by simply flicking to thermal. We got around that by simply disabling thermals when it was in effect.

slender axle
# full sonnet Uh. I guess?

Man, all that shiny grass. The old thermals were really good before it got changed. Maybe it was bad for performance or something but visually was much better.

full sonnet
#

Only bad contrast

slender axle
#

Maybe? I can try to find a picture but I think the grass didn't stand out nearly as much as heated objects like vehicles/people.

full sonnet
#

Because the contrast was so bad you didn't notice. Because everything was so squished together that you could barely see the difference between ground/grass/tree

slender axle
#

Ah, yeah, if that's what you mean. It was preferable when they're squished so important things stand out more. I think that's actually a problem with navigating with thermal optics irl, especially in forest, that the ground is basically indistinguishable from everything else.

tranquil sphinx
full sonnet
#

Lucky that I fixed that one today

full sonnet
#

Mh.
Does it make sense that a headless client, processes addAction's script conditions..
Considering its not a real player and won't be executing any actions? Or could it?

Can action script command run addAction scripted actions? And would anyone try to do that on a HC?

And same thing for calculating cursorTarget
half a millisecond of frametime spent on addAction scripts and cursorTarget.. for a HC..

slender axle
halcyon moth
#

It's always the same computer, I think. Squad AIs get moved to the leader player's locality.

#

I have doubts that anyone ever considered the vectorDir of a headless client logic object.

#

The position is important, however :P

#

But yeah, it doesn't seem plausible that dropping cursorTarget and addAction functionality for HCs would hurt anyone's mission/mod.

#

Also the position really shouldn't be important :/

ebon quail
halcyon moth
#

IIRC one example is that the Fired and FiredNear event handlers only trigger on the headless client when it happened near the logic object.

#

Unlike on the server where it triggers everywhere.

jovial kelp
tall pumice
#

very random thought. APCs etc. when firing, eject casings ... which do not collide with the vehicle body. on a scale of 0 to 10, how easily could we bully dedmen into looking into this? 😄

lucid totem
#

you can also try bribing him with plushies and goodies

umbral orchid
#

there was physx particles attempted at one point but I think they just crash the game if you use them now, if they still exist, i dont remember

scenic trail
slender axle
#

Did more research on this issue. Seems like the window doesn't have focus (even when it seems to be focused in the game). Can confirm that's the case with this js code in the page:

    console.log(document.hasFocus());
}, 1000);```
That prints false into console until... I open the devtool console and focus my mouse on it, then it starts printing true and everything works. It's not just scroll issues; it also doesn't show the text caret when in a text input box as if the window is unfocused.

I wonder if setting key focus on the window on ctrl focus would fix it ala: https://partner.steamgames.com/doc/api/ISteamHTMLSurface#SetKeyFocus
(If that's already being done, maybe something to do with the iframe?)
full sonnet
#

I also tried scripts in the root window focusing the iframe, nope

slender axle
full sonnet
#

Why I don't work on AI issues.

Old ticket. "Character reports "No Fuel" when sitting in back seat of vehicle where they can't even see the fuel"

Repro: "Open the attached repro mission. Get into any passenger seat. Wait for a bit and see your character report "No Fuel""

Repro after an hour of fiddling around and struggling:

  • Get into back seat of Prowler
  • Wait for AI command to tell you to get into driver seat
  • Wait for game forcing you to driver seat (Note you will get stuck, unable to change seats to any other)
  • Wait for you to report "No Fuel"
  • Get out of prowler
  • Get into co-driver seat in Truck (Specifically that seat, other passenger seats don't work for this)
  • Wait for AI command to tell you to get into driver seat
  • Note how you fail to switch to driver seat, even though you have the action menu option. The "get in driver" command is now stuck/broken
  • Switch to truck driver seat manually
  • Wait for player to report "No Fuel"
  • Get out of truck and back into prowler seat. You can now stay in the back seat because the previous "get in driver" command is still active but broken
  • Wait a few seconds for player to report "No Fuel", there is the bug, player reported fuel even though he can't see the fuel state from that seat.
full sonnet
#

Simple fix really.
Add a if (!IsCargoSeat()) check before sending the "No Fuel" radio message.

But it doesn't work? Why?
Because the unit in the back passenger seat, is not in a passenger seat. Its in a FFV Turret.
The MoveToCargo command, sets a flag that player is in cargo seat.
But the MoveToTurret command does not, even if the Turret is a cargo seat.

Which opens up even more problems.
Have no radio on you.
Sit in the second-backmost seat on the truck. You still have no radio, you cannot use the trucks radio from a passenger seat, its all the way in the front anyway, too far away.
Move by one seat, you are now sitting in the back most seat of the truck, even further away from its radio in the very front.
But tadaa, you now have a radio because you can use the one in the truck, because you are not in a passenger seat anymore.

tall pumice
#

hemtt ammo truck has no exhaust 🤨

#

i never realized normal hemtt has a small exhaust, and boxtruck has a big one

winged plover
#

Maybe those are electric-hemtt

carmine juniper
#

I could've sworn I've reported this years ago and fixed years ago

full sonnet
#

TIL: p3d files store which element was selected in them when you saved 🤣

Someone fixed something about thermals on it 7 days later. And they didn't update their local files before making the change and committing, overwriting/undoing @rustic plaza's fix (AIII-46096)
I reopened the ticket, maybe we can fix it again

rustic plaza
#

haha, ok, I will fix it 😄

tall pumice
#

\o/

past moon
halcyon moth
#

Why even bother looking at that one tbh. I'm mostly amused by all my AIs serially reporting low fuel as soon as I get them into a vehicle.

full sonnet
#

I just stumbled upon some code...
The game has code to extract the bikey out of bisign files.

on client, when you do not have a bikey in your keys folder (which you mooost likely will not for mods), it grabs the bisigns of the mod pbo, extracts the bikey and registers them as the keys to be used.

I just need one line of code change, to make dedicated server just load bikey out of the bisigns in mod folder, and you don't need to put any files into "Keys" folder anymore, it will just automatically take all loaded mods..

ebon quail
#

Possible issue if the server loads mods as servermod it doesn't want the client to be able to load?

full sonnet
#

ah yes indeed.
So a few more lines of code to exclude servermod folders from it 🤔

verbal venture
#

But don't take away the ability to have keys in keys folder please

full sonnet
#

ilbi always making these bad faith arguments :U

verbal venture
#

wait for me to start working on our mods again, it will triple

past moon
full sonnet
#

Todays archeology diary.

There is a "Updating base class" error in vanilla data that I want to fix.
An addon uses a class that doesn't exist yet, and it doesn't list proper requiredAddons.
Lets find out where that is actually used.

Its 5 buttons (out of 6, one of the buttons uses RscShortcutButton, the other 5 use RscShortcutButtonMain)
In the pause menu.
Of the preview mode.
Of the oooold 3D editor.
Which can only be opened via a old "select terrain" window.
Which can only be opened via a main menu button.
The main menu button can only be clicked on internal game builds, otherwise the button is disabled.
The main menu button doesn't even exist in the main menu UI config.

If I change some code so I can get into the editor.
The editor has a red "OBSOLETE, NOT FOR RELEASE" banner at the top.
I need to go to preview mode so I can then pause it.
I cannot go to preview mode unless I place a unit first.

The placing unit menu is broken and doesn't show any placeable unit types.

If I change some code to open that pause menu anyways.
A script error pops up and the menu looks like this

lucid totem
#

that's… TKOH UI?

arctic fern
full sonnet
#

Is that known that in Russian/Japanese/Korean language, these error boxes do not show the actual error message, just empty space?

carmine juniper
#

Yes

#

Probably Chinese and ChineseSimp too

ocean sail
#

RPT prints error in Russian, but empty error boxes in game

tall pumice
#

font issue?

#

i guess the popup shows text with a specific font that can't deal with it correctly?

carmine juniper
#

Font and localization issue

lofty imp
#

Yes Chinese does that too (not racist)

carmine juniper
#

No I mean I am not too. I am Japanese

#

They just don't care how CJK font is incredibly unreadable, they didn't listen to me anyways, I am not interested to play this game in Japanese too

lucid totem
#

NANI??

carmine juniper
tall pumice
full sonnet
#

known

tall pumice
#

""Failed to load mipmap" popup in main menu if background world is Livonia"

#

my background world is stratis, though. and it's latest dev-branch update, not profiling

full sonnet
#

dev got the same stuff as prof.
Stratis is interesting though. Maybe I don't see it because I have world=empty

harsh orbit
#

empty is bad. use world=VR coolfrog

slender axle
#

Can confirm that the disableAI/enableAI "COMMAND" option works very well now.

#

Properly everts too when I re-enable.

mortal swallow
full sonnet
slender axle
full sonnet
#

k then we can leave that in

unreal arrow
carmine juniper
#

drawIcon3D without 3D?

pallid cliff
#

Multiline ?meowheart blobcloseenjoy

unreal arrow
#

Ja!

carmine juniper
#

I forgot it was a command already 😓

unreal arrow
unreal arrow
#

Make drawIcon3D great again!

unreal arrow
#

I will need a focus group to play with it when it hits dev, if there are issues Id rather they are sorted while still fresh

pallid cliff
#

I am in.

unreal arrow
lucid totem
#

urine for a treat!

lucid totem
unreal arrow
#

You need?

lucid totem
#

is it "simply" the above format, but in hashmap?

unreal arrow
trim crane
#

What drawIcon3D really needs is an ability to create it and then use a handle to modify or delete it instead of sending large scripted structure and have it parsed by the engine each frame

#

Map's drawIcon too actually

#

Using hashmap for arguments is a huge win though, other commands could use same treatment too (drop, setParticle*)

#

How I saw it:
NUMBER = INDEX drawIcon3D HASHMAP;

iconHandleIndex = -1 drawIcon3D createHashMapFromArray [
     ["texture", "..."]
    ,["color", [1,0,0,1]]
    ,["text", "some text"]
    ,["position", positionCameraToWorld [0,2,0]]
];

onEachFrame {
    if(iconHandleIndex >= 0) then {
        iconHandleIndex drawIcon3D createHashMapFromArray [
            ["color", [random 1, random 1, random 1, 1]]
        ];
    };
};
#

Or update something else as you need it

#

BOOL = removeIcon3D NUMBER to delete it

#

Maybe NUMBER = addIcon3D HASHMAP to avoid that -1 left operand

full sonnet
#

If we have binary alt syntax for drawIcon3D. Then we don't need extra add/remove commands.
Remove can be handled by alt syntax, by passing it empty hashmap/array

unreal arrow
#

drawIcon3d is parsed into structure internally when executed, then this structure is added to queue for drawing, once processed the queue is cleared together with the structure. With alt syntax, if you set icon alpha to 0 it will abort on the stage of adding it to structure, so it wont take any resources

#

hashmap set("@hardAlpha", 0) to stop it from drawing

full sonnet
#

We could also abuse the hashmap and not use another alt syntax.
on first draw, the drawIcon3D command edits the hashmap, to put the iconHandle into it.
And also read it out again to see if you're editing an icon when you run the command again.

Making them persistent needs backend work, but now that we have hashmap syntax its easy to add, just add a "persistent" parameter to the hashmap later, if we do it.

unreal arrow
#

Let's explore this option

#

Today I'm going to write format for what is there currently

full sonnet
#

Remind me next week (or assign me ticket) for the persistent thingy

unreal arrow
#

sure thing

slender axle
#

Is it just an alternative way to describe icon draws or are there performance benefits other than the 0 alpha short circuit?
I currently have a huge caching thing going on that reduces my per-frame to only what drawIcon3D has to draw. For example:

    private _laserIcons = uiNamespace getVariable ["WL_HelmetInterfaceLaserIcons", []];
    {
        drawIcon3D _x;
    } forEach _laserIcons;

And the icon array is populated on a slower schedule.
It would be nice if as mentioned above, I can simply update a hashmap instead of doing all this manually.

halcyon moth
full sonnet
slender axle
#

Is it maybe drawing to a non-main map?

cedar shoal
#

I used to be able to reproduce it somewhat reliably, about half the time I opened the dialog and it would crash to desktop, but it "resolved" itself a few days later before I had the ability to properly debug it, as in it became uncommon and not-reproducible anymore

halcyon moth
#

And then it turned up once in three months after I reduced the draw call spam and added icon pre-caching, but the issue's still there.

#

But yeah, even when it was bad it was never really replicable

cedar shoal
#

Im not convinced that one's us, a single crash can be anything

halcyon moth
#

timing though :/

cedar shoal
#

Mhm

#

I might pull out my old hardware at some point and see if I can replicate it again. The vague idea I got from the frequency of reports is that it was somewhat linked to bad specs >> poor framerate >> potentially overlapping calls of some sort

full sonnet
#

It definitely is an engine bug somewhere but it doesn't happen for me so 🤷

trim crane
#

Never had drawIcon crashes 🤔

#

I draw on both vanilla controls (main map, gps, terminal map, arty map) and own map controls

full sonnet
#

How would you know if your game crashed due to drawIcon or due to whatever else

trim crane
scarlet root
#

would it be feasible to add access to the engine own unit markers? (2d and 3d respectively)
that should be way more perf friendly, no?

[Feature Request] Add drawUnitIcon and family of SQF commands akin to GroupIcon
https://feedback.bistudio.com/T164042

#

while are at it KK, you may want to check also (requested repro was provided back then)

[Feature Request] Separate offset from group icon from 2d and 3d to their own parameters
https://feedback.bistudio.com/T170299

#

also related to this, yet good utility beyond that, would be to expose this directly from engine (which should exist in some form for engine 2d / 3d unit icon display)

[Feature Request] SQF command to return visible targets for an unit
https://feedback.bistudio.com/T168404

unreal arrow
unreal arrow
slender axle
#

Found a minor issue when testing gui: If you have a lb control in a display that when LBDblClick'd executes "_display closeDisplay 1", where _display is the display where that control is in, arma seems to steal your mouse such that if you ALT+TAB, your mouse is invisible unless you left click or do ctrl+alt+del to force regain mouse focus.

Replication code:

private _display = (findDisplay 46) createDisplay "RscDisplayEmpty";
private _lbox = _display ctrlCreate ["RscListBox", -1];
_lbox ctrlSetPosition [0.5, 0.5, 0.5, 0.1];
_lbox ctrlCommit 0;
_lbox lbAdd "Double click to steal mouse";
_lbox ctrlAddEventHandler ["LBDblClick", {
    params ["_control"];
    private _display = ctrlParent _control;
    _display closeDisplay 1;
}];
#

That made me wonder if whatever the game is using to register my input device is also stealing it in such a way that my CT_WEB_BROWER can never get the focus but that is also pure speculation.

unreal arrow
lofty imp
#

What !? This is amazing

hollow spruce
#

Circular progressbar would be amazing

teal elk
#

now with ctrlWebBrowser should be easyier 😄

unreal arrow
#

@pallid cliff

pallid cliff
#

@unreal arrow Will the 3den attribute (command) accept custom format now too?

unreal arrow
#

Was ist das?

pallid cliff
#

My own custom color attribute which will become redundant

unreal arrow
#

i havent changed the attribute it is still baseColor just added some trickery to set it from either combo or edit boxes

#

data update pending

pallid cliff
#

_marker set3DENAttribute ["baseColor", "#(50,13,50,60)"]
does work now?

unreal arrow
#

it should

pallid cliff
#

Great.

unreal arrow
#

will set it to white though

#

(1,1,1,1)

pallid cliff
#

yeah makes sense

unreal arrow
#

if you open 3den box on this marker it should show custom color in edit boх and default the combo

pallid cliff
unreal arrow
#

dev is very broken currently next week maybe

lucid totem
#

and how about the build?

pallid cliff
#

broken is gud. Means a lot happened 😄

unreal arrow
#

Is this normal?

tall pumice
#

clouds in vr, nice

lucid totem
#

nuke next patch?

past moon
unreal arrow
pallid cliff
mortal swallow
unreal arrow
#

yo dawg heard you like more custom channels

#

Revision: 153408

solid crown
lucid totem
#

C-C-C-Combo breaker!

slender axle
unreal arrow
#

+10

slender axle
#

Oh. Hm. That might not work fully for my use case but I’m sure others would find it helpful.

unreal arrow
#

how many do you need?

slender axle
#

Well there’s sometimes 8-10 squads per team when the server is full. So about 20 would work, maybe more to be safe. With ten more, that’s about 15.

unreal arrow
#

no it's 20 total

slender axle
#

I mean it comes close. And on second thought, I’ll probably write something to use it until there’s too many and then swap over.

solid crown
slender axle
unreal arrow
#

Adding more channels is not a problem if it won't cause performance problems

slender axle
#

I remember there was an explanation a while back why it wasn’t just an arbitrary number (or something high) due to performance issues.

solid crown
#

If you can, I'd maybe go for something like 50 channels in total. But I understand if it isn't realistic goal

slender axle
#

Instead, I run scripts that check player position (for direct chat), vehicle status (for vehicle chat), group (for group chat) etc every so often to unmute them when they’re out of squad chatting. 🤣

unreal arrow
#

I did some code optimisation around custom radio, however without actually testing it it is hard to tell how many channels are too many

slender axle
#

Well, we’ll use all 20 and let you know.

lucid totem
#

make it a description.ext setting, with 10 as default, and 99 a hard ceiling? :D

#

running away avoiding ninja stars thrown by KK for suggesting more complexity

unreal arrow
#

It is like adding 11 to the volume and hoping not everyone will go to 11

slender axle
#

When channels are added, what kind of overhead does that add? Processing on server, network bandwidth (when people are talking or all the time?)?

unreal arrow
#

Well processing network memory

unreal arrow
solid crown
#

Doesn't network usage actually drop if you have many (and more granular) channels with much less participants per channel?

lucid totem
slender axle
lucid totem
slender axle
#

Ah understood

lucid totem
#

it's an engine vs script middle ground, but IDK how much an empty channel weighs on the engine so it's up to KK

unreal arrow
#

It's a bit of a dead weight even if not active

lucid totem
#

and no "turn on on request" possible, right?

unreal arrow
#

Not the way it was implemented

#

The generic channels were aways meant to be so they were made static, then someone thought of custom channels, why dont we... oh wait, they are static, ok lets add more. So bye bye flexibility it went

late harbor
# unreal arrow how many do you need?

When I originally was working on something that needed more channels I needed one for every player, so about 50-60 and maybe even more depending on the mission.

#

But I'll probably won't work on that idea anymore so it doesn't matter for me 😂

ocean sail
#

Game prints errors in Protocol Apex campaign when join lobby
It starts after latest dev update, seems after changing color values to <null> in config

#

Also Config Viewer print error and shows incorrect config inheritance, seems after Dec update too

full sonnet
#

and shows incorrect config inheritance
where?

ocean sail
ocean sail
hollow spruce
unreal arrow
#

Yes and also #community_wiki (no need now I fixed) btw are you going to provide repro for jittery light point?

tall pumice
#

is it just me or is the config viewer broken now on dev

#

ok, i see i'm not the only one

halcyon moth
#

You mean more broken than usual?

unreal arrow
tall pumice
#

yes

#

it shows only a few entries per class

#

guess if it doesn't happen to everyone, I will start investigating

halcyon moth
#

The old issue I had is that it seemed to give up entirely when trying to display the deeper trees like pylons & turrets. Like the UI has a timeout.

#

Wasn't consistent. IIRC it was worse with RHS than vanilla.

hollow spruce
tall pumice
#

this is what i mean, btw

ocean sail
#

classes:
RscButtonNoColor
RscDisplayCampaignLobby

360 pcs of <null> values

scarlet root
#

Broken or missing defines in data repack? Or was always bad and more strict checking/different handling of "null" now?

full sonnet
#

I can reproduce the broken binarization with Arma 3 tools CfgConvert from January 2024 meowsweats

#

We were packing our configs with a version from 2015 until we had to update it for my "delete" changes.
So.. time to go digging, it broke some time in the last 10 years.

#

That doesn't explain the parent list thing though, don't know whats going on there

full sonnet
#

Random fun fact. CfgConvert has a -rvmat "optimization" mode.
All it does is replace useWorldEnvMap = "true" with useWorldEnvMap = 1

tall pumice
#

does it help

pallid cliff
#

Use hemtt for packing 😄

ocean sail
# full sonnet Random fun fact. CfgConvert has a -rvmat "optimization" mode. All it does is rep...

It reminded me that I can't turn off the 'enable damage' checkbox in the config without errors. Attribute is in : Cfg3DEN → Object → AttributeCategories → StateSpecial → Attributes → AllowDamage. Maybe something can be modified?
The following ways are successful but cause an error message after placvein Eden Editor:

class CfgVehicles
{
    class SoundSetSource_Sfx_Water: SoundSetSource_02_base
    {
        class AttributeValues
        {
            allowDamage="false";
            allowDamage=false;
            allowDamage=0;
        };
    };
};
21:41:36 Error in expression <_this allowdamage _value;>
21:41:36   Error position: <allowdamage _value;>
21:41:36   Error allowdamage: Type String, expected Bool
21:41:36  ➥ Context: allowDamage
21:38:25 Error in expression <_this allowdamage _value;>
21:38:25   Error position: <allowdamage _value;>
21:38:25   Error allowdamage: Type Number, expected Bool
21:38:25  ➥ Context: allowDamage
unreal arrow
ocean sail
unreal arrow
#

Right but why your parents array was different in the first screenshot?

ocean sail
#

oh, this was screenshot from biki, wanted to show where to look

unreal arrow
#

So you showed the correct parrents ?

ocean sail
unreal arrow
#

ok gotcha

tall pumice
#

i tested it without mods and had the same error as my screenshot further above

#

so it's not caused by mods

full sonnet
# tall pumice does it help

Yes, the binarized file is smaller and faster to load. The string one would run a script when loading it.
Which, due to how textures are loaded in the game, could well crash your game because we (used to) have no protection around the multithreading there until current prof branch
And even the current new protection is not enough for this on texture loading

tall pumice
#

ok, time to mass search&replace my files

full sonnet
#

In almost all cases = "true" or = true in configs is a mistake.
Which is why mikero silently replaces it for you without telling you, which breaks all your stuff if you intentionally try to do that

tall pumice
#

ok, thousands of lines replaced

#

but it seems to be like that even in a3 files?

full sonnet
#

Ah I recently even added optimization there that explicitly checks if the string is "true" or "false" and skips the script evaluating there.
But its even better when it doesn't even have to check that

tall pumice
#

i just checked some random a3 rvmats and it's always "true"

full sonnet
tall pumice
#

nice 😄

full sonnet
#

But we actually never applied that workaround to our build pipeline. There we run CfgConvertFileChng (which is required for rvmat's, it changes .tga/.png to .paa in the filepaths) which wasn't updated since 2009.
We'll get rid of that soonish

tall pumice
#

i believe we have lots of files with tga in the rvmat as well

#

and in p3d models ofc

#

does that have any influence?

full sonnet
#

I think the p3d ones are replaced by binarize.
The rvmat ones by binarize and CfgConvertFileChng. But not if you use CfgConvertSimple to binarize the rvmat

tall pumice
#

indeed, dont think i ever saw an unpacked p3d without paa in it

full sonnet
#

The game also has handling for when you try to open a .tga or .png, but that is a very big mess and you better try not to trigger that. That's part of binarize's handling intended for internal builds

unreal arrow
tall pumice
#

is it just me or is the model loading in the field manual really slow now? whenever i click on a vehicle that is somewhat bigger sized, my game freezes for a couple seconds

#

i'm pretty sure it was loading instantly last time i checked

harsh orbit
#

also I noticed that the first time I open my ADT mod's console, it's become really slow and freezes for several seconds (maybe it's the same as Lexx's issue).
it did freeze the game before too but only a few dozen microseconds not several seconds

tall pumice
#

another thing is, i am getting spammed with this:

#

i wish it would tell me what exactly "this shape" is

near carbon
full sonnet
full sonnet
#

Sending a command to a pylon on a vehicle.

Option one:
_vehicle pylonCommand [pylonIndex, actionName, params] and params probably a hashmap
Option two:
_vehicle action ["PylonCommand", { action: "actionName", pylon: "pylonIndex", params: {...}}] with hashmap

option two sounds nicer because it doesn't need new command 🤔
And it does seem logical to use action command for performing an action on a vehicle.
But it would also be new and perhaps unusual?

There would for example be one for SearchLightOn, which is already an action too.

#

Mh though downside, action command cannot return anything. So couldn't use it to get information from the pylon.
To return information I could modify the hashmap content but thats also a new weird thing of having a command edit a container? And what if that container is read-only, all kinds of rabbit hole.

Maybe new command is justified for this

tall verge
#

I vote for pylonCommand because getting info returned would be great. Even just a true/false if pylon successfully fired or something

unreal arrow
#

But it would also be new and perhaps unusual?
no lets do it

tall pumice
#

actions on pylon? what would that be?

#

animations etc?

tall verge
#

Hopefully something like force-fire pylon, jettison pylon, (maybe even set pylon's weapon, set pylon's ammo as an alternative to setPylonLoadout)

unreal arrow
raven mist
# unreal arrow

Does this also mean the limit of custom channels won't be 10 anymore? feelsrunning

full sonnet
lucid totem
#

stop having fun in the engine keep going dammit!!1! praise_the_sun

pallid rover
#

I just want to ask in relation to this #creator_dlc_discussion message message which is in relation to the automatic detection of CDLC ownership and if not owned the installation of the Compat for that CDLC. Was there anything done in this regards (I know, nothing was mentioned in the changelogs, but maybe in the background).

full sonnet
#

yes. Afaik its currently active in dev-branch Arma launcher

#

if you do not own it and try to load it, you get a popup asking if you want to subscribe to the compat data instead

tall pumice
full sonnet
#

Guess you'll have to make another update next year 😄

lucid totem
#

post-release update time!

tall pumice
#

how would this work if you already have a camera on the helicopter / plane?

full sonnet
#

The pod overwrites

tall pumice
#

does the pod take precedence or do you swap between them

#

ah ok

#

well sure, i'd throw that in the moment this becomes available for public

full sonnet
#

I guess one could turn it on/off to swap around 🤔 But that's not planned yet. Not sure if I want to invest that

tall pumice
#

probably would be waste of time

#

there's probably a new update going to happen next year anyways 😄

raven mist
pallid rover
full sonnet
#

It should, but the main thing missing is testing, could be broken

pallid rover
#

I could provide some screenshots if needed, but if it's currently in testing then the tester should see the same result as I do, probably.

full sonnet
#

No its not in testing

#

it needs testing, but its not being tested

pallid rover
#

Ah oki, understood it wrong then.

unreal arrow
#

Next dev +40 custom channels. Now a question... When typing on custom from chatline, the name of the sender is not shown, how do you know who is talking?

tall pumice
#

you feel it

viscid onyx
unreal arrow
unreal arrow
viscid onyx
#

fitting it into radioChannelInfo might be awkward though 🤔

unreal arrow
#

why?

viscid onyx
#

Depends how you implement it I suppose 🤷 just seemed like it might be awkward to add it to the array in a way that both makes sense and is backwards compatible (e.g. can't make callsign or label return an array). You could stick it on the end, no technical reason why not but it feels odd that it's not with the other callsign stuff.

unreal arrow
#

+1 array element to radiochannel create +1 element in return array

#

bool true - copy callsign, string - own von callsign

#

or just string for simplicity

#

can copy yourself

viscid onyx
# unreal arrow can copy yourself

Would the auto-copy only copy the initial callsign, or would it update with changes from radioChannelSetCallsign? If it would update, then I think that's potentially valuable to have since this isn't being added to radioChannelSetCallsign

#

If it wouldn't update, then string only makes sense. Default ""?

unreal arrow
#

good point, then bool copy should autocopy and autoupdate with setcallsign

#

default "" should do what it does now

#

The message will need to be altered so whatever makes it easier

unreal arrow
#

@viscid onyx am I imagining things or was there a small speaker icon next to speaker at some point?

viscid onyx
#

There is a small speaker icon in the bottom left (next to the channel name, see pic in ticket) when you're transmitting VON

viscid onyx
unreal arrow
#

I just did something and Von became voice activated is that a thing?

viscid onyx
#

There's a keybind in the settings for "Voice Over Net" (distinct from "Push To Talk") which claims to activate VON "permanently". I've never bound it so I can't really confirm, but given that VON does have a certain amount of voice-activated-ness even when using PTT, that might do it

unreal arrow
#

ok mystery revealed, it is PTT toggle, and the noise of my fans kept the transmission up, until i lowered sensitivity, then it was picking up only voice

unreal lava
#

The placeholder mesh better be a bright glowing red error word MillerTarget

unreal arrow
tall pumice
unreal arrow
#

@viscid onyx Why do you want to be able to change VoN callsign?

#

I mean dynamically

#

I don't understand why these separate commands for label and callsign exist let alone are global

#

maybe, and that is big maybe, if someone wanted to reuse the channel, since there were only 10 and you could not delete and recreate...but we have 50 now, it is just extending radiochannelcreate is easier than making it a full feature

#

Ok, after thinking about it, we are going to decide between new radioChannelSetCallSignVoN or extending radioChannelSetCallSign to take array [callsign, callsignVoN]

viscid onyx
# unreal arrow <@137672072821211136> Why do you want to be able to change VoN callsign?

I don't specifically want to change it after creating the channel. I did say it was probably pretty niche and might not be important, when you asked me before. But radioChannelSetCallsign exists, so it makes sense to me to have the same ability for both displays of the callsign, otherwise they could become out of sync.

The original request, btw, was just for the ability to make the VON indicator show the existing channel callsign, not to have a separate callsign for VON.

unreal arrow
#

If we decide on altsyntax radiochannelcreate will take array or string

#

if I'm going to add it might as well make it flexible

#

it is another variable in message either bool or another callsign, might as well be a callsign

teal elk
#

There is a way to have a way to block global comands to be used in global env?

I guess is hard to know when a command gonna be executed globally, but will be a nice QOL for inexperienced editors

teal elk
raven mist
teal elk
#

if !(isserver) exitwith {} solve it basically

raven mist
teal elk
#

make global commands "dumb-prof"

#

for inits, triggers... etc

raven mist
#

Uh, I mean I just don't really understand what you mean. Triggers can also be local.

teal elk
#

but also not...

#

there is no warning or something if you put a "playsound3d" in a global trigger

raven mist
#

From an AC standpoint I could see it potentially being useful but just still not really seeing the point tbh. If you're that worried about something like that, you could just disable the command and only allow server to handle it

teal elk
#

if you disable the command, you cant use it in the right way either

raven mist
#

Again really just not understanding your use case lol.

viscid onyx
#

I think they want a safety against people executing Global Effect commands on all machines at the same time, causing duplication.
But a) machines aren't aware of whether other machines are running the same command at the same time, and b) sometimes duplication is intentional

#

Triggers aren't actually a special "global environment", there is no such thing. There's just a copy of the trigger on every machine.

raven mist
#

Ah okay cheers. I think perhaps that's what I wasn't getting. A3 is super client authoritative and pretty much anything is possible via memory which makes hosting a large public server without in house AC absolutely impossible so I am sure something like that would be great security wise- just doesn't seem super feasible

viscid onyx
#

It's not a security issue, it's a scripters-not-understanding-global-effect issue

#

If you're putting code in the code fields of a trigger, you must already be the missionmaker, it's not cheating

teal elk
#

yea, this can be seen in the sqm, so a little warning on inits or triggers, should be easy to implement ( also color code in the inits will be a really good QOL lol )

raven mist
viscid onyx
raven mist
#

Or were you saying code arguments for a script in mission?

viscid onyx
#

Okay, look.
Editor init fields, and trigger code fields (unless set to server-only) can execute their code on every machine. There is a common mistake made by missionmakers, where they put Global Effect commands in those fields, intending to have code only run once, but actually making it run a lot of times because it's Global Effect and it's being run by every machine in the game.

#

What FlyingTarta wants is a safety system in the Editor, which warns people that they're using a Global Effect command in a code field which is going to be executed by every machine.

teal elk
#

Milo you are overcomplicated things lol, we are talking about dumb mistakes, not memory injection cheats lol

viscid onyx
#

Editor code fields already do some basic error-checking of code you put in them, but I'm not sure that the parser actually has access to definite information about a command's locality. I don't know that commands have some clear flag that says "I'm global effect" in the engine, they just...work how they work when you use them. So I'm not sure how practical it would be for it to detect Global Effect commands.

raven mist
viscid onyx
#

The parser also isn't necessarily very context-aware, so even if it could be done, it might still flag things that are actually protected by locality checks like isServer, or commands that are deliberately being executed everywhere, or commands that are protected by the trigger conditions, which would be quite annoying

teal elk
#

the "global" commands can be just a hardcoded list lol

viscid onyx
#

...and now someone has to compile and maintain that list. It might happen but I'm not sure how likely that is.

teal elk
#

yea, might be a good feature to 3den enhanced more than the base game

#

an init-enhanced mod will be nice too

unreal arrow
#

❗ Does ACRE radio item go to radio inventory slot?

gray quarry
viscid onyx
#

ACRE does have a "fake radio" item that goes in the radio slot, but I'm not exactly sure what it does. It might just be there so the game lets you use side chat etc. The radio items with actual ACRE radio functionality don't go in any slot.

unreal arrow
teal elk
viscid onyx
unreal arrow
#

Yes ACRE checks for ACRE, but how are you supposed to know there is a radio item if someone is using ACRE

viscid onyx
#

By using the ACRE "has a radio" function. It's an SQF function that appears in CfgFunctions, anyone can use it if ACRE is loaded

unreal arrow
#

So if I am mission maker and I have no idea who is going to use my mission, I somehow have to still assume that someone might be using ACRE and bend over backwards to search for their function if there is?

viscid onyx
#

I mean most missions don't need to detect whether you have a radio or not; either they'll specifically give you a radio/prevent you from having one, or it doesn't matter.
But yes, if it matters whether a player has an ACRE radio, and you're not in control of it, you will need to specifically check for ACRE radios. There's no single one-command solution that works for both ACRE and vanilla.

#

You could make your own function that looks for radio items rather than depending on the ACRE function being present, but you'd still need to have it look for ACRE config attributes

unreal arrow
viscid onyx
#

I'd argue that's a fault with the kbTell function for explicitly hard coding that specific item name, instead of checking for items with simulation radio/ability to go in radio slot

#

Like I mentioned above, ACRE does have a fake radio item that goes in the radio slot, which doesn't act as an ACRE radio but is used to allow for engine features like side chat requiring a radio item. A more flexible method in the kbTell function would probably detect that and work fine.

unreal arrow
#

as I commented in the ticket, will be adding slot check, but also one can set scripted even handler to bypass radio check

halcyon moth
#

Ah actually we just disabled the radio checks for ACRE :P

past moon
#
Bohemia Interactive Forums

Release Candidate Branch Announcements - posted in ARMA 3 - GENERAL: In this thread well post announcements about Release Candidates (RC) of future main branch updates. That includes the opening of the RC-Branch ahead of an update, possible change logs between RC updates and details on (multiplayer) stress tests. This thread itself will remain closed to allow for a clear overview of announcements, please feel free to discuss this branch here.

teal elk
#

so after i made an ctrlmap ui2texture to be able to draw a progress bar and progress icon in a drawIcon3d texture... progress bar are added to drawicon3d meowhuh

at least my code have an box that fills with progress

full sonnet
mossy cloak
#

With how promise handles are being added, would it be possible to look into this or something similar?
https://feedback.bistudio.com/T171265

It's been something I've been looking for for a while, and have run out of ways to secure active scripts from cheaters, which this would open up quite a few options.

full sonnet
unreal arrow
viscid onyx
full sonnet
#

Also no longer true with empty handles/promises. That are not done, are not null but also not scheduled

unreal arrow
viscid onyx
unreal arrow
#

what would stop script kiddie from removing this EH prior to adding their script?

mossy cloak
unreal arrow
#

Ask @full sonnet to make nonremovable

lament crow
#

Password protected EH removal 😅

mossy cloak
#

That would be amazing to be honest

full sonnet
#

spawn your own script, if EH doesn't fire, tadaa someone removed it

viscid onyx
#

getEventHandlerInfo would also tell you that.

I'm not sure that knowing it's been removed solves the issue of it having been removed. You still have some unknown script on the loose which has already bypassed any security measures you might have had in the EH.

#

It would be handy if EHs could be individually restricted in CfgRemoteExec etc so you could prevent anyone but the server from manipulating it. But I recognise that's probably not possible

full sonnet
#

Anti-cheat wants to detect players cheating.
You know they're cheating when they disabled the anticheat

#

It would be neat if CfgDisabledCommands, can disable commands to be used locally BUT allow it if it came from a remoteExec from the server 🤔
But cheaters can still bypass it, they don't care. So not worth the effort

full sonnet
#

eventHandler for when a eventhandler is removed 🤣

mossy cloak
upper radish
solid crown
#

Recursive event handlers mindblown

mossy cloak
#

We already had that with scriptError once upon a time blobcloseenjoy

mossy cloak
teal elk
#

let something to arma4 notlikemeow

lucid totem
#

no, this way Arma 4 will have to be beyond wonderful! blobcloseenjoy

tall pumice
#

what's up with that tower

#

looks like it only loads the last lod?

tall pumice
#

a3\structures_f_exp\data\glass\destruct_full_window_set_dark_2_CA.paa seems corrupted, which causes lod0-5 not to show. lod6 doesn't use the material, so there are no issues. also because of this, the mission loading times increase. texture needs to be rebuild and all should be fine.

#

tedious to find out, but ez fix

gray quarry
#

regression/accident?

full sonnet
#

The texture file itself that I have in my pbo looks fine in TexView and the lods seem to be there 🤔

tall pumice
#

yup, texture itself was no issue. but once i rebuild the paa from tga, the issue was fixed

#

tested this on 2 different machines, so it was probably not a game file verification thing

tall pumice
#

i just verified game file again, just to make sure - issue persists. dev-branch

waxen vigil
#

mandatory checking dev build once in a few months just to see if there's a shocking breakthrough or not

#

or surprises

tall pumice
#

i havent really used stable in like 10 years or something

pallid cliff
#

Profiling is love

unreal arrow
pallid cliff
#

True

pallid rover
ebon quail
full sonnet
#

Imagine you could change the color of the Sun/Moon 🤣 Oh what fun could be had

pallid rover
arctic fern
ebon quail
#

The tower one specifically relates to us repacking the entirety of a3 data,

arctic fern
#

Ah, binarized LDP on the way soon™?

ebon quail
#

uncovered some interesting issues regarding missing files that have just "survived" in a cache for years even tho no longer included in the source data

lament crow
#

Anyone knows if the moon in A3 has the same property as the sun to generate dynamic shadows? I've only seen it working like that in the Contact campaign I believe

tall pumice
#

moon doesnt do shadows

arctic fern
#

Meme stolen from boberro

lament crow
tall pumice
#

problem is that night time has more light sources and if those dont cast shadows, it becomes more obviously janky

#

shame we cant have some sort of light overdrive feature where more objects can cast shadows

hollow basalt
#

what ya'll talking about?

lament crow
carmine juniper
full sonnet
full sonnet
#

It seems like it yeah. We should just make that available in retail maybe

carmine juniper
#

It is, but it requires utterly chaotic config to work properly

#

You can't just "hey please make the sky red" with that diag command

#

But "hey please replace the entire lighting"

leaden heron
#

I'm able to make zones on the map where the whole lighting changes for the player

#

and It can also transition smoothly into the lighting

leaden heron
unreal arrow
scarlet root
#

on that note you guys could also look into the various diags with simulWeather - some may even work and be useful to expose to diag/retail

#

@leaden heron kudos to the system and interface 👍
way back i tried a similar (more limited scope), yet we couldnt quite figure out the exact conversion - was working for most cases, yet not 100%

#

(that said our target was sqf<->config - is yours purely sqf or also for terrain export/import?)

leaden heron
#

the only thing is the gui on this tool I made not dynamic so it dosent work on some monitors

#

If someone could fix it then I would like to release it

scarlet root
#

@pallid cliff to the rescue 🙏

pallid cliff
#

If it's OS then maybe

leaden heron
#

I'll send you a dm

lament crow
#

When will the "answer to everything" be added back? Can't play without it anymore 😅

unreal arrow
#

roll back to v42

hollow spruce
#

Can you add another option to playSound3D
for attaching the sound to the source so we dont need to create a loop? 🙏 🙏 🙏

viscid onyx
hollow spruce
viscid onyx
viscid onyx
#

I think there's probably a fairly fundamental reason why say3D has object following and playSound3D doesn't. It seems more likely that say3D can be expanded to have looping, than that playSound3D can be expanded to have object following. But I could turn out to be wrong 🤷

hollow spruce
#

But playSound3D has more parameters like volume etc

glossy zodiac
#

I guess to be more accurate with my question, is this done via a config change or a script?

lament crow
hollow basalt
#

stratis, vanilla

tall pumice
#

probably not true anymore. i had to double check as well, and indeed, the full moon is casting shadows

#

but that's the issue, i guess. it only happens with the moon out. once it is gone, shadow is gone too, which happens quite a lot every ingame month

leaden heron
#

We need dynamic shadows hmmyes

tepid dock
#

once it is gone, shadow is gone too
Eh... Um... isn't it how the real world is supposed to work as well, or am I missing something? 😅

tall pumice
#

i mean yes. but you can still have a bright terrain

#

it acts like cloudly sky then, where shadow disappears but you can still see ofc

lament crow
lament crow
hollow basalt
#

you can only have one light source at a time atm (casting shadows), sun or moon.

lament crow
broken fern
lament crow
broken fern
#

I was talking about the "where I live" part.

lament crow
#

I heard that in the UK they only see the sun a few hours each month... if they are lucky

hollow spruce
unreal lava
#

Plz

#

If it was a flag in createlightsource it would be down to the modders to optimize on priority shadow casting lights vs non shadow casting

tall pumice
#

oh no, i dont trust modders with optimizing anything

tall verge
#

How did DayZ do it? Or is that a byproduct of its hybridization with Enfusion stuff?

lucid totem
unreal lava
#

just imagining cytech underground terrain with a couple shadowed lights in the main areas for extra atmosphere, would look siiick

arctic fern
tall verge
arctic fern
#

Gave up on DZSA earlier this year and uninstalled tbh

arctic fern
#

But DZSA is still an RV3 game with changes. 1.0 and earlier components from Enfusion were just the script API, renderer and animation system - the last came in 0.63 (0.61 still used RV rtm files only).

leaden heron
#

I actually wonder how much work it would take to implement it into a3 and if there is any docs from dayz which would help

arctic fern
#

I know Dwarden has advocated for that but I believe that Dedmen said that it isn't that easy. Then again, BI would have to approve it and not sure that they want ARMA 3 with better graphics at this point given their focus...

tall pumice
#

a3 with better graphics would give it 10 more years of life

arctic fern
#

And that is probably something BI management don't want...

tall pumice
#

not something you'd want as competition for reforger/a4 i guess 😄

arctic fern
#

Shame that that is a factor on deciding whether to make their best game ever even better...

halcyon moth
#

The graphics are already the least bad thing in A3 IMO.

#

Well, except the night lighting :/

arctic fern
halcyon moth
#

Now that 2.20 has much better perf, my top 10 are mostly AI related. But there's also serious networking usability problems like lack of NAT hole punching, missing logging of disconnect reasons and signature verification kicks for minor packet loss.

leaden heron
#

To be honest dynamic shadows make the graphics better but only for the night time, it wouldn't really change the look of the game itself and I think almost everyone of the arma 3 players will buy arma 4 when it comes out

arctic fern
#

Reforger doesn't...

leaden heron
#

Even tho I still prefer arma 3 over reforger I still bought it and played it a bit and surely others did as well but I can only speak for myself here

#

And I think getting a small hype for arma 3 again will benefit bohemia and arma 4

arctic fern
#

Same. But I just don't regard Reforger as an ARMA game...

#

The improvements in the modding tools are very welcome and nice but the switch away from SQF in my opinion sort of stinks...

solid crown
#

Object orientation and static typing (!) are lovely features once you get used to them

arctic fern
#

Higher entry cost for new modders, loss of a specifically ARMA function library built over 20 years, introduction of a language where every variable is global, the need for porting every single piece of modded code from all versions of ARMA including many very good full conversion mods...

unreal lava
arctic fern
#

That and no light leakage through walls too

hollow spruce
#

enhanced lighting dlc, i would buy 😄

tepid dock
arctic fern
#

Except the infected that are so easy to deal with lol

#

And food is not an issue thanks to loot bloat

tepid dock
#

Yeah, the infected in Australia tend to leave you alone

arctic fern
#

Except for toilet spiders 👀

tepid dock
#

This sounds like a job position 😂

scarlet root
#

@ebon quail are you doing by chance a file ref check with the "data reorga"? aka to determine missing files (ie still some with radio protocol, or other audio still remain)

ie via regex on cpp, rvmat and sqf, and moveObject on p3d

ebon quail
ocean sail
ebon quail
ocean sail
ebon quail
unreal arrow
#

Automatic Reporting... notlikemeow

ocean sail
#

Add one subordinate to player group, exec:

(group player) setBehaviourStrong "COMBAT";
(units group player # 1) addItemToVest "HandGrenade";
(units group player # 1) forceWeaponFire ["HandGrenadeMuzzle","HandGrenadeMuzzle"];

After launch Arma 3 with mod contains code:

class CfgAmmo {
    class Grenade;
    class GrenadeHand:Grenade {
        hit = 10.00001;
    };
};

Then unit will do radio report frag out

ebon quail
#

He was able to repro after all, Automatic Reporting in difficulty settings turns off those radio messages sadcat

ocean sail
#

oh got it

full sonnet
#

Ah like hashValue spawn {} to hash the handle, yea. And then also include the same hash in the eventhandler? But what for

glossy zodiac
full sonnet
#

@mossy cloak judge

addMissionEventHandler ["ScriptSpawned", {hint str _this; copyToClipboard toJson _this;}];
0 spawn { 
 systemChat str diag_activeSQFScripts; 
};
["",
" \n systemChat str diag_activeSQFScripts; \n", // Content as string
"AAAAAAAAAAA", // Hash value of handle (I still gotta fix that)
"", // Filename who spawned this script (if from a function)
2, // Line number who spawned this script
"addMissionEventHandler ['ScriptSpawned', {hint str _this; copyToClipboard toJson _this;}];\n0 spawn { \n systemChat str diag_activeSQFScripts; \n};", // Script content of the script that spawned this script
93 // Bytes from start of that script, where the spawn happens
]

Because you need it for anti cheat, I assume its important to see who spawned a thing
could maybe also add remoteExecutedOwner (though.. I think you might have that available in the eventhandler)

mossy cloak
# full sonnet <@226159903356616705> judge ```sqf addMissionEventHandler ["ScriptSpawned", {hin...

This is actually more than I could has asked for to be honest. Having the ability to utilize this is a very big win.

The remoteExecutedOwner would be nice as well, you'd be able to debug scripts that may be sent over the network too often, or maybe when they shouldn't be.

As for what I would be doing with the hash, would be able to cache anti-cheat scripts and either ensure that script is always running via client, or potentially have it heartbeat to server checks. Having it shown in diag_activeSQFScripts would be great as well, would make it easier to scan for.

I have implemented a bunch of things in similar ways already, but there is one way they can cheat that I cannot solve, however this would make it near impossible for cheaters to spoof it and would solve the last issue I have with security.

full sonnet
#

But I don't want to add remoteExecutedOwner if you can already get it anyway.
And I don't want to spend the time to set up a multiplayer game to test it

full sonnet
#

It'll land on dev-branch next week, you can tell me if it doesn't work and I'll add it then :harold:

full sonnet
#

huh there's a slight, maybe unexpected.. mh.
diag_activeSQFScripts returns filename and line that the script is currently at.

But that returns also the name/line if its currently inside a call in some sub function 🤔
Is that unexpected, I was thinking you might want the line in the root script

lament crow
# full sonnet No its still one.

I guess that adding one more, like the closest light source to the player ie flashlight/headlights would be way too expensive? 🙄

lucid totem
#

and if someone brings yet another flashlight, poof the first one disappears

mossy cloak
lament crow
lucid totem
#

and I offered you a case showing its limit

lament crow
# lucid totem and I offered you a case showing its limit

Well yes, when I said "closest to the player" I actually meant the lightsources local to the player without considering lightsources not generated by the player. If someone else brings another flashlight closer we don't care since only the player's matters in the calculation

full sonnet
#

The closest light source wouldn't even make sense.
It will be your gun or headlamp, which is very close to your eyes.
Meaning the shadows of it, would be in areas you cannot even see.

You want to generate shadows that aren't even visible to the player?

lament crow
#

The whole idea is to create the ilusion of dynamic lightning with the least amounts of extra "suns/moons" while also not adding anything extra that requires netcode changes, just local and visual to the player

tall pumice
#

could be limited to other cfgvehicle classes i guess. preferably soldier and vehicle

#

but question is if that approach would really be worth it. you will still have lots of odd looks at night time.

#

basically, as long as light shines through objects, there will always be issues

lament crow
arctic fern
#

Best thing is for BI just to make a new renderer... problem solved 💡

#

Would "probably" get a massive influx of ARMA 3 players generating massive interest and who'd all "probably" buy ARMA 4 when available

unreal lava
hollow spruce
lament crow
mossy cloak
# full sonnet <@226159903356616705> judge ```sqf addMissionEventHandler ["ScriptSpawned", {hin...

Would be neat if it would provide the script handle as well in the handler, so there would be a possibility of terminating a scripts as they are run, but I imagine you may not want that for security purposes.
Having all of this would allow us to have more control over what could actually be run, and exclude anything not created in specific pre-defined contexts, or have the ability to pattern search for unwanted things.

I very much appreciate you and all the developers for still working on A3. It's keeping me interested in actually utilizing the increasing amount of tools you keep giving us.

full sonnet
#

We don't provide it in diag_activeSQF thus we won't here either

full sonnet
#

You tell a pylon to do something.

Any = pylonAction [vehicle, pylonIndex, actionPath(, arguments)];
Any = pylonCommand [vehicle, pylonIndex, actionPath(, arguments)];

?
Its kinda like an action but with return value, so Action makes sense, and works similarly (multiple actions in one command, by giving the name)
We also have ctrlWebBrowserAction which works similarly (multiple things in one command)

I originally planned Command

#

I thought about making arguments a hashmap, but that is a waste when there is only one. So arguments will just be specific to the action

full sonnet
#

We do all love Arma.
That is why all pylon pods being backwards (facing south when aircraft faces north) does not cause a existential crisis harold parrotexplode

Turns out all proxies are reversed, and I forgot that when doing https://feedback.bistudio.com/T190789
So now we have the orientations wrong in 2.20.
But we can just fix it again in 2.22, surely KJW is the only one using it

halcyon moth
#

As long as they fire in the right direction

#

We don't even bother to sync the pylons in MP :P

full sonnet
tall pumice
#

why were they inverted in the first place

#

surely it would have been easier to rotate the model than rotating them in code?

full sonnet
#

All proxies on transport vehicles are apparently reversed?

gray quarry
#

wild

harsh orbit
umbral orchid
#

im pretty sure the vast majority are yeah

#

atleast if you check the reversed config property

strong rose
#

Hi, I wanted to ask.
Is it possible to add a mouse sensitivity coefficient command? Or is it difficult to implement?

So that I could change mouse sensitivity via a script. For example, to decrease sensitivity while sprinting. Or change sensitivity based on weapon weight.

carmine juniper
#

Weapon handling related command? Sounds nice tho...

teal snow
#

Has dev branch been updated recently? Been wanting to test some of the changes?

teal snow
mossy cloak
# full sonnet <@226159903356616705> judge ```sqf addMissionEventHandler ["ScriptSpawned", {hin...

Doing a bit of testing with this, have a few notes, but seems to be working as intended.
The first index in the params seems to only be "" except in 2 instances, not entirely sure what it's supposed to represent.

It would be great if we could see the creation source of scripts, like from an addAction, remoteExec, or some config onLoad/onUnload event etc. Having a parameter showing the source context saying that it originates from a special case like these would be beneficial.
As of right now, the 3rd parameter will return an empty string in these cases, which is to be expected, but would not be able to be capture the full context of what's happening like above.

Other than that, I don't see any improvements in this as of right now.
Script below is one I'm actively changing and using to test cases that this event could be utilized for, unsure if it would be useful for anyone in here

#if __GAME_BUILD__ >= 153496
test_scriptRecords = [];
test_flaggedRecords = [];
addMissionEventHandler["ScriptSpawned",{
    params["_unknown", "_content", "_handleHash", "_originFileName", "_originLineNumber", "_originContent", "_originByte"];
    ([
        "private _fnc_scriptName ?= ?'(.*?)';",
        "scriptName ('.*?'|"".*?"");",
        "#line \d (.*?)\r?\n"
    ] apply {
        (_content regexFind [_x] param [0,[]] param [1,""] param [0,""]) trim ["""'", 0];
    }) params ["_spawnedScriptNameHeader", "_spawnedScriptName", "_spawnedScriptLocation"];

    _spawnedScriptName = [_spawnedScriptNameHeader, _spawnedScriptName] select (_spawnedScriptNameHeader isEqualTo "");

    if (_originFileName isEqualTo "") then {
        test_flaggedRecords pushBack [_spawnedScriptName, _spawnedScriptLocation, _unknown, _originContent, _content];
    } else {
        test_scriptRecords pushBack [_spawnedScriptName, _spawnedScriptLocation, _unknown, _handleHash, _originFileName];
    };
}];
#endif
full sonnet
#

Or I think it was, don't remember now..

#

Creation source.. is in there.
Oh that you mean, we don't know that, I can't do that. I give you the location where it was spawned tho, which besides remoteExec should show you.
Have you tried remoteExecutedOwner yet?

mossy cloak
halcyon moth
#

(except for headless clients as usual, I imagine)

mossy cloak
#

Can test that when I get home

teal snow
teal snow
mossy cloak
# halcyon moth (except for headless clients as usual, I imagine)

Thats actually interesting. Having multiple clients test it, as well as a headless client, only the headless client is not seen as a remoteExec, and the remoteExecutedOwner is 0. I verified the same code running on every client/headless client with the same input as well.
I've never really looked too far into headless clients, but I'm surprised its different.

halcyon moth
#

According to the wiki it's intentional. But I've never personally run into a case where it was beneficial rather than a pain in the arse.

full sonnet
teal snow
full sonnet
#

Post, I'll see it then

reef bobcat
# full sonnet Post, I'll see it then

While updating my effects-related mod, I noticed an issue:
after modifying config files or SQF scripts, when I first launch the game, the updated effects sometimes do not display at all (nothing appears). However, after triggering the same effect multiple times (usually 3–4 times), everything starts working normally.

I am not sure what causes this behavior.
Could this be related to some kind of internal caching mechanism in the game, or is it possible that materials or textures are not fully loaded during the first attempt?

Initially, I suspected that frequently force-closing the game might have corrupted game files (does Arma 3 even suffer from this kind of issue?), but after reinstalling the game, the problem still persists.

full sonnet
reef bobcat
compact salmon
#

How does the launcher recognize if a mod on the server is the same as the one I have from workshop? I'm subscribed to CBA_A3 and the server is also running CBA_A3 (using an exact copy of the folder I got)....yet it tells me that the server requires Community Base Addons, says that the mod is not loaded and an "unidentified mod" yet under the "additional" tab it correctl sees that CBA is "loaded" and has an "Allowed Signature"

#

What do I need to do on the server to make the launcher realize that the "unidentified mod" on the server is in fact the mod that the user has loaded?

teal snow
#

Im not sure if this is known or not, when in 21:9 or 32:9 aspect ration, when tilitng the camera by leaning, or rolling an aircraft the whole game render display compresses inwards a noticable amout, I first noticed it on an ultrawide monitor, but im just playing superwide for the first time and its super noticable. Is this known or not?
Im dumb, ignore

halcyon moth
#

Doesn't that just mean that your aspect ratio isn't set correctly?

teal snow
#

Oh damn, I though i was having the same issue i see in PIP. I had aspect in auto, and it didnt detect it, had to set it to manual

full sonnet
#

No idea what that's supposed to mean or what one is supposed to see in the video

tall pumice
#

if it's about the rotation... that's a model animation issue? the pip mempoint rotates more than it should be or rotation is inverted

#

i guess there's some double selection/animation stuff going on. mod author needs to fix that

teal snow
#

This issue isn’t rotation, the pip image is stretching with the rotation

#

The issue with pip only appears on monitors with aspect larger than 16:9

tall pumice
#

well, could have mentioned that first 😄

calm lake
#

can anyone tell why diag.exe is messing up my addons? I get popups like the one in the picture, modules from zeus enhanced stopped working, all kind of weird stuff..

full sonnet
hot tree
#

Would it be possible to include an alt syntax to the get3DENLayerEntities command to get a layer by its name?

pallid cliff
#

Layer name can be duplicated though.

hot tree
#

Hmm. Time to swap channels for my question then

reef bobcat
#

I found one of your earlier responses about radar systems through a search, and I would like to know whether there is any way to overcome the 16 km range limitation. I have tried modifying the parameters in class ActiveRadarSensorComponent, but it did not have any effect.

tall pumice
#

i just recently found out how terribly unoptimized tanoa moss rocks are. place those big rock walls and drive near them with any car. you will get lag spikes, probably because of the very complex geo model

#

also i could swear planes create lag spikes as well when flying over them(?) but not 100% sure on that

#

you dont even have to hit those rocks with a car. just driving near them stresses out the collision detection i guess

harsh orbit
#

probably because of the very complex geo model
it's the roadway that's unoptimized. the game creates thousands of PhysX meshes for those (1 convex body per face...)

#

the thing is that the geometry already covers them so they're a total waste of performance

tall pumice
#

you need roadway for soldiers. vehicles drive on geo lod

#

so you kinda need both

#

but it's only the vehicles that cause lag spikes if you drive near the rocks

#

imo geo and roadway could be rebuild from a lower lod level like 3 or even 4. the shape is almost the same and you get a reduction of almost 5k faces down to 1000

#

tiny rock clutter is even worse. there's rock models that player can step over and it looks like lod0 was used to generate the geo when a simple box would have been enough

unreal lava
#

yeah that's something i've noticed with any physx that happens close to masses of roadway LODs - i made a cave once out of those things (large moss rocks) and every time a unit ragdolled the whole thing would bite off like 50 frames until the ragdoll died

harsh orbit
# tall pumice you need roadway for soldiers. vehicles drive on geo lod

yeah I mean duplicating the roadway for PhysX is mostly useless (at least for rocks)

I proposed an idea to Dedmen a while ago where if a roadway surface was almost covered by geometry, no PhysX mesh would be generated for it.
but I don't know how slow it would be to do this at runtime (because iirc PhysX meshes are built into the p3ds)

unreal lava
#

we have setPhysicsCollisionFlag, maybe a setRoadwayCollisionFlag or something would be a useful feature to have as well (wont help with terrains but at least if you're building things out of stuff that has roadways but you have no intention of using said roadways it'd save that performance)

umbral orchid
#

just to incur this massive performance hit

harsh orbit
#

well it sort of makes sense. e.g. some objects may not have any geom shape in some places but you do want your vehicle to move on them like soldiers.
but in most places it is useless and just wastes perf

tall pumice
#

yes, the existence makes sense

umbral orchid
#

idk I can't think of an example of an object like that

#

has no geo, has a roadway

tall pumice
#

not every object has roadway everywhere. houses dont need them on the side etc

#

the issue with rocks is that you can rotate them however you want, so you need to cover all sides just in case

#

those small rock clutter objects have no geo - vehicles just drive over (through) them. but they have roadway because you want soldiers to walk over, not through them

umbral orchid
#

no I understand the reason why the roadways exist on the rocks its more the roadways being copied to the physx geo in engine, whcih is causing the lag

#

I can't think of an object that it'd be preferable to have this setup:
no geo
a roadway
but the roadway gets copied to the physx geo in engine

#

that couldnt be achieved by just giving it a physx geo

tall pumice
#

it would probably help already if a physx mesh would not be created if you are sure it's fully covered under terrain mesh 😄

#

could shave off thousands of them on rocks, which are almost always placed half into the terrain

#

if you dont want to check every mesh for it, maybe a custom (config?) property could help the engine to identify where it has to do that

#

i dunno, just throwing ideas around. alternative is still to optimize the geo mesh on those models.

umbral orchid
#

a model property would be best imo

tall pumice
#

actually models already have a property that can identify them as rocks. check for map = rock in p3d

unreal lava
#

the person who made the model should know that information so

tall pumice
#

issue is that a3 has a lot of old models that, let's be honest, nobody is ever going to be touching again, no matter what

umbral orchid
#

Yeah an opt in system for it would be best but that's the issue it's too much legacy

#

it would be nice to just switch it off and see what happens though lol, what actually breaks

unreal lava
umbral orchid
#

the problem with script/config is a lot of these objects don't have configs

tall pumice
#

imo some sort of physx culling would be best. detect if a physx mesh is already covered by another and then skip it. but this probably would need to be baked into terrain data and that's for sure not gonna happen 😄

umbral orchid
#

or a complexity limit

unreal lava
#

RIP

umbral orchid
#

but that'll definitely break something

tall pumice
#

yes, those rocks 😄

#

the big moss rocks dont even have occluders

feral tangle
#

Do/have the occluders ever worked as intended or consistently? Documentation on them has always been, sparse. In my experience they usually cause more problems than they solve.

verbal venture
#

can we get a custom steam recording event marker for when you're in a land vehicle and your altatl is >5?

pallid cliff
#

Looks kinda slow.

slate tide
scarlet root
#

is there no way to preload or cache the images/data?

raven mist
#

We have a weapon shop which is probably just as slow but it's not JS- it's a standard controls group where we ctrlCreate. Maybe possible it's not the API but the retrieval of the images or the way the controls are being created like kju mentioned.

Never looked into why it is slow for us since it is still fast enough users don't really notice and it didn't matter but we reference the paa, name and other attributes of the weapon or magazine from the config. Would definitely be faster if we cached that data in a hashmap. Can't imagine config commands are that slow but maybe they are?

earnest mural
#

to run code fast, run it in unscheduled

raven mist
#

Probably our larger cause now that you say it. We do that for the actual purchasing so people can spam click an item they wanna buy as fast as they want, but don't think we do it at all when creating the controls iirc.

grim lion
#

You can implement timeouts within js to prevent that. I.e buy button disabled for a second, then re-enabled

#

There's also A3API.SendConfirm where you could set up the buy function to await a promise from the engine. The engine would pass true or false within the event straight back to the UI

#

There's also some loading approaches that can hide the content until all images have been loaded

slate tide
#

In the video, the slowness issue is caused by the number of configurations retrieved in sqf from the engine, and each “editorPreview” must be loaded in base64 with the JS API. The solution involves two things: if the order is not important, then do not execute the texture request asynchronously, so as not to block the process; if it is important, then create a queue pool, ask the backend (.sqf) to render a certain number of textures, then preload them (e.g., the next 15) once the user scrolls down (e.g., 10). we request to preload 15 more, while using loading indicators and skeleton effects.

#

That's what we generally do on the web dev.

#

By the way, if you need to work with multiple files, I've developed a mini loader for “js” and “css” files (here's the code )

<script type="module">
    // Here you can add paths from your project root to import your files.
    const loads = {
        css: [
            "gui/css/style.css",
        ],
        js: [
            "gui/js/main.js",
            "gui/libs/tailwindcss.js",
        ]
    }
// I minified the loader to make it as compact as possible, but basically what it does is retrieve the content of each file and transform it into a URL object, then it adds a “script” or “link” tag depending on whether it's CSS or JS.
    let f,a,b,d,g,i,m,s,l;for (f of[...loads.js,...loads.css]){a=await A3API.RequestFile(f.replaceAll('/', '\\'));b=(c)=>document.createElement(c);d=(e)=>URL.createObjectURL(e);g=(h)=> new Blob(h);i=(j,k)=>document[j].appendChild(k);m=(n)=>({type:n});if(f.endsWith('.js')){s=b('script');s.src=d(g([a],m('application/javascript')));i('body',s);}else{l=b('link');l.rel="stylesheet";l.href=d(g([a],m('text/css')));i('head',l);}};document.body.style.display="flex"
</script>
#

Important to add to the body:

<body style="display: none;">

</body>

(which allows you to wait for the files to load before displaying the content)

slate tide
#

Right now, I'm trying to see if I can integrate Vue.js into CT_WEBBROWSER.

grim lion
#

That would be awesome, that's my go-to web framework, lol

near carbon
#

ill, be taking that

#

haha

slate tide
near carbon
#

currently coding all my arma mods in rust

#

jk

slate tide
raven mist
#

Please post a repo once you're finished if you don't mind- know some peeps who would love it 🙏

slate tide
slate tide
#

Vuejs in arma 3 🫢

near carbon
full sonnet
full sonnet
full sonnet
full sonnet
slate tide
full sonnet
#

Yeah I read that but I don't understand what the bottleneck actually is

#

the texture load requests take to long to be answered?

The engine will do the loads in a separate texture loading thread, which should manage to do about half a dozen per frame at least.
The webp conversion then is multithreaded, and a dozen per frame should be no problem at all.

Your video looks like less than 1 per frame.

slate tide
tall pumice
full sonnet
#

Yeah a "little" as in should be very little

#

Maybe I can use your sample as a benchmark to see where the slowness is?

tall pumice
#

i noticed that even planes flying over those rocks will cause fps drop. guess there is some collision check even if the plane is flying hundreds of meters above it?

slate tide
#

With a “vite.js” plugin

feral tangle
kind ivy
nova wigeon
#

i think that wont happen on purpose

kind ivy
#

Is there a reason it can happen on the server but not in main menu?

nova wigeon
#

i mean you can whitelist domains in the main menu

#

or was that only full domains

#

not sure

#

but i think the point is that there probably is a idea of security behind

kind ivy
#

yeah, but thats not enough for me. My issue is me and a few of my friends have the ts3server:// protocol broken, it just does nothing, so Im looking for an alternative. I made a url redirect currently, but that leaves an open browser window. I was thinking if I can whitelist my custom ts3connect protocol, I could give it a default app instead of browser and it would not leave a open browser window.

kind ivy
#
  • ts3server in profiling or already live
nova wigeon
#

instead of having arma introduce maybe potential security issues. have them reinstall their windows/fix those issues locally

#

or you can always in theory build a extension that does something

kind ivy
#

I tried fixing it, but nothing worked. Im def not reinstalling whole windows just to fix it

nova wigeon
#

well then i expect they need to live with that issue

kind ivy
#

:/

full sonnet
kind ivy
full sonnet
#

Correct.

kind ivy
#

so its limited to the same protocols you have outside of server, but on the server you can just pick and choose which ones you want/dont want?

#

or is the limitation diffrent

full sonnet
#

No

#

protocol cannot be changed.

winter crescent
full sonnet
#

We have two SGR events.
One is the Arma'd Achievement, which will also show up in the timeline.
Second is PhysXHighMomentumCollision which happens, probably just before you get Arma'd. But it also requires the angular velocity of tumbling around.

A "This not-supposed-to-be-flying vehicle is flying" event might sound sensible. But I don't know how we'd check for that besides checking altitude every frame. And I don't want to do that.
Note you can add any event markers you want yourself too.
So I guess, PR's welcome (to your own mod or any other mod you'd want to put this into)

unreal lava
full sonnet
#

touching ground flag is flipped back and forth every simulation.
I can add "is it actually different from last frame" checks in ~36 locations.. I won't do that.

unreal lava
#

Fair

verbal venture
slate tide
#

Hi dev community, I'm coming back to you regarding the project to integrate vuejs into Arma 3. Do you think it would be cool to create a mod to facilitate the use of vuejs in Arma, with already integrated functions such as managing the opening of the GUI/overlay, facilitating initial props, and data/action event exchanges?

#

and create a version with only the script to integrate into your mission yourself, like TheProgrammer.

#

What do you think about this?

#

(By the way, if you have any information about the development, I have created a thread on the channel) #1460082787754311802

lucid totem
slate tide
#

I was able to try Vue Router, Pinia, TailwindCSS, Daysi UI, and Shadcn Vue for external packages.

I have the initia props data to insert data before loading so that in App.vue we have the data sent from the sqf.

#

App.vue :

<script setup lang="ts">
  defineProps<{
    msg: string
  }>()
</script>

<template>
  <h1>Hello App!</h1>
  <p>{{ msg }}</p>
  <p><strong>Current route path:</strong> {{ $route.fullPath }}</p>
  <img src="./assets/img.jpg?inline" />
  <nav>
    <RouterLink to="/">Go to Home</RouterLink> | test
    <RouterLink to="/about">Go to About</RouterLink>
  </nav>
  <main>
    <RouterView />
  </main>
</template>

<style scoped>

</style>

#

the props: msg, is injected from the sqf file that opens the vuejs app

#

I have already created the vite.js plugin for developing the vuejs application for arma.

#

vite.config.ts :

export default defineConfig({
  plugins: [
    vue(),
    tailwindcss(),
    arma3vue('C:/Users/zac/Documents/Arma 3 - Other Profiles/Paul%20Panzani/missions/TestHTMLGUI.VR/gui/vuejs', 'gui/vuejs')
  ]
})
slate tide
#

I would just like the community's opinion on how best to respond to the need.

slate tide
#
player addAction ["Vehicle Spawner", {
    private _props = createHashMap;
    _props set ['msg', 'John Doe'];

    ["gui/vuejs", _props] call fnc_A3VUE_open;

}];
lucid totem
slate tide
lucid totem
slate tide
lucid totem
#

it's cool, it's cool

full sonnet
# slate tide Hi dev community, I'm coming back to you regarding the project to integrate vuej...

Every new mod is cool. So.. of course? I don't even understand the point of asking that 😄
Of course a configurable mod to do something would be nice to have.

Its very hard to get people to tell you what they need without already having plans on building something, in which case they probably already started building it using something else.

I'd say provide a framework. Let people put in their own components (you deal with loading them from the files), and the API for communicating with the game.
That is the obvious stuff thats needed anyway, and I can't think of what else you would do

pallid cliff
#

Frameworks are always welcome. Pythia is a great example on how to make something like python accessible in sqf.

tepid dock
#

"Sorry, Babe, our wedding photo has to go"

feral tangle
# tepid dock

What's he still doing here? I thought he was being shut down. 😛

pallid cliff
#

He is going to get shut down soon when his wife sees that she got replaced by a random dog from the internet.

feral tangle
#

Trueee.

reef bobcat
slate tide
slate tide
# full sonnet Every new mod is cool. So.. of course? I don't even understand the point of aski...

Yes, of course, when I talk about a mod, it's to find out if it's going to be disruptive for servers that want to be vanilla only. That's why I'm asking what it would be like to see the best solution, because I could initially focus on a single approach.

And when I talk about component libraries, I'm using language incorrectly. What I mean is that natively, Vue.js with its composables cannot support integration with Arma. For this to work correctly, I have to create custom composables, for example for exchanging data from “props.” That's why, for everything to work together, I have to create a composable library that can be used in Vue, Arma.

reef bobcat
slate tide
#

I tried to display the Arma 3 page as described in the documentation, but it doesn't work. In my RPT, it asks me and tells me that the URL is not an absolute path, so I need to see if this can be done or if I just did it wrong, but in theory, yes.

reef bobcat
tepid dock
tepid dock
#

So there's really a lot you can do. Even things that don't look like webpages at all

slate tide
reef bobcat
# slate tide yes, exactly

But how would real-time interaction work? I mean, SQF can access in-game data, but it can’t access files. How would you transfer the data obtained from SQF to a web page?

slate tide
#

😂

#
_control ctrlWebBrowserAction [
        "ExecJS",
        format ["const eSpan = document.createElement('span'); eSpan.textContent = 'Script says %1!'; document.body.appendChild(eSpan);", _message]
    ];
#

with vuejs

#
  _control ctrlWebBrowserAction [
            "ExecJS",
            format ["j(%1)", toJSON (_props)]
        ];
#

x')

#

but

#

Sending data is easy, but to receive it, I had to create the vite.js plugin, which injects a file loader. To share props, I use injection in the Vue.js compiler code, and now I'm working on retrieving props when loading a component/route in real time.