I gonna tell you a story, about one guy who was trying to connect to his local dedi and query it with steam API. And doesn't matter what he did, opened and forwarded ports, tried local and public IPs, LAN or internet listing - NOTHING. And then, just before going to bed, he remembered that there was this strange param he set in server config called loopback = 1; So he thought to himself, could this be... AND YES IT COULD! This little bastard allows you to connect to your server from the same machine but also makes server private.
#arma3_tools
1 messages · Page 33 of 1
loopback should launch the server also on your loopback interface 
Adding this option will force server into LAN mode. This will allow multiple local instances of the game to connect to the server for testing purposes. At the same time it will prevent all non-local instances from connecting.
nope, this is misleading
because you can have non-local instances connected if they use direct connection to the port ip you provide
the server is not listed on masterserver so no one can find you unless they know address
mikero tools update:
detex has been rewritten to add:
-M(ake) a texheaders.bin
it's fast, and as a big surprise, it tells you if there are errors and why.
Should be a bonus to the teams using python, you can kiss good bye to bis binarise.
also has
-C(ompare) one texhdr against another.
should be a quite efficient and fast method for the bigger teams to ensure there's been no change to their textures
-L(ist)
analyses the file, lists the details, and shows some nice details on the effect on a texheader for _ca,_co,_nohq, _blah pax files
enjoy
@dawn palm no updates on bytex?
ah bugger, will happen when i wake up,
will new detex texheaders be used by pboproject as well or just for standalone usage?
@glossy inlet can you please add the -command startup parameter info you found so far to the BIKI
ref: https://discordapp.com/channels/105462288051380224/105464579600977920/606423928629624832
ty
is that the command/pipe which was added for sickboy's launcher in the good old A2OA days or is that something different?
not sure as the info from dev heaven is no longer available
but it sounds at least very similar
yeah, looks like it.
Hah! I needed to verify if mod ids are parsed correctly then I saw this
Custom Mod [DLC - no] (1692124739): Med+ ACE Burns
Custom Mod [DLC - no] (0): Hawaiian's 75th Rangers
Custom Mod [DLC - no] (713709341): Advanced Rappelling
Custom Mod [DLC - no] (730310357): Advanced Urban Rappelling
Custom Mod [DLC - no] (313041182): @313041182 //<---------------------------LOL
Custom Mod [DLC - no] (876991445): MRB Voice Stop
Custom Mod [DLC - no] (735566597): Project OPFOR
Custom Mod [DLC - no] (620019431): Task Force Arrowhead Radio 0.9.12
arma cant handle these numbers
mikero dos tools update:
pboProject:
+'exclude from pbo'
excludes FOLDERS from internal processing too.(credit Thurston)
+add +/- S(top) to command line and setup panel
normally pboProject will crunch thru all pbos before stopping. Credit Thurston
+checks to see if paX files have actually been created! (credit Thurston) ditto Texheaders.bin (Credit Jacob Mango)
enjoy
@smoky halo 313041182 lacks meta.cpp if I'm not mistaken
don't remember what id 0 was
private / friends only at least I think 
I guess 0 remains if the item was last published as private / friends only with the publisher tool
https://images-ext-1.discordapp.net/external/lscUEqw5i0oals5Z1Bevcv8aeHsJShuHVFhgqsMP3oU/%3Fwidth%3D1020%26height%3D560/https/media.discordapp.net/attachments/604012005493571585/607825795318153236/Blender__C__Users_flea_Desktop_personal_projects_2019_arma_anims.blend_8_5_2019_1_42_35_AM.png?width=1018&height=559
my arma 3 blender tools doesn't have the export option for an rtm file
@fossil light did you ask on the BI forum thread for the Arma Blender toolbox?
also quite possible you are in the wrong edit mode
@scenic canopy
will new detex texheaders be used by pboproject as well or just for standalone usage?
it is currently standalone only from lack of time. It will replace bis binarise (for that function) on next release of pboProject.
It is not worth replacing bis binarise for p3d or wrp because bis add new features to both all the time, resulting (imho) in a pointless, continuous, playing catchup. But pax files have not really altered in the past century, the game, and binarise still recognise pallet indexes, last used in cwc, not resistance, cwc. The only change in the past decade was introduction of lzo compression.
Woop woop, intercept got battleye whitelisted 😄 And I didn't do anything
worry
You're NOT planning to make any update, are you?
"Would you like some cake with your tea?" - Bastian
Who needs cheat engine now!
I wonder what makes it auto-whitelist stuff.
Because obviously, no one was using it online, since it was not whitelisted.
Does that mean that enough people tried running arma with Intercept enabled, by mistake, so it registered as a popular extension and got whitelisted automatically?
if many people try to load a dll with BE enabled, it will auto whitelist it. so yes.
So it's actually in your best interest to NOT inform people that the extension is not whitelisted because they will then try to connect with it 🤷
or LIE and say it is whitelisted, so more people can try to connect with it
So if you have extention that is whilelisted and then you update it, will it have to be rewhitelisted? what happens to old whiltelisted
I bet you don't know!
I'd guess BE doesn't care about what it is, probably just its hash or sth, meaning that if something becomes whitelisted then stays that way (but that's just my guess, never had my extension whitelisted - never even tried)
well ... back in the old days of ArmA.Studio and Dedbugger ... that one was whitelisted too
Had to create a security ticket to get BE to de-whitelist the debugger 🙄
My Discord RPC extension also got autowhitelisted a while back 🤷
- Bastian misses the ticket
- BE global bans all intercept users
- ...
- Profit
yeah.... I guess that might be a concern 🤔
though intercept does nothing potentially bad by itself. Besides creating a pair of new script commands.. I doubt that BE checks for unknown script commands....
anyone wanna be a test subject? I can't test I'm already banned 🙂
Wow, didn’t take long
Hello ... I'm having trouble using pboProject. Already redid the whole project again, re-exporting the files and paths. But I have this error about wrp:
"
808464432
huh
Pbo can't read wrp
makepbo failed
"
have you set up P drive with Arma Tools or Arma3p from Mikero?
also #arma3_terrain is the place to continue
Anyone have like an ACE version of a mod that replaces the Launcher slot with a Primary Weapon?
not really a tool I guess. #arma3_questions might be best place to ask
weapon on back in ace is still WIP
Probably interesting for some programmers here.
Article on the next generation of zip bombs.
The total size of the zip file is 2.9 GB and it unzips to 264 + 11 727 895 877 bytes, having a compression ratio of over 6.2 billion
Article: https://bamsoftware.com/hacks/zipbomb/ (blocked by most browsers, for obvious reasons, reference to that at end of article)
To quote the end of the article
A final plea
It's time to put an end to Facebook. Working there is not ethically neutral: every day that you go into work, you are doing something wrong. If you have a Facebook account, delete it. If you work at Facebook, quit.
And let us not forget that the National Security Agency must be destroyed.
tools_makers

Could you summarize what is the difference between the "next generation" of zip bombs and the "old generation"?
Someone found yet another method to compress zeroes even better?
It's just a new technique. It uses overlapping files. Whereas the old generation used several layers of zip archives which couldn't overcome the max ratio of 1032:1 per level, and if you only unpack one level you don't really get a bomb. This bomb has everything in a single level. up to 6.2B:1 ratio.. or higher if you wanted to.. The ratio scales up the bigger the file gets
#arma3_tools because that's where all the programmers hang out ^^
That reminds me of the conversation we had a while ago about the PBO format. If we had pointers in PBOs (which we don't have), we could create pbobombs 😉
Although I'm not sure if the engine doesn't have to compute the sha1 checksum and check the file each time it opens it so maybe that would not work (meaning that Arma would have to do a checksum of 1TB of PBO data to open the file, so that would make it a less-than-ideal layer of pbo obfuscation 😃 )
Engine rarely calculates the sha1 sum. As it's saved on end of file for quick access.
Also pbo size limit is 32bit, and I think it'll read the header and sum up the file sizes and such before going for the checksum.
(As we all know the crash of corrupted/too short pbo files, instead of a crash on missmatched checksum)
As it's saved on end of file for quick access
Isn't it supposed to be there for integrity checks? 🤔
Hmm... but maybe you're right. After consideration, it wouldn't really make sense to read and do a checksum of the entire PBOs when you're launching Arma with 20GB of mods (CUP + RHS)
I never checked if arma maybe does that... if it does then I'll have to take the hammer to it. Waiting almost a minute for arma to start is a chore when debugging stuff
probably just make a big pbo with a unused/unreferenced file in it and lte arma load it. Then check with procmon how much data arma reads from that pbo. If it reads all of it, it bad and need to be punished for its sins
I am under the (perhaps wrong) impression that when Arma needs to actually load some content from a PBO, the entire PBO is loaded (or may just memory mapped). Otherwise it just scans the "directory content" of the pbo.
But to check if the signature/integrity code is checked just bork one and see when/if Arma complains?
memory mapped yes/no/maybe/kinda but not really/ugh.
We know arma doesn't complain about invalid signature.
But we don't know if it checks it or not.
when starting with -checkSignatures I think only the stored sha1 values are verified with signatures/keys
but when using -checkSignaturesFull it looks like it's reading the whole PBOs
- for my dev branch install without mods it shows something around 38 GB - and it takes a while - even with a SSD
I'm having trouble getting pboProject working properly
whenever I click "Crunch" the output box will shrink to a really small size, say nothing but "Job Completed in 0secs" and pboProject will pop up a prompt that says "packing failed" and direct me to view output, which will just open up my temp folder
updating, completely reinstalling, verifying P drive and A3 tools still no work
@dawn palm any ideas what could cause this behavior?
@onyx helm there';s nothing in the code I do that makes dialogs or windows shrink. paste an image of your main dialog and your setup panel.
re the pbo sha.
The sha forms part of the bisign. This is sensible since bis don't care if things are corrupted, only if MP players have cheats.
originally, (pre arrowhead), the sha was not matched against the rest of the pbo contents, nor did the contents have anything to do with the bisign, only the sha. What the cheats did was replace the calculated sha of the hacked pbo with that of the original good one, and dsChekSignatures said the pbo was ok.
This changed at arrowhead. And i've always assumed they actually read the sha versus entire pbo content, but, i can see Dedmen would also be right in simply reading the header contents., adding the sha, and checking that as a ds signature. But this is bis, and the above might be a bit too elegant for them.
first is the dialog on startup
second is setup
third is what the dialog does when i click "Crunch"
@onyx helm the temp folder has the logs for the given source folder
maybe try p:\packed instead
im not sure i follow?
maybe it doest like the special characters
mmm tried to change it no luck
@dawn palm any ideas?
none, but with and output folder called !PACKED! will just be one of the fumbles.
i mean even without special chars it behaves the same
@onyx helm , you are using an ancient version of my tools.
https://armaservices.maverick-applications.com/Products/MikerosDosTools/default
Bytex Marketplace - Digital Goods Marketplace
yeah i tried to roll back in the hopes of fixing it
i've tried the premium version i last had downloaded, the free tools, and an older version
well you have an interesting bug then.
it would seem so
my initial suspicion was binarize
but addonbuilder is able to binarize
allegedly
haha
the dos screen has shrunk, you should be able to stretch it with the mouse and 'see' the errror
no depth? no maximise? no vertical scroll bar?
drop to a dos console and type makepbo
or if you're on awful win10 just type it in the search bar
hmm
my dos immediately closes whenever i try to open it
thats new
alright
so the issue was not related to the tools at all @dawn palm
i had an autorun key in my registry that would automatically exit the command prompt everytime it opened and once i deleted that things worked again just fine
i need to run some anti-virus stuff it seems
wow
i'm using de_Stringtabler. When I add a new original translation, upon saving the entry (str_blah) it crashes
Yeah will do
You add it via "Add..." -> "Add Something" right? (God that UX is horrible)
Yeah
Ok can reproduce.
I think I'll just rebuild this as a web app
Whatever works tbh haha
I can do it via the file and copy + paste while you build, but when I get to the display names of gear/vehicles, i'm really gonna want a GUI haha
but no rush 😃
I could fix it tomorrow evening at the earliest. But it might very well just be easier to build a webapp 😄
Might as well just web app it then 😄
🤔
Makes me wonder how far my quick lil project Was
Basics are done. Perfect time to now abandon it for a week cuz I need to get actual work done.
One day I will sneak into your house and quietly apply bootstrap to all projects properly 😄
😛
That looks sick 😄
@orchid shadow
Creation in its purest form. :)
It's the best around. I'm glad geocities can still hurt future generations.
Kinda looks like my first ever homepage I made when I was 13 ... The more colors and fancy gifs the better
Or every bad Church website since gifs existed. Still better than this...
Removed link as it's a market and someone put up an adult animated gif... lol
Screencap minus adult content: https://i.imgur.com/ftZnDfd.png
Enjoy http://bellads.info
Tries to download a WMA since those can't be embedded without old Windows media player 
Thanks Head, I'll put that in my notes if I ever need design ideas.
I guess just using that would be fun
Errors occured while publishing:
! Validation errors: [Error] DLL with the game extension 'sharplib.dll' is corrupted (it's not valid 32-bit nor 64-bit DLL).
- [Error] You have 32-bit and 64-bit game extension in your mod, but some of these are missing their 32-bit version: sharplib
Anyone know how to fix this? Extension approved by BE.
your missing a lib that your dll depends on
check with dependency walker or similar
publisher shouldn't check for that tho
publisher also doesn't check for BE approval
neither does it for correct RVExtension supports (as intercept libs without it are accepted too)
no idea what it's doing
maybe it doesn't like non PE dll's
Are there tools existing that can check function dependencies? Let's say I have a mod with the addons foo and bar. I use functions of bar in my foo addon but have not configured bar as an requiredAddon in the config.hpp of my foo addon. I now want like a python tool or something tell me on build that the dependency has not been declared (I hope it did not mixed up foo/bar in the explaination 😄 ). Does something like this exist or is included by some build tools of some well nown mods (ACE3, etc.) ?
I guess this kind of functionality would be rather tricky to implement correctly as it would involve proper preprocessing and probably some logic to process things like the CBA function declarations...
if you use proper CBA style prefixing then that would be easy
as your functions will be called
mymod_module1_bar
mymod_module2_foo
can easily parse from that that you need module1,module2. And check these in requiredAddons.
as it would involve proper preprocessing
We have that in SQF-VM
some logic to process things like the CBA function declarations
As I wrote, if you have proper prefixing that can be done with a regex and just searching for call/spawn in the code.
unless you call code via then/while/forEach/whatever else
My first thought was to collect bar/CfgFunctions.hpp function signatures here and check them in all other addons where requiredAddons would not have bar as dependency
For the first MVP with the vanilla way without fancy CBA stuff
TBH I hear for the first time about CBA function declarations. Can sb. link me (since I am unable to find anything by google) to the documentation for that?
It's very simple
that's what my mum called me... "simple"
["your script path", "yourfunctionname"] call CBA_fnc_compileFunction
in preStart/preInit/whereveryoulike
It's just a shorthand for
uiNamespace setVariable [_funcName, compileFinal preprocessFileLineNumbers _funcFile];
missionNamespace setVariable [_funcName, uiNamespace getVariable _funcName];
with some added caching
https://github.com/CBATeam/CBA_A3/blob/master/addons/xeh/fnc_compileFunction.sqf here is the documentation for that
yep
Though I think CfgFunctions does caching too
but CfgFunctions adds it's own header text thingy
Ok it's for functions that are not declared in CfgFunctions
it's a alternative
so they can get some caching as well
CfgFunctions also runs a script for you
in CBA style addons you run the script yourself
Yeah I see
What Raven meant is parsing this: https://github.com/acemod/ACE3/blob/master/addons/arsenal/XEH_PREP.hpp
yeah but well then it's just about parsing CfgFunctions and those CBA compileFunction signatures and you should have the whole set of available functions collected
Which is cba compileFunction hidden behind a whole bunch of macros
Ah I see
Well that's where preprocessing comes in right - you guys made that for SQF-VM
is there a way to have the preprocessing decoupled from sqf-vm?
like a small tool or a python lib?
you can call SQF-VM from python 😄
...
compile SQF-VM into a binary and call it from python
compile my script compiler (which uses sqf-vm) to a binary, and let it preprocess every sqf script and spit out a pre-preprocessed version next to the original file
yea I understand but that adds a dependency for the tool to another tool - but well it would remove some hard work I assume
Ok thanks so far - I think I have plenty of info to try something 😄
Well if you want less dependencies you can rewrite all the tools in python ofc
I kinda feel it is trivial to preprocess macros
🤣
But I might be (ded)wrong here
But I am curious and therefore give it a try
Stop laughing at me! I am sensible
You can also use OrinocoSQF for preprocessing. That part of it should be working by now
It's a WIP Java based project
Doesn't solve the problem of additional dependencies though
Well... Sqf-vm has already very basic c Exports
One could add up on those
A python interface also is not the hardest to craft
(the api is actually pretty good here) so that making it to a proper python library would be possible
Though... C Exports are simpler to use 😂 😂
@steep shoal no... Do not try it
It will drive you mad
Though... Technically, you should be able to pull the sqfvm preprocessor into a python Version...
There is not that much that needs replacement here
Well so the C Exports are the Foreign Function Interface I can use with Python? Or how can I understand that?
< no C intermediate
Uff... Check the python discord bot @steep shoal
Think it was called ctypes with wich you can call those exports
Using those, you then just static link against sqfvm and can supply your very own Tool
Powered by sqf-vm
@steep shoal you should be able to use ctypes to do what you need
@nocturne basin sounds like a plan
no
well you don't need a arma account to install and run a arma server
atleast on linux 🤔
indeed, but you still need steam files
Yeah you don’t need account I know but how do you query api without it?
only stuff the server does is server query publishing, and you don't need an account for that apparently.
would be weird if you needed one on windows, while you don't on linux, while the servers do the same stuff
Hmm
you don't need steam for dedicated server executable.
DayZ now got access for external tools
Added: Curl context API
So.. Enscript external access through curl :U
My tools are starting to show some feature creep :D
Integrated steam workshop download to our server, in our units website's "modpack suggestion" area :U
Downloading via steamcmd or steamworks?
SteamKit C#
i.e. reverse engineered client
most of that is just http calls to the steam depot cdn anyway 😄
looking for implementation advice to improve the "search asset" features in Eden/Zeus etc
so far my ideas are:
- scan cfgVehicles at game start, cache the relevant parts and do a search based on that
- either search only based on start of the string or substring in string if fast enough
- finally to start the search only after a timeout of say a second after typing (+ minimum 3 or even 5 characters?)
(extension use is not an option sadly)
how does that sound and do you have more suggestions?
how do you envision to hook that engine filled display?
Missing caching is the biggest issue with zeus search, but as that list is engine side, can't really do anything about that
I'd love a way to hide stuff in zeus that I don't need. 4 second freeze everytime you enter zeus, because it's loading units that I never even want to place
yes that replaces the search field with a fake field that only fills the original on enter.
the list is still engine only, that doesn't change anything on that
It just hides the search field, places a new fake search field on top, and when you press enter it copies your text into the original search field which is engine side only
my idea is to hand over the input
- engine search only after input is done (and on enter like he does)
- you can hand over input after pre-checking (any meaningful results to expect) or have different search pattern
- i guess you could even make the whole selection in your custom list first and only once an item is selected pass over the one full string/class name
so in other words you limit the engine lookup to hopefully more meaningful cases and thus make it at least more smooth and usable
you can hand over input after pre-checking (any meaningful results to expect)
true, you can search twice instead of just once, but I don't see the benefit.
- sounds good indeed
like in a custom list you could also make subcategories - like add ontop a bar with a few checkboxes or radioboxes so you can preset the type to filter (optional)
i havent looked into the config definitions and scripting (if any), but one might be able replace the whole system (list, preview image, etc) and only hand over the string at the end after the selection for placement
But that's only worth it if your SQF searching is really that much faster than the engine one
full string is a problem, there is 0 guarantee that you won't have duplicate names in that list
well you could make that an option (default findFirst, optional search for all matches - in that case user has to choose)
and yes to be seen if its actually faster in sqf. however current state is atrocious, so worth a try to improve it
How do you gonna transfer that to the zeus search field though.
If your search string gives you multiple results
as said you would need to have the user to choose with some extra list or popup selection - surely no ideal but should not happen that often outside objects i suppose
could also offer expert mode that goes by vehicle class and not display name
yeah looks like completely in-engine at least
are there dsutils tools for creating bikeys available for linux, too?
there are no official tools available for linux - only the server
- armake/armake2 should be able to create keys
- or openssl + a3lib.py
https://github.com/KoffeinFlummi/armake2
https://github.com/KoffeinFlummi/armake
https://github.com/4d4a5852/a3lib.py
armake has some yet unkown problems with key generation signing, but it seems to be more of a bisign problem than bikey
Okay thanks
Are there incompabilities when using armake to gen keys / sign pbo's and verify them with DSUtils ?
Because it happens for me that my armake signed pbo's cant be verified with DSUtils
I never had any problems signing PBOs with armake2 🤷
hm
I will try armake2 then
if you promise me it works - which you did
never break your promises
🙀
If the Publisher Tool tells me that: https://imgur.com/a/ryXHov8
Did I already failed on creating proper signed .pbo's ?
or is it about BE signature?
It means that there are no signatures for the PBOs where it expects them to be.
I doubt it checks the validity of signatures as it would need to know what bikey to use.
if someone feels like to assist that guy: https://forums.bohemia.net/forums/topic/225146-create-extensiondll/
@neon flax well it worked when I signed with DSUtils
maybe it looks for the public key withing keys
which is somehow a de-facto convention
Well anyway I tried armake and armake2 now to sign my pbo's. Both are not valid when it comes to the DSUtils GUI verify feature. Also they are both invalid when it comes to the Publisher Tool. In the end I can not join my server if the keys are signed by armake/armake2. That unfortunately kills my pipeline.
I try a3lib now but am in doubt that this will do the trick. 🤞
Ok I got it to work with armake
When I am NOT using -s (armake) or [signatures] to name my bikeys it seems that the keys do work
I am completly sure that I simply misunderstand this signature option.
I'm signing all my mods with HEMTT which uses armake2 as a library and it works fine.
You're doing something wrong :P
hehe lel
ye gonna check out HEMTT sooner or later 2
do you know if it can publish to steam workshop? Just asking cause I think I heard mentioning that
Cause I need a automated workshop push via Linux. Publish has a CMD but that's only Windowns stuff eh
hm ok
meh then I have to do it per hand it seems
cant get wine to run with that whole mashup on deps
https://forums.bohemia.net/forums/topic/225180-3ds-max-modelcfg-exporter-script/ made some official release with documentation
Bohemia Interactive Forums
Max to Arma or MtA in short, is script for 3ds Max (2013) which can be used for creating more complex & precise animations in Arma 3. Script is utilizing direct type animation transformations which are supported by RV engine since at least Armed Assault. Each frame in 3ds max...
I think some people here might be interested in this :
https://github.com/KoffeinFlummi/armake2/pull/57
probably many are already using hemtt which has an official docker image, https://hub.docker.com/r/hemtt/hemtt
and why not use alpine to keep the armake2 image even smaller? 🙂
Plus hemtt has armake2 built in if you want to run any armake2 commands
@scenic canopy I'm not sure libssl will not have problems with alpine's libc implementation
Any input on that is welcome though 🙂
As for HEMTT, it's a nice tool I want to try but only for mods
I'm working on missions so I needed an armake2 image
Also since HEMTT is based on armake2 its docker image shall be based on armake2's (SOLID principles)
Which obviously couldn't be made since armake2 didn't had one 🤤
shall be based on armake2
It's using armake2 as library, it doesnt use the binary of armake.
My bad then 🙂
Still I needed an armake2 image ; will work on a windows version eventually, could add a linux alpine variant as well
armake2 image based on alpine:3.10.2 is actually larger than debian:bullseye-slim (118 MB vs 86.1 MB)
probably because rust requires libgcc_s
for runtime or building? are you cleaning the dependencies after it's build?
In the same RUN statement, so the dependencies are not saved in the layer.
I found the culprit : was using gcc instead of libgcc 😱
alpine 12 MB vs 77 MB debian
You can reuse the hemtt image
Just do hemtt armake2 ...
Then you can run any armake2 command
Trying to reinstall bulldozer and get this everyime
https://gyazo.com/b598f10dfe47bc3f09b4dbfa96cca29f
any idea?
Something stand out to you?
optionsfile is invalid xml..
optionsfile is...
TerrainBuilder.opt which is...
Arma 3 Tools\TerrainBuilder\TerrainBuilder.opt
that xml file seems to be corrupt
Tim to reinstall
deleting it
and learn how to type apparently
and verifying steam files should redownload it
Do you guys know if there is some feature in VS Code which lets me manually add things into the outline view through some special strings for it?
So that I can mark my SQF functions with special comments
@thorny nimbus ... pls... no... not with the Arma Tools...
https://pmc.editing.wiki/doku.php?id=arma3:tools:installing-steam-arma-3-tools
https://pmc.editing.wiki/doku.php?id=arma3:tools:setup-p-drive
👆
does this belong here? 😄
i made a small console app to use the new workshop crawler api while it doesnt have a real interface
it spits the data out in such a format
==========================================================================================================
Item Legacy-Soubds-Reupload
Id 1791876819, created by 76561198114344629, 42 subscriptions, 04.07.2019 19:23:01 (UTC) last updated
https://steamcommunity.com/sharedfiles/filedetails/?id=1791876819
https://api-v1.workshopcrawler.com/items/1791876819
4 matching files across 1 versions
Version a06dc786-59df-4cb2-9279-ed255b15483b https://api-v1.workshopcrawler.com/versions/a06dc786-59df-4cb2-9279-ed255b15483b
File 6ba7a32a-81d1-4de0-b00a-36abe80c6a4e matches local file E:\Spiele\SteamLibrary\steamapps\common\DayZ\@LegacyDev\Addons\legacy_scripts\config.cpp
File 38b2c70a-e5d5-4636-8936-a812edf09cd6 matches local file E:\Spiele\SteamLibrary\steamapps\common\DayZ\@LegacyDev\Addons\legacy_scripts\core\LegacyLog.c
File b33abe9d-cb4f-41a7-924f-25a36a08f57e matches local file E:\Spiele\SteamLibrary\steamapps\common\DayZ\@LegacyDev\Addons\legacy_sfx.pbo
File 15b0b71a-79f7-4f8b-9ac1-68fca4ad71db matches local file E:\Spiele\SteamLibrary\steamapps\common\DayZ\@LegacyDev\Addons\legacy_sfx\config.cpp
Item Far East Server
Id 1812120774, created by 76561198171479791, 72 subscriptions, 01.09.2019 00:17:26 (UTC) last updated
https://steamcommunity.com/sharedfiles/filedetails/?id=1812120774
https://api-v1.workshopcrawler.com/items/1812120774
2 matching files across 1 versions
Version 6e76a7d3-b9aa-453b-977b-10d3115bbfe8 https://api-v1.workshopcrawler.com/versions/6e76a7d3-b9aa-453b-977b-10d3115bbfe8
File 7afa3616-104d-40a9-9560-43d12c40156d matches local file E:\Spiele\SteamLibrary\steamapps\common\DayZ\@LegacyDev\Addons\legacy_scripts\config.cpp
File 820374d3-d8b2-40bf-820d-f384a06bef23 matches local file E:\Spiele\SteamLibrary\steamapps\common\DayZ\@LegacyDev\Addons\legacy_scripts\core\LegacyLog.c```
might be useful for some of you that currently cant use the crawler because its only the api, if anyone would like to give this a shot just pm me and ill tweak it to a usable state
looking at my output now, seems like i have some dmcas to do myself lol
is there a way to reliably get all mods a server requires, or only up to overflow?
also wasnt there some dummy test mode for the arma client, or is this only usable in LAN?
dummy test mode is localhost only
the reliable way would be.. to connect to the server.
The server sends to the client at connect what mods are required, and kicks the client if it misses some
thanks. via the mod hashes or in what way?
anyone knows when arma loads the json form
class OfficialServersArma
{
access = 2;
url = "https://www.bistudio.com/export/servers/official";
updateInterval = "24 * 3600";
listDirectory = "OfficialServersCache";
listFileName = "list.json";
tmpListFileName = "tmp.json";
};```
at game start, or when going into MP?
I guess you get CfgPatches names when you connect
at game start, or when going into MP?
Gimme 5 minutes
ty
hm any way to grab those within arma/via extension or some dummy call to the server via steam api or sth, or only via packet sniffer and such?
it's not done via steam api, it's network messages via Arma's own networking, which are encrypted
https://www.bistudio.com/export/servers/official
link is wrong, redirects to bohemia.net
looks to be done at game start, just before arma goes fullscreen
yep, in splashscreen
https://www.bistudio.com/export/servers/official works for me.
nope
it does for me too
doesn't work
it's just a redirect
https://www.bohemia.net/export/servers/official is the correct one
yeah it's a redirect too: https://www.bohemia.net/export/servers/official but it's a working redirect 😬
both urls lead to same content.
link is wrong, redirects to bohemia.net
redirects != wrong
it doesn't go to the correct domain
your message suggests that it ends up in https://bohemia.net
damn I could've been here getting help on my launcher the whole time
😛
Does Facepunch C# Steamworks implementation work good on Linux?
never got around to try our launcher on Linux
Been working pretty well for me, though I occasionally find it's missing a feature or two
or any of our steamworks CI stuff 
yes, the 2.0 release skipped a lot of stuff from the previous one as well
2.2 added many of the things we lacked now though
Like
Added Steamworks.Ugc.Query.WhereSearchText
Added Steamworks.Ugc.Item.VotesUp
Added Steamworks.Ugc.Item.VotesDown
Added Steamworks.Ugc.Item.Subscribe
Added Steamworks.Ugc.Item.Unsubscribe
I'm currently using a self-built 2.1.0 plus a few commits to add those, though I noticed I don't have the ability to get dowloaded byte counts from workshop items
downside is that they split the DLL so one needs to make sure to use the correct one for the platform
Yeah that's holding me back from updating since I'll have to deal with that
hmm, we have download progress on most of our steamworks stuff
but that's across a couple of different versions 😄
It's added in this commit https://github.com/Facepunch/Facepunch.Steamworks/commit/58eae03ae4011abb65a65bcb4c3d748664b66414 shortly before 2.2.0, I guess if I don't yet want to deal with split dll versions I can make a fork and cherry-pick the commits for a while
we probably use 1.x for those applications then
Maybe 0.7 or 2.0 Alpha 1, since after that it got a rewrite that might've lost features
0.7.5
Makes sense
probably some later git commit than the nuget package version 🙃
the packaging wasn't super, are the steam dlls included now?
They aren't, which did cause some issues since nothing stated the compatible Steamworks version so I had to guess until getting it right
yeah, the git repo bundles working versions
but the project and/or nuget package is not set correctly so the dll isn't copied to output as it should
Anyway the version I have works for now so I'll look at this stuff later
Sadly Facepunch.Steamworks has commented out the parts related to legacy ISteamRemoteStorage which makes it unusable for arma mission uploader. 😐
rip
@winged cedar whats your launcher/app?
BA3L, a launcher for the Linux+Proton users with server browser and mod support since the official launcher doesn't work via Proton
does it support GM, or not yet possible with Linux?
proton uses the latest arma version and therefor supports GM
I have created a discord server for discussion / help with HEMTT
https://discord.gg/VcDf42t
@vague shard I don't have GM to test, but provided you're using Arma 3 via Proton on the latest Windows version, BA3L should detect you own GM and let you run it
Works with Contact which I'm assuming right now performs the same way
well i was asking as you need dual/either-or dependency handling
like either -mod=GM or "-mod=!Workshop\@Global Mobilization - Cold War Germany- Compatibility Data for Non-Owners"
I'll probably deal with the edge cases after the core functionality works
Does addons with DLLs like ACRE or ACE3 work under proton?
yes
As of Proton 4.11 they do, though For ACRE and TFAR you need to also run TeamSpeak in the same prefix as the game
Baguette is your launcher on some public repo? Wanted to bookmark it. 😬
thx.
Hello, i was wondering if there was a way to make pbo project skip missing files and still make the pbo?
Yer but one of those missing files is the new contact vest.
create a dummy file maybe
Everyone's so busy with reusing contact stuff xD
@dawn palm
doesn't work in pbo project but in Addon builder
class foo {
class qux {
array[] = {
"a",
"b"
};
};
};
class bar: foo {
class qux: qux {
array[] += {
"c"
};
};
};
in addon buiilder it generates
class foo {
class qux {
array[] = {"a","b"};
};
};
class bar: foo {
class qux: qux {
array[] = {"a","b","c"};
};
};
as binarized
Does arma config support arrays written over several lines without using \?
You sure?
@thanx @glossy inlet , i'll look into it. the += as implemented is so unreliable, not sure it's worth the bother. for most/many situations it just does not work at all
in this example also. It wouldn't work like that, but addon builder sees that and automatically converts it into static arrays
ok. if the output shown above is decoded from a config.bin it means they've added a patch to avoid using the binarised += operator.
fair enough, that would make sense (to me)
yeah they are just statically resolving it pre-binarize
thank you, very good info
Bohemia Interactive Forums
Hi, Originally I made this custom memory allocator as a fun project because I dreaded of slow A3 performance. Features 64-bit only custom memory allocator for Arma 3 Based on Intel Threading Building Blocks (TBB) 2018 Update 4 Large Page support Optimized for both AMD and Int...
any benchmarks?
Performance could be better or worst.
;)
Sounds about right
😛
Performance? Yes. 🙃
It may or may not blow up your pc
how much can one detect the loaded mods via an extension (server and client)? like how limited is this/what is possible with it?
(reading and parsing rpt, scanning process name, scanning game folder, etc)
Like an external program trying to get the loaded mods while the game is running?
not external - via extension as said 🙂
including par files? 😄
ye
startup parameters are in the "process" name, arent they? at least in window mode they show up as the task name window as title
anyhow whats currently loaded is already quite helpful, but also looking for ways to find whats available/installed
no
in the command line
process name is also not window title
if you wanna know what's available then either ask steam about what's subscribed, or just scan arma folder
this might be helpful, https://github.com/Fusselwurm/arma3-reflection
ty both
If it is for the client only then GetCommandLine(); is all it takes https://docs.microsoft.com/en-us/windows/win32/api/processenv/nf-processenv-getcommandlinea
or just scan arma folder
Can find mods that are not in workshop but will they have all the nice information necessary to match them exactly like steam has?
If they have a mod.cpp you can try parsing that (or a meta.cpp that usually exists for downloaded Workshop mods)
But the occasional mod might not have one
And you'd have to rely on folder name or find another way to identify it
Or parse the workshop metadata file which contains all downloads
Or use steamworks sdk
all possible from within arma with an extension?
like it works under the arma3.exe process, permission and access level i suppose, but arent there limits to what you can do?
@vague shard The extensions are loaded from the arma3.exe. You can access the start parameters of the exe and look for the -mods param as well as the param file and open that to parse any additional params. Example here: https://github.com/Arkensor/A3EXT/blob/master/src/Framework/StartParameterHandler.cpp#L38
@vague shard yes
#ifndef _WINDOWS when client is not Windows?
Pretty much
If you're building the extension for the Linux server or the indefinitely-postponed Mac/Linux game clients
@vague shard
but arent there limits to what you can do?
no. You can do everything arma can
Yes the macro is used to supply a replacement method for linux/unix for the winapi GetCommandLineA call
Feel free to copy this solution. All tested
so you can:
- scan !workshop folder
- read the rpt (also custom location with -profiles) and thus loaded mods. and their location
- read start params and thus loaded mods (also -par file and its parameters)
- read mod.cpp (for steam protocol mod name matching) and meta.cpp (publishedid and timestamp for version) (https://community.bistudio.com/wiki/Arma_3_meta.cpp)
5a. create hashes for pbos found (thus match custom named modfolders, and technically versions)
or
5b. use the mod hashes created by the engine (https://community.bistudio.com/wiki/Arma_3_meta.cpp, https://community.bistudio.com/wiki/STEAMWORKSquery, https://community.bistudio.com/wiki/Arma_3_ServerBrowserProtocol3)
so is there any issue/limitation left if you have a dll run on both client and server to retrieve information for mod matching?
PS: Can you even create a named pipe via extension talking to the arma3 process to make it do stuff (https://community.bistudio.com/wiki/Arma_3_Named_Pipe), ie shutdown the running instance and restart the game with different startup line.
PSS: Or alternatively use the steam browser protocol (steam://connect/.. or steam://run/id/args) (https://developer.valvesoftware.com/wiki/Steam_browser_protocol)
1-3 Yes. 4. Yes, but if inside a .pbo you need to parse the pbo first. 5a yes. 5b, if you know how the hashes for the game are generated you can of course reproduce them and compare.
Regarding limitations, yes you need to get your extension whitelisted to be able to run it on clients.
Thanks. Yes the extension will get whitelisted - this is already sorted
Then yes, not an issue. Just quite a bit of work 🙂
In the end you want to make matchmaking easier for certain mod collections / total conversations right?
At this stage is about feasibility, and effort, to have a fully working mod matching (best would be mission based but that even more challenging) and with same pbo requirement now for MP (aside from -serverMods) not as relevant (but for SP play).
Initial scope was CDLC filtering, yet the question is now whether to expand this also to mods and in what depth.
Like the idea is to make the backend available via API for anyone to use (for custom website, tool/app, extension), to expand the extension to mods, and potentially also open source the custom server browser and quick play ingame system.
Showing only servers that 100% match your current mods cna be done yes. Optional server mods are not a thing here, BUT optional client mods would be. Like running JSRS in addition to the other non optional mods. If you can filter out optional vs non optional mods you can just create a hash of all the loaded mods as a whole and compare the list of servers reporting back their computed hashes and find the ones that both match the mods overall but also the versions of it etc.
But I belive the arma 3 launcher was supposed to help with this situation shouldnt it ?
One can deal also with optional mods, or where do you see the problem? Signature hashes transmitted, or to scan server sign the loaded bikeys.
- read the rpt (also custom location with -profiles) and thus loaded mods. and their location
-nologs might be there.
A3 launcher external browser has several issues:
- slow server display
- no CDLC filter
- no mod filters
- somewhat poor interface and flow (overwhelming/too complex especially in regards to mods)
- issues with BI DLCs considered required
and several more
Okay, I thought it would be more helpful.
Also lacks good filters, and no quick play/no good game mode filtering.
One of the underlying issues is BI didnt bother to have an in between server caching
A3 launcher has some good aspects no doubt, yet at the end of the day not really good for average player, not great for mod usage and communities tend to use custom tools (mostly due to mod versioning, extra features, etc)
BI could have open sourced it.. but for some reason BI doesnt do this 😐

I don't have sources
too secret even for BI employees 🤐
wtf why I would have them?
I am actually quite certain that it is less work to do something completly new ultilizing existing possiblites through pipes / extensions / steam protocol than to try and wrap your head around the Arma launcher.
6+ years of spaghetti code?
A very simple CDLC filter can be achieved with very little efford. The more options there are and the most features it shall have the worse it will will get in terms of work to do
I would not say that it was written badly, it has more to do with the current design of it. It was purpose made for the kind of data present right now. So having a different sorting and inmplementing other improvements might just not be worth it cause you would need to rewrite large portions of it then.
It was certainly not planned with fully modular mod matchmaking in mind.
It's "just" a nicer way to display the already existing server mod info data. you need to do quite a bit more to process that data and turn it into a useful matchmaking tool
that named pipe will require restart so that you can relaunch with -command param
why you have to be so difficult BI?
You don't need source for A3 Launcher, but lets not violate the EULA I guess 😄
the A3 launcher SB would need only some fixes and improvements to be good enough for the average player for simple uses cases - only the design and flow might be a bit harder
but yeah thats one of the reasons for the idea to open up the backend via API and open source the other parts to allow people to write their own solutions or integrate into existing
@vague shard you can interact with steamworks sdk
Listing installed stuff, subscribing etc
is there a feasible way to use an extension on a server to transmit information to a backend server? or firewalls, port forwarding, multiple servers on one ip, etc makes things difficult?
and what about the alternative using sqf to send from server to client such data, and have clients send the data to the backend server - any benefits of this?
Allowing clients access to backend could be Security issue
Lots of ways to send data to another backend
Http, message bus, raw sockets etc
the client would send the info via url encoding. anyhow basically its about finding ways to send all mods from a server in case of overflow (too many mods for steam to handle)
if you want to use sqf, you'll already be on the server, meaning getting the mods is too late at that point.
If you gonna run something on the server on a port, that ofc has to be port forwarded. And you need to be sure the server is running (can be loaded as serverside extension)
could reuse one of the existing Arma server ports that are currently not used
I think in the 2302-2307 range there are unused ports
the sqf route would mean once the first guy can connect fine, the information is available for others - so yes the design has this issue, but it might be acceptable if other solutions have bigger challenges
how would the others get the information from the first guy?
you want your own server list server anyway.
Just let the server send their info to there, and users request it from there
first connecting successful -> send to backend -> following clients get correct info from backend
ah, backend is your serverlist thing in that case?
yep. it may be acceptable as mods dont change that often on servers
so while you have situations where the mods are outdated, on average it probably works fine 99% of the time
(and this is only to be needed to resolve the situation with overflow of mods)
as said if anyone can think of better solutions, please share - the design goal should be to avoid extra work by server admins (and security issues)
if you want to use sqf, you'll already be on the server
Not necessarily, you could be in modded main menu which is a mission
Not necessarily, you could be in modded main menu which is a mission
Can't send messages to server from main menu
I thought kju was talking about using extensions on both server and client for messaging
if you can have an extenstion on the server, wouldn't it make more sense to just ask the server to push that data? @vague shard
You'd then have the authentication part done (I'm the server that has the same IP as my TCP/IP packet source IP)
You'd have to know what port you're listening on, though. Can probably be fetched from somewhere
I'm the server that has the same IP as my TCP/IP packet source IP
Unless forging IP source fields can be reliably done for TCP/IP 🤔
But you wouldn't be able to handshake the TCP connection if you spoofed the IP so I think it would be OK
use UDP and nat hole punching, you have your serverlist server who can deal with the ports n stuff ¯_(ツ)_/¯
I was talking about telling the master server the following: "the server with IP X and port Y has this mod list"
If the server initiates the connection, you don't need to open nor configure anything on the server machine
And not 100% sure if I get what you wanted to use nat hole puching for
Yeah I said that above too, but I think for some reason that's not enough?
seems like kju wants a way for a client player to connect to the server and get the modlist directly, which causes firewall concerns as he doesn't want the server owner to have to configure smth
Sorry if it's been already said, I skipped a bit of the discussion here (the last few days, actually)
make a custom launcher 🙃
and let server publish data into it
but it will be tricky to supply something meaningful, especially for non steam stuff
Can dedicated server actually do the htmlLoad thingy?
Then it would be pretty easy to setup smth by passing everything as url params
server could just expose and extra tcp/udp socket
and let custom launcher talk to it
no need for extra backend stuff
no, and no
offset port from game server port
lookup loaded mods via steam workshop
works for any server using mods on workshop
for non workshop you're fucked anyway
That's the issue
unless you want arma3sync etc
Iterating over 6000 servers is slow and literally kills my internet connection for a few minutes. Verified using a custom program sending UDP packets
Steam has a limit on how many mods are shown in the list
depends on if you want to join specific server or show entire list
steam query has a limit
That's kju's initial problem
not a custom protocol
Apparently it's some issue with Steam only sending one A2S_RULES packet even though it's supposed to support multi-packet requests
yes, that seems to be the case
better to build something better than trying to salvage what we have 😛
Still a performance killer if you need Infos of all servers
Especially when custom filters are a thing
if you want to show list of all supported servers it would be better with custom backend
that each server supplies it's data to
just like steam / gamespy
since then it can be stored server side on a master server
and any client could just paginate that data
solution depends on if it's for specific servers or for a lot of servers
Can you fetch the server's port in sqf?
Just wanna know tho
Jup just saw that idk if it's really useful tho
Steam only sending one A2S_RULES packet
I'm quite sure it's an issue with BI forcing sending only one packet because they didn't want to have to implement parsing multipacket responses in their launcher 😛
Or rather: artificially limiting the data to send as to not exceed the amount of bytes that will cause Steam to send a multipacket response
Iterating over 6000
thought it was 5000
Last time I checked it was around 6k servers
steamworks returns 5000
Are you talking about max pings/minute in Steam's settings?
I'm talking about getting all the servers by querying valve master server and then iterating over these servers manually @smoky halo
No idea what steamworks returns, sadly
when you make wide query that includes every server in existence the result is always 5000
dunno if you can tweak this limit
I checked my "cache" file on my development machine, and I got 5764 machines
I'm talking about querying using this: https://developer.valvesoftware.com/wiki/Master_Server_Query_Protocol
Not a library
How are you supposed to get the other servers, in that case? (using steamworks) Can you do that, at all?
I think you can, you can probably get every server, this limit seems to apply to queries only
You can get GetFavoriteGameCount then iterate through each id with GetFavoriteGame
with mods, the main goal would be like:
- you say you want to play RHS/ACE/etc and you get to see only relevant servers. vanilla mod and needs more mods
- it would detect in all situation what mods exactly you need
- it would avoid a gamestart by some means (would mean the server selection and mod handling would happen outside the game), or would restart your game automatically getting you back to the selected server
- you can find servers playable with your desired modmix: fitting exactly, or what is close (some mods missing or some mods to disable)
- you can search for servers with a specific game mode(s), type of play, and you would quickly see what mods are required, what is yet missing and how long it roughly takes to get them to be able to play
For those interested in DokanPbo, there is some new stuff going on.
Mainly as always bug fixing and also a nice startup speed improvement.
Loading dokanPbo with all Arma pbo's plus cup terrains:
Before: 42s
SwiftPbo BufferedStream: 29s
ArchiveManager parallel pbo read: 26s
CreateFileTree dumdum fix: 11.9s
Passing enumerator: 7.5s
From 42s -> 7.5s startup time :3
Now the question is just if we can get some more runtime improvements
Also btw DokanPbo repository was moved to arma3 organization: https://github.com/arma3/DokanPbo
Hey guys, does anyone here have experience with VS Code extensions?
I've made one based on their LSP sample and it seems to work fine, until I load SQFLint extension together with it, at which point, as it seems, VS Code stops sending any notifications about files being open or modified to my extension and I have literally no idea what to do now as I'm really new to this.
you created a VSCode extension?
what is it doing?
and more important: How in gods name 😄 still need to get that SQF-VM Powered linter going ....
kinda OT: just had the best idiot in my life trying me to explain that the JVM is Sandboxed and a hell lot of other funny things
It's really basic, it just provides outline (or symbols as they call it in VSCode) for my OOP macros because files tend to get bigger.
pic: https://media.discordapp.net/attachments/552463811706355714/620370335182880769/unknown.png
I have to say that the whole process was quite easy, as I started from their example.
The issue seems to be resolved after I copied the format of documentSelector property from SQFLint (now it is documentSelector: ['sqf', 'plaintext', 'txt'], it was documentSelector: [{ scheme: 'file', language: 'plaintext' }], ignore that it says plain text there instead of sqf, it still refused to work for plain text when any other ext. was loaded), but I am still not sure what was wrong with it initially 🤷
well ... simple is one word to use
tried to read into the whole crapload of stuff ... did not understood anything 😄
though ... i did not spend a lot of time in reading the docs
I think it should be quite trivial to attach SQF-VM to a VSCode extension. Architecturally, I think, just need to make it recompile code periodically on changes and report errors back. Of course somehow the LSP protocol part should be done, at which I have no skill
tried to read into the whole crapload of stuff ... did not understood anything 😄
you mean their extension documents?
there is some example out there that uses some obscure in-out format that i never could get behind
was too much work to read into something i never would ever use ... 🤷
there is already some task that can fully validate code (as you know :P) using SQF-VM
so yeah .. quite trivial
in theory
Yeah I'm using the tasks Bill has made to validate and compile code, they are quite usefull
maybe i should just get around to finish arma.studio finally ...
but it is sooooo much work
honestly arma studio at this point looks like inventing a wheel, at least the code-editor part
code editor part actually is already working very well
just ... everything around it ...
like variable stuff
connection to the sqf-vm
etc.
- i need to update the whole project to my "latest knowledge" (aka: my latest handy dandy private libs)
it's a cool project of course for different purposes, but It seems to me it would make more use if it would just integrate into an existing IDE, even many years back when you probably started it (IDK when) there was already eclipse and probably whatever other editor with plugin support
POC for the SQF-VM implementation: https://www.youtube.com/watch?v=GJCBq_y2TgU
and ... well ... the rest is just parsing stuff from the syntax tree from here
as the whole API stuff for the code editor is already written
char i = str.length()-1 I guess there is really no difference between c++ and sqf newbies https://stackoverflow.com/questions/57866303/incorrect-character-recognition-in-string-array-c
Well it's not entirely wrong for some study task
although... I would use uint8_t 😄
...
allright allright I would just use auto !
You won’t be able to read last char if string is longer than 256 chars
@whole ocean I don't even think that all the variables/enums which can be used in these simple expressions are documented, that adds another level of complication
Looks to me that many of the variables used in those expressions seem to come from the Complex Effect definitions, which usually require some object as a "source" so usually those expressions of course will return zero.
@glossy inlet internal exe can refresh FX config classes
as I said, nothing is "impossible"
@glossy inlet so basically working like mergeConfig, or even to update during mission runtime?
(ie when spawning an effect anew)
yeah
I think live updating is possible.
Maybe with a external particle editor which live displays them in game, or maybe even buldozer.
Are the available variables in the simple expressions documented?
I guess that would be a nice project 🤔
Not sure if I want to invest the time though
Would be about the size as ArmaDebugEngine which took me a couple weeks :/
i think i parsed the A3 vanilla FX and made a list
and from h-
["dustness", "speed", "thrust", "turn", "randomizer", "random", "randomvalue", "damage", "humidity", "engineon", "enginedamage", "directionx", "directiony", "directionz" , "surfnormalx", "surfnormaly", "surfnormalz", "speedx", "speedy", "speedz", "speedsize", "vehiclespeedsize", "parentspeedx", "parentspeedy", "parentspeedz", "vehiclespeedlocalx", "vehiclespeedlocaly", "vehiclespeedlocalz", "directionlocalx", "directionlocaly", "directionlocalz", "localspeed", "localspeedx", "localspeedy", "localspeedz", "disttosurface", "disttowater", "iswatersurface", "altitude", "intensity", "interval", "hit", "accely", "density", "forcesize", "dustcolor", "acceleration", "fireinterval", "intensityx", "intensityy", "intensityz", "explosiondirx", "explosiondiry", "explosiondirz", "indirx", "indiry", "indirz", "inspeed", "outdirx", "outdiry", "outdirz", "outspeed", "accelerationsize", "intensitysize", "size", "density", "positionx", "positiony", "positionz", "power"]
Told you so.
sweet 😮 now only x billion other FX tweaking parameters left 😄
but yeah h- has done that part already. its really the live tweaking/config updating thats still missing
This is clearly a faked video using a color-swapping lib. 
currently creating some proper logger for SQF-VM and need some feedback on the design of it
#pragma once
#include <string>
class logger
{
public:
enum level {
TRACE,
DEBUG,
VERBOSE,
INFO,
WARNING,
ERROR
};
class format
{
public:
std::string get(level l, std::string text) const = 0;
};
void trace(std::string text) const { log(TRACE, text); }
void debug(std::string text) const { log(DEBUG, text); }
void verbose(std::string text) const { log(VERBOSE, text); }
void info(std::string text) const { log(INFO, text); }
void warning(std::string text) const { log(WARNING, text); }
void error(std::string text) const { log(ERROR, text); }
void log(level l, std::string text) const = 0;
};```
this is what i am sitting at right now
there is obviously stuff still missing 😅
like line info etc.
want to actually make everything move through the format in void log(...)
though ... not sure how to shape it as best-practice
sooooooooooo
i guess ... all feedback is appreciated?
maybe a "message" struct is better too ... not sure tbh
Didn't I already start with that? 😄
you did? 😄

but you never finished 😜
now the question ... how to pull it into a new branch on the main repo so i can finish it .. 😅
found it :3
What’s with pink epidemic?
The pink vs blue war will happen at some point.
But the orangeish browns will get us all.

@nocturne basin https://github.com/gabime/spdlog is all in terms of logging you will need, maybe use that or get some ideas for the interfaces from there
gonna use what dedmen already started to implement though :D
however... will be a giant pile of work, and need to spend lil more time then i have right now on it
LIVE CLOWNVOMIT SMOKE. I love it. Great progress!
@glossy inlet make it yellow/orange, then dark red and then black and show us the video! :D
http://reconstruction380.com/wp-content/uploads/2014/08/house-fire.jpg
That's just a vanilla particle effect with colors live edited 😄 Don't pay attention to the particle
The main thing is live editing CfgCloudlets particles without game restart
@nocturne basin perhaps missing a mechanism for client/server ID handling (both where to log and where the logged event came from)
Most particle effects are available via script tweaking, some are missing, maybe it is worth making a list of missing ones just in case
has someone a sample steam query data for an arma server at hand by chance
especially interests in the data for mods, signatures and players
like it seems players contains name, score, duration - yet ive seen somewhere also kill and deaths shown
Don't think I've got a packet saved anywhere but you're welcome to look at BA3L's server query parsing for mods + signatures
Haven't set up an A2S_PLAYER query yet so that's not in so far
I have a dump of all the packets from 6k servers but at home 😦
a2s_info, a2s_player, a2s_rules
and last played (on given server) ive seen not listed, so its something steam caches itself i guess - however A3 seems to write to that cache/storage too
Yeah seems to be that way
and is signature just the name of the bikey file? it the basic mod check simply done of sending them each mod hash, and comparing those to the load mod (hashes) of the client? so the signatures is just for the name listing but servers no other purpose at this stage (only once you connect engine send again the key data to be verified, or client to server who verifies and drops client)
in other words can you handle optional mods at all (or just via db and manual key naming to data matching)
I mainly handle optional mods as signatures that the server has that don't belong to a mod on the server's mod list
It seems pretty reliable if you have a mod that matches the signature
But I haven't compared it agains the official launcher
hm how do you verify that - you would need to recreate the algorithm from BI, or you do simple bikey vs bisign name matching?
I'm just looping through the server's list of keys and checking if any of the player's installed mods have that key in its keys folder minus the file extension
ok fair. this works most of the cases - the bikey doesnt have to be part of the mod data though
I did notice that Dynamic Bulwarks' official server allows Enhanced Movement even though it's not listed as a mod or signature, meaning BA3L doesn't notice
idk if the official launcher notices though
Might be some other edge cases
hm keys can be also in modfolders, but maybe BI screwed that up also for the browser protocol
its also bugged for the -checkSignatures startup parameter
(so it sends only those from arma3server\keys)
@glossy inlet Did you ever get a finished version of that stringtable maker thingy you said you would make?
The web version if I remember correctly
aha you're welcome 😄 No rush, a friend of mine brought up the multi-language feature I put on hold a while ago, was just checking in on it 😏
btw @scenic canopy regarding the old discussion here, Scaleway just stopped offering free DB nodes you were talking about and they went out of beta. I still have a DB node for free but we'll see for how long. New instances are now starting at 8Eur/month 😦
it's not that bad for what you get
compared with say heroku it's a lot cheaper, https://elements.heroku.com/addons/heroku-postgresql
Still more than 0Eur/month 😄
a lot better pricing than digitalocean
https://www.digitalocean.com/products/managed-databases/
https://www.digitalocean.com/pricing/
They also don't accept virtual credit cards anymore
Or prepaid ones, at list they added sepa
@severe lava I'm using the toolbox (https://github.com/AlwarrenSidh/ArmAToolbox/releases/tag/v3.0.3-alpha) with Blender 2.80 Beta for Arma 3.
It imports .p3d's ok.
But trying to export an .fbx file to .p3d, results in a 0 byte file and this error message:
user_preferences = context.preferences
AttributeError: 'Context' object has no attribute 'preferences'```
I'd be grateful for any suggestions you or anyone else might have.
Thanks for the reply.
Yes, O2script path set.
I wonder if it's because I haven't set the arma property on the object in the fbx - new to blender
I can't find a tutorial vid for blender 2.8 and your toolbox - how to set the LOD on an object please?
@sour hedge Check the image. On the right side of the 3D view, make sure you have the "Arma 3" tab open, then click the checkmark ("1" in the image). The combo box ("2") can be used to set the LOD. if it is a detail LOD, a box will appear below it where you can set the level (1.0, 2.0 etc)
Thanks @severe lava . That little tool bar wasn't showing for me until I found the magic key "N" to display it.
What I'm doing is importing a simple (single resolution LOD) test .p3d into Blender, which works.
Then trying to immediately export it back to a new .p3d. That's where it fails with the error message posted originally.
Unfortunately, I don't understand why it would do that. This certainly works for me and for many others. If possible, send me that p3d and I'll give it a try here
I've no doubt it's something wrong my end, just no idea what! I had it working great with Blender 2.79, your toolbox has been invaluable. But then upgraded Blender and now...whoops.
In order to eliminate my test .p3d as a possible problem, I've tried importing / exporting an Arma 2 model
\A2SM_Data_APL\Wheeled\CA\Wheeled\car_sedan.p3d
Same result. Imports ok, fails to export.
@severe lava An update with a good ending!
I had upgraded Blender 2.79 to 2.80 Beta last year, not realising that the full 2.80 release was now available.
Uninstalling and replacing with the main release Blender 2.80 has fixed my .p3d export problem.
One of the changes between beta and full release was "Final Python API" which I suppose might have been important.
Thanks again for your support.
Ah yeah, beta and final had a couple of changes so that might be it. Good to hear it works now 🙂
Skipping signatures due to overflow flag being set.
Skipping mods and signatures due to overflow flag being set.
how is the limit determined for signatures - by character length of the key name?
https://i.imgur.com/O1fdqYP.png
By the total size of the A2S_RULES response
"overflow flag" is something different
but afaik noone knows what it really means/is
@scenic canopy said "Optional mods permitted by server" - did i misunderstood him?
@winged cedar does it transmit the signatures as plain text names, or their contents, or hashes - any idea?
optional mods, permitted keys but the mod is not loaded by the server
The signatures themselves are at the end of the rules query pretty much in the format <signature length> <signature>
Just the names of the signatures
Most of the bulk of the query is probably the mods themselves which has the mod hash, workshop ID, and name
that's the embedded signature name inside the key right?
Might be but idk for certain
It would explain the differences between CBA's key filename and the key itself that I've noticed a few times
it's currently a known issue with armake/hemtt genereted keys in some cases at least
but afaik noone knows what it really means/is
AFAIR one flag means that not all signatures for the mods are present in the A2S_RULES packet and the other means that not all mods are present (+none of the signatures) in the A2S_RULES packet because adding them would increase the packet over a size that would requires steam to send the rules as a multipacket message.
But I'd have to double-check that in my free time, later
You look right tbh Dahlgren
The key for CBA that servers sends is cba_3.12.2.190909-7c4e6bdd which is also in the .bikey file even though the filename itself is cba_3.12.2.190909 plus the file extension
I have noticed that the A2S_RULES packet is never truncated and all the data present there (if present) are parsed correctly
I'll probably have to read the null-terminated key name from the key file itself to improve matching
I think the server removes the data the query can't hold before packaging it into the query
Yup. And sets the flag after doing that
Although I have stumbled upon one strange case once where a server advertised X mods and X signatures but there were only X - 1 signatures and no overflow flag set 🤔
Someone may have found a bug 🙂
AH! Now I understand overflow flag
How strange
Thanks. I had the lightbulb for months but it didn't light up till now 😄
I think the ELI5 explanation of the overflow flags is: "there should be more mods/signatures here but they didn't fit in one single packet so I threw [some of] them out"
I wonder why Arma supposidely reads them out of the steam packet. Can't it use its own netcode for that like it always did previously going back to A2?
I'd suspect it sends the full information in its own way when connecting to the server but this data needs to be sent so we know what mods to even start the game in the first place
idk how Arma 2 send this info
but is the limited really reached by 7 keys (yeah the names are long, but that shouldnt be it yet, right?) - so something else causes the mismatch between sent and should have been sent, no?
If the server literally has only those 7 keys and no mods, then you shouldn't be reaching the limit
But the 1400-byte limit is reached by lots of mods and keys together
you could hide the mods by starting them as server mods and just allowing them via keys
but that's wrong 😄
And will allow to use older pbos if the author is reusing the key.
hey arma enthusiasts i was working for a couple of days on a python script to convert arma 3 terrain to unreal.
For now it can only do the heighmap, i was also planning to add the ability to do the surface painting in unreal and port it to arma.
So yeah for now the heighmap conversion seems to work good enough unfortunatly i have some loss of data due to converting from float to int (may result in 7cm difference in game ) but it should not happen on every export since once you got it in unreal it should be everytime the same.
So my queastion is what would be best language to build this app on to have a gui and a console version (automation maybe) so it is easy to use.
I was thinking about c# but i am not a pro at python nor c# so any suggestions would be welcome.
Also i am not sure if it maybe needed on linux for some kind of build server/procces.
If you are interested and wanna help make that happen feel free to reach out to me.
If you want to stay with python, I suggest python + pyQt+ pyInstaller, although you should expect your binary to be flagged as a virus by at least one AV for each release :(
cc: @dusky dune
perhaps have a look at how the blender landscape tools as well for how data is managed, https://forums.bohemia.net/forums/topic/202768-blandscapetools-introduction/
@zealous bolt Im hoping this is not someone elses terrain
i will take a look at pyinstaller pyqt looks promising
i have seen this blender addon already but havn't looked into it yet - is it beeing used? depends how good that works but in unreal you got some nice editing tools, not sure what you can do in blender since i am not a modler or a terrain maker just happen to be partialy helping some guys that do make a terrain
@sly skiff no i am not trying to get someones terrain
i just wanted to create something that could make map making in arma easier
The Blender one works yes, it however does not have build in object placement.
There are terrain building dedicated tools also like L3DT and WorldMachine
yeah the objectplacement is an issue since we do not have source for buildings and such
indeed
tho i am not sure how in detail you can work on the terrain in l3dt and worldmachine
L3DT offers full control with set of brushes
WorldMachine is more of an generator type deal imo
both can and should be setup to work in same dimensions as your terrain in Arma
there are other similar tools too but cant remember all their names
ok,
i was also planning on maybe using unreals landsacpe splines for creating road shape files (not sure if that could even work) and with surface painting too you could do all that in in one editor
well technically you can do surface painting in TB too ppl just dont know how
and you would already have a map in unreal too besides objects unfortunately
sure
I dont mean to deny you from doing it. Just saying there are perhaps more easily available alternatives
it could probably be fun exercise though
I made python script to export object positions from Blender so its all good if you enjoy it
i am always open for new ideas and if there are tools that can do that already i am not gonna reinvent the wheel and yeah i like to tinker a little bit 🙂
and what if it is possible to use the objects in unreal too i mean if i am really board i could maybe write something to use that web converter to get some objects unbinarized
that would get you and your friends booted from all BI platforms
hmm maybe I read that wrong first
the web converter maybe could be seen as ok
but it does not produce proper model for placement i would wager
since they are not really in proper shape anymore
i would just need them for placement
i would have to test to see if the origin is still the same
the thing is, Terrain Builder does not place most objects by their center
but by the center of their dimensions
no
proxy is placed by the object center afaik
or well OB does not place proxies
it just has the shape that determines the proxy position
since i wrote a script that creates objects in OB with proxys so you could place furniture in eden and then create a p3d with proxys and for some reason the z was wrong on the proxys when i spawned it at the same position as the house
for some it worked and some not
hmm ok
so for the webconverter i would have to check if the bounding box is the same size to eventually make it work
Possibly. Im not really comfortable going into that direction since it goes deep into the grey zone.
yeah that is fine i will just stick with the terrain heigh and surface painting and see how that works out
LD3T Also got road flattening tool if I recall rigth
ok will check that and thanks for your input so far 😉
Adanteh also did a tool for working with terrains in ArcGis, I think. Maybe he'll write a bit about that. I mentioned him earlier but he didn't react until now
Not sure how relevant that is for you, but he also has a tool that is in closed (?) Beta that uses machine learning in python to categorize the type of terrain, based on satellite imagery, etc...
Again, I hope he comes here and says a bit more about it himself
It's all on his discord that's on the workshop page, if you're interested, in #qgis_plugin
Hey guys, C++ question: i find strings extremely confusing because of the insane amount of their variants (C-style, M$ CString, std string) and encodings. Maybe you know some good article which explains the current best practice of dealing with encodings when accessing the file system on Windows, when dealing with user string input/output, and when dealing with passing strings inside my programs?
non-C++ specific answer: I've learned (the hard way) that UTF-8 is considered the most common encoding and can be used for almost anything, so 99.9% of the time it will work out for you.
This also applies (and affects) how you transport and store data.
As long as you use only one type of encoding you should be fine 99.9% of the time.
As for which type of string to use; keep it simple, unless you have a reason to do something special.
QGIS not arcgis https://gitlab.com/Adanteh/qgis-game-terrains/wikis/home
Anyway what id say is that you'll still need to work out all files TB uses
And then expect that to constantly break
And you'll need to keep both engine limitations of both arma and UE4 in mind. The more logical choice is blender
Honestly unless you know what you're doing, you're going to run into a ton of issues.
Also as HG pointed out your biggest problem is needing to support binarized p3ds.
Yeah it is not going to easy but i will see what i can do and i will check out blender for that aswell
So is there a way to support unbinarized p3ds somehow? Or could that even be possible?
Its possible, but if you don't know how then honestly I'd say it's not the project for you
Just like I know it's not the project for me 😂
Because that's the least of your worries
Hmm what would be important to cover interms of files for TB asc mask and sat should be doable not sure about shape but i think you did that one already
@cinder meteor if you are using cpp, go with std::string
If you also heavily rely on win32 api, use std::wstring
For c, char* and wchart*
Yes C++, don't see a reason to write any C actually 🤔
Except for some micros maybe
Should I make it a rule to pass std::string by reference?
@cinder meteor maybe watching some cppcon or so talk about move/reference/copy semantics could help you.
I'd recommend passing string as const std::string &arg as function arguments.
string copies are expensive.
Or if you can, just pass string_view if it makes sense for the usecase.
Anybody knows how i can add a simple define to a single target for CMake? (DISABLE_CLIPBOARD for the target libsqfvm)
target_compile_options with /D maybe
target_compile_definitions(slibsqfvm PUBLIC DISABLE_CLIPBOARD)
well if you only want for a single target you should use PRIVATE instead to avoid dependents compiling with the define too
Didn't I make a PR to add some options to the CMakeScripts?
maybe easier to just offer variables which will then set the defines internally
Swifty 3.1.0 released.
whats a good way to store versioned builds for a large mod?
- use a second private steam workshop item, you can revert to earlier builds as needed
- get some web storage and store full builds as zip
- anything else
1st is easiest.
for 3rd I'd say use a modern backup solution that can do binary diffs, and then just store the pbo's in there. If its intelligent enough it stores only diffs
thanks. the prob with diffs is when you get binary data changes (wrp,p3d,wss,paa), it likely changes much of the bytes, and thus you end up with large diffs/deltas
can one download, as non workshop uploader, now older versions if you know the id? (ie via steamCMD)
Well yes large changes == large diff. But still smaller than just copying everything everytime
The grammar in the last sentence is missing?
You can manually download specific pbo's via the crawler. not sure how to do that without
edited
you'll need the old manifest id
Should be. The first one is the ID of the workshop item
Which is IFA3_AIO_LITE, apparently.
2nd is the unix epoch timestamp
@vague shard why store the release versions? Just keep the source and put it all under git. Even for models and textures you can use git with large file support (git-lsf), so you can revert back to any source version you need and cherry pick things from there or build the whole release from that again if you really do need the whole mod in that version.
Or just use SVN.
It also says it does diffing on binaries
http://subversion.apache.org/faq.html#binary-files
svn - just no
@elfin oxide sometimes people ask us for older versions/releases.
to rebuild them specifically for that purposes is way too much hassle. even more as our project has like 30+ git repos
Well in that case, dump all releases onto a very basic server with weak cpu and little ram and lots of hdds and open a ftp server on there where people can just download the files aka read only public access
Problem solved.
is that cheaper than some web data storage or why that approach?
For a cloud storage based solution like AWS you pay per bandwidth upload and download, so that is often more expensive then paying for fixed storage but unlimited gigabit traffic
Using steam is a possibility yes, but from what I have seen, fetching old versions of the mod is quite a hassle. Maybe that can be automated to make it easier, but that goes beyond my experience.
Also I have no idea for how long steam store versions.
Depending on how often people need it and how quickly, somebody could even host the mod download on their private pc. All they need is decent internet speed and disk space for what ever amount of versions you want to keep
i can revert to our initial 2016 version
I think that mods are the same as games in regards to downloading old versions -> https://www.reddit.com/r/Steam/comments/611h5e/guide_how_to_download_older_versions_of_a_game_on/
https://one.google.com/about#upgrade
200 GB for 30€ per year
2 TB for 100€ per year
IFA3 atm has like ~15 GB
Get expanded cloud storage, access to help from Google experts, and more benefits — in one simple plan that you can share with your family.
Funny enough, I have been on the site just yesterday 🙂 I am using g drive for some stuff now and will upgrade to 100gb as soon as i need it
Was about to tag him as well. I think he bothered to find out how do download older versions ...
yeah i remember it was a discussion in here or one of the ip channels before
Storage is cheap
I pay $60 a year for a basic dedicated server with 250GB SSD
Since it’s a real server we can tell it to archive steam workshop items using its dedicated 1gbit connection
Instead of having to upload from desktop
Could even be automatic whenever steam workshop changes
I pay 5€(60/year) per month for 500gb hdd, and for 6€ I'd get 1tb. For a friggin dedicated server that tons of other stuff can also run on.
So i guess that's not a relevant problem
@vague shard yes I store them
@vague shard just create a repo with the binaries? 😛
with git, or what system?
The problem with storing pbo files is that they are essentially tar files (or tar-like if you want to be precise) and a small change in size of one subfile at the beginning of the pbo can completely change the 2GB of data that follow, to a naive diffing program.
It would be cool if some diffing utilities allowed you to have a plugin system letting you enhance their diffing ability for known file types
I was considering doing pbo diffing a few years ago for our bittorrent launcher but somehow didn't manage to make it work and I didn't have enough time to figure out what was the issue in my code
if you're using git lfs it's just a pointer per file anyway
so you'll just need to download changed files if you change commit
but it's probably a better idea just to save an archive per release anyway
you could just store them on some object storage like s3 or scaleway
Since @native kiln stores the ids @vague shard might as well just write a batch to download the steam repo for the mod.
Actually, what is the moment in time when @native kiln started storing them? (because you can't get the previous ones, you just have to store the current ones, right?)
iirc Steam also stores them by version
But I seem to remember someone saying that you couldn't get historical ids or something? (or does this just apply to Workshop?)
If I have the wrong information I'll happily let someone correct me
well applies to everything afaik.
But if you monitor stuff, and collect a database of old ids, then you have them ready
So according to what I have skimmed over the reddit post, that's what steamdb has been doing, right?
It probably doesn't have workshop ids, though...
@glossy inlet 5 euro linux server?
ye
Can I have a link?
Kimsufi I think .com.
My 5€ server now has a uptime of 1515 days, no problems
Found thanks
If you want a 3Eur, you can get one on Scaleway (only 50GB SSD though)
the bigger ones (online.net) are often on sale though
Start-2-S-SSD
CPU : Intel® Avoton 1x C2350
RAM : 4 GB DDR3 ECC
Disques : 1x 120 GB SSD
€3.59 VAT /month
from last week
is there some way to read out or modify Arma chat via extension (including system messages - like BE stuff or "X connecting" and such)?
@vague shard I assume that you can somehow get to the text by accessing the Dialog itself. From what I have found this here should be its IDD: https://native-network.net/forum/thread/3336-bi-dialog-idd-liste/#codeLine_20_52afb3 - maybe that helps 🤷
Here's the official wiki list of IDDs: https://community.bistudio.com/wiki/Arma_3_IDD_List
Arma scripting never seizes to amaze me 🤦
I know a guy who made a serverside mod to read messages, and even send custom colored chat messages from server and such
That thats exclusive stuff for his server, and not sure if he's still around
Coding custom chat from scratch and replacing current one should be a no brainer
@glossy inlet you dont mean Connor's https://forums.bohemia.net/forums/topic/222073-extended-chat/, do you?
no
i am asking as reading up BIKI, discord and BIF there seems to be mixed opinions if you can full block the incoming chat messages (while still keeping the system messages)
scaleway object storage is now free up to 75GB btw
I can't find any info about that. The pricing page still shows 500GB for 5Eur (+xEur per additional GB)
Got an email about it earlier today
powershell will make it a lot easier than a bat file
easiest would be to keep the mods in a separate file
and then read that for both keys copying and server startup
any experienced python or django devs here? is so please PM.
in context of performance issue parsing arma server info from steam api
in context of performance issue parsing arma server info from steam api
And asyncio UDP handling 🙂
@vague shard web api is just json?
or the udp server query?
but like stack overflo said, do it async
@ember sparrow I made a simple python script to move keys that that I can give you for 3.7.
It works by searching two different folders for keys. One for optional mods and the other for required.
Message in two
@scenic canopy thanks. Stack is doing the coding 😛 so he can give you more details
any experienced python or django devs here
I know one!
@karmic niche :DDDDDDDDDDDDD
And I know one that is learning Django and will surely want to spend his time helping stack, right @dusky dune :DDDDDDDDDD 😐
:DDDDDDDDDDDDD
Wait... you're... blue?!? 🤔
I'm blue da ba dee da ba daa
Anyway, the problem was actually finding someone who has experience with Python asyncio UDP handling to help me solve some specific performance problems (specific to the python asyncio implementation for UDP packet handling).
I've asked people in my local Python community - they didn't know,
I've asked a few people at Europython, while I was there (the ones giving talks about asyncio) - they didn't know either 😦
And besides that, an experienced django developer could come in handy as well, regardless of the aforementioned issue 🙂
Solution for your problems: Do not use python ☑
I dedicate the second paragraph from this link to you, @nocturne basin : https://github.com/nukeop/nuclear/blob/master/docs/electron.md#what-if-i-am-religiously-opposed-to-using-electron-for-any-and-all-purposes
python => 
Thank you for your input. Your opinion is important to us
Let the holy war begin...
Just learn parseltongue! You need to talk to the snakes directly.
After (manually) benchmarking some parts of my code, I came to the conclusion that the UDP asyncio framework overhead is disproportionately slow compared to the rest of the code and was trying to figure out if there was a magic switch that I didn't know of or if I should ditch that framework and write my own asyncio routines for UDP handling, bypassing that framework, which while greatly extensible is currently limiting me
Basically the part creating 6k udp endpoints, running all the constructors, etc seemed to take most of the time. When I'm done with other parts of the code that I'm currently optimizing, I'll take a second look and do more exhaustive benchmarks
I guess you preferably want something with good concurrency and maybe even threading
That's what asyncio is for, precisely
My dumb guess is, probably it will be bound to how system performs socket threading anyway 🤷
of whick I have little understanding really
This is a c++ channel
IMO the most optimal solution would be to make one poll() call on those 6k sockets and as soon as some data comes back, spawn an asyncio task that will parse and act upon that packet