#dev_rc_branch

1 messages · Page 3 of 1

trim crane
#

I couldn't figure it out completely but it is possible with .rvmat render flags, perhaps a dedicated flag to allow for transparency could be introduced?

#

I lack material and rendering insight to tell what has to be done exactly

#

Then we'll need procedural materials that modify existing materials and add needed flags samatra

#

Another result, I had no idea what I was doing but it worked sometimes

carmine juniper
#

Huh interesting

wraith perch
#

@crisp wyvern interesting gif. I felt like it was GTA V with going into the garage. ;-)

trim crane
#

Very hard to control too, unfortunately

#

GIB

renderFlags[]={"ForceOpacity"};
#

Though having copy of each material for each vehicle with this flag added into .rvmat doesn't sound like a way to go at all 🤔

carmine juniper
#
class Cfg3DEN
{
    class EventHandlers
    {
        class PLP_EAB
        {
            init = "0 call {diag_log 'then is it?'}; 0 spawn {diag_log 'is it working?'};";
        };
    };
};```result:```
22:57:21 "then is it?"
```Somehow `spawn` does something wrong with Eden Init
full sonnet
#

During world load, there is a place where all spawned scripts are cleaned up. Maybe that happens after that init step

carmine juniper
#

That would explain. Adding MissionEH doesn't work either

full sonnet
#

try initPost maybe

carmine juniper
#

Is it a thing?

full sonnet
#

I don't know if its named like that.. also not if there... mh
Can't check now, maybe later

carmine juniper
#

initPost or postInit don't work

mental fulcrum
#

Normal cfgFunction with postInit=1 and exit if not Eden.

carmine juniper
#

Is this solution even a thing? I have never experienced postInit works in Eden

mental fulcrum
#

It does.

#

preInit does not run in 3den. postInit does.

carmine juniper
#

It doesn't work for me?

mental fulcrum
#

Another alternative I can think of is adding dummy control with onLoad to the display. Maybe that's after the point the game clears spawned scripts.

full sonnet
#

Yeah doesn't work because binarize doesn't have DX11 (apparently its running DX9??? uff.. Welp)
I will add a workaround to just pass the background color through. So whatever you use as background color will be the thingy
And if you make background color transparent, it should know that

#

According to what I can find, Cfg3DEN doesn't even have a init event 🤔

#

huh normal ui texture has no background color, I thought it did 🤔

Its fixed now (binarize will handle it like color proc texture, where the color and texture type are what you provide as background color and texture type, that should work)
We'll try to do a tools dev branch update soon-ish. Please confirm for me that it works when that's out 🫂

trim crane
full sonnet
#

its a flag on the polygon yes

trim crane
#

Wish we could flip it for entire mesh temporarily somehow to allow implementation of such ideas

#

Or something like ENTITY forceObjectMaterialAlpha [INDEX, BOOL] with index being hidden selections

#

Very narrow usage though, so I keep dreaming

full sonnet
#

Yes I heard your wish, quite a few times in fact

trim crane
viscid onyx
trim crane
#

Well you can already make selections invisible with setObjectTexture [0, ""] even if polygons don't have alpha flags

harsh orbit
viscid onyx
viscid onyx
full sonnet
#

Skipping dev this week because I broke it :harold:
For a good cause tho meowsweats

carmine juniper
#

O intrstng

full sonnet
#

meowtrash
Before

callFunction if;
push {
  push "test"
  callFunction hint;
}
callOperator then;
push "all done"
callFunction hint;
``` After

0000:nular
0010:unary if
0030:jmpIfFalse 0070
0040:const "test"
0050:unary hint
0070:rstStack
0078:const "all done"
0088:unary hint


_x is always 1
```sqf
[
[{_result = []; {if (_x == 1) then {_result pushBackUnique _x}} forEach _this;},"0.665889","100.0"],
[{_result = []; {;;if (_x == 1) then {_result pushBackUnique _x}} forEach _this;},"0.129217","19.4"]
]

[
[{_result = []; {if (_x == 2) then {_result pushBackUnique _x}} forEach _this;},"0.447693","100.0"],
[{_result = []; {;;if (_x == 2) then {_result pushBackUnique _x}} forEach _this;},"0.066216","14.8"]
]

[
[{_result = []; {if (_x == 2) then {}} forEach _this;},"0.444567","100.0"],
[{_result = []; {;;if (_x == 2) then {}} forEach _this;},"0.066684","15.0"]
]

[
[{_result = _this apply {(if(true) then {5}) + (if(true) then {8})}},"0.732687","100.0"],
[{_result = _this apply {;; (if(true) then {5}) + (if(true) then {8})}},"0.108609","14.8"]
]

Next up is supporting else
supporting elseif and lazy eval for the conditions is actually much easier with the new VM.. but I can only create things ontop of the old VM ._.

meager sage
#

inb4 branchless programming gets a separate wiki page

weary niche
weary niche
#

One thing I noticed with this method though is that when UIOnTexture's unique ID is applied via the .p3d, as opposed to via script or hiddenSelection, it forces the unique ID to lowercase. It might be good to have a note regarding using toLower in conjunction with findDisplay when looking for a UIOnTexture unique ID. (On a related note, who would I want to talk to in regards to getting a wiki account? There've been a few things I've come across that could use better documentation, and I'd love to add a few things here and there if possible!)

#

With the thought of the forced lowercase in mind, has anyone tested to see if the Text procedural has the same issue when applied via .p3d? I can't imagine it would be that much of an issue, but it might be worth documenting somewhere if so.

full sonnet
#

Wiki account is Dwarden, maybe Lou can help, i think Dwarden

full sonnet
#

No matter if you give it a path or a procedural, everything in that text input field becomes lowercase

weary niche
full sonnet
#

that forceAddUniform (and other) commands causing the object not found spam thing on server.
Should be fixed on next dev branch update 🤞
I doubt that will catch all the spam though, but it should get rid of the uniform stuff
ref #perf_prof_branch message

full sonnet
#

"Simple VM" or "Fast VM" as new name?
I don't really want to name it Fast/Rapid 🤔
Probably just Simple VM

winter crescent
#

"Short VM", as homage to the working title derpWolf

carmine juniper
#

VM.exe

trail aurora
#

Blazing (Fast) VM

bleak canopy
#

Real Virtuality Machine

mental fulcrum
#

EnSQF!

harsh orbit
#

DedVM

#

DedVMen think_turtle

full sonnet
#

Its already decided 🫂
Please don't make me realize there is a better name and make me change it again 😄

full sonnet
#

if (_x == 1) then {hint "trueCode"} else {hint "elseCode"}

0000:const any
0010:const 1
0020:unary ==
0048:unary if
0068:jmpIfFalse 00B8
0078:const "trueCode"
0088:unary hint
00A8:jmp 00E8
00B8:const "elseCode"
00C8:unary hint
00E8:ret(implicit)

👀

#
_bigArray = [];   
_bigArray resize 1000;   
_idx = 0; 
_bigArray = _bigArray apply {_idx = _idx + 1; _idx};  

[[   
{_result = _this select {if ((_x % 2) == 0) then {true} else {false}};},    
{_result = _this select {;;if ((_x % 2) == 0) then {true} else {false}};} 
], _bigArray] call _relativeProfile; 
[
[{_result = _this select {if ((_x % 2) == 0) then {true} else {false}};},"0.807609","100.0"],
[{_result = _this select {;;if ((_x % 2) == 0) then {true} else {false}};},"0.104018","12.9"]
]

[
[{_result = _this select {if ((_x % 2) == 0) then [{true},{false}]};},"0.850380","100.0"],
[{_result = _this select {;;if ((_x % 2) == 0) then [{true},{false}]};},"0.108269","12.7"]
]
mental fulcrum
#

unary == thomp why is this not binary

full sonnet
#

👀 wuht

mental fulcrum
#

Equal sign has things on both sides

#

Ah

#

Is this a bug or is this how VM works

full sonnet
#

I copy paste things alot, I hav fixed nau
thanku

mental fulcrum
#

So above benchmark was wrong? How did the code work with wrong Assembly blobsweats

#

I hope you're unit testing this meowtrash

full sonnet
#

the assembly to string thing was wrong
the assembly is right

tepid dock
#

It looks like it was just being printed out wrong

#

Yup

full sonnet
#
0000:const any
0010:const 1
0020:binary == (variants 1)
0048:unary if (variants 1)
0068:jmpIfFalse 00B8
0078:const "trueCode"
0088:unary hint (variants 1)
00A8:jmp 00E8
00B8:const "elseCode"
00C8:unary hint (variants 1)
00E8:ret(implicit)

fix

#

== has 16 different overloads.
But because it saw that one arg was a number, it could get rid of the 15 non-number overloads and will only check for one :3

mental fulcrum
#

Noice

#

How does the compilation work now, do you compile to the old bytecode and then translate to the new format? I guess that's the way to support SQFC

full sonnet
#

Input is normal compiled script instructions (no matter where it came from, SQFC also deserializes into these) that would normally just be executed by the old VM.
It then translates that into new VM instructions

During translation does all the checks for limitations that the new VM can't do

dim bone
#

I can turn simpleSqf on to all the code in my mission? blobcloseenjoy

#

NorisSQF

full sonnet
#

SimpleVM, it'll be on by default

wise dragon
#

ViMple

trim crane
mellow shoal
#

Dedmen pls use us for naming things we seem to be really good at it for some reason

full sonnet
#
[
if (true) then {1;2;} else {1;2;},
if (true) then {1;2;} else {1;2;}
]
0000:nular
0010:unary if (variants 1)
0030:jmpIfFalse 0078
0040:const 1
0050:rstStack 0
0058:const 2
0068:jmp 00A0
0078:const 1
0088:rstStack 0
0090:const 2
00A0:nular
00B0:unary if (variants 1)
00D0:jmpIfFalse 0118
00E0:const 1
00F0:rstStack 1
00F8:const 2
0108:jmp 0140
0118:const 1
0128:rstStack 1
0130:const 2
0140:createArr 2
0150:ret(implicit)

Chance of me not having messed up somewhere? High. :U
Lots of playtesting ahead I guess
Due to the scopes I need to reset stack to specific point, instead of just resetting to zero notlikemeow

#
1k
[
[{_result = _this apply {if ((_x % 2) == 0) then {1;2;} else {1;2;};}},"0.790656","100.0"],
[{_result = _this apply {;;if ((_x % 2) == 0) then {1;2;} else {1;2;};}},"0.096420","12.2"]
]

10k
[
[{_result = _this apply {if ((_x % 2) == 0) then {1;2;} else {1;2;};}},"7.737373","100.0"],
[{_result = _this apply {;;if ((_x % 2) == 0) then {1;2;} else {1;2;};}},"0.917851","11.9"]
]

This darn 12% :U Why exactly 12% 😠

trim crane
#

12%VM

full sonnet
#

About hashMap objects.
Started thinking a bit about inheritance and it seems quite annoying.

In general you can use merge command to merge your sub-class into the base

like

_base = [ ["Method1", {"BaseImpl"}], ["Method2", {"BaseImpl"}] ];
_subChanges = [ ["Method2", {"SubImpl"}] ]; // Overrides

_sub = +_base;
_sub merge [_subChanges, true] // merge and overwrite existing
_subInstance = createHashMapObject [_sub];

This will work well enough if you just use methods that you override.

When you override constructor though... You may need something like

_sub merge [_subChanges, true];
_sub set ["#baseConstructor", _base get "#create"];
_sub set ["#subConstructor", _sub get "#create"];
_sub set ["#create", {_thisObj call ["#baseConstructor"]; _thisObj call ["#subConstructor"]; }];

to make sure all the constructors are called in order notlikemeow

Also big issue I just noticed with this, the template passed to createHashMapObject can only be array. Thats quite ineffective if you want to merge multiple templates together like this.
So I'll have to also implement hashmap argument support there

(also just noticed the wiki page is out of date regarding how the constructor arguments are passed, and also needs example for that)

trim crane
#

Maybe have a special key that stores constructor and destructor call order?

#

#createOrder or something, that automatically gets populated when you merge two hashmaps somehow? Probably gonna involve renaming previous constructor to another key or something

meager sage
#

_hashMap inheritFrom [_parent1, _parent2,...]; 🙃

trim crane
#
_base = [["#create", {systemChat "This is base"}]];
_sub = _base mergeAsObject [["#create", {systemChat "This is sub"}]];
```=>

[
["#create", {systemChat "This is base"}]
,["#create2", {systemChat "This is sub"}]
,["#createOrder", ["#create", "#create2"]]
];

```sqf
_sub_object = createHashMapObject _sub;
//This is base
//This is sub
#

Or even simplier:

[
    ["#create", [
         {systemChat "This is base"}
        ,{systemChat "This is sub"}
    ]]
];
full sonnet
#

My alternate idea was to allow createHashMapObject to take array of templates
aka createHashMapObject [baseTemplate, subTemplate, ..., constructorArgs]
that will then merge them together and combine constructors/destructors

trim crane
full sonnet
#

/shrug too late

full sonnet
full sonnet
#

I think I will go for
["#base", baseClassTemplate],
Then when you call createHashMapObject, it will find it and merge them all together

will probably have to add a
["#typename", "classname"]
so you have a way to check "is type of"

What would be better,
on merge transform it into
["#typename", ["subclass", "baseclass"]]
or into
["#typename", subclass"]
["#inheritance", ["subclass", "baseclass"]]

The first would be easier for me.
So then to check if something is of type you just do
"subclass" in (_object get "#typename")
(which will be slightly wrong if #typename is a string, maybe enforce it being array? 🤔 But that'd be confusing when you give your type multiple types in your template.

Maybe force convert to array when you call createHMObject
so when you are handling a instance, it will always be array

And this may also be a candidate for a value that is always constant and cannot be overwritten? even if your object doesn't set the sealed flag?

harsh orbit
#

the syntax is just too messy

#

and impossible to remember

#

if you want to implement inheritance you should do it via a command

#
_class = [
  ["#create", ...]
] extends _base

which is also meh meowsweats

meager sage
#

"too messy and impossible to remember" just like most things SQF

harsh orbit
#

no

#

this is a whole new level of arbitrary string mess to me blobdoggoshruggoogly

#

imo just forget about inheritance

#
class "base" : [

]
class "class" extends "base" : [

]
#

still meh...

meager sage
#

inb4 config-defined code classes

full sonnet
#

A new script command, that all it does is add a specifically named hashmap entry? ugh
I'd rather not

harsh orbit
#

no I meant a new "class" type meowsweats

full sonnet
#

There is a reason I went with the minimal invasive variant of making this a hashmap

harsh orbit
#

I know

#

which is why I don't like inheritance either

full sonnet
#
private _animalDeclaration = [
    ["#typename", "IAnimal"],
    ["HasFur", { false }] // Default impl
];

private _catDeclaration = [
    ["#base", _animalDeclaration], // Inherits from animal
    ["#typename", "Cat"],
    ["HasFur", { true }] // Overrides base method
];

private _pigDeclaration = [
    ["#base", _animalDeclaration], // Inherits from animal
    ["#typename", "Pig"],
    ["HasFur", { false }] // Overrides base method
];

_someFunction = {
  param ["_animal"];
  if !("IAnimal" in (_animal get "#typename")) exitWith {"Must be animal!";}

  if (_animal call ["HasFur"]) then {...};
}


_pigInstance = createHashMapObject [_pigDeclaration];
// _pigInstance get "#typename" is now ["Pig", "IAnimal"]

_pigInstance call _someFunction;
``` That's my idea so far

We can add `typeOf` or `isKindOf` alt syntax for hashmap object as an alias. But that seems like a waste
`isKindOf` might make sense as that would be faster than the get and in
harsh orbit
#
_animalBase = class "IAnimal" : [
  ["HasFur", { true }]
];
_catDeclaration = class "Cat" extends _animalBase : [
  ["HasFur", { true }]
];
full sonnet
#

So I shall add 2 more commands for something I can do in one that already exists? notlikemeow

#

All these would do is just build that array for you in a fancy way

harsh orbit
#

well the point is making it look good

full sonnet
#

But it doesn't need to look good

harsh orbit
#

well apart from making it look good the command enforces correct syntax

#

with a bunch of arrays and strings you're on your own and you can easily mess up things

#

and you won't know about it until you've run the script (if the script even shows warnings about that)
but commands can be checked by linters

full sonnet
#
_makeClass = {
  params ["", "_typename", "_extend", "_baseclass", "_declaration"];

  if (!isNil "_extend" && {_extend isEqualTo "extends"}) then {
    _declaration set ["#base", _baseclass];
  } else {
    _declaration = _extend; // alt syntax ["", typename, declaration]
  }

  _declaration set ["#typename", _typename];
  _declaration 
}

_animalBase = ["class", "IAnimal", [["HasFur", { true }]] call _makeClass;
_catDeclaration = ["class", "Cat", "extends", _animalBase, [["HasFur", { true }]] call _makeClass;

😄

meager sage
#

time to add emoji identifiers to the mix

wise dragon
#

if (_x isKindOf 😃) exitWith {};

meager sage
#

#ifdef 👿
#define TRUE 0
#define FALSE 1
#endif

harsh orbit
full sonnet
wise dragon
#

can you use emojis as hashmap keys then provided theyre strings

full sonnet
#

yeah

wise dragon
#

omg

full sonnet
#
private _decl = createHashMapFromArray [ 
  ["😃", { "Smil" }]
]; 
 
_obj = createHashMapObject [_decl];
_obj call ["😃"]
``` `"Smil"`
wise dragon
#

i love that

full sonnet
#

One thing missing will be like super.method()
cannot call baseclass methods because I won't store then.. currently.. And with the complexity I don't really want to

full sonnet
#
private _animalDeclaration = [
    ["#type", "IAnimal"],
    ["GetSkinType", { "None" }], // Default impl
    ["GetRunSpeed", { 0 }],
    ["MemberVar", 0]
];

private _catDeclaration = [
    ["#base", _animalDeclaration], // Inherits from animal
    ["#type", "Cat"],
    ["GetSkinType", { "Fur" }] // Overrides base method
];

private _pigDeclaration = [
    ["#base", _animalDeclaration], // Inherits from animal
    ["#type", "Pig"],
    ["GetSkinType", { "Pig" }], // Overrides base method
    ["MemberVar", 5]
];


createHashMapObject [_pigDeclaration];

[["GetSkinType",{ "Pig" }],["#type",["Pig","IAnimal"]],["MemberVar",5],["GetRunSpeed",{ 0 }]]

Next up constructor/destructor merging 😓

#

One thing potentially.
You may want some custom inheritance behaviour? Some function that runs when a base is merged in which can do something custom? 🤔
I can't think of a usecase yet though
Could implement it to test for "abstract" methods and throw error when you create a abstract subclass.
Or to implement non-overridable methods (in the function check if it had been overwritten, if yes, just force it back)

Its probably too messy, we can just add it later when someone finds a need

harsh orbit
#

btw could you at least make it so that the #flags can be added to the array multiple times? notlikemeow
That way you can define more cool macros:

#define class(x) [["#typename", QUOTE(x)]] +
#define extends(x) [["#base", x]] +
#define sealed [["#flags", ["sealed"]]] +
#define nocopy [["#flags", ["nocopy"]]] + 
#define unscheduled [["#flags", ["unscheduled"]]] + 

_class = nocopy sealed class(MyClass) extends(_base) [

];
// and the cool thing is you can place the flags anywhere you want:
_class2 = class(MyClass) extends(_base) sealed nocopy [

];

if not possible, another idea is making separate flags: ["#sealed", true] blobdoggoshruggoogly

timber sorrel
#

1.55dev, the tank-flying-around-for-no-reason seems worse than ever now. I just flew fifty meters with a Slammer tank doing 2-3 rotations mid air. After I landed I turned the tank and flew around again, this time landing upside down.

full sonnet
#

alternative is to use a hashmap instead of array
then you .. mh I don't know

harsh orbit
#

well you could make it work using a custom version of createHashmapFromArray that merges array values instead of reassigning 😅

light lintel
#

I think what really needs to be done is port Arma 3 to DX12 with OpenMP support

full sonnet
#
private _animalDeclaration = [  
    ["#type", "IAnimal"],  
    ["#create", { systemChat "Animal Initializing.." }] 
];  
 
private _pigDeclaration = [  
    ["#base", _animalDeclaration], 
 ["#type", "Pig"],  
    ["#create", { systemChat "Pig established" }] 
];  
 
private _smolPigDeclaration = [  
    ["#base", _pigDeclaration], 
 ["#type", "SmolPig"],  
    ["#create", { systemChat "Pig is smol" }] 
];  
  
createHashMapObject [_smolPigDeclaration]; 
``` -> `[["#type",["SmolPig","Pig","IAnimal"]],["#constrList",[{ systemChat "Animal Initializing.." },{ systemChat "Pig established" },{ systemChat "Pig is smol" }]],["#create",{(_thisObj get '#constrList') apply {call _x}}]]`

![blobdoggoshruggoogly](https://cdn.discordapp.com/emojis/748124048025714758.webp?size=128 "blobdoggoshruggoogly")
#

oh right I renamed to _self instead of _thisObj . Already forgot and I trusted the wiki 😄

harsh orbit
#

Unary get set call wen?

full sonnet
#
private _animalDeclaration = [ 
  ["#type", "IAnimal"], 
  ["#create", { systemChat "Animal Initializing.." }],
  ["#delete", { systemChat "Animal bye" }]
]; 

private _pigDeclaration = [ 
  ["#base", _animalDeclaration],
  ["#type", "Pig"], 
  ["#create", { systemChat "Pig established" }],
  ["#delete", { systemChat "Pig bye" }]
]; 

private _smolPigDeclaration = [ 
  ["#base", _pigDeclaration],
  ["#type", "SmolPig"], 
  ["#create", { systemChat "Pig is smol" }],
  ["#delete", { systemChat "Smol bye" }]
]; 
 
createHashMapObject [_smolPigDeclaration ];

ez

carmine juniper
#

Poor piggo

full sonnet
#

Clone not sure. I guess that's same as constructor, so call base first then sub 🤔

harsh orbit
#

Depends

#

It should typically be the topmost no?

full sonnet
#

In C++ copy constructor is base first then sub
Copy assignment is sub first with the option to call base
I think this is more of a copy constructor thing

harsh orbit
#

btw did you consider the multiple flags thing? 😓

full sonnet
#

Problem is. Creation works by first converting the array to a hashmap (or skipping that if input arg is hashmap)
and then reading the properties from the hashmap to handle flags and fire constructor

full sonnet
#

Oh I didn't understand that when you wrote it, now I got it 🤔
Thats probably useful

#

[a, b]
[a,c]

into
[a, [b,c]]

then?

harsh orbit
#

Yeah

#

Well [a, [b]] and [a, [c]] into [a, [b,c]]

full sonnet
#

Uff that would need a new command name notlikemeow

harsh orbit
#

Just make an internal one 😓

#

That takes an additional optional arg or something

full sonnet
#

Maybe later 👀

#
private _animalDeclaration = [  
  ["#type", "IAnimal"],  
  ["#create", { systemChat "Animal Initializing.." }], 
  ["#clone", { systemChat "Animal Copied" }], 
  ["#delete", { systemChat "Animal bye" }] 
];  
 
private _pigDeclaration = [  
  ["#base", _animalDeclaration], 
  ["#type", "Pig"],  
  ["#create", { systemChat "Pig established" }], 
  ["#clone", { systemChat "Pig Copied" }], 
  ["#delete", { systemChat "Pig bye" }] 
];  
 
private _smolPigDeclaration = [  
  ["#base", _pigDeclaration], 
  ["#type", "SmolPig"],  
  ["#create", { systemChat "Pig is smol" }], 
  ["#clone", { systemChat "Smol Copied" }], 
  ["#delete", { systemChat "Smol bye" }] 
];  
  
+createHashMapObject [_smolPigDeclaration ];
#

Also for inheritance I ignore flags of base if parent overwrites it.
I could combine, but then the problem what if subclass wants to remove a flag from a parent? notlikemeow

harsh orbit
#

Well it's a bit messy
Let's say you inherit a base that needs to be unschd
But you want to be schd
What to do?! meowsweats

#

Spawn your stuff?! 😅

full sonnet
#

I think I can just put that burden onto the scripter using it.

harsh orbit
#

So no override?

full sonnet
#

The subclass flags get set and override all the bases.

Btw the constructor/destructor/copy lists, are set up before constructor call. Inside constructor call they could be modified

harsh orbit
#

i.e. base uses sleep (schd), but you want to be unschd

full sonnet
#

I expect the scripter doing the inheriting, to know what the base requires.
The constructor and stuff handling is just for convenience so you don't have to do it yourself.

harsh orbit
full sonnet
#

currently not.
I may make them read-only after the constructors run through

Actually yeah I wanted to make them readonly but forgot 😄

#

Making them readonly before constructor is easier, but being able to mod them in constructor offers some more possibilities

carmine juniper
#

So, tried the extended Video Settings (cc @candid dew)
Very Low vs Standard Texture. I do not think it is working properly...?

harsh orbit
#

(well uninitialized stuff)

full sonnet
#

If the base class deletes constructors of subclass yeah, that'll mess things up
or deleting destructors meowsweats

#

Mh I can always change it later if someone has a usecase, I'll make it readonly then for now

carmine juniper
harsh orbit
#
#define def(x) [x, {
#define end }]
class("MyClass") extends(_base) sealed nocopy [
   def("function")
     hint "hello"
   end
]

meowsweats

ocean sail
#

hit effects on "extreme" preset in some surfaces seems missing
I was shoot at tree and no wood chips, only crater (iron and some dirt objects too)

ocean sail
ocean sail
full sonnet
#

I have it in my internal build.
Can anyone else reproduce it being missing?

full sonnet
#

Thank you. But now am big confused 😄

#

Maybe a data issue then, I run new exe on old data so I wouldn't get data change bugs
Luckily I don't touch data so its probably not my fault 😄

unreal arrow
hollow field
#

I don't have A3 installed right now, does the extreme setting increase the maximum shadow distance?

ocean tundra
#

Hii any news of a fix for the steam infinite 0 byte download loop thing that causes massive stuttering?
game is just unplayable because of that sadtrollfacewhy

full sonnet
#

no news

full sonnet
#

Command line option to export addon loadorder graph?
Just saw engine has this functionality but only for internal. Might be useful 🤔

harsh orbit
#

One for anim graph too 😛

full sonnet
#

I don't know what anim graph is

full sonnet
#

yeah

harsh orbit
full sonnet
#

I don't know anything about anims 😄

harsh orbit
#

Well each anim state has an array entry in config: connectTo and interpolateTo (and from variants). And the arrays contain pairs of nextanimstate, cost. So if you want to go from anim1 to anim2 it finds a path in the graph and then the anim states are played one by one

class anim1 {
 connectTo[] = {
   "anim2", 0.1
   "anim3", 0.2
 };
};
#

Tho I don't think that this stuff are relevant because the game already generates the graph when you launch the game

full sonnet
#

Just build your own 😠 :pepewalkaway:

harsh orbit
#

I did 😅

harsh orbit
carmine juniper
#

Yeah, it ain't November today

light lintel
timber sorrel
winged copper
#

When are the passenger firing arc changes going to main branch?

#

Changes sound good. Being able to turn out of the back of pickup trucks seems awesome. I have a couple missions that could use some cool car chase/ fighting parts.

full sonnet
#

:popcat:
&& CODE and || CODE support

1k entries with bohemia as author

[
[{_this select { isText (_x >> "author") && {!(getText (_x >> "author") in [localize "STR_A3_Bohemia_Interactive", "CFGPATCHES_AUTHOR", ""])} }},"1.475153","100.0"],
[{_this select {;; isText (_x >> "author") && {!(getText (_x >> "author") in [localize "STR_A3_Bohemia_Interactive", "CFGPATCHES_AUTHOR", ""])} }},"0.627054","42.5"]
]```
1k entries with dedmen as author
```sqf
[
[{_this select { isText (_x >> "author") && {!(getText (_x >> "author") in [localize "STR_A3_Bohemia_Interactive", "CFGPATCHES_AUTHOR", ""])} }},"1.377786","100.0"],
[{_this select {;; isText (_x >> "author") && {!(getText (_x >> "author") in [localize "STR_A3_Bohemia_Interactive", "CFGPATCHES_AUTHOR", ""])} }},"0.542305","39.4"]
]```
1k with no author
```sqf
[
[{_this select { isText (_x >> "author") && {!(getText (_x >> "author") in [localize "STR_A3_Bohemia_Interactive", "CFGPATCHES_AUTHOR", ""])} }},"0.486329","100.0"],
[{_this select {;; isText (_x >> "author") && {!(getText (_x >> "author") in [localize "STR_A3_Bohemia_Interactive", "CFGPATCHES_AUTHOR", ""])} }},"0.104085","21.4"]
]```
10k elements
```sqf
[
[{{true  || { false  || {false}}} forEach _this},"46.841255","48.7"],
[{{true  ||  {false} || {false} } forEach _this},"59.999447","62.3"],
[{{false ||   false  ||  false  } forEach _this},"62.342659","64.8"],
[{{true  ||   false  ||  false  } forEach _this},"61.472248","63.9"],
[{{false ||  {false} || {false} } forEach _this},"96.274055","100.0"],

[{{;;true  || { false  || {false}}} forEach _this},"4.253351","4.4"],
[{{;;true  ||  {false} || {false} } forEach _this},"4.604771","4.8"],
[{{;;false ||   false  ||  false  } forEach _this},"12.603547","13.1"],
[{{;;true  ||   false  ||  false  } forEach _this},"12.281657","12.8"],
[{{;;false ||  {false} || {false} } forEach _this},"7.726990","8.0"]
]```
halcyon moth
#

hmm. How does false || false end up slower than false || {false} in the new version?

full sonnet
#

Because it has to execute the second false command. Whereas the faster one jumps over it

A jump is cheaper than executing a script command

halcyon moth
#

I don't get it. It could be false || {true} ?

full sonnet
#

Ah now I see 🤔
mh

#

Also the true || false || false should be faster than it is

#

Ah!

#

the || CODE never executes the or command

#

|| CODE is replaced by jump instruction
whereas
|| BOOL executes both the command creating the bool, and the or command

#

;;false || false || false

0000:nular
0010:nular
0020:binary || (variants 1)
0048:nular
0058:binary || (variants 1)
0078:ret(implicit)

;;false || {false} || {false}

0000:nular
0010:jmpIfTrue To 0028
0020:nular
0030:jmpIfTrue To 0048
0040:nular
0048:ret(implicit)

There, fewer commands == faster

Even if it doesn't take any of the jumps, the first one has 2 binary commands more

I could probably make the first one also do lazy-eval, but thats dangerous and gets complex if its more than just a nular, so probably won't

halcyon moth
#

If it works that much better with code brackets, can't you just treat every expression as being wrapped by code brackets?

full sonnet
#

Yeah last line that I edited into my message

halcyon moth
#

it's grim having to add them for better performance :/

wise dragon
#

i used to think && and || were lazy eval operators tbh

full sonnet
#

Lazy-eval'ing stuff that people don't expect to be lazy-eval'ed would be bad.
you could have a array pushBack in there for example. Turning that into lazy-eval and making it not run would break code.
That would need way too much safety checking to be worth the time investment

#

You don't have to add them for better performance, I already give you a huge speedup anyway.

It would only make sense to do, if you could guarantee that SimpleVM will run your code, otherwise you'd make it slower

#

Another thing I could do is replace script commands with native instructions. But thats a bottomless can of worms

pallid rover
#

Hmm, any chance for multiple inheritance support in configs? meowhuh

full sonnet
#

no

dim bone
#

Simple SQF have chance to be on the next Arma 3 update?

#

2.14 i believe.

full sonnet
#

Yes

light lintel
#

What is the name of your Simple SQF wiki page?

full sonnet
#

There is none for "SimpleVM"

crisp wyvern
#

@winged copper Presumably whenever 1.54 hits stable :)

digital vessel
#

2.13.150692 - compileFinal [1, 2, 3]; (biki example #3) Error compilefinal: Type Array, expected String,code,HashMap

full sonnet
#

#community_wiki message
Mh confusing. I say it takes Any, but.. it does not
Why did I say that when I didn't do that 🤔

#

my changelog entries say no array

#

I'm removing the array mention from wiki for now 🤔

digital vessel
#
tempA = [1,2];
tempH = createHashmap;
tempH set ["a", tempA];
tempH = compileFinal temp;
myFinalArray = temp get "a";
myfinalArray pushBack 5; //   Error Reserved variable in expression (still just [1,2])

looks like you can still make a "final" array 😄

full sonnet
#

Great, then I don't need to add another command for that

lucid totem
#

dat overhead though

weary niche
#

I noticed that "GPUName" got removed from getVideoOptions, is there any chance we could get a getHardwareInfo like was requested by R3vo? I had intended to create a script that stores the hardware and video settings of players while running playtests for my mod, and having GPUName and CPUName would be much easier data to collect than asking every player to fill out a form with their hardware before hand.

full sonnet
#

It was removed due to privacy concerns. So we won't add a replacement

thick zephyr
#

Could it instead include the "benchmark" entries from the arma.cfg file?

full sonnet
#

I don't think they're useful

light lintel
#

Tbh would be nice to have an official benchmark

#

Both A3 and Reforger

halcyon moth
#

YAAB is fine tbh

light lintel
#

People will argue it's not representative

keen sundial
#

A non ai testing benchmark just flying over a lot of terrain closing up to a lot of details to measure ram/vram unloading would be amazing

#

I looked at reworking yaab to do that, but it was above of what I can do.

light lintel
#

Oh yeah that would be good

#

And varying object/texture details and view distance

full sonnet
#

We are changing the "Take" and "Put" eventhandlers to not only fire on the player doing the Taking/Putting (like it was previously)
but to also fire on the container that was Taken/Putted from.
I think that shouldn't really cause backwards compat issues.
Previously you would never add these handlers to containers, because containers would never fire them. So I don't think there's much change.

One thing is Corpses though, dead bodies.
Taking something from it, will fire the Take handler on the corpse. That may be a concern but I think it won't be a big issue

analog fractal
#

So when do we get a variant of "HitPart" with the same locality as "HandleDamage"? 😄

full sonnet
#

locality is big oofs. Likely never

full sonnet
#

I have been asked about the "bad conversion: scalar" errors and while looking at them in my modset I found one case that may be informative.

ZEN mod scans all CfgVehicles classes, and calls getNumber on CfgVehicles >> x >> "side"

Now the mod "sab_baehawk.pbo" https://steamcommunity.com/workshop/filedetails/?id=938711359
Sets their side as side="EAST"
The config thing can scan string, and compile it and execute it in order to get out a number.

But this script, doesn't return a number! it returns a Side.
And the engine cannot convert Side into Number, and thus throws the bad conversion error and returns 0.

Now that is clearly a bug in that mod, because that never worked and always threw errors, The author probably didn't run their mod together with another mod that reads that config entry as a number, so never saw that error in RPT.

But wiki is actually pretty clear on this one
https://community.bistudio.com/wiki/CfgVehicles_Config_Reference#side

I will let the engine convert Side to Scalar, so this specific error will go away (but that doesn't mean the config is correct, its still wrong, that entry isn't supposed to be a string)

And I'm also adding a new error message
Warning: Expected to evaluate scalar, instead received 'SIDE' while evaluating 'EAST'
With log context enabled (-debug start parameter) that will also print the location in script that caused it.

#

I could potentially make the log context print the config entry that was looked up.
But I would need to profile the performance hit with that. But we could always make it diag binary only to not care about the performance hit

#

Also may I blame FIR AWS customcutscene for this piece of bullshit that fucking deletes my main menu screen ?!!!!
Like wtf? You just disable the main menu? Who thought that was a good idea?
Don't mess with my menu 😠

If you want to hide it for your cutscene worlds, put a script into your worlds init that hides the menu. Instead of disabling it all the time

harsh orbit
#

yeah I really hate the mods/DLCs that mess with main menu too 😠

mental fulcrum
dim bone
#

I like "Take" and "Put" EH on container. I skiped one feature because it not worked on containers.

halcyon moth
#

Any chance of throwing LifeStateChanged in there? :P

#

and EntityDeleted mission EH

glass talon
scarlet root
carmine juniper
#

Just a thought actually, but is it a good idea to have an alternative syntax for sliderSetPosition that fires the EH? Just recalled you guys ever tried to “fix” that “issue” but was reverted, I feel I'm slightly missed it

full sonnet
#

[
[{getNumber _this},"0.001322","98.9"],
[{getNumber2 _this},"0.001337","100.0"]
]
Mh the impact of more log context for config reading errors is minimal

#

Before

11:20:06 Bad conversion: scalar
After
11:28:11 Warning: Expected to evaluate scalar, instead received 'SIDE' while evaluating 'EAST'
11:28:11 ➥ Context: bin\config.bin/CfgVehicles/sab_pc21_o.side
->Last modified by: sab_pc21 <- [] L1 ()
[] L25 (/temp/bin/A3/Functions_F/Debug/fn_debugConsoleExec.sqf)
[] L25 (/temp/bin/A3/Functions_F/Debug/fn_debugConsoleExec.sqf)
[] L1 ()
<- [] L20 (/temp/bin/A3/Functions_F/Debug/fn_debugConsoleExec.sqf)
[] L23 (/temp/bin/A3/Functions_F/Debug/fn_debugConsoleExec.sqf)
[] L25 (/temp/bin/A3/Functions_F/Debug/fn_debugConsoleExec.sqf)

11:28:11 Bad conversion: scalar
11:28:11 ➥ Context: bin\config.bin/CfgVehicles/sab_pc21_o.side
->Last modified by: sab_pc21 <- [] L1 ()
[] L25 (/temp/bin/A3/Functions_F/Debug/fn_debugConsoleExec.sqf)
[] L25 (/temp/bin/A3/Functions_F/Debug/fn_debugConsoleExec.sqf)
[] L1 ()
<- [] L20 (/temp/bin/A3/Functions_F/Debug/fn_debugConsoleExec.sqf)
[] L23 (/temp/bin/A3/Functions_F/Debug/fn_debugConsoleExec.sqf)
[] L25 (/temp/bin/A3/Functions_F/Debug/fn_debugConsoleExec.sqf)

notlikemeow A bit verbose maybe
But if you want to get rid of it, fix your errors :harold:

scarlet root
#

awesome 👏

mystic nimbus
full sonnet
#

If jukebox makes funni music then I like jukebox

digital vessel
#

getNumber seems to fail on very large numbers: isNumber (configFile >> "CfgVehicles" >> "B_Slingload_01_Ammo_F" >> "transportAmmo") = false - getNumber (configFile >> "CfgVehicles" >> "B_Slingload_01_Ammo_F" >> "transportAmmo") = 1e+012

#

my bad, I guess this happens in 1.52 as well, 1.54 must just be first use of big number transportAmmo = 1000000000000;

lavish basalt
#

everything above 999.999 = 1e+adfdifbgre9ßtz34n34

wise hill
#

Good old scientict notation

timber sorrel
#

The E in 1E12 clearly stands for "ERROR"

wise hill
#

I hope you are joking or i need to reevalulate my life

#

;D

#

@digital vessel 1e+012 is 1000000000000

digital vessel
#

isNumber is false is the problem, (and isText is false as well). - main problem is breaking configViewers/dumpers

timber sorrel
#

Well, isNumber probably also fails on stuff like
"random 5";
or
"1+4+8";

#

That it's neither Text nor Number supposedly is weird though

trim crane
#

To affect how much damage shooter SENDS

#

and perhaps cancel sending the damage all together

#

Unless that's calculated on receiving side?

#

Not sure what shooter sends to be honest, but I assumed whatever HandleDamage gets on victim side

lament crow
#

Now that a new CDLC has been announced and new revenue will be landing for A3, I wonder what the update (patch 2.15?) for the new CDLC release will bring 🎉

#

Hopefully something exciting that will boost sales! 😉

viscid onyx
#

We already know 2.14 is aimed for "late summer", and you can get a reasonable idea of what's going to be in it by looking through all the dev branch changelogs since 2.12 (barring any late surprises)

lament crow
# viscid onyx We already know 2.14 is aimed for "late summer", and you can get a reasonable id...

Indeed, and even thou the current statement for Spearhead release is "The precise release date will be shared at a later time.", it shouldn't be long since it is probably in beta testing right now. I believe most CDLCs released no more than a month after them being announced... Unless they discover major issues with the current build. I believe they (BI) won't want to repeat the CSLA scenario where the early steam reviews really hurt its sales and revenue potential

#

I am just pointing out that when a CDLC is accompanied by a "significant" patch then the sales multiply by an X factor due to old players "perceiving" that the game is still being actively supported. Many potential buyers are fend off from buying newer CDLCs due to their belief that the base engine is no longer receiving meaningful updates that will improve newer hardware utilization

#

Hopefully BI will be smart enough make the most of this CDLC release, specially if it is the last one. That coop campaign will be streamed a lot and if the experience is laggy or the engine flaws show in those videos too much then instead of that boosting sales those videos would instead just be fueling bad reviews in steam for the CDLC

full sonnet
#

Thank you for your feedback, it is very valuable for us and we will make sure to consider it in the future.

mental fulcrum
carmine juniper
#

Latest damage rvmat update doesn't do anything with the mats I set with hiddenSelectionsMaterials config instead of the script command it seems, intended?

ocean tundra
#

Hi dedmen, will a fix for the steam infinite download loop be included in the next major update for the game?

full sonnet
ocean tundra
#

and compositions

#

thats basically what happens and it definitely happened to a lot of people

carmine juniper
full sonnet
#

When damage material was applied (like bulletholes and stuff) it would reset to the default material of the config class.
So if you retexture later with script command (which Virtual Garage does) it would just reset your material.

Example take shiny plane (I think SOGPF has one, linked in ticket) go to virtual garage to retexture it to non-shiny variant. Then damage it "plop" its shiny again

that was fixed

#

config hiddenSelectionsMaterials config probably has no change at all, because the old stuff was broken because it was based on config class.
If you make change in config class it won't be a problem and wasn't before

carmine juniper
#

I think I was wrong to set up dam materials, but I think something's off still

Left: default
Middle: Edit 1 (applied with hiddenSelectionsMaterials)
Right: Edit 2 (applied with setObjectMaterial)

Dam 0 should look red, 0.5 green, 1 blue

full sonnet
#

There was no change to how different damage levels are handled

#

was that broken like that before?

#

The fix seems to be working, as the setObjectMaterial variant isn't resetting to base material when you apply damage (which was the problem that is fixed)

carmine juniper
#

I might unload Dev-Branch and test again

meager sage
#

inb4 it's caused by the wreck being a separate model proxied into tank's LOD. With its own material set.

carmine juniper
#

MBT_02 has its own NonAIVehicle indeed

#

I don't know if I can apply material there

mental fulcrum
#

check with something with procedural wreck

carmine juniper
#

Okay looks was a wreck proxy issue, MRAP_01 works fine

full sonnet
#

Can't tell the future

carmine juniper
#

Then predict :>

harsh oyster
#

Definitely reproducible tho

ocean tundra
keen sundial
harsh oyster
#

I'm subbed to 191 compositions for context

grand lintel
#

Is there any way to get the dev branch server binaries? I don't see a dev branch on steam for the dedicated server, and want to test to ensure compatibility of our intercept plugins w/ 2.14 prior to it's full release

formal cipher
#

Dev branch is more than just new binaries, it is also different data. We don't publish those on the server Steam app, you can only get the required data and binaries through the regular Arma 3 app branch.

grand lintel
#

and good call on the data 🤣 that would have been stupid of me

formal cipher
#

No, we only publish Linux binaries through the server app.

outer urchin
#

Has there been any word from B.I. on if or when they might decrypt some of the S.O.G. Prairie Fire EBO files? I have been curious about how the stars get added to the aircraft after they get an air kill. Thanks!

carmine juniper
#

Will never happen

#

If is a function/config you can just check in-game

outer urchin
winter crescent
#

At the moment there's indeed no plan to decrypt any Creator DLC.
All of the vanilla game (including Contact) will however be decrypted as of 2.14.

full sonnet
outer urchin
autumn depot
#
Bohemia Interactive Forums

Page 895 of 895 - General Discussion (dev branch) - posted in ARMA 3 - DEVELOPMENT BRANCH:

Thats weird because everything works on my side (tried on multiple workstations), I can compile and use everything like shown in this screen: http://tom4897.info/...sion_output.jpg
I even tried to play with multiple calls (bi_console callExtension format [Time: %1, bi_sysDate callExtension time]) and it works as designed.
 
I can explain the (potential) issue with the namespace because it diff...

#

You have to click the link to actually know what it really says.

#

"We're targeting the end of this month for update 1.54." - DnA

near carbon
#

@full sonnet are priority configs for ammo types a required thing

#

was just curious for AI Reasons.

carmine juniper
#

2.13 already offers contact and tacops PBOs

near carbon
#

Finally can make AI use the right ammo

full sonnet
near carbon
#

and Cost.

#

gonna use it for a little bit of trolling

#

they are essentially on every modded ammo type and determine what the ammo is good against (vanilla too obviously)

#

via 64 + 128 + 256 etc

near carbon
full sonnet
#

Well I don't know :harold:

near carbon
#

sad

#

who would possibly know?

#

mfw dedmen doesnt know PepeHands

#

@winter crescent do you know?

carmine juniper
#

Please refrain from pinging Bohemia.net people frequently and (almost) randomly

near carbon
#

Apologies.

rustic plaza
near carbon
#

or is just more so that theres nothing to explain

#

lmao

#

im probably overthinking it notlikemeow

wise dragon
viscid onyx
rustic plaza
near carbon
#

thanks

#

btw thank god RHS has them detailed (thanks reyhard now me dev team can make ai employ weapons correctly >)

winged copper
#

Awesome. Will this have the stamina and passenger firing updates?

full sonnet
#

The reason for trying to send a too large non-guaranteed message has been found and fix is on the way 🥳

mental fulcrum
#

👀 will you post any technical details for the curious ones?

full sonnet
#

Last week I introduced a new technique for troubleshooting bugs. By forcing the game to write a memory dump at runtime (without crashing).
That means if we know the place where something goes wrong, we can now set a trap and get a snapshot of how exactly it got there.

We used that and added it to that error message print.
One day later on official server we got a hit on it.

We categorise network messages into two parts, guaranteed and non-guaranteed.
Non-guaranteed ones don't have any tracking, meaning if they get lost, we wouldn't know and won't resend.
Guaranteed ones do have tracking and we can resend them.

One thing that comes with this is, guaranteed messages we can split into parts, we must ensure all parts arrive thus we cannot do this with non-guaranteed ones. Which is why that error message specifically says that.

#

It was trying to send a inventory update for a transport vehicle. A non-guaranteed message.
The network message was 1377 bytes in size.
Our size limit is 1392 bytes.

At first, there is a size check (Was added in 2009 in a merge from Arma 1), if the message is larger than can fit, it will be converted into a guaranteed message that we can split apart. The message passes this check, its under the limit.
Then we do network encryption on the message.
Then we send it out. And now we trip the second size check and throw the error.

Our network encryption was upgraded in 2017 and instead of keeping the size the same, we added some data to the message. AFTER we already did that size check.
In this case, we added 13 bytes of extra data. Bumping the size up to 1394 bytes. Triggering the second check and throwing the error.

That also explains what I said all the time, that adjusting the sizes in basic.cfg will not help at all.
If the message before encryption is already too large, it will be split and all is fine. If it is too small, nothing will happen and all is good.

But if its very close to the limit, it may trip over. And if its a inventory update, it will keep tripping over every update, until you change the inventory contents to be smaller, or large enough to trip the first check.

tepid dock
#

Woah, kudos for willing to write that wall of text 🙂
Interesting read!

full sonnet
#

Interesting and fun find.
There is something else with combining messages via MaxSizeNonguaranteed
These don't seem to have any size check, more investigation to be done there. But I'll figure it out and it'll be on next weeks prof

ocean tundra
#

Awesome work 👍

#

Bug been around for many years

full sonnet
#

I'd need a repro

ocean tundra
#

Hmmm, how do i provide that

full sonnet
#

Find out how to reproduce the issue. I assume you can't

ocean tundra
#

I can, but i dont know how to not reproduce it

mental fulcrum
#

Start listen server, load mission, have people try to join

ocean tundra
#

Cause it always happens for me

#

For years

mental fulcrum
#

Sometimes they just can't fully join

#

Never had it with local client joining tho. So might be tricky to repro

ocean tundra
#

Ah nice thanks @mental fulcrum

full sonnet
#

Check RPT. That forum link is really not just "one" bug.
The client is disconnecting, it probably has a reason.
Maybe you pressed Esc because you didn't want to wait in loading screen for long enough (maybe because Arma units was broken again before we added the timeout)
Maybe your client disconnected itself because missing mods, and you didn't see the chat message it prints for that.

ocean tundra
#

No esc pressing

mental fulcrum
#

I had cases where I was having listen server, 5 guys trying to join

ocean tundra
#

And it also happens on vanilla wih no mods

mental fulcrum
#

2 of them load in to the lobby, and instantly disconnect with the message "<client> disconnected"

#

constantly

mental fulcrum
#

doing #missions allows them to join

#

you then select the misison once everyone joined the server and is at loading screen and everyone loads to lobby.

ocean tundra
#

They can join if youre in mission selection but not if your in role selection

mental fulcrum
#

The worst part is it happens spuriously and randomly

full sonnet
#

The trap thing to throw a dump can help.
But for that I need someone who can repro it, and then I can give a custom exe that creates a dump when it disconnects from a server.
I don't know a point in code where that would happen, so I'd probably throw on every disconnect.

mental fulcrum
#

Let's say we played another mission the next day and 2 different guys had the issue where the guys that had it day earlier loaded fine...

ocean tundra
full sonnet
#

Well if you can reproduce it, jump to DM and I'll build you a thing that gives me info

ocean tundra
#

Ok copy

full sonnet
#

There seems to be a missunderstanding of what MaxSizeGuaranteed/MaxSizeNonguaranteed means.

It is more a "minimum" size rather than a maximum.
Pseudocode works like this

for i = 0 to nMessagesInQueue
{
  if (msg[i].size > MaxSizeNonguaranteed)
  {
    Send(msg[i]);
  } else {
    combineCount = countMessagesWhileSizeLessThan(start at i, collect as long as size doesn't exceed MaxSizeNonguaranteed)
    Send(CombineMessages(i, combineCount))
    i += combineCount; // skip the ones we already sent
  }
}

Small value = you send many small messages, as if they exceed the size they get sent directly
Large value = you send fewer, larger messages. As they get combined until they reach the size.

As far as I can see there is no extra size check down the line, so if you set MaxSizeNonguaranteed greater than maxPacketSize, you will run into the "trying to send too large" message basically constantly.

And setting MaxSizeGuaranteed greater will work, but is bad because after combining small messages into a large one, the game has to split them apart again to send over network. Then the receiver will combine the network stuff, only to split it apart into individual messages again.

#

The wiki says MaxSizeNonguaranteed may increase lag. I don't see how that happens.
The game always sends out all the messages (while respecting MaxMsgSend/Bandwidth limits). It doesn't "wait" until it has enough messages to fill a full combo packet. So there shouldn't be any lag.

With many combinations, it will probably hit bandwidth limit first. Wheras with few or no combinations it will hit MaxMsgSend limit first.

#

We may want to package this some nicely understandable way for the wiki notlikemeow

#

And for the history buffs.
This size check that did exist (but was before encryption)
was added

\patch 5241 Date 3/18/2008 by Bebul

  • Fixed: Too large update messages (caused by unusual weapon setups) were not sent.

That was back when the folder path was "/ArmA/Poseidon"
Big ❤️ for Bebul

late harbor
#

So setting MaxSizeNonguaranteed to 0 would just mean send all messages as they are, and don't combine any. Sure would be a lot of packages meowsweats

full sonnet
#

Digging through our archives, I also found related security conference talk which is related to why our encryption makes messages larger
https://www.youtube.com/watch?v=8tQIKNUkfrw

Recorded at the 4th annual Knoxville BSides conference on May 18th, 2018.

Do you like cheating at video games? I sure don't, that's utterly reprehensible. That being said, video games are constant proving ground for security mitigations. A lot can be learned from dissecting them; I'll be breaking-down a sim-shooter with it's own scripting langu...

▶ Play video
#

And to hopefully help some users faster, rather than them having to come to #arma3_troubleshooting to find it in pinned messages or have someone instantly tell them what the problem is.

We just do it directly by changing the error message

tepid dock
late harbor
#

Yup 😂 saw that as well

harsh orbit
#

I skipped that part 😅

late harbor
#

I'm gonna watch the whole video later on... Looks actually pretty interesting 🤔

mental fulcrum
#

why is there a bluescreen flashing every few seconds thomp

wise dragon
#

thats the deadly lag

knotty notch
ruby edge
#

I've ran this weird network config and had no problems (Exile "survival" game mode so big inventories, many containers/objects/vehicles, ai etc)
CPU was AMD Ryzen 7 3800X.

MaxCustomFileSize         = 0;            // Custom Face (Disabled)
MinBandwidth             = 300000000;          // 300 Mbit/s Server total guaranteed bandwidth in bits per second!
//MaxBandwidth             = 500000000;        // Slightly above total bandwidth in bits per second. (broken atm, dont use it !)
MaxMsgSend             = 128;                 // Default: 128 Maximum number of messages that can be sent in one simulation cycle
MaxSizeGuaranteed         = 958;        
MaxSizeNonguaranteed             = 958;    
MinErrorToSend            = 0.003;
MinErrorToSendNear        = 0.01;
knotty notch
#

that 958 is a real mistery to me, appeared in a 2014 forum thread and people just keep copying it 😄

#

and it's so specific

full sonnet
knotty notch
full sonnet
#

Well then that's something else

knotty notch
#

Just a bunch of xxx pending and then ded (as in does not recover from yellow chain in 10 minutes)

harsh oyster
#

@full sonnet have you tried the repro for the download/stuttering issue that was in here a while ago?

full sonnet
#

no

#

I have better things to tackle than "download hundreds of workshop items and see if you get some laggyness at game start"

harsh oyster
#

Yeah fair enough, was just making sure you're at least aware a potential repro exists

#

There are some cool compositions on the workshop that are worth looking at though 😉

late harbor
tepid dock
halcyon moth
#

@full sonnet Wait, why are inventory updates non-guaranteed?

full sonnet
#

Don't ask that 😠

halcyon moth
#

cackles

meager sage
#

Well, if inventory updated per-shot - it can be considered frequent enough to be non-guaranteed

digital vessel
#

2.14 allAddonsInfo adds hash info, is this something the engine could use to "kick on different hash"
e.g. for mods where they resign each update with the same key

full sonnet
#

yes

#

It is the pbo hash, at the end of the pbo

digital vessel
#

We could do it in code, I'm just wondering if it could be a server setting handled by the engine

full sonnet
#

We won't do that

ocean sail
near carbon
#

I am patiently waiting for 2.14

solid crown
#

There was some discussion about custom radio channels' number getting possibly increased some months ago, anyone know what it's status is? I looked for FT ticket but didn't find any (AFAIK there was/is one)

late harbor
#

Yea was wondering about that as well, KK was having a look at it I believe.

grim adder
#

found a bug that has been around since last patch.
placing a player down and then a group down in editor with a placement radius for the group causes game to crash with this error message exit code: 0x000005 - status_access_violation.
no mods vanilla game happens every time I play the mission from editor, sp or mp

formal cipher
full sonnet
#

Ft ticket is for some mission from tacops

#

We will so far not hotfix. 2.14 RC is about a week away.
#perf_prof_branch has it fixed it safer to not use it (it wasn't working anyway)

grim adder
#

@formal cipher @full sonnet Thank you! was going mad because all mu old missions werent working and couldnt figure out why until yesterday remaking one

full sonnet
#

If you have any crash, always report it

steel rune
#

with the follow up assumption that the networking and scripting security is based on it being a training simulator 😕

#

thanks for the explanation of the size issue!

full sonnet
#

Should make a blog, but its too small and uninteresting for a blog 😄

ivory ridge
#

As 99% of all blogs. So...
I am a litte biased but I would love to see this blog because the code base of Arma is like an old living city: If you dig deep you will find layers of layers of old settlements of different SW styles, architectures and ideas to solve problems. All to explore with Indiana Dedmen (insert John Williams theme here).

grave viper
#

I think you did have one.

keen sundial
#

I agree with him. There are very few games that have been in developed so long while they are played by a big and active community with such type of legacy code. I can only think of eve online.

carmine juniper
#

I'm still waiting for Community Involvement project.

winter crescent
carmine juniper
#

Do you mean I eventually need to move to Amsterdam meowsweats

#

BTW JJ, how about to, like implement functions or fix them and implement officially, which doesn't require to touch source code of A3?

#

Of course "Community Involvement" would require some papers to sign, but I do not think is not entirely a bad idea. I know I know nothing about behind the the gate of BI, but I just wanted to improve BIS_fnc_setPitchBank

unreal arrow
#

Let me say this, it is not that we ignore possible improvements to scripted functions. The functions are used throughout the code and sometimes it is not possible to improve without breaking something, even if it looks like it should be fine, many times it returned to us unexpectedly with the vengeance. There is not enough resources to vigorously test every change so we naturally are inclined to tread cautiously.

carmine juniper
#

True point

pallid cliff
#

BIS_fnc_setPitchBank2 it is then 😬

carmine juniper
#

...But, what if the function is "certainly" broken?

mental fulcrum
#

CBA clueless

carmine juniper
#

I mean it's my fault that I haven't posted a FT while I knew it for ages but...

unreal arrow
pallid cliff
#

Was just joking

unreal arrow
#

Of course one can try, but then we come back full circle to testing, and how do you ensure your fix hasnt broken something else

winter crescent
#

There are indeed several people who'd be keen to enhance Functions Library (hi @lucid totem), but we're very wary of back-compat issues. On the other hand, somehow exposing FL to Git for a more experimental community branch / build is on the list of ideas.

unreal arrow
#

sqf 2.0 + functions 2.0

pallid cliff
#

😮

tepid dock
meager sage
#

Arma 3 9 3/4

viscid onyx
harsh orbit
#

Is this command permenant or temporary? diag_testscriptsimplevm

full sonnet
#

Unknown :3

#

Let's consider it temporary

harsh orbit
#

ah select and apply don't work with SimpleVM? meowsweats

full sonnet
#

They do

harsh orbit
#
diag_testScriptSimpleVM {
    [1,2,3] apply {_x}
}
"IncompatibleInstruction: build error:blacklisted command, at 'apply {_x}
}'"
halcyon moth
#

Isn't it just the bit in the code brackets that you test?

harsh orbit
#

not sure what this means then?

harsh orbit
full sonnet
autumn depot
winged copper
#

Tweaked character rotation and collissions. Does that mean less getting 'ArmAed' when running up and down stairs.

#

No more rotating yourself into walls.

timber sorrel
#

running through walls is funnier

ocean sail
winter crescent
unique minnow
#

Argo assets pog

weary tide
#

Rail gun tank 👀

toxic hatch
#

Anniversary bonus content + enhanced video options WOW gonna download the beta asap

ocean tundra
#

ARGO ASSETS REAL?????

wise dragon
#

real (real)

#

whats the enhanced stuff

full sonnet
#

More video options. More highend and more low end.
Like Greenfists enhanced video options mod

wise dragon
#

do we get further shadows 👀

toxic hatch
wise dragon
#

sure

#

its not a spoiler really

late harbor
#
class VeryHigh
{
  text="$STR_A3_OPTIONS_ULTRA";
  value=32;
};
class Extreme
{
  text="$STR_A3_OPTIONS_EXTREME";
  value=32;
};```
You guys trying to fool us?
late harbor
wise dragon
#

what is cascade layers remind me

late harbor
#

idk either 😛

wise dragon
#

I'll assume its not css cascade layers

late harbor
#

Nope, came on the same.

#

Literately all searches end up on CSS notlikemeow

#

even when adding video games

late harbor
ancient kindle
late harbor
ancient kindle
#

Send them to me 🤣

late harbor
#

Or just go in-game yourself 😂

ancient kindle
#

I can't download it rn notlikemeow

viscid onyx
waxen knot
#

Seems a bit inconsistent to give the Futura the option to have a Grey texture but the baseline Varsuk doesn't get access to it.

late harbor
full sonnet
#

It has particle effects. But besides some spark a railgun doesn't do much

late harbor
#

Yea I was thinking that, tried to find some online to compare.

pallid cliff
#

Found a visual glitch with the T-100X

#

Camot netting turns invisible.

digital vessel
#

shoot railgun and got

Trying to set an out of bounds velocity [1227.15,17.0521,-5317.82] on '164082: <no shape>'

toxic hatch
pallid cliff
#

It's an attribute

#

open the Capsule's attributes

fossil bear
#

is the CLOUDS APC texture added in too?

#

anyways I love the railgun tank

fossil bear
#

@BI Developers, any chance of us getting some of the unused textures? i.e. the Woodland NATO fatigues and such, since they're all in the game already? would fit in very, very well with the game and all :) not sure if it'd require much time either so it would make this a major update xD

summer spire
#

Can this new charge script be applied to handheld weapons btw?

meager sage
#

and it switches between real and fake weapons, so it doesn't really look infantry-supporting notlikemeow

wise dragon
#

or am i misunderstanding what youre saying

weary tide
#

Not the ones from Contact

#

The texture is in the files, but not configured

#

Plenty of mods do it tho, or just setobjecttexture

wise dragon
#

I have fatigues for woodland that are added by A3_Characters_F_Enoch

#

Not a mod

#

So I feel like I'm misunderstanding what is meant here

weary tide
#

Again, not the ones from Contact

#

There's textures for Woodland fatigues (M81 pattern) since Alpha

wise dragon
#

Oh I thought you meant the ones from contact weren't configured, my badmeowsweats

#

Aah, fair

fossil bear
# wise dragon aren't the woodland fatigues already configured as is?

https://forums.bohemia.net/forums/topic/180646-list-of-all-hidden-texture-inits/

Super interesting, there's a lot of very usable and quality textures which just aren't in the game, but in the files only.

#

It'd be cool to have them added in properly though, since then they can be used in Vanilla.

#

plus I think this'd be a perfect opportunity for that :))

quiet kernel
#

Could we include the old Argo Media package with this RC?

#

It contained the textures for the IFVs, FAVs, etc. Also all the voice lines and such.

toxic hatch
waxen vigil
#

it's more of a howitzer

#

the closest thing to a mortar is the one from WS

weary tide
#

It's classified as a mortar

#

Irl

#

Although it is 120mm

quiet kernel
#

It might not of ever been rigged and just a concept art.

weary tide
#

There is a model for it

quiet kernel
#

Well yes, but what I mean is that the T-100 rail gun was low hanging fruit because it was most likely completed and then removed.

#

Vs something like that, which might not of ever been ported and configed.

weary tide
#

Well they still had to redo interior for it, so it wasn't exactly ready to go

#

But yes

#

I get what you're saying

fossil bear
#

i mean, if they'd be able to get the already in the game content in I'd kiss BI

fossil bear
calm wasp
#

wondering if particles are CPU or GPU
I'm sure terrain and objects are CPU
and reflections + light + clouds are GPU

vernal laurel
silent kindle
silent kindle
silent kindle
rustic plaza
rustic plaza
light lintel
digital vessel
# rustic plaza Do you have more details where & when it happened?

keep mouse button held down a long time (hold for 25+ seconds)
looks like _vehicle setVariable ["BIS_MuzzleCoef",linearConversion [_time,_timeFull,time,0.3,1.2,false]]; in BIS_fnc_RailGun_01_charging is the problem as it's not capping the max velocity to 110% like the hud shows
(vehicle player) getVariable "BIS_MuzzleCoef" is 2.39574 when I get that error

#

also, BIS_fnc_RailGun_01_chargingStart doesn't have any locality checks, and fired EH is global, so I think it will cause problems but I'm not sure about that

calm wasp
#

is there more content than just Futura and the capsule?

viscid onyx
#

there's some other props and some hats/balaclavas, according to the change notes

calm wasp
#

props like what for example?
can't install it yet

viscid onyx
#
Added: Battlefield Memorial - FT-T167416
Added: Lantern (Project Argo)
Added: Pumpkin (Project Argo)
Added: Scarecrow (Project Argo)
Added: Portable Flag Pole (Project Argo)
Added: Area Marker (Project Argo)
Added: Rugged Communications props (Project Argo)
Added: Space Capsule props (Project Argo)
Added: 7 Balaclavas (Project Argo)
Added: 10 Bandanas (Project Argo)
Added: 2 Caps (Project Argo)```
rustic plaza
wise dragon
#

Added: Pumpkin (Project Argo)
i am so going to put one on my head

viscid onyx
#

Well, there's already one in the game from...LoW? not sure how this one will be different

#

Incidentally,

Added: superHacker unit trait modifier
Is there any info on what this trait actually does?

rustic plaza
#

Pumpkin from Argo is an Halloween version

viscid onyx
#

Oh nice

carmine juniper
#

Why you hate cosmetics when you don't need to pay for it?

calm wasp
#

I don't hate

#

Marshall medevac and mortar would have been even better

carmine juniper
#

TBH I wouldn't surprised if they bring more buried things from graveyard

calm wasp
#

or DayZ DX11 render would have been a very very very good surprise

#

but won't happen... 😒

carmine juniper
#

It would require multiple Dedmens

viscid onyx
#

I'm not too shocked that major stuff like renderer replacement isn't happening. It would be nice to finally have officialised editions of all the hidden texture stuff though, most of that only needs basic config work.

#

Not that the stuff we are getting isn't nice, of course. Certainly never expected to get the Futura.

carmine juniper
#

I definitely would appreciate if we can have more buried stuff - like Minivan

calm wasp
#

luxury Mohawk heli interior from Take on Helicopters would be nice!

carmine juniper
#

This thing. The texture is properly UV'd so I definitely assume that this is just a buried asset

#

Hey Bohemians, there's still a lot of things to include in Decade update, why not?!

elfin oasis
#

Image if they only showing us little content so we piss our pants when the full update is out

carmine juniper
#

And this iceberg is not even completed

carmine juniper
silent kindle
#

Because we only have wreck

#

Uh yes and aliens

silent kindle
#

Still wonder was it actually a first idea, or it is just joke from bohems

meager sage
#

"F-35F Fishing Motorboat" blobcloseenjoy

carmine juniper
#

A CO texture has left in the game data actually, IDK what it was for

silent kindle
#

I remember they wanted to keep nuclear war scenario in a2 and proceed story

calm wasp
#

F35 and fishing boat exist as hidden?

silent kindle
#

Wish devs explained more about their first story development

silent kindle
#

F35 just a2 asset,

#

They prob didnt find resources on it

calm wasp
#

m32 and m72 law?

silent kindle
#

Any way we have mod versions that are better

#

Prob too

calm wasp
#

mods are mods...

silent kindle
#

Enough stuff is just a 2 reuse

carmine juniper
#

I don't really know where M32 came from but M72 was appeared in a pre-alpha pic

calm wasp
#

I remember seeing MV22 concept art a long time ago

silent kindle
#

Csat pants are brittish origin

#

For example of reuse

#

I remember in apex we could get m4

#

There was render for it

waxen knot
#

The Osprey and F-35B were just placeholders for testing though, and we already have the "final" versions of both (Blackfish/Black Wasp).

carmine juniper
#

I always liked this concept art

waxen knot
#

That's the Blackfish.

calm wasp
#

blackfish is ugly af

umbral orchid
#

is the explosion effect on the T100X bugged? it seems to just catch fire instead of exploding

calm wasp
#

compared to this

carmine juniper
#

Blackfish itself is not really bad. But this art is defo better

#

I mean, having VTOL as a semi-fixed wings cargo plane idea is very cool. It satisfies two things with one bird

tidal arch
#

Would love to see it as an actual vehicle but that ain't gonna happen lol

umbral orchid
#

explosion effect - as in the tank itself exploding

#

not the gun

carmine juniper
#

Also one thing I wonder: Why they don't port every Argo assets like Backpacks and others too? Since Supporter's Edition is expired like years ago, we have zero way to get it legally for now - I think they're very good to have, at least in scope = 1

tidal arch
calm wasp
#

yes

#

would have been good for Life servers 🤣

silent kindle
#

Weird they didnt put all heli stuff in game

#

I remember there was uh1 of some modification

#

Could be civilian

carmine juniper
#

The extended video settings is still not working for me it seems, sad

formal cipher
carmine juniper
#

I see zero difference between them

#

I expect more resolution than Ultra if I set Extreme, or vice versa for Very Low

viscid onyx
#

I'm not sure there is a higher-res texture for that. Maybe it boosts the LOD distances?

calm wasp
carmine juniper
viscid onyx
#

It can't display higher-res textures than actually exist. The basic NATO uniforms are one of the oldest assets in the game, there's just not a lot there to work with

carmine juniper
tidal arch
#

want a civilian Mohawk? say no more

silent kindle
#

Aaf president and civilian

tidal arch
#

you don't have to swap out the interior

silent kindle
#

And idap

tidal arch
#

but yeah

silent kindle
#

Well to have luxury interior is actually neat

#

Bis have weird cutcontent policy honestly

#

Back in past they added nato strider and csat green for jet as an option

#

But there is still nato gorgon in files

#

Aaf orca

#

Aaf hummingbird

#

Question remain in my head - what about argo missions?

#

I would like to see them in arma, i am that persone who enjoyed playing argo

formal cipher
carmine juniper
#

Let me try later

#

Cannot confirm for Extreme, but for Very Low it seems like so?

#

@candid dew Sorry for the ping - is this the intentional behavior? I never thought your “very low” only worked from far away

#

But if it just adjust mip distance, it doesn't really explain why regular (I mean Standard to Ultra, that are already there for ages) texture settings does work even in very close distance, or am I misunderstanding something?

candid dew
#

Isn't very low a vanilla setting? But either way, it's most visible at a distance.

weary tide
#

No, it isn't

carmine juniper
#

Most visible, as in? Not sure if I followed your words

candid dew
#

I mean the effect is more visible from further away by nature. The mod can't affect it

carmine juniper
#

So I think I've always misunderstood how and what it does after all these years

candid dew
#

Iirc, in more complex scene it's more obvious than in an empty editor view

carmine juniper
#

Hmm let me see in Tanoa like you've posted

calm wasp
#

it's about sceneComplexity

candid dew
#

Isn't that the object detail?

calm wasp
#

like there were more details at distance before patch 1.60 (Apex) and then it was "optimised" (reduced)

carmine juniper
#

Yeah I mean, definitely obvious when distance... But I do still think it should reduce the texture resolution in very close distance too

ocean sail
carmine juniper
rustic plaza
umbral orchid
#

hmm this was just placing one an empty one with full fuel and ammo etc in the editor and just shooting it

#

cuz yeah I saw it had a new effect defined but it seemed to just immediately go to the 'fire' state rather than explosion -> fire

carmine juniper
#

And good news is reyhard said fixed internally

light lintel
#

Also monitor VRAM usage. For GM textures, I find a pretty large difference between high and very high, then not so much for ultra

#

Also I wish the vram memory crashes would be fixed before the extreme texture option was introduced...

arctic fern
#

IIRC, Bell 412 in CUP Vehicles is a ToH port

arctic fern
#

Would be a lot of work to implement them, but there's also the sound stuff (sound tracks and voices), vic reskins and faction flags too - all APL-SA

pallid cliff
#

18:25:38 Custom attribute "enableSimulation" was updated to engine one.
Is this msg new?

silent kindle
arctic fern
#

So?

carmine juniper
#

Argo has its own functions and a lot of systems, cannot port over A3 without them

#

Even custom commands

wet whale
full sonnet
#

huh no actually not

#

I did something new with some attribute thing, but not that one

#

Thats from 2016

pallid cliff
#

Ive never seen that one before.

calm wasp
#

@full sonnet hope you haven't forgotten this time to include in 2.14, unlike in 2.12, heli not force exploding when falling on side and only losing main rotor...

full sonnet
#

I have, forgotten

calm wasp
#

in case you would want to assign it to yourself

full sonnet
#

or it did in 2014

pallid cliff
#

Where is my particles extreme setting 😢 I want it all to be orange

#

Also, not sure if this is intended, but view distance goes down to 5 meters

#

But is actually limited to 200?

#

object viewdistance actually does all the way down to 5 m

calm wasp
#

previously it wasn't possible to go below 500 m for terrain and objects

quiet kernel
#

Does the particle effects include increasing limits on light sources?

full sonnet
#

light sources are dynamic lights

viscid onyx
#

Does the AI know how to use the Futura's main gun?

light lintel
# calm wasp wondering if particles are CPU or GPU I'm sure terrain and objects are CPU and r...

So I used Intel's new presentmon beta (https://game.intel.com/story/intel-presentmon/) to look at how smoke behaves... it provides an additional metric to frametimes called "GPU busy", which is the time the GPU is actually doing something. So if the frametime and GPU busy time is about the same, then it's good and your GPU utilization should either be close to 100% or it's a balanced CPU and GPU match (see https://www.youtube.com/watch?v=5hAy5V91Hr4 for more info). I think it's really just another way to look at GPU utilization, but it gives you better info with respect to CPU utilization.

Anyway, smoke hits the CPU first at lower LODs (frametime increases substantially but GPU is not very busy), then as you go closer you get more GPU bottlenecked (GPU busy time also increases to match frametime). Tested by spawning a few smoke grenades using the eden editor module.

winter crescent
radiant lagoon
full sonnet
#

I think we raised to 64?

#

We raised it recently (like last year) but I forgot to where

scenic trail
#

iirc enhanced video settings' ultra+ was double that of vanilla's ultra? 16 and 32?

#

It's a very welcome change because it makes the pop-ins in cities much less jarring

radiant lagoon
#

As far as i know its around 30 / 32 at ultra settings

calm wasp
#

whatever it is at currently, better* to at least double that, for extreme setting

radiant lagoon
ancient radish
#

Will we be seeing the hunter and Marid skins and possibly adding in the factions cloud and flame from Argo

#

With weapon skins and backpack skins helmet skins also?

pallid cliff
#

Since 2.14 I am getting this one a lot when the launcher crashes. Any more details?

harsh orbit
#

Incorrect WPF bindings blobdoggoshruggoogly

winter crescent
#

That Launcher error should be fixed in the next RC update.

ocean sail
#

How about Project Argo soundtrack Can expect it port to a3?
with or without configuration

winter crescent
#

We have no plans to port anything else from Project Argo than is available in the RC.
Perhaps some kind of licensed data pack could be a thing, but it's not in progress.

viscid onyx
#

That's very disappointing.
Most of it should be easily portable with minimal hassle, and you can't even buy the game any more so it's not like there's any benefit from keeping it all locked away.

waxen knot
#

Not sure if this is intentional or not but some of the new Argo balaclavas are being randomly worn by Spetsnaz units as well (like Tropentarn, Orange, etc.).
Seems a bit goofy for them to be given stuff like Halloween balaclavas given that they only wore black/olive ones pre-2.14.
https://i.imgur.com/0e7dUDM.png

#

Applies to all Spetsnaz subcategories (regular, Combat Patrol and Special Forces).

winter crescent
#

Good catch, going to be prevented 🎃

empty sage
formal cipher
#

That should be fixed in the next RC update.

light lintel
carmine juniper
#

Nope

timber sorrel
#

This might fit here too -- #arma3_feedback_tracker message

An issue with UAV turret control that occured when I switched to 2.14RC. More details by another person a bit lower down

hollow spruce
formal cipher
#

Is that an issue only on RC/Dev branch, or also in 2.12 that is currently on Stable?

hollow spruce
#

Its in 2.12 stable, i didn't use rc/dev branch

formal cipher
#

Then it is not needed to post that here. Create a feedback tracker ticket, link is in the #arma3_feedback_tracker channel, so there is a record of it and it doesn't get lost on Discord. This channel is specifically for RC and Dev branches discussion, especially RC currently as it is live for 2.14.

scarlet root
calm wasp
#

with it still flushing on each alt+tab anyway, even if it was part of RC, it doesn't matter, since it's useless this way

full sonnet
#

Just Perf/prof I think, if you don't tab out

calm wasp
#

it's like it's there, but with no benefit

#

you will alt+tab before it has the chance to use more RAM

#

and even if it gets the chance to use barely more RAM, as soon as you alt+tab, it has to start filling RAM from scrach again, thus no improved gameplay smoothness and no improved frametime
alt+tab negates the very existence of that setting

full sonnet
#

I just played a 3 hour mission and only tabbed out once

calm wasp
#

so, I guess, it's same for all other users...

#

and if you don't like it the way it is - just don't alt+tab

#

the usual Arma way -> introduce something in a way so that people have to look for a work around right from the start

#

or intro something publicly, in a way that doesn't account for majority of public, just because it's more than fine for yourself

#

guess 1 person represents the majority from now on...

full sonnet
#

Hi Groove_C,

Thank you for the kind words!
It always makes our day to hear that people like you enjoy our product.
Our customer service team goes above and beyond to provide personalized solutions for our community, so it’s wonderful to hear that they exceeded your expectations.

I will be sure to pass on your feedback to the rest of our team; it will mean a lot to them.
Thanks again for taking the time to reach out and share your experience.

calm wasp
#

arrogance is somebody's trademark

weary tide
#

As someone who works in customer service, I evaluate your customer interaction with 100% 👌

#

Keep it up and that's a 10% bonus next month salute

elfin oasis
#

We are allowed to look into the deEBOd tacops right?

pallid cliff
#

Since they are pbo now, yes.

elfin oasis
#

I'm also guessing there's anti-piracy in tacops now

waxen vigil
#

it's so that people can't recreate Tacops mission 1:1

#

"we are making money over here man!"

light lintel
calm wasp
scarlet root
#

Dedmen did you ever get to look into #captureframe #enableTest/disableTest - are those in any build for A3 and do anything?

full sonnet
#

never head of that test thing

scarlet root
#

probably from A2 days done by Ondra (Suma) / Bebul when they made some special builds. anyway the #captureFrame command could be useful if it still works

rich pond
harsh orbit
#

it's next to the normal exe

carmine juniper
#

If there still is a time to report this:
RuggedTerminal_02_communications_F and RuggedTerminal_01_communications_hub_F have some unretexturable (missing selection) part

#

RuggedTerminal_01_F has missing generator (specifically, camo_5) as a regular object? (left is Simple Object)

unreal arrow
ocean tundra
#

Does new update add everything that enhanced video settings mod does?

hollow spruce
#

did you increased the remote control distance with the latest update? i mean this command remoteControl

full sonnet
#

distance? I don't know of any distance limit

hollow spruce
#

Before the update, I lost control of the vehicle when the distance between the player and the RC vehicle was about 100 meters

#

im now at 2km and can still rc it blobcloseenjoy

viscid onyx
#

I've never in my life encountered such a limitation.
UAVs would be completely useless if you had to be within 100m...

hollow spruce
#

It could be my fault because i dident use a uav operator last time and i controlled the ugv directly with player remoteControl driver ugv and i dident switch camera to it thats maybe why there was a limit

#

Idk

wise dragon
#

i have never ever had a distance limit with remote control that i havent scripted

harsh orbit
wise dragon
#

ace doesnt do that

novel aspen
#

I'd love for more of the argo content to be brought over, some of the helmet retextures like the one above are pretty cool.

winter crescent
hollow spruce
pallid cliff
full sonnet
#

Finally a dev branch update after failing for a couple weeks harold
One fail is still in there and its listed as known issue on the forum post.

We did a big overhaul of our UI code to fix the UI Eventhandler crashing issues.
We know there are more crashing issues in UI, but we don't know where. A bunch will be fixed next week.

All the issues we know about are crashes when opening some engine controlled UI windows.
Nothing modded should be affected, but if you notice anything wonky that is related to UI things, please yell.

Also new crashes directly to me please, or ping me the FT ticket.

scarlet root
#

"new" are starting with 2.15?

full sonnet
#

You mean crashes? I mean new unexpected crashes.

rustic plaza
carmine juniper
#

Let me check once again in an almost vanilla environment

#

Hmm can't reproduce both in vanilla and the same Mod sets

#

Disregard then?

waxen vigil
#

Can't wait for what we will gonna get in 2.16

wise dragon
#

angular velocity commands inshallah

harsh orbit
#

well the thing is not all objects support it

#

I mean some objs don't even support linear velocity, let alone angular one 😅

full sonnet
#

Well then set/getVelocity command will already handle that, so the angular commands can do the same

harsh orbit
#

true. for most objs you get [0,0,0] tho 😅
iirc only physx ones had angular velocity

meager sage
#

inb4 server-execute global-argument _object moveToAtTime [[_positionASL], [_rotationEuler], _serverTimeInTheFuture]; that gets interpolated client-side to not spam position updates all the time :3

wise dragon
harsh orbit
wise dragon
#

dont u dare delete it

ocean tundra
#

we can make planets

steel rune
wise dragon
#

you wish

harsh orbit
wise dragon
#

i love you leopard

harsh orbit
#

well idk if it'll sync over network blobdoggoshruggoogly

wise dragon
#

dedmens suspicion was that setvectordirandup/setvelocity was resetting engine angular velocity and no getter/setter to reset it leading to my issue

harsh orbit
#

didn't you use setVelocityTransformation?

wise dragon
#

i used every combination of commands

harsh orbit
#

well you should only use svt

wise dragon
#

setposasl/setvectordirandup, setvelocity/svdu, svt, svt/svdu

#

svt alone had best result but still have that bug of it jerking angular

harsh orbit
#

you can do really cool stuff with it tho 😅

#

I wonder why it was never implemented? think_turtle

#

my guess is network issues. I'll have to test this later

wise dragon
#

i think you can do that with addtorque atm

#

just addtorque has no getter and is awkward to work with

full sonnet
carmine juniper
#

Oh my, you're already on the seat Leo

#

You've got a nice job to enjoy eh?

harsh orbit
#

I simply tried it to learn the basics. no guarantee it'll be added to the game meowsweats

full sonnet
#

Just do it properly then so it can be added to the game 😄

meager sage
#

doWhatIveMeant incoming?

carmine juniper
#

diag_runOnDX12

dim bone
#

DX13 support

ivory ridge
#

You can run Vulkan by DXVK (and it gives a small performance boost) but BE has to be switched off. I would like to have support for DXVK with BE.

pallid cliff
full sonnet
#

speaking of what 😄

#

Yes I know there are many things to be doen for 2.16

pallid cliff
#

Sounds good.

#

Now I can tell your colleagues from QA that you are aware 😄

cunning topaz
#

diag_toggle "EPEVehicle"; is mostly broken in 2.15 diagnostic.
No info on gears etc displayed.

full sonnet
#

It worked before on 2.13?

cunning topaz
# full sonnet It worked before on 2.13?

Most likely although can't be 100% sure. Certainly used it extensively on every new vehicle in SOG:PF to model realistic vehicle transmissions so must have at least worked in 2.11.

full sonnet
#

New feature coming soonish.
Being able to delay players joining the server, or kicking them before they are able to get on.
Also server scripts get access to callExtension

Script is called every frame while player is waiting to connect.
If script returns "DELAY" the player waits in loading screen.
If script returns "ACCEPT" the player is let through into role selection.
If script returns "REFUSE" it kicks the player with optionally also displaying custom reason.

Additionally, because it can use extensions, extensionCallback can be used to communicate with a mission script (shown in video is eventhandler script, that has full script and isn't just limited to the server script commands).

#

server.cfg
onPlayerJoinAttempt = "(EXTENSION_NAME callExtension ['joinRequest', _this + getUserInfo (_this select 0)]) select 0";

Extension code for above

static bool goodToGo = true;
static bool goodToKick = false;
private static string kickReason = String.Empty;

public static int RvExtensionArgs(StringBuilder output, int outputSize, [MarshalAs(UnmanagedType.LPStr)] string method, [MarshalAs(UnmanagedType.LPArray, ArraySubType = UnmanagedType.LPStr, SizeParamIndex = 4)] string[] args, int argCount)
{
    if (method == "joinRequest")
    {
        if (goodToGo)
        {
            goodToGo = false;
            output.Append("ACCEPT");
            return 1;
        }

        if (goodToKick)
        {
            goodToKick = false;
            output.Append("REFUSE");
            output.Append(kickReason);
            return 1;
        }

        callback("ext", "joinRequest", args[2]);

        output.Append("DELAY");
    }

    if (method == "go")
    {
        goodToGo = true;
    }

    if (method == "kick")
    {
        goodToKick = true;
        kickReason = args[0];
    }
    return 1;
}
wise dragon
#

based

mental fulcrum
#

cool stuff, do you think it could be feasible to have it work from mission? Would be useful when persistent = 1

full sonnet
#

Also I'm looking for more important commands that are missing in serverside scripts, I assume missionNamespace is there but haven't tried

mental fulcrum
#

yeah, registering this via mission, a script or description.ext

full sonnet
#

Probably.
I replaced all the server eventhandlers with the newer system so they aren't recompiled on every run and there can be multiple.
Problem would be making sure they are removed again at mission end. But with description.ext that should work

mental fulcrum
#

Additionally, because it can use extensions, extensionCallback can be used to communicate with a mission script
What happens if we try to publish variable / RE to the client in here?

full sonnet
#

RE doesn't work because the client isn't "registered" yet. Had to add a workaround for that to make getUserInfo work
So when its checking the RE targets, it thinks it cannot find the target

Technically no network communication should be allowed at that point because security

mental fulcrum
#

👍 was wondering if it can be used for some early persistence load.

#

There's still no way to get (client side) player uid in lobby ui right?

full sonnet
#

playeruid == steamid?
getPlayerUID should... oh I see...
Yeah I think not. I think getUserInfo should be able to work there (player has all the player identities) but its limited to run serverside only, which will prevent that. I don't know if we would change that.

mental fulcrum
#

year ago I had an idea where our extension would check what slot are you enlisted for and auto put you in if the slotting data is properly named in mission and signups.

full sonnet
#

Well clientside extension can read steam id

mental fulcrum
#

but you need to bloat it with steamworks ;/

#

nulary playerUID that works in SP too would be neato

full sonnet
#

You can reduce that to half a dozen lines of code if you manually call steam dll.
I don't know how you'd do slot selection though, there are no script commands to do that. Or can you emulate a click onto a slot somehow?

mental fulcrum
#

ctrl activate should work. I should test that.

#

abandoned the idea when I saw there's no command for UID without player object.

full sonnet
#

You just need I think 3 or 4 classes copied over from steamworks SDK to be able to load it manualy.
Also pretty sure for .NET there will be a nuget package that does it easy

steel rune
full sonnet
#

Aha! Yeah missionNamespace actually does not work in server scripts.
That could be another option to allow communication between mission and server scripts.

omg and get/setVariable also aren't notlikemeow

#

Today I learned.
When you end a mission on a server via #missions. The missionNamespace variables stay, the mission eventhandlers also stay.
And you can still execute ExtensionCallbacks and run scripts while everyone is in mission selection screen.
As soon as you get into role selection on a new mission, its all cleared

#

So now you can do this

mission init script:

MH_ready = true;
addMissionEventHandler ["ExtensionCallback", { 
  diag_log ["callback", _this];
  params ["_name", "_function", "_data"]; 
  EXTENSION_NAME callExtension ["go", []];
}];

server config

onPlayerJoinAttempt = " \
    _ready =  missionNamespace getVariable ['MH_ready', false]; \
    if (_ready) then  \
    { \
        (EXTENSION_NAME  callExtension ['joinRequest', _this + getUserInfo (_this select 0)]) select 0 \
    } \
    else \
    { \
        'ACCEPT' \
    } \
";

To only actually handle that stuff, if there is someone to handle it

#

Or..
Because "call" is available.. You can do

server.cfg
onPlayerJoinAttempt = "call (missionNamespace getVariable ['PlayerJoinHandler', {'ACCEPT'}])"; // Run mission handler if it exists
Mission script:

PlayerJoinHandler = {
  EXTENSION_NAME callExtension ["go", []];
};

Now you can run any mission script from a server eventhandler.
It just takes a bit to wrap your head around that these are different execution environments.
This get's quite interesting.

Because the missionNamespace function was compiled in normal environment, but is executed in server environment.

If you put params into the function, it will work.
If you put a compile into the function, it will compile in the environment its executing in, so in the server one. And if you put params in there it fails to compile because that command doesn't exist in that environment, so it fails to find it during compile.

Opening the door for some nice new brainfuckery.

grave viper
#

Also would be nice to unify server commands syntax or update wiki. As much as I remember I had issues with kick unkick when I tried to make scripted white list.

full sonnet
#

Yeah that wiki page needs a bit of cleanup.
Probably can't change the old commands syntax. I'm not even sure how they work, you just pass a string and the string contains multiple arguments? 🤔

scarlet root
#

not sure to understand the full use of this yet - is it mainly to handle abusers and alongside potentially allows better persistent game mode support?

full sonnet
#

Mainly abusers probably

#

Custom whitelists/blacklists.
Any verification you want to do on players (like a vac ban check or whatever people do) can now be done before they join into the game and start executing cheats.

I don't know how it could help with persistence. You could start preloading data earlier

#

Also via the communication between both sides, you could also run server scripts from mission side, like kick/ban.
And it makes server scripts alot more useful so now we can think about more things to add

urban shard
full sonnet
#

Ah I didn't think about that.
https://community.bistudio.com/wiki/allUsers is currently not available in server scripts. If I make that available you can solve that entirely in a server script one-liner. I'll put it on the list

frail wharf
#

As it is now, can't we already check the player GUID?

full sonnet
#

I don't understand what you mean with that question.
The player ID? So their steam account ID?

frail wharf
#

yes. on the onUserConnected, just check if the ID is in some sort of list. I don't see why we need the allUser command to create a blacklist/whitelist

ruby edge
full sonnet
frail wharf
#

Ah I see... I confused reserved slots with blacklists/whitelists

grave viper
full sonnet
#

You couldn't. Now you can

wise dragon
#

theres no way to have dev and prof branch installed at the same time is there

meager sage
#

try getting dev from Steam and alternative binaries from pinned message in #perf_prof_branch

#

data should be the same after the 2.14 released 🤔

harsh orbit
#

there is. you can use the updater tool in A3 Tools. but that means you'll have 2 whole games

harsh orbit
#

you won't have 2 data

wise dragon
#

yeah figure its better to keep dev branch as main steam one

harsh orbit
#

you can make a new dir and symlink the stuff from the dev branch except the binaries

wise dragon
#

mashallah

harsh orbit
#

but if you're trying to play in MP that's not a good idea

meager sage
#

the problem isn't "better to keep dev as main". The problem is: there are no alternative dev downloads 🤣

wise dragon
harsh orbit
#

that'll work 😅

wise dragon
#

hes a chill guy so i expect he shall

#

i assume angular velocity commands arent on dev rn though leopard

harsh orbit
wise dragon
#

how weird is weird stuff

harsh orbit
#

like the non-local clients not experiencing the same thing as the local one

wise dragon
#

interpolation wise or its actual application

harsh orbit
#

well the speeds seemed different

wise dragon
#

is it done with physx or one of the other thingies

harsh orbit
#

I only tested the physx objs. I don't think it works with other stuff (except projectiles)

wise dragon
#

i tested just addforce on dedi and it was having same stuttering as my capital ships stuff

harsh orbit
#

but the ping was very small ofc

wise dragon
#

the further away you get the less smooth it looks

#

but it never interpolates

harsh orbit
#

didn't test that

wise dragon
#

oh you mean angularvelocity not addforce

harsh orbit
#

well if you noticed something weird plz let us know and we'll check

#

yeah

wise dragon
#

yeah ill test angular velocity once its on dev

#

asked my server host to see if he will switch for me

#

guess im back to debugging 6 months of work non stop 🙈

meager sage
#

release > dev is 84 meg download now, so i guess the data should be compatible enough

wise dragon
#

not too concerned about it currently but moving into uni accomodation soon so might end up with shit wifi meaning its not feasible to change just before an op 🙃

wise dragon
#

whats the dev branch thing even called for a3 server

meager sage
#

does dev even have multiplayer enabled?

harsh orbit
#

well afaik yes. only diag doesn't

formal cipher
#

A3 Server doesn't have the dev branch, the server EXE's are only distributed through the client app for Dev.

wise dragon
#

oh bruh

cunning topaz
#

Wouldn't it be splendid if Leopard's advanced developer tool config viewer was integrated into the vanilla game. If only we had a man on the inside...