#arma3_feedback_tracker

1 messages · Page 12 of 1

gaunt depot
#

Wait, did you change that?

gray wharf
#

source=tank instigator=player? 👀

gaunt depot
#

yeah that would make sense, but might break stuff backwards compatibility-wise

#

even back when there was no source/instigator separation roadkill damage always showed driver

solid marten
#

but might break stuff backwards compatibility-wise
instead of having player himself as source you would have vehicle and instigator...hmmm

#

roadkill damage always showed driver
dunno If I changed that

gaunt depot
#

The idea is following to detect if damage is a roadkill:
if ammo=="" and vehicle source != source

#

Noted to check how it looks in latest beta

#

But again for this kind of non-broadcasted damage (roadkills are calculated locally for victim), I wish HandleDamage recieved a flag that it is roadkill damage

#

other local-originated damage sources could benefit from it too

#

so you can instantly tell where engine got this damage from without having to have PhD in Real Virtuality 4

solid marten
#

There are hundreds of calls for all sorts of damage local and not in the engine, adding context like this would mean editing all those calls

#

just that fake head call is about 25 calls + different types of objects

#

easy to overlook something and spend weeks trying to fix it

#

not happening

gray wharf
#
_dude addEventHandler ["KilledByPhysics", {}];
solid marten
daring wagon
#

Worth a ticket?

desert trench
#

is the window for next A3 update closed now given 2.18 is used in the wiki?

outer frigate
#

stuff is getting rejiggled around between 2.16 and 2.18 iirc

near cedar
#

Some questions/requests (will make ticket if it's deemed reasonable):

  • Could doArtilleryFire return true/false depending on success or failure of fire mission? Currently the way i'm checking this is by waiting unit unitReady returns true. However, sometimes the artillery may not fire and become ready again -- i believe this is to do with the slope gradient on which the artillery vehicle is parked. So then i need to check if magazineTurretAmmo returns an empty/emptier magazine. Would be useful to just have doArtilleryFire return a boolean and skip all this extra work.
  • Could we get a FiredArtillery (or something else) EH which is similar to the Fired EH but just triggers once the first shot of a barrage is fired from an artillery unit? Right now i have to make the EH delete itself after the first time, then re-add it later. (desired effect -- I just want to do stuff the moment the first shell is fired and not on subsequent fires in the same fire mission/barrage)
limpid rune
#

it might have to be an eventhandler if anything because when the AI 'fail to fire' when given this command/order you can see the gun elevate/rotate into position - stop - return to its previous position

#

so it seems it 'tries' to fire but then fails, and the failure happens way after the command execution

alpine tulip
#

+1 actually. Not sure P3D updates are good to go nowadays but sometimes having either no config or no selection make me to pull my hair. One thing I realize recently is Persian head cannot retex the eyes

#

Also US Parade uniform lacks some selection IIRC

alpine tulip
#

Also... why Bohemian heads don't have proper bones for facial expressions? 🤔

pulsar rivet
gaunt depot
#

Is there a good reason why group event handlers are local to group?

#

Can't it be global as these events are broadcasted anyway?

#

Unless its different enough to be triggered local-only?

#

At least the basic stuff like UnitJoined and UnitLeft

west onyx
#

simulation bubble stuff like fired event

gaunt depot
#

Never seen a delay in group syncronization, don't think its the case here

gaunt depot
#

HandleDamage context is 2.18 😢

solid marten
#

2.16 is small update

gaunt depot
#

Sad, really wanted to have it soon on stable. These fake HeadHit and bleeding HandleDamage fires cause me a lot of trouble

gaunt depot
#

Hmm, apparently instigator is empty if source unit has no brain (fully dead) thonk

#

Mine damage by alive unit => source=unit, instigator=unit
Mine damage by dead unit => source=unit, instigator=null

#

I guess it checks if instigator is live unit before adding it to EH or something?

unborn acorn
solid marten
gaunt depot
#

Looks like shot broadcast doesn't include instigator

#

Local: source, instigator
Remote: source only

#

So when mine owner leaves, locality transfers to server which only has source as parents

solid marten
#

what do you mean leaves, leaves server?

gaunt depot
#

no need to leave even, looks like projectile creation message doesn't have an instigator right away

#

only broadcasts the source

solid marten
#

why would it, he left the server there is no more reference to him

gaunt depot
#

The unit is still there (AI/corpse)

solid marten
#

it is not a player

#

instigator is player

#

at least this is how it is designed

gaunt depot
#

no, instigator can be any unit that "pulled the trigger"

solid marten
#

accidentaly maybe

gaunt depot
#

No, instigator has nothing to do with players specifically

#

Its just a unit that did the shooting while source is whatever vehicle produced the shot

#

Anyway same issue would happen if AI would place a mine and their owning client leaves

solid marten
#

in any case I need a repro to see if instigator is assigned correctly

gaunt depot
#

Yeah, seems to happen with any global projectile

#

Only broadcasts the source, no instigator

#

Where projectile is local:
source=vehicle, instigator=unit
Where projectile is remote:
source=vehicle, instigator=null

#

so when projectile switches locality instigator info is lost

#

Gonna make a repro for it

untold sky
untold sky
untold sky
gaunt depot
#

Actually not sure what will happen if remote client is going to add a unit to remote group 🤔

#

Either way it is definitely not global

untold sky
#

If remote stuff doesn't call the group.AddMember() then 🤷

gaunt depot
untold sky
#

some work and some don't?

gaunt depot
#

createUnit into remote group fires UnitJoined where you create the unit
joinSilent into remote group fired UnitJoined both where you did the command and where group is local

#

So you can't say that UnitJoined always fires where group is local, its not the case where you create unit into remote group

gaunt depot
#

There is no BOOL = local GROUP thonk

#

No way to tell if group is local if its empty and you're not the server?

#

Speaking of groups, I was thinking about these issues where groups didn't broadcast properly and you ended up with players without a group issue that been there since dawn of time. If you ask me this kind of issue could use more attention, it has a potential to be the case of a lot of unreliability that is often associated with Arma multiplayer.

untold sky
#

It got alot of attention. I was on ita couple months ago.
half dozen custom builds with extra logging and days of debugging/searching. No results. If we hada reliable repro for it..

gaunt depot
untold sky
#

I need to reproduce it myself, multiple times.
Debugging and freezing the server while doing so

#

I already had a guy that had it regularly that helped me with it.

gaunt depot
#

Can't call it a reliable repro, but it happens all the time

#

Hmm

#

I'm also seeing a lot of cases where public variables and setTerrainHeight data doesn't arrive from the server. You randomly end up without some server-sourced public variables in a strange way, they are not nil for some time but then become nil again?

#

This seems to happen fairly reliably when somebody plays through VPN

#

But can randomly occur under normal conditions for stable connection

#

So I thought maybe group messages are missed the same way this stuff is?

gaunt depot
#

setTerrainHeight not arriving + public variables missing producing scripting errors even though there is a check that all essential PVars aren't nil before finishing loading

untold sky
#

That stuff was built in the very early 2000s. If that is the issue its not gonna be fixed

solid marten
#

Are you the same guy that does mission scripting for KotH?

solid marten
#
19:21:49 source = B Alpha 1-2:1 (KK_DEV (2)) (B_RangeMaster_F)
19:21:49 instig = B Alpha 1-2:1 (KK_DEV (2)) (B_RangeMaster_F)

19:21:49 local = false
19:21:49 source = B Alpha 1-2:1 (KK_DEV (2)) REMOTE (B_RangeMaster_F)
19:21:49 instig = B Alpha 1-2:1 (KK_DEV (2)) REMOTE (B_RangeMaster_F)
solid marten
#

Same guy that is supposed to know all that is to know about scripting commands?

gaunt depot
solid marten
#

Goes with territory

#

Anyway I added missing instigator to a few places related to shot/missile handling, and hitpart/ ammohit EHs, incomingmissile as well

gaunt depot
solid marten
#

By adding I mean just passing existing shotInstigator param down the chain

gaunt depot
solid marten
#

yeah

unborn acorn
gaunt depot
#

You can script fix that, save array of all player mines, setShotParents them when player respawns

unborn acorn
gaunt depot
#

as it requires bit of advanced scripting to implement

solid marten
#

Not sure if bug, after you respawn why the mines should automatically get assigned to you? If you can script it, then thats ok, but as default mechanics? I'm trying to remember what game gives you your mines back on respawn

uncut briar
#

any FPS I can think of where you can place mines will assign you kills from them after a respawn

uncut briar
unborn acorn
gaunt depot
#

Do we also give mine parents to respawned AI units?

solid marten
hallow sun
#

No

solid marten
unborn acorn
#

I just remember newbies triggering own mines “what a beautiful red diamond” again and again or Sgt.Adams cosplayers
If weren't this bug the mine owners would have received a lot of sanctions

gaunt depot
#

Trying to script correct instigator missing from everyone but shooter and it seems that setShotParents doesn't broadcast at all?

#

Its server only, but does it do anything network-wise?

#

Parents change on server but nothing happens on clients, nor for JIP

#

Yeah, the command does nothing for clients

#

Did nobody use it over 8 years or checked if it actually works? 🤔

#

Or it broke sometime over this time

#

Looks like it never worked in the first place

solid marten
#

the github issue seems resolved

gaunt depot
#

Probably didn't test enough to check if it did anything on client

solid marten
#

it has own message so it does something

gaunt depot
#

Gonna make a repro

gaunt depot
solid marten
#

placing mine broadcasts parent and instigator on its own fine

#

setshotparents action however doesnt broadcast, gonna look at what it does

gaunt depot
solid marten
#

So since the command was added no one bothered to test it properly?

gaunt depot
limpid rune
#

it works when I used it but uh

#

the only use I had for it was for kill recognition

gaunt depot
devout wave
#

Does it not work at all or is it just mines that have a problem? I know there have been some issues with mines not doing updates properly (setPos* didn't work on them, for example) so this could be another case of them being uniquely wonky

gaunt depot
#

Speaking of it, why is setShotParents server-only? Security concerns?

#

I've seen cheaters shoot their guns and kills being attributed to random players to frame them, they clearly already do that and don't need a scripting command for it (it doesn't work anyway)

gray wharf
#

Batman wouldn't allow

gaunt depot
gray wharf
#

Arma 3, © Wayne Industries

gaunt depot
#

Unless there is a good reason, I'd make setShotParents executable everywhere. There is also CfgDisabledCommands now so you can limit it yourself.

#

Or maybe it doesn't matter as its solveable through a server-bound RE call anyway

#

Would be when its fixed

gray wharf
#

setShitParents
🤣

gaunt depot
#

oops

#

UNIT setShitParents [MOM, DAD]

gray wharf
#

ERROR: DAD: undefined variable at L16

solid marten
#

projectile Penetrated EH. Can anyone confirm it is working in stable/dev? it is old EH

#
 params ["_unit", "_weapon", "_muzzle", "_mode", "_ammo", "_magazine", "_projectile", "_vehicle"]; _projectile addeventhandler ["Penetrated", {systemchat str _this}]
}];```
gaunt depot
# solid marten So make it a feature?

I see no problem making the command work everywhere. Plus you kinda need it for non-global shots (shotBullet and such) as you won't be able to have server change the parents for them for you, as they're local for each client.

gaunt depot
#

Wow, didn't know this existed

solid marten
#

neither did {insert player}

#

why would you want to setShotParents for bullets when they are set automatically

gaunt depot
solid marten
#

Yeah, no

#

Some fixes are coming so hopefully this will be enough

gaunt depot
#

Like trigger some invisible AI to shoot and attribute the shots to the player

solid marten
#

Dont think it has JIP thingy set either so something to look at

gaunt depot
#

Only updates for current clients?

solid marten
#

at the moment it is broken

gaunt depot
#

If this command worked on clients you could fix that through script

#

JIP joins, goes through list of all mines, fixes their parents to whatever was scripted for them

#

only for themselves (but I guess it will also broadcast again)

solid marten
#

the only thing that works correctly it rejects non server execution, thats all

gaunt depot
#

setShotParents [source, instigator, local] maybe?

solid marten
#

what just for server? why

gaunt depot
#

no, if it worked on all clients

solid marten
#

it wont be, I am not enabling this

gaunt depot
#

To fix JIP issue you could manually go through all shots on join and fix their parents to scripted parents

#

all relevant shots*

solid marten
#

I mean JIP on setShotParents

#

havent tested it but expect it doesnt work

gaunt depot
# solid marten it wont be, I am not enabling this

I don't need this personally but I see how it could be useful to others. I don't see any real reason why its a problem either. Cheaters already create shot messages with fake parents to frame innocent players, it not a security concern.

solid marten
#

I am not doing it, you can try making a ticket with request and then it will go for a discussion and then maybe (not really) the security feature will be cancelled

gaunt depot
#

Mod use idea: Imagine a vehicle with several autonomous turrets with UAV AI in them that shoot shotBullet. You then script it to attribute all these shots to vehicle's effective commander unit instead of turret AIs.

#

WH40k or something like that (not sure if they have autonomous turrets there)

#

Not something I'd use personally

#

Sure, gonna make a ticket as this command is being looked at

devout wave
gaunt depot
#

Mod melee weapons also use non-global shots, being able to create the shot and instantly set its parents for engine-driven damage attribution could be useful.

#

I think they actually shoot the bullet now so its properly attributed to the shooter?

#

Haven't looked how its done in say SOG:PF CDLC

solid marten
#

Ticket first. Dont forget to list all the cons as well

uncut briar
devout wave
gaunt depot
gaunt depot
solid marten
#

So this is how setShotParents work at the moment. You can change shotParents from the server for a global projectile that is created by remote player. Say I throw a grenade, you can change shot parents for this grenade from the server only on my client, so when it explodes the hit event on my client will have a new pair

#

Very limited questionable use

#

I think the idea was when you alter shotparents on the client from server it somehow syncs it back fro everyone, but it doesnt work like this

gaunt depot
#

Maybe just have it AG EL?

#

If you dont need to broadcast just do it locally, if you want it global, do remoteExec

#

and RE has JIP covered

#

Basically only change the parents where command is called

devout wave
gaunt depot
#

Yeah, not very backwards friendly

#

Having a local flag as third argument could help here

#

Huh, so it does indeed work

#

when you execute it on server it gets applied on client but not in server

solid marten
#

yeah

solid marten
#

no jip of course as expected

regal nimbus
#

We used setShotParents to give a parent side to "fake" airstrike bombs that didn't otherwise have one.

hallow sun
#

I also just tried to use it on mines, so if a player dies/respawns/relogs he still the "owner" of the mine (Client latest dev build / Server latest prof build)
Worked without any problem so far ^^

pulsar rivet
regal nimbus
#

I don't think that one needs server exec though.

hallow sun
gaunt depot
#

Good to know that it works to some extent, wont have to wait till 2.18 and can use it now

#

Still, making command more broadly useable wont hurt

solid marten
#

good things are coming to those who wait

fast lodge
#

nearestObjects [player, [], 5] does work with script placed simple objects but if you put in the classname of the simpleobject nearestObjects [player, ["Classname"], 5] to only search for it , it doesent work. is that intended?

limpid rune
#

simple objects dont have classnames

fast lodge
#

is it normal then I can use typeof cursorobject on it ?

limpid rune
#

and it gives a classname? thats odd then - didnt think that'd work

fast lodge
#

yea it does, atleast on the my basebuilding objects

gaunt depot
#

Perhaps simple object stores class name that was used to produce them which typeOf checks but search commands dont?

#

Also explans why allSimpleObjects can search by class name but not inheritance

#

Its not class name in the same sense as normal objects has classes

#

just a string stored alongside the object to remember which class was used to make the object

#

And this means there is no way to easily search simple objects, you'll have to setup the data yourself or use allSimpleObjects which is probably fairly slow with either approach

#

nearSimpleObjects could be useful

fast lodge
#

yea that would be great

#

the only thing I could do rn is use nearestObjects [player, [], 5] and then check each object with typeof and then filter

gaunt depot
#

Yeah that would be your only easy way for now

fast lodge
#

Also isKindOf works on the created simpleobjects which is funny

uncut briar
gaunt depot
#

Damn fake hit head and bleeding mess everything up by being fired before HitPart notlikemeow

#

One frame before HitPart even

#

What a mess

#

Really hope 2.18 comes sooner so this can be fixed.

gaunt depot
#

Wish there was server-only Local event

daring wagon
#

Currently we have to get all units, then loop over all units and pushBack the unique groups.

#

private _uniqueGroups = ((units _side) inAreaArray _area) select {_x getEntityInfo 15};

gaunt depot
#
ARRAY = allGroups ARRAY
```to extract relevant groups out of array of entities?
daring wagon
#

What do you mean?

gaunt depot
#

Suggesting alternative mean to solve your goal

#

Guess you meant

private _uniqueGroups = ((units _side) inAreaArray _area) select {_x getEntityInfo 15} apply {group _x};
#

Which you can already do with

private _uniqueGroups = ((units _side) inAreaArray _area) select {leader _x == _x} apply {group _x};
daring wagon
#

I can do all of it already

#

Still two loops

gaunt depot
#

Instead I suggested a command to extract groups out of any list of entities you give it

#

You'd feed any units\vehicles into allGroups new alt syntax and it'd return you unique groups that these entities are in

#

single command execution

gaunt depot
daring wagon
#

Yeah, true. My mistake.

gaunt depot
#

How it would've looked with my suggestion:

private _uniqueGroups = allGroups ((units _side) inAreaArray _area);
#

I had a need for such command myself some time ago

#

Hmm, this command would've returned groups even if their leader wasn't in the area 🤔

#

So its not quite what you wanted with your example code

daring wagon
#
Result:
0.0605567 ms

Cycles:
10000/10000

Code:
private _units = ((units independent) inAreaArray "marker_0") select {alive _x && not captive _x}; 
private _groups = []; 
{ 
 _groups pushBackUnique group _x; 
} forEach _units; 
 
_groups


Result:
0.0507473 ms

Cycles:
10000/10000

Code:
((units independent) inAreaArray "marker_0") select {alive _x && not captive _x && leader _x == _x} apply {group _x};
#

So I guess filtering it directly in the select instead of pushBackUnique isn't that much faster.

gaunt depot
#

yeah, the less scripting commands you do the better

#

probably can speed it up by changing condition order and adding lazy evals

daring wagon
#

leader player == player
Is already very fast. So no need of getEntityInfo

gaunt depot
#

leader _x == _x && {alive _x && {not captive _x}}

daring wagon
#

probably can speed it up by changing condition order and adding lazy evals
Gonna test that now.

gaunt depot
#

depending on your mission

#

I wonder how SimpleVM would affect

select {alive _x && not captive _x && leader _x == _x}
```vs
```sqf
select {alive _x} select {not captive _x} select {leader _x == _x}
daring wagon
#
Result:
0.0237605 ms

Cycles:
10000/10000

Code:
((units independent) inAreaArray "marker_0") select {leader _x == _x && {alive _x && {not captive _x}}} apply {group _x};
#

@desert trench For awareness as we use that quite often I guess

gaunt depot
#

As I understood it works only for single command selectors

daring wagon
#
Result:
0.026912 ms

Cycles:
10000/10000

Code:
((units independent) inAreaArray "marker_0") select {alive _x} select {not captive _x} select {leader _x == _x} apply {group _x};
#

Ah wait, we need to turn condition arround I guess

gaunt depot
#

Are you testing in 2.16? Is SimpleVM active there?

daring wagon
#

Wasn't simpleVM active for ages?

gaunt depot
#

Not sure 🤔

sinful kettle
daring wagon
sinful kettle
#

If you're using perf branch it should be there

daring wagon
#

Yes. Using perf.

#

I knew it has been in for ages 😄

sinful kettle
#

It's not in stable tho meowsweats

gaunt depot
#

Unless SimpleVM also optimized that big selector with lazy evals too? notlikemeow

#

GIB DOCS

daring wagon
#

It's slightly faster

Result:
0.0259134 ms

Cycles:
10000/10000

Code:
((units independent) inAreaArray "marker_0") select {leader _x == _x} select {alive _x} select {not captive _x} apply {group _x};
gaunt depot
#

Looks like OnUserSelectedPlayer is unreliable if selectPlayer is done on the same frame as selected unit creation

#

Event fires with null entity on server

#

Adding 1 frame delay doesn't help

#

Frame 1: createUnit
Frame 2: selectPlayer
still random null entities in OnUserSelectedPlayer

#

Wonder if its a bigger problem or just EH being unreliable

#

Doing selectPlayer on existing units never fails

#

Also wonder if this could be related to group issues 🤔

#

selectPlayer related stuff executes before client finishes sending associated unit\group stuff they created

#

unreliable message order something-something

outer frigate
#

yeah ive found selectplayer to be erm
interesting

#

i use it for respawn without killing your previously controlled character

gaunt depot
#

Player identity isn't always there in time either

#

Creating and selecting the unit in the same frame\next frame:

#

Very unreliable, sometimes no unit, sometimes no identity

#

Wondering if this could be related to groups randomly not arriving to players. Message order issue perhaps?

#

Same issue when doing forceRespawn, randomly no entity, randomly no identity, even randomly no group

solid marten
solid marten
daring wagon
#

Yeah. We've been doing that.

Sa-Matra worked out a good solution.

solid marten
#

have unit ready on back burner for the next player, instead of creating it on the spot

gaunt depot
solid marten
#

what do you mean by that

gaunt depot
solid marten
#

I dont understand. selecting player right at respawn?

gaunt depot
#

No, normal player respawning also triggers this, in the same faulty way

solid marten
#

onUserSelectedPlayer not updating problem, or which problem

gaunt depot
#

"could cause all sort of problems due to possible delay in unit initialisation" means these problems also happen during normal gameplay

solid marten
#

which one is the second message?

gaunt depot
#

with 3 second respawn timer delay

solid marten
#

so the first is immediate respawn and second 3 sec countdown?

gaunt depot
#

Both are ESC->Respawn with 3 second delay

#

Same thing, random outcome

solid marten
#

best out of five?

gaunt depot
#

null entity, unit without identity, unit but not player, proper player unit

gaunt depot
solid marten
#

i can have a look if it can be made more reliable

#

but need a ticket so I won’t forget

gaunt depot
#

Null happens very rarely (testing setDamage 1 here) but it does happen

#

Gonna make a repro tomorrow

#

I wonder if this unreliability is related to that issue with player groups missing

desert trench
#

@solid marten regarding

[BUG] Garbage collector and respective SQF commands are bugged
https://feedback.bistudio.com/T171981

Tested with minPlayerDistance = 0; again - same.
Added both versions of the mission.

However I found a few of the issues.

  1. As best I can tell only one dead is removed per group per checking cycle.
    Not sure if dead are still handled as groups. Still if you create just one unit groups before killing them, they get clean up as expected.

By default the mission creates all AI in one group - as result they get removed only one by one. Can be toggled via TEST_CreateNewGroups = true; now.

  1. While for wrecks the check cycle seems to be once per second, for dead infantry it seems every ~ 30s. So cleaning up a group of 6 takes 3 minutes.

  2. There must be also awareness that an unit is dead first - Not 100% if limited to player lead groups or how that works with AI lead/player in a group/single unit groups/units from the group not close. So for a player lead group (can toggle via 0-0-6 to be crated in the player group), either you need to wait for the automated status check "X whats your status" - seems to happen after 15? seconds. So another delay. Or you do the 5-report status for potentially quicker awareness. Reveal/visibility/etc may play into that too.

#

Doubt 3 can be fixed but 1 and 2 seem not intentional or poor design.

#

Another element that may play into all that is locality. Both for unit creation, group ownership. Yet also with the SQF commands. The BIKI states global, but should be verified.

#

Tried to nail down the issues we had with the sqf commands (wrecks deleted despite excluded, dead bodies not removed that cannot be explained by above), yet not success so far.

#

To debug the issues, more info would help a great deal - whats in the garbage collector and the order (if FIFO ordered), or their timestamps. To get that info via sqf and the query the status of a wreck or dead body.

solid marten
#

the garbage collector works in mysterious ways and I think I also found flaw in removal logic. Locality is something I need to understand as well.

#

But yeah, it adds value to every dead depending on what they have. weapon values + magazine values. most valuable removed last

#

Flag carrier removed never

gaunt depot
#

Made the repro for onUserSelectedPlayer

#

The whole this is super weird, sometimes you get no null for 100s for tries

#

Then I restarted both games and I had nothing but nulls

#

Some weird stuff is going on, reminds me of that old bug with turrets where it was breaking in similar streaks

#

Wondering if this could be to the same cause (message order mess up)

gaunt depot
#

Looks like getUserInfo is pretty slow command, I wonder if it can get getEntityInfo treatmeant so you can only get value that you care about?

#

ANY = STRING getUserInfo NUMBER

#

"2" getUserInfo 10 to get playerObject

regal nimbus
#

You could always store what you need on the player object instead.

#

I'm assuming that you're not spamming this pre-connection...

#

Ah never mind, I can't imagine what you'd do with getUserInfo that needs to be fast, but maybe there is something :P

gaunt depot
#

diag_codePerformance [{getUserInfo "2"}] => [0.0142608,70123]

#

Its not THAT terrible but I still thought getting only a thing that you need could be useful

gaunt depot
regal nimbus
#

I worked around that by requesting from the client instead. Client at least knows when it's ready.

#

Now curious whether getPlayerUID works when local player does.

gaunt depot
#

Yeah I had client do a RE call to server once they're ready, before this event handler was a thing, but I really enjoy having server setting everything up without back and forth REs with the client

regal nimbus
#

Couldn't they fix onUserSelectedPlayer instead :P

gaunt depot
#
if(_uid in ["", "_SP_AI_", "_SP_PLAYER_"]) exitWith {};
#

I've seen it being _SP_PLAYER_ in multiplayer few times over the years thus the check

#

not sure if it turns into proper UID after _SP_PLAYER_ though

regal nimbus
#

The order of this stuff is never documented, which bugs me a lot. You have to do printf debugging and hope that your results are universal.

gaunt depot
#

Seeing how unreliable onUserSelectedPlayer is, I wonder if there is even any order at all, or if its just random depending on latency, network load and packet loss

#

Is there much to document, or its just "pray and wait until everything is in order"

regal nimbus
#

From my testing, remoteExecCalls arrive in order, but I'm just hoping that's guaranteed.

#

If publicVariable doesn't arrive in order then all our shit is fucked, but again this isn't documented behaviour :P

gaunt depot
#

REs and PVars seem to be reliable

#

The only issue I've seen are JIP, they almost arrive but then dont

#

Along with setTerrainHeight data

regal nimbus
#

Hmm, JIP going missing entirely?

#

Weirdest proven thing I've seen with remoteExec is them arriving on the server from the previous session.

gaunt depot
#

Randomly it seems, I do isNil checks on all essential variables, check passes and then you end up with these variables being nil somehow

gaunt depot
regal nimbus
#

Not sure if Arma just lacks mission/session barriers in the networking or it's a bug.

gaunt depot
#

My guess would be message reaching you when next mission already began so it can't be dropped because its still in loading phase

gaunt depot
#

setTerrainHeight failed and you get boats floating through land, missing public variables resulting in error spam even though there is isNil check for each during loading

regal nimbus
#

I don't think we do anything critical with JIP, it's mostly action-adding.

gaunt depot
#

I also remember encountering absolutely bizzare situation back in OA, I joined my own server and it was full singleplayer mode - saving instead of respawn in ESC menu, simulation paused in ESC menu, isMultiplayer returned false

#

And the most bizzare thing, BE logged my client broadcasting EVERY public variable as empty values (null objects, 0s) to everyone

#

I think I did screenshots so they're somewhere

#

Maybe its that UID being _SP_PLAYER_ I've seen on other players

#

but this broadcast of every pvar I haven't seen since

#

Then there's this just a few months ago

gaunt depot
#

I noticed that during round change sometimes mission restarts twice or even more times in a row

#

Maybe empty PVars, REs and setTerrainHeight data from first mission attempt arrive a bit later into second but succesful mission attempt overwriting valid data

#

That's why isNil check passes but then ghost data from previous attempt arrives and nils good values again

#

So it could be same issue of data from previous session messing things up

#

I might be able to pull logs from around time of that screenshot to check this theory

gaunt depot
#

Really wish there was server-executed "Local" event handler

solid marten
#

You said it twice already still have no idea what you mean

gray wharf
gaunt depot
#

Right now Local fires only on old and new ownership clients

solid marten
#

so you want mission eh local that is server side

#

pretty sure server knows

#

is there a ticket already?

gaunt depot
#

No ticket, don't want to shift attention from more important stuff, I can manage with existing Local

solid marten
#

would make no sense or more sense?

gaunt depot
solid marten
#

🍺 ?

#

@gaunt depot have you ever seen "Server: OwnerChanged of xxx arrived from non owner xxx" rpt?

gaunt depot
#

Some random log I had at hand

#
2022/12/14, 18:06:07 Server: Object info 2:135735 not found during Changing Owner
2022/12/14, 18:06:07 Server: OwnerChanged of 2:135442 arrived from non owner 1139237078
2022/12/14, 18:06:08 Server: Update of object 2:135827 arrived from nonowner
2022/12/14, 18:06:08 Server: Update of object 2:135827 arrived from nonowner
2022/12/14, 18:06:08 Server: Update of object 2:135827 arrived from nonowner
```nearby
#
2022/12/14, 18:04:59 Starting mission:
2022/12/14, 18:04:59  Mission file: KingOfTheHill_RHS_by_Sa-Matra_for_CODE4 (__cur_mp)
2022/12/14, 18:04:59  Mission world: Altis
2022/12/14, 18:04:59  Mission directory: mpmissions\__cur_mp.Altis\
```Very soon after mission start
#
2022/12/14, 18:08:19 Unexpected network message, possible hacking attempt id=1139237078, name='Sithos', steamid='76561199110127435', msgType=237
```some line with that client id
solid marten
#

Intredasting

gaunt depot
#

Otherwise player is normal

gaunt depot
# solid marten <@107672558320496640> have you ever seen "Server: OwnerChanged of xxx arrived fr...

Exact same pattern

2024/02/09, 12:21:28 Server: Object info 2:2905 not found during Changing Owner
2024/02/09, 12:21:28 Server: OwnerChanged of 2:2858 arrived from non owner 1483966756
2024/02/09, 12:21:29 Server: Update of object 2:2990 arrived from nonowner
2024/02/09, 12:21:29 Server: Update of object 2:2990 arrived from nonowner
2024/02/09, 12:21:29 Server: Update of object 2:2990 arrived from nonowner
...
2024/02/09, 12:22:01 Unexpected network message, possible hacking attempt id=1483966756, name='dimam', steamid='76561199062233889', msgType=238
#
2024/01/15,  9:28:28 Server: Object info 2:31512 not found during Changing Owner
2024/01/15,  9:28:28 Server: OwnerChanged of 2:31218 arrived from non owner 1977627041
2024/01/15,  9:28:29 Server: Update of object 2:31592 arrived from nonowner
2024/01/15,  9:28:29 Server: Update of object 2:31592 arrived from nonowner
2024/01/15,  9:28:29 Server: Update of object 2:31592 arrived from nonowner

2024/01/15,  9:28:41 Unexpected network message, possible hacking attempt id=1977627041, name='Andrey', steamid='76561199154184644', msgType=238
#
2024/01/19, 18:22:21 Server: Object info 2:7376 not found during Changing Owner
2024/01/19, 18:22:21 Server: OwnerChanged of 2:7021 arrived from non owner 609029020
2024/01/19, 18:22:21 Server: Update of object 2:7494 arrived from nonowner
2024/01/19, 18:22:21 Server: Update of object 2:7494 arrived from nonowner
2024/01/19, 18:22:21 Server: Update of object 2:7494 arrived from nonowner
...
2024/01/19, 18:22:44 Unexpected network message, possible hacking attempt id=609029020, name='[AXIS]İlhami', steamid='76561198137267799', msgType=238
...
2024/01/19, 20:11:26 BEServer: cannot find channel #609029020, users.card=76
2024/01/19, 20:11:26 "Player 76561198137267799 (609029020) left"
#

Server: Update of object 2:X arrived from nonowner is very common, lots of it everywhere for different net ids through every game

#

All cases are 1-2 minutes after round start

solid marten
#

pending messages from old session?

gaunt depot
#

Yeah, could be

solid marten
#

Need to check if there is a queue that doesnt get cleared on mission start

gaunt depot
#

It is well 2 minutes past mission start though, there is scripted AO voting, then team selection, etc.

#

So the message had to be stuck for a looong while

gaunt depot
#

Looks like this happened right after they finished loading in (they didn't leave the server since last round)

solid marten
#

100% null for me @gaunt depot

solid marten
#

For respawn the unit is created on the client, the message sent to the server but the object is not yet known, only net id. So it is understandable it might first be null, engine doesn't care about the object at this point. So I will make it try until the object is known for max of 10 times? the number of attemps will be passed to EH

gaunt depot
#

First time I was doing this repro I was doing my usual stuff for hours before that and I barely had any nulls

#

But if you fresh start the game its mostly nulls

#

Managed to get non-null after launching random scenarios before going into repro

gray wharf
#

them sneaky basterds

untold sky
#

How would you deal with un-ignoring the target?
should reveal script command, turn off the ignore?

reveal would be meh though, because like TFAR AI hearing uses that. So that means units would auto-unignore and hear targets, that were set to be ignored.
Maybe (like reveal command), also let it take array with second value being bool?

untold sky
#

There is that diag command diag_testSimpleVM CODE
that will print you what it does to your code

diag_testScriptSimpleVM {leader _x == _x && {alive _x && {not captive _x}}}

["Success",360,"
0000:const any
0010:unary leader (variants 3)
0060:const any
0070:binary == (variants 2)
00C8:jmpIfFalse 0160
00D8:const any
00E8:unary alive (variants 1)
0108:jmpIfFalse 0160
0118:const any
0128:unary captive (variants 1)
0148:unary not (variants 1)
0160:ret(implicit)
"]
desert trench
untold sky
#

I already have
_grp ignoreTarget _target
So could add bool there to turn it off yeah

desert trench
#

alright. i wouldnt have it interact with reveal - too complex potentially and may impact existing systems in an undesired way

#

if a system should take an ignored target into account, it should be updated to make use of it

#

i guess a getter would be useful alongside (bool = _source ignoresTarget _target;)

untold sky
#

lol I didn't know you could heal enemy units 😄

#

Never had one not run away

#

ugh adding more commands 😢

gray wharf
#

yeah you can 😄 tested & approved (…& shot)

#

it's helpful if you want to heal a prisoner, otherwise not really 😬

desert trench
untold sky
#

sure but that feels worse

desert trench
#

getEntityInfo i mean

untold sky
#

Ah no can't because its a A-B relationship

desert trench
#

true

untold sky
#

The ignore is stored in the target list, so if somehow an AI forgets everything, it will also forget its ignores..
I made sure its not deleted normally (like it does when a target is irrelevant for too long).

Also I found where a target is switched to "known" state. Maybe that can be used for target EH 🤔
But its in a pretty bad spot I think

untold sky
desert trench
#

Well is it some percentage points less efficient or in an significant way?

Possible to test the difference for say 50 groups / 250 units?

sinful kettle
#

IIRC targetKnowledge was kinda slow

sinful kettle
#

ok no I remember wrong. it's not slow 😅
(it's still a bit slow because it has to return an array, but it's insignificant)

untold sky
ember flint
#

Someone might want to Throw the latest Ticket we got spam :spam:

gaunt depot
west onyx
#

awesome

#

only tweak id request is for <array> ignoreTarget <target>

#

(groups EAST) ignoreTarget player

gaunt depot
#
{_x ignoreTarget player} forEach groups east
``` wont this get optimized by SimpleVM?
solid marten
#

in my experiment it fires on 7th attempt on respawn , or on the 1st when player joins server, would be interesting to see your stats

gaunt depot
#

I still wonder why current result depend on how long game was running. When I was writing that repro It took me like 100 tries to get null on first fire\frame. Then after restarting the game it was nulls almost all the time.

#

Wondering if something funky going on under the hood

#

Old turret bug was associated with message order messing up and you ended up with turrets creating before the vehicle and failing making turrets non-networked

solid marten
#

the onuserselected player pulls object from identity information, there is an expected delay between when identity of the player is known but the body has not yet been assigned

#

allusers getuserinfo work with identity

dreamy bane
daring wagon
#

The revision number and biki

sinful kettle
#

It's already in dev

dreamy bane
#

ok thx 👍

outer frigate
#

are there commands for setting/getting how long unit has left to breathe underwater? meowsweats
nvm yes there are, setOxygenRemaining -- literally the next thing i tried in my google-fu meowfacepalm

solid marten
#
_isHeadless = _id getUserInfo 7; // 0.002ms```
stone tree
gaunt depot
#

He just wants to entertain some base defenders

desert trench
gaunt depot
#

Though I wont what getUiserInfo _id profiled to in that example

regal nimbus
#

The select's probably ~0.0005ms

#

I guess getUserInfo just has to go around the houses a bit to collect all the data.

desert trench
#

oh yeah true. getUserInfo gathers quite a lot of info. that new syntax probably just does "one operation" needed to return the result for the given option chosen

untold sky
#

The bottleneck will be allocating all these script values that go into the array.
There are more efficient ways to do it, but nothing uses the efficient ways as they are hard and require more code (and afaik there is no example of it anywhere).
Maybe I can make that easier some day so we can use it more often. (Actually probably I can't while we're limited to C++14)

targetKnowledge command has the same issue, even worse there because it first fills the array with default values (6 allocations) then when it succeeds, it deletes these values, and allocates 6 new ones with the correct contents 🙄

sinful kettle
dreamy bane
desert trench
#

a few years too late 😛 or decade

dreamy bane
#

asked before?

azure crane
#

probably more than once

dreamy bane
#

well maybe they take it seriously this time ;D JK

azure crane
#

is it worth a ticket that the chat layout setting is not respected while player is in camera/cutscene view? I move it way to center and actual in-game chat is adequately moved, but the cutscene one just keeps displaying in lower left no matter what, has a higher width too

untold sky
sinful kettle
#

So why not update to C++17 or newer? think_turtle

rugged nova
#

Change was in 2015+

regal nimbus
#

What did they lose support for then?

desert trench
#

possible to check the implementation of https://community.bistudio.com/wiki/CfgAmmo_Config_Reference#aiAmmoUsageFlags please

we thought to remember reyhard stating it was never fully implemented or "not doing anything at all even" 😬

Please note that the functionality is heavily WIP and some flags may present no change in the AI behavior. Connected to a behavior or decision making are - concealment, countermeasures and offensive
by oukej at: https://forums.bohemia.net/forums/topic/150500-development-branch-captains-ai-log/?page=3&tab=comments#comment-2869173

#

see a future SITREP for more details

Can only find this a few days later:

Senior Programmer Krzysztof Bielawski has assumed the role of Drill Sergeant for our Artificial Intelligence soldiers. He's added a new parameter for ammo configuration: AIAmmoUsageFlags. This flag does not force AI behavior, but it let's it know how the ammunition can be used. Our initial motivation for this was to train the AI to throw smoke grenades appropriately to mask their movements while suppressed. This has since led to a broader re-factoring with the help of other developers.

The Encoding department has already set the parameter for most vanilla ammunition types. Modders can start doing so as well. A little more information and values were shared on the forums by Designer Ondřej Kužel. Not all usage flags are currently checked in the engine (only Concealment, Countermeasures and the various Offensive flags are). This is still a work-in-progress. And there's more, as Krzysztof reports: "Along with adding a new parameter, we took the opportunity to clean up some older ones. allowAgainstInfantry will still be read, but internally the engine converts it to the corresponding new flag. The airLock param will not be used for AI decisions anymore, but it still is used to define whether the player has the ability to lock the ammo onto a given type of target (ground or air)."

airLock is still used by AI AFAIK. not sure if allowAgainstInfantry still works tho..

to my knowledge so far cost, hit, reload time, xxxRange are the only ones to influence with airLock to restrict altogether (irLock supposedly no longer does anything - same seemingly with allowAgainstInfantry and AIAmmoUsageFlags)
(aside from special stuff like NV and laser ammo)

to have functioning influence on AI weapon use would help a great deal - thanks!

gray wharf
outer frigate
#

fwiw ive been hit by AT ordnance as infantry with base game ai

gray wharf
#

aaand perhaps mods

#

back in ArmA AI was changed to use RPGs against infantry… it was reverted a couple of patches later because balance and "destroy the tanks" missions

outer frigate
#

i checked it in vanilla iirc and was able to repro

#

i just cant remember which launcher as i think it was multishit

daring wagon
limpid rune
#

irLock does work - its (half) the reason IFA3 tanks cant shoot spearhead ones

#

as the ifa3 tank shells (incorrectly) have irLock set meaning the ai cannot 'lock' the tanks

#

airLock I'm pretty sure is still used yeah

#

it generally seems to tell AI whether to use a weapon vs. aircraft

#

it doesn't seem to stop them using it against other threats though

#

a part of me thinks the aiammousageFlags stuff is implemented partially and only on infantry

#

as AI throw smoke grenades when suppressed and I'd like to think its using those flags to determine that

near cedar
limpid rune
#

AI can't switch ammo natively

#

they only will switch when theyre out

near cedar
#

sad

limpid rune
#

it is yeah

near cedar
#

oh well 😅

desert trench
#

Kerc found reyhard's statement again:

sinful kettle
#

There are compilation issues at first but once you fix them everything seems to work fine

untold sky
#

C++20 build works because it disables advanced helicopter simulation. Which doesn't work starting with Visual Studio 2015

sinful kettle
#

Ah right I forgot meowsweats

outer frigate
#

breaking things for a grand total of 3 players hmmyes

#

(i jest)

untold sky
#

Actually C++17 worked, not 20.
But now 20 works too. We just can't use it 😄

uncut briar
#

Throw rotorlib away

#

90% of the content aka mods can't use it properly anyway due to no docs/simulation software xD

gray wharf
#

hey, I like to have rotorlib in some missions to prevent pilot-wannabes taking the role :p

sinful kettle
untold sky
#

Why tho, 20 works now.
And 17 we still can't use because rotorlib, it ends at 14

sinful kettle
#

I thought by "works now" you mean rotorlib works too?

untold sky
#

Well no, without rotorlib

uncut briar
#

If rotorlib is a closed binary why it's not possible to have some sort of glue that works no matter of cpp version?

untold sky
#

Possible yeah. I trialed one way. So far just a huge wall of "ugh" but no blocker.
Also another way that's "ugh".
It takes a lot of time to do that.
Depends how desperate I get.

rugged nova
#

It actually might give you less headaches.

#

Downside is building it on windows. I think vs 17, 19, 22 have an option for clang building tools

untold sky
#

I don't see how clang would help me?

rugged nova
#

Ah. Yeah nevermind. Rotorlib would have needed to be built with clang.

#

But JSB only supports one simulation vehicle at a time.

#

And that's a lot of work.

outer frigate
#

would a lod factor graphics option be out of the question at this stage of development?

#

(would be nice if its settable by script too so you can increase the tighter the zoom 😅)

untold sky
#

If something already changeable exists in engine, making it configurable would be doable

#

adding it if it doesn't exist no

outer frigate
#

i assume you dont know off the top of your head if it exists in engine?

solid marten
#

are you using dev branch?

gleaming dawn
#

Nope - using currently the normal stable one.

gleaming dawn
#

I guess the ticket can be closed - I am extremely confused (added more detail in a comment under the ticket). Arma genuinely got me more confused than ever right now meowsweats

Sorry for any possbile time wasting!

solid marten
#

It won't be fixed for 2.16, maybe for 2.18

unborn acorn
#

Any updates for Jets DLC function fixes? Eject effects for example? blobcloseenjoy

alpine tulip
#

I do want to see function updates. I mean that also requires a lot of QAs but, yeah like eject function is very broken and poorly written

unborn acorn
alpine tulip
#

If it receives a bit amount of damage that won't trigger the ejection (damage < 0.1) it won't trigger the event but the trigger will be removed thus they will never execute the ejection, they will stick to the plane forever untill they die

#

Made no ticket about it is my fault tho

#

Also IIRC it doesn't care if the vehicle is locked despite every vehicles don't let you to eject if they are locked

gaunt depot
#

@solid marten Is there a timer for HitHull self-destruction in the engine? Maybe it can be added into getEntityInfo too?

#

This time seems to be random, I wonder if we can get it

#

Or maybe even change it to say postpone vehicle's death or cancel or or make it instant

limpid rune
#

its a config variable

#

but I guess a 'getter' for the actual value its assigned would be nice (depending on when its rolled)

gaunt depot
#

Would be cool to have a getter and setter for it

#

ENTITY setHullExplosionDelay NUMBER, NUMBER = getHullExplosionDelay ENTITY

#

For example you'll be able to bump up the timer if there is player or units nearby, or have it end early if they just left so avoid killing them

sinful kettle
gaunt depot
#

Scripted and in non-simulation spirit? Yes, but so it random timer and nuclear explosion from a hatchback that kills a tank.

gaunt depot
#

What I'd do is split ammo stuff into getShotInfo at least

sinful kettle
#

It's starting to have too many irrelevant info

#

Like what's shot stuff doing in there? Shots are not even "entities"

gaunt depot
#

Well I don't think anyone would use main syntax anymore, so its kind of a substitute for separate commands

sinful kettle
#

Sure but at least the returned parameters should be consistent

#

E.g. a separate command like getShotInfo made more sense

gaunt depot
#

Yeah, shot info stuff could be moved to maintain better grouping

#

Speaking of hull explosions, really wish there was an easy way to tell if vehicle will explode or just burn down

#

There are some strange checks going on for having no fuel, no explosive magazines in inventory and such

#

Still not sure about exact conditions

#

Being able to ask the engine would be useful

#

I have a real use to know if vehicle's death produced an explosion right in the Killed EH (_useEffects = true doesn't mean there was an explosion)

#

BOOL = willVehicleExplode ENTITY or something like that

limpid rune
#

its based on ammo and fuel yeah and the amoutn of damage it does depends on how much ammo/how powerful the ammo is

#

for example the nashorn in spearhead doesnt explode as violently as some of the other tanks as it carries a lot less ammo

gaunt depot
#

Huh, is explosion damage really depends on something? I thought it was flat\random.

#

NUMBER = getVehicleExplosionPower ENTITY then?

#

I see there is fuelExplosionPower in config

limpid rune
#

the one on the cfgVehicles list has no info about what that does

gaunt depot
#

Well it seems that fuelExplosionPower = 0 guarantees no explosion

#

Wonder what negative value does

#

Guess the same as secondaryExplosion logic?

#

only Tank and Zamak Water Cistern have it set to -1

limpid rune
#

I cant remember what negative does

#

positive is a multiplier I know that

#

same with secondary explosion, its why ammo and fuel trucks have large values

gaunt depot
#

Added 1000 grenades into its inventory, no explosion but plenty of seconradies

limpid rune
#

i think its based on the vehicles magazines (for their weapons ie tank cannoin etc) not the cargo

#

hence why ammo trucks need their values inflated

gaunt depot
limpid rune
#

odd

#

what vehicle are you adding it to

gaunt depot
#

fuelExplosionPower = -1

limpid rune
#

oh yeah that disables it Im pretty sure

#

trying to find the documentation for it

#

cant find it but im pretty sure that disables the fuel/ammo detection

desert trench
#
    // value<0: calculate from fuel/ammo cargo + tanks and multiply with abs(value)
    // value>0: use value directly as hit in FuelExplosion
    secondaryExplosion=-1;```
#

binarize used to have commented configs

#

unfortunately at some point in A3 (after APEX), they started to purge them

#

very useful source of info was "lost"

#

@gray wharf please fix 🙏

gray wharf
desert trench
#

you are the docu master, arent you?

gray wharf
#

not the source code/data master yeah

desert trench
#

yes sure - but your voice matters, right? 🛐

#

ie the purge was done by mistake or the decision can be reversed

#

C:\Program Files (x86)\Steam\steamapps\common\Arma 3 Tools\Binarize\bin

#

used to have source configs split into hpp

#

now only rapified cpp and bin sits in there with all comments purged

gray wharf
#

commented configs is not the way to go, the data should be centralised on the wiki and losing that data is not welcome
@jaunty narwhal please advise on such purge / data / knowledge (bikb ^^) and what would be doable to get it back?

daring wagon
#

Doxygen for Arma 3 blobcloseenjoy

gray wharf
#

no
please no

daring wagon
#

Yes, please

untold sky
untold sky
#

The config.cpp inside the tools package. Seems to be a AIO config generated from all game data.

Whereas the old files, were only our manually created base "root" configs. that go in dta/bin.pbo
So the new config.cpp for binarize contains much more stuff than the old things did

#

We can re-add the hpp's, but for binarize they serve no purpose to be there. And they also wouldn't match up with the .cpp as they come from different sources

#

If we put them up somewhere tools or github, we likely wouldn't keep them updated with latest changes.

Already for years new config entries weren't added/commented into these. So they're already out of date.

#

GitHub might make more sense, we could accept PR's to add documentation or missing entries?

azure crane
#

checking out the rating.log file generated by the game, why does it not include actual mission name but this __cur_sp thing? Bug?

gray wharf
#

aaah, it must be targeting briefingName and not that other, later property (~2.10?)

daring wagon
untold sky
#

Arma 3 tools are already accessible to everyone I think

daring wagon
#

It's just that we are not even allowed to post full code in the feedback tracker. That's why I am wondering.

untold sky
#

Well you can't violate the A3 EULA.

#

We can 😄

untold sky
daring wagon
#

Post source code then asap

solid marten
gaunt depot
#

Yeah, got pointed at config value

gaunt depot
#

Separating shots info into own command is a good idea though, more coherent grouping

untold sky
#

Or instead of using number for all the things, use strings. And you get grouping by the name?

#

Also makes it easier to see what it does when reading code

solid marten
solid marten
untold sky
#

you don't need to have stringcompare to parse a string

gaunt depot
untold sky
#

It would probably be 2 or 3 steps instead of one step. But still very fast

solid marten
#

you need to select the operator to return

gaunt depot
#

Speaking of shots, is there a command to return explosive charge timer at all? Maybe it can be added into getShotInfo too.

solid marten
#

because somehow current system is not neat?

gaunt depot
gaunt depot
solid marten
untold sky
# solid marten you need to select the operator to return
switch(string[0])
{
case "E": // EntityX
switch (string[6])
{
case "M": // EntityMan
  return entity.IsMan();
case "A": // EntityAnimal
  return entity.IsAnimal()
case "D": // EntityDeadSet
  return entity.DeadSet();
}
case: "S": // ShotX
switch (string[4])
...
}

Sure that means EntityMogobble also returns IsMan, but its fast and whats not documented doesn't exist, so EntityMan is the only option

solid marten
untold sky
solid marten
#

because small and big letters?

untold sky
#

No?

#

Its a tree structure

solid marten
#

i dont see a problem with index when you know what index it is in all array

gaunt depot
#

CD Key validation vibes

untold sky
#

"when you know" yeah thats the annoying thing.
That means everytime you see someone use getEntityInfo in code, you need to open up wiki.
Or everyone will create macros for it because they cannot keep track by themselves

solid marten
#

logically also make sence if you select N the same N you can pass to alt syntax

untold sky
#

And numbers also don't let us group things by categories, like sa-matra wants

solid marten
#

you make new commands to group things, the values that do not really justify new commands but are nice to have, all can go there

untold sky
#

Numbers also means if now we find a new Entity thing, we have Entity things, followed by Shot things, followed by one entity thing, followed again by a shot thing

gaunt depot
solid marten
#

As I said, if there are more values fro shots to return they can be separated into getShotInfo

untold sky
#

If we find more values in a couple months. Then it makes sense to add getShotInfo.
But we already have them in getEntityInfo, and its already been released, so we can never remove them again.
So do we then have duplicates?

uncut briar
#

Why you need more, the time you're writing here you would add it already xD

solid marten
#

2.18 is not gonna happen tomorrow there is time

untold sky
#

I mean what if we find new things after 2.18
This opens maintenance hell

solid marten
#

then we better think of them now

untold sky
#

Not to mention that someday we'll end up with hundred element array

solid marten
#

you are too optimistic

untold sky
#

How about we instead do
entity getEntityInfo "NameOfProperty"
entity getEntityInfo ["NameOfProperty", "NameOfProperty2", "NameOfProperty3"]

most of the time you want just one.
But just in case you want multiple, we also offer that

Now we can group things, code is readable, no huge arrays to worry about (the user gets just what they want)

solid marten
#

dunno, then you have to "select" from multiple because you will always want one value in the end

untold sky
solid marten
#

yeah i got that, talking about multiple

gaunt depot
#

Doubt you'll ever need more than 2 values from there in a real life scenario, most use cases will probably be single value (mine at least)

untold sky
#

(entity getEntityInfo ["NameOfProperty", "NameOfProperty2", "NameOfProperty3"]) params ["_1", "_2", "_3"]
vs
getEntityInfo entity params ["","","","","","","_1","","","","","","_2","","","","","","_3"]

gaunt depot
#

Shot info idea:

  • Is it real or fake shot (shotBullet created for show on other clients)
gray wharf
#

@untold sky please use your autoban tool? 😅

solid marten
#

and from "NameOfTheProperty" you only use one letter to decide which one?

gaunt depot
#

Can be useful as you can't figure this out after Fired has happened (local will be true on all clients)

untold sky
gray wharf
untold sky
gray wharf
untold sky
solid marten
#

So if someone write "E-cigarette" it will got to "Entity"?

untold sky
#

Yes.
Entity and then next letter r

gray wharf
gaunt depot
#

Hash it so people can come up with their own names that would produce same hash, GTA:SA passwords style 😎

untold sky
#

EntityMan
EbogluMebble

would produce the same result.
But doesn't matter? Only documented ones on wiki are valid, everything else is implementation detail that noone needs to know about

gaunt depot
#
player getEntityInfo "ThisIsMySecretPropertyhgjl34hgkj3h4lkj"
``` => `isMan`
solid marten
#

As I said I see no problem with index, but you can add another alt syntax with string arg if you feel so strongly it will improve things

untold sky
#

Or we can take the simple route indeed of just hash it and switch on the hash

#

I don't think adding another one or two alt syntaxes improves much. Rather makes it worse and more messy

gaunt depot
solid marten
untold sky
#

no

solid marten
#

how do you go around it for strings?

untold sky
#

tolower each character before hashing it

#

Every script variable has been doing that since ever

solid marten
#

thats +1 operation index doesnt have

untold sky
#

But atleast that makes the code readable.
There's a reason enums exist and magic numbers are bad

solid marten
#

to lower the whole word could be costly

untold sky
#

nanoseconds costly yes.

My bool optimization already gave us back 10x that cost

gaunt depot
#

Another shot property idea:

  • Is bullet a tracer (I guess there is no way to tell otherwise?)
solid marten
#

shame cannot really reuse getShotParents

#

though parents could have gone to getshotinfo

gaunt depot
#

3 new shot info ideas so far:

  • Mine timer (setter could be useful as well, to stop the timer, for example)
  • Is bullet real of fake
  • Is bullet a tracer
solid marten
#

check with existing mine commands we have

#

what do you mean real/fake bullet

gaunt depot
gaunt depot
solid marten
untold sky
#

But then everyone who wants to use that command, should add their own #define's for everything they want to use?

#

I just don't get why we would do that. When it might just aswell be a string enum and have readable names by default, potentially with logical grouping integrated.

solid marten
#

But this is non existing problem in my opinion, and letting mission maker make own defines for readability is a valid option if they want their mission modded by other or people to learn from their code.

#

we do have other commands that take string names, perhaps you can improve those

untold sky
#

We could if we find out that it matters

solid marten
#

Pretty sure there are some, though not sure about how much matters

untold sky
#

But these we can atleast improve.
Bad stuff we cannot remove ever again. dammaged forever

solid marten
gaunt depot
solid marten
#

shot contains reference so I would expect the reference is alive for the life of the shot, can you check if shooter becomes null if you delete one while shot is still alive?

gaunt depot
#

How can't it be not null if its deleted?

solid marten
#

because nothing is deleted immediately

gaunt depot
#

Bullet flight takes a lot of time and frames, can deleted entity live few more frames after deleteVehicle?

solid marten
#

it can be removed from the world immediately but the object might still exist

gaunt depot
#

Yeah you can also solve this by adding Fired to shooter and then doing setVariable by instigator locality to the shot itself, but I think pulling the info right from the engine is more straight-forward

solid marten
#

IF there is such info, which I am not sure there is

gaunt depot
#

HitPart doesn't trigger for fake shots (but I think it still triggers HandleDamage for bleeding and produces world effects like bullet holes)

gaunt depot
#

[frame, shot, getShotParents]

#

not a fit for getShotInfo though, but a thought for a potential command

#

This probably can be calculated off config values though

solid marten
#

missile is shot too but with additional properties

solid marten
#

bool _submunitionTriggered I suppose this would be useful @gaunt depot

#

The usefulness depends on deleteParentWhenTriggered param from config I expect

gaunt depot
solid marten
#

i guess

sinful kettle
#

Engine implementation is irrelevant to SQFers

#

Entity = what you get using nearEntites/entites

sinful kettle
#

Cramming shot info together with something like "isMan" just makes no sense

#

Using a string doesn't solve that issue

As for the issue of indexes, you can just #define macros for them

gaunt depot
#

@untold sky No way to sneak _context for HandleDamage into 2.16? These fake bleeding and HitHead damages mess with my code a lot.

solid marten
sinful kettle
#

Ok. But do you agree that isMan, etc. and shotInfo are mutually exclusive?

#

And thus don't need to be together?

solid marten
#

both Entites to the engine, so no

sinful kettle
solid marten
#

All the time

sinful kettle
#

Sure 😂

solid marten
#

technically a women but lets not start mmmk?

gaunt depot
# untold sky Doable

If its possible, I'll really appreciate it. I'm working on thorough damage tracking and excluding fake damage will stop false damage from being counted and throwing damage attribution off.

solid marten
gaunt depot
#

Isn't it the same as vectorDir?

solid marten
#

position?

gaunt depot
#

Sorry, no idea how this works, I just thought having a command that will tell if setMissileTarget will work could be useful

solid marten
#

dunno seems something that could be calculated from config value and missile position/direction

#

probably not needed

#

there is a property for the locked target of the missile

solid marten
#

but in general missile has tonnes of properties so not sure

solid marten
solid marten
near cedar
#

Speaking of missiles, is there still an opportunity to get the PCML to not suck if people are willing to submit feedback?

sinful kettle
#

not "stuck"?

gray wharf
azure crane
sinful kettle
#

for some reason I read it as not get stuck 😅

near cedar
#

It does tend to hit the ground so that works too 😄

#

IIRC the main issues are the top attack generally being useless (I think the submunitions tend to miss the target) and the oscillating flight trajectory often hitting the ground mid flight

outer frigate
#

is there any chance we could get handanim support on binoculars

sinful kettle
#

what's that?

outer frigate
#

the hand moving thing per weapon

sinful kettle
#

weapon ik?

outer frigate
#

no handanims arent ik (somehow) its an rtm

#

i mean get handanims like weapons have on binos

#

as atm you only have that one handanim for binos

sinful kettle
#

also risky meowsweats should be backward compatible

#

but I'll forward them to Dedmen anyway

outer frigate
#

😮

#

you are awesome

sinful kettle
#

the probem is, man skeleton doesn't seem to have a dedicated bone for binoculars. so I guess it just uses RightHand?

alpine tulip
#

It's LeftHand but true for pistol as well, and it can have one

outer frigate
#

ya

limpid rune
#

oh thats awesome no more hoverhands binoculars

outer frigate
#

also means you could raise the binos when looking through them 😅

outer frigate
#

uhhhhh are you supposed to be able to mix sides in a group

azure crane
#

thought the unit's side is automatically changed to the group leader's and it stays like that

#

you do that to convert groups from one side to another in a mission after all

outer frigate
#

yeah it should do
except i managed to mix them together 🤪

azure crane
outer frigate
#

dont know what the reproduction steps are i just know it involves selectplayer

sinful kettle
#

You can't raise weapons when you aim either

outer frigate
#

doable but probably a pain in the backside

sinful kettle
#

You can just make a gesture I guess think_turtle

#

Instead of swapping weapons

#

But you can already do that without hand anims

outer frigate
#

yeah idk much about anims so there is probably a better way to do it

#

youd be able to do the same thing with a gesture for a raised weapon anim wouldnt you? 🤔

sinful kettle
#

I guess so yeah

outer frigate
#

maybe i need to learn anims then lmao

long forge
#

I was going through a problem yesterday with the Ai feature TARGET being a bit funny. If I tried to disable the targeting on the ai in its init through the editor, the ai will still shoot targets

#

Would it be possible to verify this others?

alpine tulip
#

https://forums.bohemia.net/forums/topic/281946-run-arma-3-with-dlc-disabled-for-testing-purposes/
Since DLCs are the things in this game, and mission makers may want to check how it is without, I think we want to have this once again

gaunt depot
#

Having it as option sounds like a good idea

alpine tulip
#

Without satisfying Lou's wallet it is good

gaunt depot
#

To selectively disable DLCs

alpine tulip
#

I do believe/recall it was possible via Steam DLC options but hmm

#

Of course for Debug purpose but a Launch Parameter for it?

solid marten
gaunt depot
solid marten
#

I bought another copy long time ago for running HC

gaunt depot
#

Speaking of DLCs, let Tanoa and Livonia be useable without DLCs! Having usual DLC nagging in place when you play there, of course. I bet if BI has some metrics on time played on islands, both these are probably <0.1% of time played. Feels like wasted content potential.

#

I know its a business decision, but maybe others share same thought about it as I do.

alpine tulip
#

Not sure if it is going to happen in A3's lifetime, most unlikely but one way is to make Apex and Contact cheaper

gaunt depot
#

Cheaper wont help it, having a server on Tanoa or Livonia mean you're missing out on half of casual players, switching from Altis/Malden to Tanoa/Livonia means half of the players will be just yeeted of the server, both are unacceptable if you're running public casual servers like we do, not with todays player counts.

#

And speaking of sales, having people play on these islands would be a good incentive to actually buy the DLC

#

(Again, yeah I know nobody here makes these decisions)

#

Wish we were tracking DLC ownership on our servers, I'm certain people end up buying DLC as they play, to get rid of the nagging effects, I've seen people talk about it many times. Same would've happened with Tanoa and Livonia

sleek scaffold
#

Livonia is criminally underplayed for such an amazing map... I guess it is the same for the Gabreta map. Some MP focused games eventually just add the DLC content to the base game when the purchases of the dlcs are below a certain threshold. The other model is the Squad model where they incorporate everything to the base game and the new maps and factions are released so that the price of the base game can be kept high and to attract new players. That is an option for A4 perhaps

#

Keeping too many DLCs as DLCs for too long just confuses new players and making the base game less apealling due to it looking "barebones" which is an issue with A3 in its current DLC form

#

Apex should be the base game by now. Which should cost more and when on sale cost 14 USD instead of 7....

#

All the other DLCs should be put into a single extra DLC so that new players only need to buy one DLC and get all the content A3 has to offer (other than the CDLCs)

gaunt depot
gaunt depot
#

Speaking of CDLCs, Western Sahara fits base game so well that it should've been turned into official DLC.

sleek scaffold
sleek scaffold
#

By the way, are there any tickets for ```sqf
nearestDoor
nearestWindow

limpid rune
#

extremely unlikely as theres nothing in the game that says 'this is a window' and 'this is a door' specifically

#

the only thing close to that is if people keep to naming conventions - and theres no such thing for windows other than the hitpoints

sleek scaffold
limpid rune
#

cuz they have fire geometry

#

with glass material

#

and hitpoints

sleek scaffold
limpid rune
#

yes but not 'nearestWindow" worthy as it could be a glass bottle, a glass cabinet, etc

sleek scaffold
limpid rune
#

they can if theyre made to break

sleek scaffold
regal nimbus
alpine tulip
#

If you're correct we might want to expand/correct BIKI

regal nimbus
#

I think it just controls the group functionality where the leader sends individual squad members out to investigate threats.

#

but of course none of this shit is visible to script so you have to sit there watching the useless idiots in zeus for hours and then guess what's going on.

alpine tulip
long forge
#

like indiviualized careless behaviour

solid marten
hallow sun
#

No need to run Steam for a server/HC, just download them via steamcmd with the account you already own Arma thonk

solid marten
#

@desert trench about deleting of vehicles by remainscollector vs bodies. Vehicles over the limit are deleted immediately and corpses are every second is because corpses deleted via HdeBody and I suppose it does it one body at a time

#

I mean the engine HideBody method not the remains collector, remains collector marks those over the limit all at once. I can switch to immediate deletion but dont think this is necessary

desert trench
#

@solid marten one body per second would be OK i guess. however it seems rather once every ~30s (seems 20-40 range) within a group - which is way to slow

solid marten
#

haven't tested mp but on sp it now works as it should

desert trench
#

"now" as it whats in 2.14?

solid marten
#

now as in after i made some changes as per ticket

desert trench
#

ok will check once available

#

is it coming to perf branch or only dev?

solid marten
#

good question i don't think I modified any network messaging so should be good for prof but will ask dedmen

solid marten
desert trench
#

this means instant removal of the body even when close to players? (depends on the distance setting ofc)

#

imo instant deletion even when player close is fine. the sinking into the ground is something especially people from OFP days are used to (from hiding bodies as player as stealth element). however its been also a frustrating element with body removal if you wanted to "loot" while it is "slowly" disappearing in sight - aka probably best to ditch the hide body altogether for garbage collection

near cedar
#

Perhaps a long shot, but Intel has this APO software for 12-14th gen Core CPUs. I don't know how they get around to deciding which games should be prioritised for optimisation, but I suspect Arma 3 might benefit from it. Is there scope for BI to work with Intel to enable A3 support with APO? And if so, does this warrant a FT ticket?
https://www.intel.com/content/www/us/en/support/articles/000095419/processors.html

sinful kettle
#

it says 14th gen only (also only K/KF/HX variants)

#

also

it works by changing the way specific games run and are scheduled by Windows.
since A3's main problem is cache, I doubt it'll make a huge difference
maybe it could make a difference in reforger tho because it's way more multithreaded than A3

near cedar
near cedar
#

Given that I've heard reports of the 13700K dropping to 35 fps in some parts of Livonia... May be worth it

daring wagon
#

Livonia
Well, Livonia has some issues, or rather its assets

near cedar
#

Yeah that is true but... In contrast my 7800X3D never dips below 60 fps, typically 70+... So I suspect there's more going on with the 13700K

gaunt depot
#

Finally have a reliable repro for this bug

gaunt depot
daring wagon
#

@desert trench this seems to be the issue we are having with our revive system putting the player on top of the tank.

desert trench
#

@calm smelt for awareness

gray wharf
#

new record

midnight mantle
gray wharf
#

(+ 2 others)

nocturne heath
#

was pretty incredible especially for Arma Standards and this is in combat with 70 mods

near cedar
#

Somewhat having trouble believing that — with what settings and what map?

solid marten
# gaunt depot <:hmmyes:1147624204909433022>

So the animation is part of the update position message but once you are a gunner your position doesnt update and you are stuck in either this weird position or soometimes in proper position. Try setpos of the gunner just to force position update and the gunnwer will resync into proper animation. Interesting

solid marten
#

why is this cracking me up

gaunt depot
gaunt depot
#

I can try making a more reliable repro, I originally was freezing other client during entry to mortar, maybe it will be more reliable

azure crane
gray wharf
solid marten
muted harness
gaunt depot
#

v15 perf it seems

desert trench
#

is it possible Eden and/or Zeus has different waypoint completion radius handling vs scripted and normal waypoints?

#

we are seeing AI to halt with tank way further away than the precision value from config

alpine tulip
#

Actually, why screenshot command can generate a white-balanced shot? It is annoying and never figured out how I can avoid it

alpine tulip
#

Oh is that a wrongly made postprocess?

daring wagon
#

Out of curiosity. Is it possible to have an alt syntax for spawn that doesn't require 2 arguments?

#

I guess a binary command cannot have unary syntax as well, right?

daring wagon
#

Right.

daring wagon
#

Out of curiosity. Is it possible to have an alt syntax for spawn that doesn't require 2 arguments?
Is this a yes then 😬 ?

uncut briar
#

yes

daring wagon
#

Let me know if a ticket is needed for that 🙂

solid marten
#

nular

regal nimbus
#

I had issues with the Marshall sometimes stopping outside the completion radius. I think it's because the vehicle tries to brake to hit the waypoint but the calc for the braking distance is not matching the physics.

#

I think the completion radius check is entirely separate. The AI isn't aiming for the radius.

boreal relic
#

wtf id this/

devout wave
#

That's part of Discord, not Arma

stone tree
strong salmon
#

he said please ...

gray wharf
#

indeed, sorted

solid marten
gaunt depot
#

10 years ago meowsweats

#

I barely remember what it was, tried the repro again and I can't reproduce it

#

Close it as resolved, the engine changed so much over they years its obsolete now

desert trench
#

8:53:36 Tried to create group while group limit is reached on side Game Logic
8:53:36 ➥ Context: [] L36 ()
[] L24 ()
[] L27 ()
[] L28 ()

#

what does it mean if it cant get the script context?

#

vs

#

8:37:10 Tried to create group while group limit is reached on side Game Logic
8:37:10 ➥ Context: [] L31 (A3\functions_f\Modules\fn_initModules.sqf)
[] L19 (A3\functions_f\Modules\fn_initModules.sqf)
[] L22 (A3\functions_f\Modules\fn_initModules.sqf)
[] L23 (A3\functions_f\Modules\fn_initModules.sqf)

solid marten
#

you executed ad hoc from debug console?

desert trench
#

hm should not as far as i can tell (did only execute a pure sqf command setPos beaming)

near cedar
#

The "refresh" button doesn't appear to refresh the microphone device, would be nice if it could do that too

azure crane
#

I think there's a reason for that, mainly changing microphone while Arma's running will make it crash most of the time.

alpine tulip
#

Then fix the crash

outer frigate
#

windows bug

near cedar
#

it doesn't crash, i did it today (win 10, X670E chipset, perf binary from steam)

#

windows had incorrectly set the mic to my USB DAC, so it wouldn't work in Arma

#

Changing the default mic did not affect game stability, but it continued to not work -- even after trying to refresh it using that option

daring wagon
gaunt depot
sinful kettle
#

KK already claimed that

#

also I don't look at anything anymore. I'm just cleaning up my current tickets

gaunt depot
#

I'm not sure how this stuff works exactly, but maybe it could be possible to calculate unit velocity value with collision shape instead of entity center

solid marten
gaunt depot
#

Though what's gonna happen when collision shape shifts, huge speed jump? 🤔

#
if(collisionShapeThisFrame == collisionShapePrevFrame) then {
    /* calculate velocity by collision shape movement */
} else {
    /* calculate velocity by entity position*/
}
```in SQF-speak
#

I wonder if usual Arma 3 remote player unit floatiness also happens due to this issue

solid marten
#

I will come back to that ticket but not now

gaunt depot
#

(bit from some random reddit video that reminded me of this issue again)

#

If velocity was never jumping during rotating movements maybe prediction wouldn't overshoot that much for this floatiness to happen

solid marten
gaunt depot
solid marten
#

what do you mean

gaunt depot
#

I thought you meant there will be swing during collision shape shifting