#dev_rc_branch
1 messages · Page 3 of 1
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 
Another result, I had no idea what I was doing but it worked sometimes
Huh interesting
@crisp wyvern interesting gif. I felt like it was GTA V with going into the garage. ;-)
almost translucent 😏
Yeah, looks like it doesn't allow opacity, only binary transparency
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 🤔
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
During world load, there is a place where all spawned scripts are cleaned up. Maybe that happens after that init step
That would explain. Adding MissionEH doesn't work either
try initPost maybe
Is it a thing?
I don't know if its named like that.. also not if there... mh
Can't check now, maybe later
initPost or postInit don't work
Normal cfgFunction with postInit=1 and exit if not Eden.
Is this solution even a thing? I have never experienced postInit works in Eden
It doesn't work for me?
My bad I mixed it with CBA system, it works here and it's preInit that works in 3DEN. Sorry.
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.
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 🫂
Yeah, having no transparency on meshes is a property of the faces(?) in the mesh and some flags that materials add to it. One of my first ideas with ui2texture was to make animated vehicle cloaking: https://www.youtube.com/watch?v=8kTtNaMojaE but sadly transparent colors are displayed black unless there is that renderFlags[]={"AlphaTest32"}; in material
its a flag on the polygon yes
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
Yes I heard your wish, quite a few times in fact

Being able to make entire objects invisible, without making them also intangible, seems like it would have pretty broad usage actually 🤔 finally, big invisible walls
Well you can already make selections invisible with setObjectTexture [0, ""] even if polygons don't have alpha flags
that game has some invisible walls that you can setObjectScale
Only for things that have selections (and assuming those selections actually include the whole thing) though.
Placing scaled objects in the Editor is a real pain, and the invisible wall object is not a particularly helpful shape (it's square, not wall-shaped).
I'm sure there would be other uses for this sort of thing as well.
O intrstng

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 ._.
inb4 branchless programming gets a separate wiki page
This worked perfectly! Thanks Dedmen!
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.
That is due to how p3ds are binarized and stuff. That won't be fixed
Wiki account is Dwarden, maybe Lou can help, i think Dwarden
It does yes the whole texture string is lowercased
No matter if you give it a path or a procedural, everything in that text input field becomes lowercase
Thank you, I will reach out
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
"Simple VM" or "Fast VM" as new name?
I don't really want to name it Fast/Rapid 🤔
Probably just Simple VM
"Short VM", as homage to the working title 
VM.exe
Blazing (Fast) VM
Real Virtuality Machine
EnSQF!
Its already decided 🫂
Please don't make me realize there is a better name and make me change it again 😄
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"]
]
unary ==
why is this not binary
I copy paste things alot, I hav fixed nau
thanku
So above benchmark was wrong? How did the code work with wrong Assembly 
I hope you're unit testing this 
the assembly to string thing was wrong
the assembly is right
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
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
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
SimpleVM, it'll be on by default
ViMple
Praying this finally fixes players appearing in underwear 🤔
Dedmen pls use us for naming things we seem to be really good at it for some reason
[
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 
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% 😠
12%VM
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 
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)
Maybe its a good time to change merge and similar commands to start returning left hand operand instead of Nothing too?
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
_hashMap inheritFrom [_parent1, _parent2,...]; 🙃
_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"}
]]
];
meh no need 
merge is new enough to not end badly. Others.. It can cause problems changing nil returns to non-nil, for example in some things that expect either nil or bool return value
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
Honestly I'd also make overwriteExisting default true. I feel that if there was a way to count usages where you want it to be false by default it probably would be like 1:10 or even close to none. Probably all use cases are [HASHMAP, true] 🤔
/shrug too late
Inheritance is a big part of OOP, so I think we should make sure that has some acceptable solution
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?
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 
"too messy and impossible to remember" just like most things SQF
no
this is a whole new level of arbitrary string mess to me 
imo just forget about inheritance
class "base" : [
]
class "class" extends "base" : [
]
still meh...
inb4 config-defined code classes
A new script command, that all it does is add a specifically named hashmap entry? ugh
I'd rather not
no I meant a new "class" type 
There is a reason I went with the minimal invasive variant of making this a hashmap
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
this doesn't look that bad in hindsight 😛
_animalBase = class "IAnimal" : [
["HasFur", { true }]
];
_catDeclaration = class "Cat" extends _animalBase : [
["HasFur", { true }]
];
So I shall add 2 more commands for something I can do in one that already exists? 
All these would do is just build that array for you in a fancy way
well the point is making it look good
But it doesn't need to look good
well yeah exactly. you can still do it via the "#typename" if you want to
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
_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;
😄
time to add emoji identifiers to the mix
if (_x isKindOf 😃) exitWith {};
#ifdef 👿
#define TRUE 0
#define FALSE 1
#endif
#define CLASS(x) [["#typename", QUOTE(x)]] +
#define EXTENDS(x) [["#base", x]] +
#define CLASS(x,y) CLASS(x) EXTENDS(y)
_animalBase = CLASS(IAnimal) [
];
_catDeclaration = CLASS(Cat) EXTENDS(_animalBase) [
];
You can already do that, but you need quotes like
if (_x isKindOf "😃") exitWith {};
can you use emojis as hashmap keys then provided theyre strings
yeah
omg
private _decl = createHashMapFromArray [
["😃", { "Smil" }]
];
_obj = createHashMapObject [_decl];
_obj call ["😃"]
``` `"Smil"`
i love that
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
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
btw could you at least make it so that the #flags can be added to the array multiple times? 
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] 
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.
alternative is to use a hashmap instead of array
then you .. mh I don't know
well you could make it work using a custom version of createHashmapFromArray that merges array values instead of reassigning 😅
I think what really needs to be done is port Arma 3 to DX12 with OpenMP support
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}}]]`

oh right I renamed to _self instead of _thisObj . Already forgot and I trusted the wiki 😄
Unary get set call wen?

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
Poor piggo
Clone not sure. I guess that's same as constructor, so call base first then sub 🤔
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
btw did you consider the multiple flags thing? 😓
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
What about this tho?
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?
Uff that would need a new command name 
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? 
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?! 
Spawn your stuff?! 😅
I think I can just put that burden onto the scripter using it.
So no override?
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
Actually the converse of this is even more interesting 😓
i.e. base uses sleep (schd), but you want to be unschd
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.
You mean they're not read only?
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
So, tried the extended Video Settings (cc @candid dew)
Very Low vs Standard Texture. I do not think it is working properly...?
Could also lead to "leaks"
(well uninitialized stuff)
If the base class deletes constructors of subclass yeah, that'll mess things up
or deleting destructors 
Mh I can always change it later if someone has a usecase, I'll make it readonly then for now
I do believe it didn't worked well when was a Mod too
#define def(x) [x, {
#define end }]
class("MyClass") extends(_base) sealed nocopy [
def("function")
hint "hello"
end
]

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)
all ok if switch back to 'ultra', but no effects if again enable 'extreme'
this#dev_rc_branch message problem is still present in Dev
create a FT ticket for this https://feedback.bistudio.com/T172306
I have it in my internal build.
Can anyone else reproduce it being missing?
got it
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 😄
soon(tm)
I don't have A3 installed right now, does the extreme setting increase the maximum shadow distance?
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 
no news
Command line option to export addon loadorder graph?
Just saw engine has this functionality but only for internal. Might be useful 🤔
One for anim graph too 😛
I don't know what anim graph is
what's the output? graphviz?
yeah
You know, connected anim states?
Tho there's also interpolation and I have no idea how to incorporate that too 
If it has "weak" links (e.g. dashed lines) maybe via that 
I don't know anything about anims 😄
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
Just build your own 😠 :pepewalkaway:
I did 😅
11-5-2023
EXE rev. 150658 (game)
date is wrong btw 😅
Yeah, it ain't November today
Heretics!
Is it maybe because it's already placed? It seems like that in your ss
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.
Still present in new dev, here a FT ticket about it
https://feedback.bistudio.com/T172971
: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"]
]```
hmm. How does false || false end up slower than false || {false} in the new version?
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
I don't get it. It could be false || {true} ?
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
If it works that much better with code brackets, can't you just treat every expression as being wrapped by code brackets?
Yeah last line that I edited into my message
it's grim having to add them for better performance :/
i used to think && and || were lazy eval operators tbh
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
Hmm, any chance for multiple inheritance support in configs? 
no
Yes
just fyi... there are pages on the wiki called
https://community.bistudio.com/wiki/SQF-VM
and
https://community.bistudio.com/wiki/Simple_Expression
What is the name of your Simple SQF wiki page?
There is none for "SimpleVM"
@winged copper Presumably whenever 1.54 hits stable :)
2.13.150692 - compileFinal [1, 2, 3]; (biki example #3) Error compilefinal: Type Array, expected String,code,HashMap
#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 🤔
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 😄
Great, then I don't need to add another command for that
dat overhead though
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.
It was removed due to privacy concerns. So we won't add a replacement
Could it instead include the "benchmark" entries from the arma.cfg file?
I don't think they're useful
YAAB is fine tbh
People will argue it's not representative
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.
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
So when do we get a variant of "HitPart" with the same locality as "HandleDamage"? 😄
locality is big oofs. Likely never
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
yeah I really hate the mods/DLCs that mess with main menu too 😠

I like "Take" and "Put" EH on container. I skiped one feature because it not worked on containers.
I just downloaded that yesterday and noticed it lol.
getting the context in diag binary would be much welcome to help track down the source
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
[
[{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)
A bit verbose maybe
But if you want to get rid of it, fix your errors :harold:
awesome 👏
Wait until you find his hidden jukebox.
If jukebox makes funni music then I like jukebox
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;
everything above 999.999 = 1e+adfdifbgre9ßtz34n34
Good old scientict notation
The E in 1E12 clearly stands for "ERROR"
I hope you are joking or i need to reevalulate my life
;D
@digital vessel 1e+012 is 1000000000000
isNumber is false is the problem, (and isText is false as well). - main problem is breaking configViewers/dumpers
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
Had a need for HandleDamage on HitPart side recently
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
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! 😉
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)
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
Thank you for your feedback, it is very valuable for us and we will make sure to consider it in the future.
Latest damage rvmat update doesn't do anything with the mats I set with hiddenSelectionsMaterials config instead of the script command it seems, intended?
Hi dedmen, will a fix for the steam infinite download loop be included in the next major update for the game?
what does "doesn't do anything" mean
I cannot repro
i think you gotta subscribe to a thousand workshop items
and compositions
thats basically what happens and it definitely happened to a lot of people
Wait I think I'm misunderstanding what the change is all about, let me repro what I've thought
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
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
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)
I might unload Dev-Branch and test again
inb4 it's caused by the wreck being a separate model proxied into tank's LOD. With its own material set.
MBT_02 has its own NonAIVehicle indeed
I don't know if I can apply material there
check with something with procedural wreck
Okay looks was a wreck proxy issue, MRAP_01 works fine
https://feedback.bistudio.com/T168411
Speaking of custom materials, how about this? Will we have a fix?
Can't tell the future
Then predict :>
I've only noticed it with compositions, not sure how many I'm subbed to but it's probably around 300
Definitely reproducible tho
@ dedmen, is it too late now to try to repro again?
I’m affected too
I'm subbed to 191 compositions for context
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
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.
No chance that the linux binaries would be present in there as well, though I'd think?
and good call on the data 🤣 that would have been stupid of me
No, we only publish Linux binaries through the server app.
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!
Interesting. Thank you for the information!
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.
You can also just ask the sogpf devs on their discord or in their #sog_prairie_fire channel
Didn't know they had a Discord. I'll check it out. Thank y'all for the information!
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
@full sonnet are priority configs for ammo types a required thing
was just curious for AI Reasons.
2.13 already offers contact and tacops PBOs
Mostly because I wanna know if Mod Devs are doing Priority Configs for ammo because it would make my life so much easier

Finally can make AI use the right ammo
nvm omg :)
I don't know what that is
AIAmmoUsageFlag
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
I was just wondering because there some values in the BIWiki that are just ???
Well I don't know :harold:
sad
who would possibly know?
mfw dedmen doesnt know 
@winter crescent do you know?

Please refrain from pinging Bohemia.net people frequently and (almost) randomly
Apologies.
aren't the names self explanatory?
kinda but wondering if the ??? mean they aint really used
or is just more so that theres nothing to explain
lmao
im probably overthinking it 
youre more likely to get a useful response in #community_wiki too
There are a lot of config properties that aren't very well-documented on the wiki. If you're trying to use them you can ask in #arma3_config .
yes, they are not used
thanks
btw thank god RHS has them detailed (thanks reyhard now me dev team can make ai employ weapons correctly >)
Awesome. Will this have the stamina and passenger firing updates?
The reason for trying to send a too large non-guaranteed message has been found and fix is on the way 🥳
👀 will you post any technical details for the curious ones?
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.
Woah, kudos for willing to write that wall of text 🙂
Interesting read!
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
Awesome work 👍
Dedmen, is it possible to find the cause of instant disconnect with no explanation when joining listen servers?
Forum link describing issue:
Bug been around for many years
I'd need a repro
Hmmm, how do i provide that
Find out how to reproduce the issue. I assume you can't
I can, but i dont know how to not reproduce it
Start listen server, load mission, have people try to join
Sometimes they just can't fully join
Never had it with local client joining tho. So might be tricky to repro
Ah nice thanks @mental fulcrum
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.
No esc pressing
I had cases where I was having listen server, 5 guys trying to join
And it also happens on vanilla wih no mods
2 of them load in to the lobby, and instantly disconnect with the message "<client> disconnected"
constantly
Yessss exactly
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.
They can join if youre in mission selection but not if your in role selection
The worst part is it happens spuriously and randomly
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.
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...
I would love to help in fixing this calamity of a bug
Yes +1 from me
Well if you can reproduce it, jump to DM and I'll build you a thing that gives me info
Ok copy
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 
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
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 
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...
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
lol, I need to start using this, when explaining what is that Arma thing that I keep talking about 😄
Yup 😂 saw that as well
I skipped that part 😅
I'm gonna watch the whole video later on... Looks actually pretty interesting 🤔
why is there a bluescreen flashing every few seconds 
thats the deadly lag
might that also be the reason why lowering MaxMsgSend seems to help in stopping servers from yellow chaining themselves to death?
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;
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
The RPT spam for every too large message will probably cause the biggest slowdown issue there?
But RPT logging should be async and fast 🤔
luckily it's been a while since I've killed my server that way but from what I remember the too large spam didn't even occur while yellow chaining.
Well then that's something else
Just a bunch of xxx pending and then ded (as in does not recover from yellow chain in 10 minutes)
@full sonnet have you tried the repro for the download/stuttering issue that was in here a while ago?
no
I have better things to tackle than "download hundreds of workshop items and see if you get some laggyness at game start"
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 😉
Shame he had to cut it short, it was just about to get interesting 
Ask him on Github to record the rest 😛
Create an issue in one of his repos 🙃
https://github.com/travco
@full sonnet Wait, why are inventory updates non-guaranteed?
Don't ask that 😠
cackles
Well, if inventory updated per-shot - it can be considered frequent enough to be non-guaranteed
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
We could do it in code, I'm just wondering if it could be a server setting handled by the engine
We won't do that
Missing hit effects bug on some surface in Very High particle setting still present on Dev https://feedback.bistudio.com/T172971
I am patiently waiting for 2.14
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)
Yea was wondering about that as well, KK was having a look at it I believe.
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
Known issue, not sure what the FT ticket is.
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)
@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
If you have any crash, always report it


the VBS heritage explanation in that video is very upsetting 😠
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!
Should make a blog, but its too small and uninteresting for a blog 😄
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).
I think you did have one.
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.
I'm still waiting for Community Involvement project.
It hasn't really moved in recent months. The good side of that being that Dedmen and a few others still had room to contribute to Arma 3 platform support themselves. Hopefully in the second decade ... 
Do you mean I eventually need to move to Amsterdam 
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
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.
True point
BIS_fnc_setPitchBank2 it is then 😬
...But, what if the function is "certainly" broken?
CBA 
I mean it's my fault that I haven't posted a FT while I knew it for ages but...
It is a function, write your own
Was just joking
same thing, if it is 100% broken and therefore not used then there is no point to fix it let alone keep it, is it? If it is used in broken state then it cannot be fixed either without breaking the breaking as it means some one relies on the that broken functionality
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
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.
sqf 2.0 + functions 2.0
😮
Arma 3 2.00
...wait 🤔
Arma 3 9 3/4
Arma 5 confirmed?
just don't look back 
Is this command permenant or temporary? diag_testscriptsimplevm
ah select and apply don't work with SimpleVM? 
They do
diag_testScriptSimpleVM {
[1,2,3] apply {_x}
}
"IncompatibleInstruction: build error:blacklisted command, at 'apply {_x}
}'"
Isn't it just the bit in the code brackets that you test?
not sure what this means then?
ah that's what it means 😅
I thought you're supposed to put the whole script in there 
Cannot have sub scopes inside simpleVM (besides then/&&/or)
The apply body can be SimpleVM'd, the apply statement itself cannot
Tweaked character rotation and collissions. Does that mean less getting 'ArmAed' when running up and down stairs.
No more rotating yourself into walls.
running through walls is funnier

RC branch for update 2.14 is now available: https://twitter.com/ArmaPlatform/status/1691819107300106750 ⚡
As we approach the 10th anniversary of #Arma3, it's time to open a RC testing branch for update 2.14. We hope you'll enjoy the free bonus goodies and many other tweaks / fixes!⚡️
💡Details: https://t.co/YmeH89W7Tw
📥Steam access code: Arma3Update214RC
Argo assets 
Rail gun tank 👀
several 2.14 RC servers are up
Anniversary bonus content + enhanced video options
gonna download the beta asap
More video options. More highend and more low end.
Like Greenfists enhanced video options mod
do we get further shadows 👀
is it okay to give spoilers from this channel?
class VeryHigh
{
text="$STR_A3_OPTIONS_ULTRA";
value=32;
};
class Extreme
{
text="$STR_A3_OPTIONS_EXTREME";
value=32;
};```
You guys trying to fool us?
Seems to be higher texture and more cascade layers.
what is cascade layers remind me
idk either 😛
I'll assume its not css cascade layers
Nope, came on the same.
Literately all searches end up on CSS 
even when adding video games
which setting is that
DynamicLights
Show some pictures of the assets 😁
The charging system is pretty cool btw.
Send them to me 🤣
Or just go in-game yourself 😂
I can't download it rn 
It's functional and not just a reskin of the normal T-100? Awesome
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.
OMG EPIC!!!!!!

It's functional, not much visual effect though... Maybe I have to try it in the dark though.
It has particle effects. But besides some spark a railgun doesn't do much
Yea I was thinking that, tried to find some online to compare.
shoot railgun and got
Trying to set an out of bounds velocity [1227.15,17.0521,-5317.82] on '164082: <no shape>'
can't find this
RTX 4090 😏
@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
Can this new charge script be applied to handheld weapons btw?
Would be amazing
at best - not fully, as it's set to consume vehicle's fuel when charging
and it switches between real and fake weapons, so it doesn't really look infantry-supporting 
aren't the woodland fatigues already configured as is?
or am i misunderstanding what youre saying
Not the ones from Contact
The texture is in the files, but not configured
Plenty of mods do it tho, or just setobjecttexture
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
Again, not the ones from Contact
There's textures for Woodland fatigues (M81 pattern) since Alpha
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.
There seems to be a lot of unused textures/skins still in the game that were cut, but can be put back into the vanilla game using init codes. These skins require no mods or custom texture templates. You can see a few of these unused textures here I have found most but I have yet to find all of th...
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 :))
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.
And other pre alpha vehicles maybe? Mortar marshall and medevac marshall..
any pics of those?
that's not mortar?
It might not of ever been rigged and just a concept art.
There is a model for it
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.
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
i mean, if they'd be able to get the already in the game content in I'd kiss BI
stuff like this is cool as hell but might be too much
wondering if particles are CPU or GPU
I'm sure terrain and objects are CPU
and reflections + light + clouds are GPU
Yeah, really wish we could pull the black compact NVGs from the arsenal.
There is also unused luxurious interior for mohawk
From fanwiki
https://static.wikia.nocookie.net/armedassault/images/2/28/Arma3-mohawk-03.jpg/revision/latest?cb=20220326034721
Funny there is also unused classnames for uniforms with these textures
Feels like more appropriate asset for vanguard game mod honestly
noted!
Do you have more details where & when it happened?
To the best of my knowledge particles are CPU limited
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
is there more content than just Futura and the capsule?
there's some other props and some hats/balaclavas, according to the change notes
props like what for example?
can't install it yet
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)```
alright, thank you, I will take a look at it
Added: Pumpkin (Project Argo)
i am so going to put one on my head
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?
Pumpkin from Argo is an Halloween version
Oh nice
cosmetics only... 😒
Why you hate cosmetics when you don't need to pay for it?
TBH I wouldn't surprised if they bring more buried things from graveyard
or DayZ DX11 render would have been a very very very good surprise
but won't happen... 😒
It would require multiple Dedmens
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.
I definitely would appreciate if we can have more buried stuff - like Minivan
luxury Mohawk heli interior from Take on Helicopters would be nice!
do you have a pic?
This thing. The texture is properly UV'd so I definitely assume that this is just a buried asset
https://cdn.discordapp.com/attachments/571728930365767702/770514351429386240/unknown.png
I would repost this 😄
Hey Bohemians, there's still a lot of things to include in Decade update, why not?!
Image if they only showing us little content so we piss our pants when the full update is out
And this iceberg is not even completed
*if it even exist
https://www.youtube.com/watch?v=Uyp1OlgW6xY
Dew Eet Naw
Earlier this week we received unconfirmed rumours about ArmA and the possible futuristic weaponry and units it might have.
Today we were presented with video-proof of our informant, and immediatly we have asked Bohemia Interactive for feedback on this matter, and are still waiting for their response.
Judge for yourself and leave your thou...
Sorry Avery, I stole yours!
Still wonder was it actually a first idea, or it is just joke from bohems
"F-35F Fishing Motorboat" 
A CO texture has left in the game data actually, IDK what it was for
initial idea
I remember they wanted to keep nuclear war scenario in a2 and proceed story
F35 and fishing boat exist as hidden?
Wish devs explained more about their first story development
Not really
F35 just a2 asset,
They prob didnt find resources on it
m32 and m72 law?
mods are mods...
Enough stuff is just a 2 reuse
I don't really know where M32 came from but M72 was appeared in a pre-alpha pic
I remember seeing MV22 concept art a long time ago
Csat pants are brittish origin
For example of reuse
I remember in apex we could get m4
There was render for it
The Osprey and F-35B were just placeholders for testing though, and we already have the "final" versions of both (Blackfish/Black Wasp).
I always liked this concept art
That's the Blackfish.
blackfish is ugly af
is the explosion effect on the T100X bugged? it seems to just catch fire instead of exploding
compared to this
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
I've always hated seeing this in scenarios and/or terrains... just felt out of place having no counterpart to match it 😅
Would love to see it as an actual vehicle but that ain't gonna happen lol
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
this is a vestige from Take On Helicopters if I'm not mistaken
Weird they didnt put all heli stuff in game
I remember there was uh1 of some modification
Could be civilian
What do you mean by "not working"?
I see zero difference between them
I expect more resolution than Ultra if I set Extreme, or vice versa for Very Low
https://twitter.com/Greenfist3000/status/934865804000137216
Back when this was a Mod - even though at that point I couldn't make this texture resolution happened
I'm not sure there is a higher-res texture for that. Maybe it boosts the LOD distances?
Civilian UH-1 from Take on Helicopters
Unless if I mistaken the entire idea of the video settings
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
Tried a texture that should be 4k - still no change
you can also find some of the TOH texture variants for the Mohawk in the Arma 3 game files... and use them 😛
want a civilian Mohawk? say no more
textures yes, interior no...
There are only 3 iirc
Aaf president and civilian
you don't have to swap out the interior
And idap
but yeah
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

Have you tried at different distances? from what I can see the texture quality just affects mip distances.
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?
Isn't very low a vanilla setting? But either way, it's most visible at a distance.
No, it isn't
Most visible, as in? Not sure if I followed your words
I mean the effect is more visible from further away by nature. The mod can't affect it
So I think I've always misunderstood how and what it does after all these years
Iirc, in more complex scene it's more obvious than in an empty editor view
Hmm let me see in Tanoa like you've posted
it's about sceneComplexity
Isn't that the object detail?
like there were more details at distance before patch 1.60 (Apex) and then it was "optimised" (reduced)
Yeah I mean, definitely obvious when distance... But I do still think it should reduce the texture resolution in very close distance too
New two caps have visual bugs
https://feedback.bistudio.com/T174777
Pretty much common issue after updating material
#arma3_feedback_tracker message
it depends on the fuel - T100X have reduced explosion effects since it doesn't have explosive shell propellants on board. There are of course batteries, which can somehow "discharge" violently but this should be tied more to fuel level in arma realms
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
ough I thought your ticked for rifle 
pls close my dupe https://feedback.bistudio.com/T174777
And good news is reyhard said fixed internally
It should, I have noticed this with GM assets.
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...
👀
IIRC, Bell 412 in CUP Vehicles is a ToH port
ARGO mission templates are in the Community Kit
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
18:25:38 Custom attribute "enableSimulation" was updated to engine one.
Is this msg new?
These templates for argo bro
So?
Argo has its own functions and a lot of systems, cannot port over A3 without them
Even custom commands
I hope they bring some of the cut assets back into the game.
ye
huh no actually not
I did something new with some attribute thing, but not that one
Thats from 2016
Ive never seen that one before.
@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...
I have, forgotten
you've already fixed it in perf, but still not assigned yourself to the ticket about this
https://feedback.bistudio.com/T152276
in case you would want to assign it to yourself
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
previously it wasn't possible to go below 500 m for terrain and objects
Does the particle effects include increasing limits on light sources?
light sources are dynamic lights
Does the AI know how to use the Futura's main gun?
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.
Fixed last week, will be in the next RC. Thanks!
Still like only around 30?
Maybe possible to make these lightsources like the sun/moon is so its casting shadows like in Reforger it currently does? 😏😏
I think we raised to 64?
We raised it recently (like last year) but I forgot to where
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
As far as i know its around 30 / 32 at ultra settings
whatever it is at currently, better* to at least double that, for extreme setting
1e10; // if undef; no maximum 
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?
Since 2.14 I am getting this one a lot when the launcher crashes. Any more details?
Incorrect WPF bindings 
That Launcher error should be fixed in the next RC update.
How about Project Argo soundtrack Can expect it port to a3?
with or without configuration
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.
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.
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).
Good catch, going to be prevented 🎃
shadow LOD issues on the new caps
https://imgur.com/a/2TcDqO0
That should be fixed in the next RC update.
That's just Contact DLC bonus content
Nope
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
#arma3_troubleshooting message
Could this be fixed too🫣
Is that an issue only on RC/Dev branch, or also in 2.12 that is currently on Stable?
Its in 2.12 stable, i didn't use rc/dev branch
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.
is the change of A3 taking more RAM in the RC or just #perf_prof_branch ?
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
Just Perf/prof I think, if you don't tab out
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
I just played a 3 hour mission and only tabbed out once
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...
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.
arrogance is somebody's trademark
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 
We are allowed to look into the deEBOd tacops right?
Since they are pbo now, yes.
I'm also guessing there's anti-piracy in tacops now
it's so that people can't recreate Tacops mission 1:1
"we are making money over here man!"
Does this happen in both borderless full screen and traditional full screen?
I use borderless full screen and alt tab frequently to interact with teamspeak or discord, when playing co-op
you shouldn't alt+tab, because this is somebody's vision how you're supposed to use your PC, even if you don't. so you have to anyway
Dedmen did you ever get to look into #captureframe #enableTest/disableTest - are those in any build for A3 and do anything?
never head of that test thing
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
I'm running the latest dev branch from steam (2.15.150914), but I can't execute any of the dev branch commands, such as "Animation" diag_enable true
(well I can execute them, but it complains that the commands don't exist).
Do I need to execute some command to unlock the commands listed here: https://community.bistudio.com/wiki/Category:Arma_3:_Scripting_Commands:_Diagnostic_Branch ? Am I missing something obvious?
you need the diag exe
it's next to the normal exe

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)
next dev #perf_prof_branch message
Does new update add everything that enhanced video settings mod does?
did you increased the remote control distance with the latest update? i mean this command remoteControl
distance? I don't know of any distance limit
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 
I've never in my life encountered such a limitation.
UAVs would be completely useless if you had to be within 100m...
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
i have never ever had a distance limit with remote control that i havent scripted
maybe you're using a mod? dunno, maybe ACE?
ace doesnt do that
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.
No, mainly not the scripted terrain grid part. Most of the config part should be in with tweaks.
Okay, I just placed an ED-1D and called it "ugv1", then I wrote player remoteControl driver ugv1 and noticed that the range depends on the player's view distance so increasing the view distance increased the range but this is only the case if you use the uav,ugv without an uav terminal.
Sounds like spaghetti-code in the background 😄
Finally a dev branch update after failing for a couple weeks 
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.
"new" are starting with 2.15?
You mean crashes? I mean new unexpected crashes.
how did you achieved that? I couldn't reproduce it on stable nor internal branch
Let me check once again in an almost vanilla environment
Hmm can't reproduce both in vanilla and the same Mod sets
Disregard then?
Can't wait for what we will gonna get in 2.16
angular velocity commands inshallah
well the thing is not all objects support it
I mean some objs don't even support linear velocity, let alone angular one 😅
Well then set/getVelocity command will already handle that, so the angular commands can do the same
true. for most objs you get [0,0,0] tho 😅
iirc only physx ones had angular velocity
inb4 server-execute global-argument _object moveToAtTime [[_positionASL], [_rotationEuler], _serverTimeInTheFuture]; that gets interpolated client-side to not spam position updates all the time :3
this is literally your suggestion
do you have the link to it?
we can make planets
PBR and DX12 engine
you wish
running it every frame:
i love you leopard
well idk if it'll sync over network 
dedmens suspicion was that setvectordirandup/setvelocity was resetting engine angular velocity and no getter/setter to reset it leading to my issue
didn't you use setVelocityTransformation?
i used every combination of commands
well you should only use svt
setposasl/setvectordirandup, setvelocity/svdu, svt, svt/svdu
svt alone had best result but still have that bug of it jerking angular
you can do really cool stuff with it tho 😅
I wonder why it was never implemented? 
my guess is network issues. I'll have to test this later
i think you can do that with addtorque atm
just addtorque has no getter and is awkward to work with
It should if it was already there. And other things need/use it so probably
I simply tried it to learn the basics. no guarantee it'll be added to the game 
Just do it properly then so it can be added to the game 😄
doWhatIveMeant incoming?
diag_runOnDX12
DX13 support
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.
Speaking of that.
Compositions break Eden Editor filter https://feedback.bistudio.com/T175089
Composition Zeus compatibility
https://feedback.bistudio.com/T174947
diag_toggle "EPEVehicle"; is mostly broken in 2.15 diagnostic.
No info on gears etc displayed.
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.
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;
}
based
cool stuff, do you think it could be feasible to have it work from mission? Would be useful when persistent = 1
What u mean with work from mission?
Adding the eventhandler from mission script? as opposed to server.cfg ?
Also I'm looking for more important commands that are missing in serverside scripts, I assume missionNamespace is there but haven't tried
yeah, registering this via mission, a script or description.ext
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
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?
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
👍 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?
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.
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.
Well clientside extension can read steam id
but you need to bloat it with steamworks ;/
nulary playerUID that works in SP too would be neato
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?
ctrl activate should work. I should test that.
abandoned the idea when I saw there's no command for UID without player object.
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
I’ve used https://github.com/Facepunch/Facepunch.Steamworks before, it has more C-sharpy interfaces compared to Steamworks.NET
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 
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.
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.
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? 🤔
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?
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
i just want to say as someone that runs events that occaisonly fill player caps, being able to reserve slots with this for specific players and admins is going to be SO useful
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
As it is now, can't we already check the player GUID?
I don't understand what you mean with that question.
The player ID? So their steam account ID?
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
🤔
_playerUID = (getUserInfo playerID) #2;
We don't and i didn't say/mean that. allUsers is to be able to count users for reserved slots. Not for blacklist/whitelist
We already (Since current dev branch) have getUserInfo which you can use to get the steamId of the user
Ah I see... I confused reserved slots with blacklists/whitelists
As much as I remember you can't get uid of player. User ID mentioned in wiki is not uid. So you can't compare it to white list.
You couldn't. Now you can
theres no way to have dev and prof branch installed at the same time is there
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 🤔
there is. you can use the updater tool in A3 Tools. but that means you'll have 2 whole games
this way is better
you won't have 2 data
yeah figure its better to keep dev branch as main steam one
you can make a new dir and symlink the stuff from the dev branch except the binaries
angular velocity commands
mashallah
but if you're trying to play in MP that's not a good idea
the problem isn't "better to keep dev as main". The problem is: there are no alternative dev downloads 🤣
what if i bribe my server host
that'll work 😅
hes a chill guy so i expect he shall
i assume angular velocity commands arent on dev rn though leopard
well don't expect too much. I noticed some weird stuff in MP 
no. next week
how weird is weird stuff
like the non-local clients not experiencing the same thing as the local one
interpolation wise or its actual application
well the speeds seemed different
is it done with physx or one of the other thingies
I only tested the physx objs. I don't think it works with other stuff (except projectiles)
could be related to addforce issue of no angular interp?
#arma3_feedback_tracker message
i tested just addforce on dedi and it was having same stuttering as my capital ships stuff
dunno. well on my PC it looked smooth
but the ping was very small ofc
didn't test that
oh you mean angularvelocity not addforce
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 🙈
release > dev is 84 meg download now, so i guess the data should be compatible enough
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 🙃
whats the dev branch thing even called for a3 server
does dev even have multiplayer enabled?
well afaik yes. only diag doesn't
A3 Server doesn't have the dev branch, the server EXE's are only distributed through the client app for Dev.
oh bruh
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...