#arma3_tools

1 messages · Page 20 of 1

south canopy
#

but if I understood right, you probably payed someone to make you a mod, which he did, and has encrypted the files, also signed them, but you cant make that work on your server because you dont know how to install keys

#

either that or youre trying to hack someone elses files

smoky halo
#

Does anyone know of a gui editor that isn't the ingame one? about to start pulling my hair out

vague shard
smoky halo
#

@vague shard oh shit thanks

sacred obsidian
#

Looking for some help, I have just packed my mod using arma tools and created my keys but when testing to join server with it I get error "keys not accepted by this server" anyone know why this would happen?

south canopy
#

#define arma tools ________

#

one thing you can do to verify your signatures is to start your game with a switch -checkSignatures and it will output to RPT its findings, if singatures are valid or not

sacred obsidian
#

Jastbred the server is setup correct, as is a hosted testing server that we get free with our main Exile rented server.

Arma Tools I meant to say Addon Builder and DSUtils

As for check signatures thats worth a try but if I have creeated the private key and bikey then signed the pbo with the private key and then added the bikey to my keys folder on server root you would think it would work fine.

Will try launching with checkSignatures

sacred obsidian
sacred obsidian
#

any thoughts @south canopy

sacred obsidian
#

Tried changing keys folder in my mod to Keys but still same.

Also tried remaking a new private key and signing the pbo again still same error in image above. Anyone?

dawn palm
#

the exile code itself is quite severely broken. that's a non issue to your current problem, but addon breaker doesn't help you in any case.

south canopy
#

try mikero's tools @sacred obsidian and keys do go in serverroot/keys
one note though; make sure you reboot after you added a key to the server so it loads before you attempt to join

sacred obsidian
#

Yea restarting every change to be sure will try mikero's tools but tried these earlier and they would not work at all, will try again

south canopy
#

free but you can ofc feed the goat and sub

dawn palm
#

and they would not work at all,

what you mean is they will not make a pbo under any circumstances if there's errors.

south canopy
#

mikeros tools not working, well thats not true, but what is true it will not forgive you errors
well ninja'd

sacred obsidian
#

no i just cant get the programs to open after install

south canopy
#

are you trying to run them on a server?

sacred obsidian
#

no my home desktop

#

I cant really run them on a rented exile server i dont have dedicated setup

south canopy
#

well, sounds like something @dawn palm might be interested in and might help

dawn palm
#

paste a screenie of the error with my tools pls

sacred obsidian
#

not an error, after install i cant open them from shorcut, nothing happens, dunno if something is up with my pc or the install

#

i never said anything about errors

dawn palm
#

ok

#

most of the tools are dos based, they do nothing for you in windows explorer.

#

you probably need to use pboProject

sacred obsidian
#

yea thats the first one i tried earlier then i also tried Elitness and a few others, probably issue with pc

dawn palm
#

wow.

south canopy
#

vc++ missing?

sacred obsidian
#

problem too is I am no coder or have any experience, im a freshie to this side of arma

#

hmm will have a look

dawn palm
#

we all start somewhere Captain, yours is not a crime.

sacred obsidian
#

Yea ik just letting you know i have little knowledge at this stage only the basics of how to pack the pbos and create bisigns for them using private key

#

Which version of VC++ is required ?

south canopy
#

not really sure now, but from the top of my head I think I recall DSUtils being broken for a while now

sacred obsidian
#

maybe, i had one work earlier today then all of a sudden nothing just this error

south canopy
#

other then that in case you use win10 you might want to unblock exes and arhcives before you extract and install them

sacred obsidian
#

I do use win10 how would I do that?

south canopy
#

Im not sure which visual c mikero requires, try 2010 and install both x86 and x64

sacred obsidian
south canopy
#

win10 security policy it may block app from running in certain scenarios if its downloaded from internet

#

well looks like youre set with vc++

sacred obsidian
#

alrighty well ill have another go at mikeros tools then, do they run like normal programs or do i need to do something with dos or whatever to make them open?

south canopy
#

make sure you install depbo, deogg, derap and rapify first, before you try to use pbo Project

sacred obsidian
#

aha finally got the pboproject to work, dunno how but reinstalling the pboproject and the deogg worked a charm lol

#

will do those now

south canopy
#

pboProject is the only one with GUI and Eliteness, others in free tools are dos programs and dlls

dawn palm
#

if pboPro is running then it's alreaady checked the other exes are 'ok'

sacred obsidian
#

ok is Eliteness the too lfor making keys ? or?

dawn palm
#

you can, but it's overkill. pboPro is your friend.

south canopy
sacred obsidian
#

ok will have a look at that then, cheers guys appreciate your time to help and give some advice

#

ok ^^

south canopy
#

from pboProject, while building addons you can sign them aswell

sacred obsidian
#

Thats what I need yea, hopefully this works out with these tools then

#

should i select headless server install on depbo ?

south canopy
#

are you installing on a headless server?

#

¯_(ツ)_/¯

sacred obsidian
#

doubt it lol im a noob though 😛

#

only ever heard of a headless chicken!

south canopy
#

headless = no graphical interface / console only

sacred obsidian
#

Alright thanks!

dawn palm
#

when you eventually, perhaps,. and maybe, want to use my tools on a server, instead of a local pc, then the last thing you'd want is gui dialog messages.

#

everything is obvious in hindsight.

sacred obsidian
#

Fair play, makes sense, well got the gui open for pboProject so ima have a bash at this, will report back my findings tomorrow, again thanks guys appreciate your time/advice very much!

dawn palm
#

you are in for a very rough time correcting the many mistakes in exile. but, be patient, don't get frustated. they are all just tedious errors that take time to fix.

sacred obsidian
#

Hehe yea here goes!

dawn palm
#

the biggest doozy of them all is exile uses a config.CPP. That is the preserve of addons, my tools, and bis, think it is one, not, a mission.pbo

#

one way or other you have to rename it to anything else that thrills you.

sacred obsidian
#

hmm alright well this will be interesting if nothing else!

dawn palm
#

everyone will tell you same thing. do not get frustrated.

#

like everyone else, you'll find a worklow that suits you, and wonder what the fuss was all about.

sacred obsidian
#

rgr that

#

Any ideas why I am getting Packing Failed! and the following in the pboProject DOS window:

Warning: \Users\georg\Desktop\@ExtendedMarkersPack\addons\emp_markers\config.cpp Line 20: \emp_markers\markers\test.paa

I have double checked path multiple times now and .paa is in the right place...

dawn palm
#

then clearly. it isn't

#

bis engine knows nothing. zero, nnada, zilch, about 'my documents' nor any other windows file system. everything in bis is linux and everything starts at P:\

sacred obsidian
#

ok so i need to mount a p:\ drive?

dawn palm
#

look at line 20, it is explictly saying, the paa is in p:\emp\blah blah

#

your modding career will be 'interesting' without a pDrive

#

this is part of the 'workflow' thing. don't get frustated. it all falls into place.

sacred obsidian
#

alright well because it had option under setup to change workspace i thought it was fine

#

🤦

dawn palm
#

that should also be ok, pboProject will make a temporary p drive for you

#

but it's unusual

sacred obsidian
#

hmm ok such a complicated process for a simple mod lol Will try again tomorrow i guess, cheers again!

dawn palm
#

complicated? this is bis!! welcome to hell

sacred obsidian
#

Haha!

#

well i see temp p: drive so thats a start 😄

#

same error when using p drive done for tonight but will not be giving up!!!

dawn palm
#

its telling the truth, the paa file is not on the p: drive where you say it is

sacred obsidian
#

ok I copied the mod to p drive and retried <---- probably wrong way of doing it

dawn palm
#

dunno. again, it all comes down to personal workflow.

sacred obsidian
#

yea

dawn palm
#

P:\emp_markers\markers\test.paa

does not exist. It cannot get simpler than that.

sacred obsidian
#

yea thats whats making it even more odd, i dontmind errors when it could be something less obvious but this is not so much

dawn palm
#

you either have a
P:\emp_markers\markers\test.paa

or, you dont'. it can't get simpler.

sacred obsidian
#

ok then thats whats wrong I have full mod folder in there :/

dawn palm
#

you aren't stating that it's actually there as above tho. are you.

sacred obsidian
#

true

#

addon builder from arma 3 tools requires file tobe within a mod project folder and not on its own so thats what I thought it would be for here

dawn palm
#

the above cannot possbly be simpler to understand. regardless of what addon breaker does or does not do.

#

you can, fix the obvious, or look for a 1000 reasons why it aint working.

sacred obsidian
#

yea haha

dawn palm
#

paste a screenie of your p: folder. at least six people here will tell you what's wrong.

sacred obsidian
#

lol fixed it my bad

#

Epic fail

#

I had nothing inside my addons instead of emp_markers being in there it was beside addons

#

But the better way it seems is to have your mod folder (output) with empty addons folder in p drive root and also have your source folder in main root of p drive but that was not the issue the issue was ME!

dawn palm
#

the output can be to anywhere on your pc. drive:\any\where

sacred obsidian
#

Yea

dawn palm
#

note the obvious is is a MODS folder. not an ADDONS folder

sacred obsidian
#

Yes I see that now

dawn palm
#

pboPro will automatically supply the keys folder, when appropriate, as well as a missions folder if needed.

#

it'll even supply a mod.cpp if that gives you a thrill.

sacred obsidian
#

Yea this is much better than the addon builder, it at least gives you some output for errors too and doesnt just pack it broken lol

dawn palm
#

or crash

#

crashes ischt vertboten

sacred obsidian
#

sadly still getting signature check error

dawn palm
#

check the public key is in the new mod folder

sacred obsidian
#

They are, i packed with signing and then moved new bikey into keys of mod and the server

dawn palm
#

all good then

#

the issue NOW is you are telling the server to look in the wrong place

sacred obsidian
#

possibly yes

dawn palm
#

well the url you pasted said the obvious, it does not exist

sacred obsidian
#

lol see it already FFS im failing tonight so BAD!

#

Mod folder is called ExtendedMarkersPack and commandline is telling it to look for @Extended_Markers_Pack

dawn palm
#

not at all. you're learning some discipline about how to approach errors.

sacred obsidian
#

yes thats very true!

dawn palm
#

everything is obvious in hindsight

sacred obsidian
#

Thats true, less obvious to noobs like me it seems, but like you say gotta start somewhere right!

dawn palm
#

hmmm, well for a product (arma3) that will a) sopposedly be rep;laced by Enfusion this quarter , and b) ''all the talent has moved to DayZ", we're seeing one hell of a lot of continuous updates.

vague shard
#

where does arma 3 tools /OB store the settings - in reg/myDoc or else?

nocturne basin
#

anybody interested in a SQF parser for c++?
currently rewriting sqf-vm in c++ and need to recreate the parser for that

vague shard
#

the IDE devs might - at least as reference

hallow rapids
#

@nocturne basin if it's as general purpose as possible then yes 😃

nocturne basin
#

Relative

#

It is simple to understand and change

hallow rapids
#

and don't force all this C++ std stuff with the API ☺

nocturne basin
#

But obviously will be tied a lot into sqf-vm

hallow rapids
#

the "vm" part should consume the AST and not do stuff during parsing

#

IMO ofc ^^

#

(and the AST would then be general purpose so that others can build tools on top of it without having to edit out the vm stuff etc)

#

in other words, write a library lol

nocturne basin
#

Creating an AST is a Step more then needed for the vm

hallow rapids
#

true, but not for a "parser"

nocturne basin
#

It is not hard to change for ast Generation (it literally is just a few linkes)

#

But I did not wanted to create the structs for that + a separate Tool that parses the ast a second Time 😂

glossy inlet
#

did not want* FTFY

sick verge
#

currently rewriting sqf-vm in c++ and need to recreate the parser for that
Nice move! 😄

nocturne basin
#

There is no net benefit for me in there actually
The rewrite however will lead to simpler command implementation

#

And now I am even closer to actual arma with the vm

sick verge
#

And I'm sure it will lower the barrier of contributing to the VM

elfin oxide
#

@sick verge yep it would

nocturne basin
#

There is not much of a difference
Only a cleaner stack Overall that makes stuff more simple

nocturne basin
#

value_s is theoretical "nil" but that probably will be changed in near future as the actual value is a nullptr in there

glossy inlet
#

It's nular not nullar

cobalt nacelle
#

I made an npm package for Battleye, since all the ones I found would not work as intendend. It was created for my community but maybe someone was searching for something like that. https://github.com/Kaibu/node-be

nocturne basin
#
NA;OFF0;LEN15:ntest; utest 0;
        SQF;OFF0;LEN15:
                STATEMENT;OFF0;LEN7:
                STATEMENT;OFF7;LEN6:
                STATEMENT;OFF13;LEN1:```
#

soooo ... now i am indeed generating an AST

#

but got trouble due to for some reason my offsets being completly off

nocturne basin
#
NA;0;26;ntest; utest 0; 0 btest 0;
        SQF;0;26;
                STATEMENT;0;5;
                        BINARYEXPRESSION;0;5;
                                PRIMARYEXPRESSION;0;5;
                                        NULLAREXPRESSION;0;5;ntest
                STATEMENT;7;7;
                        BINARYEXPRESSION;7;7;
                                PRIMARYEXPRESSION;7;7;
                                        UNARYEXPRESSION;7;5;utest
                                                PRIMARYEXPRESSION;13;1;
                                                        NUMBER;13;1;0
                STATEMENT;16;9;
                        BINARYEXPRESSION;18;5;btest
                                PRIMARYEXPRESSION;16;1;
                                        NUMBER;16;1;0
                                PRIMARYEXPRESSION;24;1;
                                        NUMBER;24;1;0```
#

this now looks good

#

@hallow rapids happy now with this?

hallow rapids
#

yesss a proper parser 😃

nocturne basin
#

still much stuff to work out though ... binary commands still need to get resolved correctly

glossy inlet
#

It's still nular and not nullar ^^

elfin oxide
#

@Sticky Handz#6202 pls post it it even more channels ... @thin rose where is the hammer of justice when needed ?

thin rose
#

Done

elfin oxide
#

@thin rose :+1:

nocturne basin
#
NA;0;28;1 + 1 - 2;0;1 + 2 * 3 - 1; 6
        SQF;0;28;
                BINARYEXPRESSION;4;0;
                        BINARYEXPRESSION;0;0;
                                NUMBER;0;1;1
                                BINARYOP;2;1;+
                                NUMBER;4;1;1
                        BINARYOP;6;1;-
                        NUMBER;8;1;2
                NUMBER;10;1;0
                BINARYEXPRESSION;20;0;
                        BINARYEXPRESSION;12;0;
                                NUMBER;12;1;1
                                BINARYOP;14;1;+
                                BINARYEXPRESSION;16;0;
                                        NUMBER;16;1;2
                                        BINARYOP;18;1;*
                                        NUMBER;20;1;3
                        BINARYOP;22;1;-
                        NUMBER;24;1;1
                NUMBER;27;1;6```
#

@hallow rapids you can now get your SQF parser from the sqf-vm project (cpp branch)

#

though, still will get some improvments for creating more useful trees

#

ohh no ... wait ... totally forgot arrays 🙈 though ... should work fine, but did not tested

#

too much concentration onto the binary stuff

hallow rapids
#

neat 😃

#

I don't have an immediate use for it but when the time comes I will definitely 😃

nocturne basin
#

anyways
all now implemented and tested

fallow crest
glossy inlet
#

Do you really need to compile it yourself?
You won't find tbb_malloc on your pc

smoky halo
#

Yeah you really do if running 64bit dlls

fallow crest
#

okay thx i will try that out. @smoky halo should i just change the paths in your FindTBB.cmake?

#

i mean in the cmakelist

smoky halo
#

What are you talking about?

fallow crest
#

about the tbb thing

smoky halo
#

You need to compile a custom version of tbbmalloc if running 64bit

glossy inlet
#

Why though? Any reason for it? TBB not available as a pre-built x64 version?

smoky halo
#

TBB there own custom code that has dll name hardcoded in some weird voodoo.
Its just minor changes

glossy inlet
#

You can easilly change it by using CMake GUI though

smoky halo
#

But honestly though if you can't figure it out shouldnt be compiling from source code

fallow crest
#

hm okay

smoky halo
glossy inlet
#

The release has the x64 dll included. Why do you still need to compile yourself?

smoky halo
#

Actually nevermind about my earlier statement :P. yeah i made change to make it easier to package & compile multiple versions together

nocturne basin
fallow crest
#

@smoky halo so i dont need to compile the tbbmalloc_x64 myself?

#

because i just want to add a sqlcustom option ^^

twin bone
#

Hello! Anyone know how sign EBO files?

glossy inlet
dawn palm
#

😎

dawn palm
#

with credit to bludclot, dewrp.exe now splits UNbinarised wrp layers into separate pbos. Each one of which willl be less than 1gig in size. This gets over the 2gig limit that left some of you crippled with massively large maps.

this tool can only be used on exported (unbinarised) wrp files because the binarisd version is too late in the process.

this new option will also separate the wrp and the layers into two pbos if used. Quite some benefit for those of you just starting your map malking career..

caveat emptor, this feature is currently beta and needs testing.

hallow rapids
#

just to be clear, the "old" method for binarized wrps still just works fine, right?

dawn palm
#

certainly. you 'feed' these modified, unbinarised, folders into the 'old' method to produced binarised files

#

there is NO change to the packing process for people making maps < 2gig

hallow rapids
#

cool 😃

tiny path
#

I know its something that is not ideal, but can you ignore missing files when using pboproject and binarizing a mod?

#

Ignore errors that files are indeed missing

pliant lynx
#

use addon breaker, thats its main feature.

tiny path
#

I did indeed think of that tbh as a feature I could use

#

Lol

glossy inlet
#

We once had a command line option to ignore missing files

#

I'm still running a old version of mikeros tools just for that option

tiny path
#

I have paid tools currently, the cmd line option is removed for them?

karmic niche
#

I'm surprised you haven't hacked the new tools to do the same, yet

glossy inlet
#

I'm quite sure that option is disabled everywhere in the newer versions. To prevent people from using it

#

I have no reason to do that. The newer versions get crappier with each update. So why waste time if I can just run a old version

tiny path
#

I will probably need to ignore some few thousand missing files, it would be better to ignore vs depbo addons just to have it know a file is there

#

Wanna share dedmen? 😄

glossy inlet
#

write a script to create fake dummy files

tiny path
#

Not a bad idea

#

Thx

glossy inlet
#

I think I have the old version on my CI server. I'll grab the link

#

Because... How would I get a unpacked version of Arma onto my Appveyor CI? Huh? TELL ME HOW MIKERO

tiny path
#

🤔

dawn palm
#

No idea dedmen, not my problem . If you think my tools are crappy, stick to addon breaker.

glossy inlet
#

Your tools are good. The old versions

#

Sadly you keep disabling useful features just because idiots where being idiots while using them.

dawn palm
#

that's true too because I have to cater for the lowest common denominnator who WILL fill forums with 'why doesn't it work' when the answer was right there until they disabled it.,

#

if i gve most people any chance at all to ignore errors, that's exactily what they will do.

tiny path
#

In odd cases like what I am in, ignoring some parts will save me loads of time, opposite of normal use

glossy inlet
#

I basically only need it to build dev builds of ACE. So I don't care about missing files for a quick dev build...
Sadly the 2 minutes "quick" turns into half an hour env setup before I can build with the newest version of the tools

dawn palm
#

the ability to disable file checking is there for high end users. THEY read the documentation.

#

and i also agree that cup and ace (and cba) are high end mods that need careful feeding.

tiny path
#

Ill have to take a look when I get back on tomorrow, thanks 👍

glossy inlet
#

What? Yeah.. and?

vague shard
#

sorry misread above 👼

pastel aurora
#

Quick question: Do mikero's tools or any other tools have a tool for packing pbos that will automatically binarize all of the configs and rvmats inside??

glossy inlet
#

@pastel aurora Cut the spam please. #rules

#

Usually I would delete my reply to you now. Because I hate spammers that much. Be happy that I'm lazy

pastel aurora
#

its not spam, i only put it in both #arma3_tools and #arma3_config because its kind of related to both and i didnt know where'd i get a better answer

glossy inlet
scenic canopy
#

@pastel aurora yes

glossy inlet
#

Added: The 'Shots' diagnostic was enabled for the Diagnostics Executable
Oh boi

cold slate
#

any of you know why VS doesn't allow me to install .net and node.js libraries on another drive?

#

i can get ths base IDE onto the drive, but everything else wants to exist on C

elfin oxide
#

what do you mean by install ?

#

you should be able to place libs anywhere you want and just tell your build system where it will find it

cold slate
#

@elfin oxide VS installer "installs" them. Moving them over manually

dusky dune
#

Figured here is probably the best channel to ask

#

Is there a way to publish a workshop mod without relogging to different account (Shared one because Valve still hasn't implemented multiple authors being able to upload)

smoky halo
#

Pretty sure you can upload via steamcmd (don't know the commands offhand), but it won't have any of the extra bells&whistles addon publisher does i.e meta.cpp.
Is just easier to relog though

dusky dune
#

For another mod i use publisher (the a3 tools one) CMD commands to publish, but in this case i gotta switch accounts and it's just an annoyance seeing all the other buildling / updating servers is automagic

#

I'll take a look at steamCMD publishing i guess, don't care about bells whistles

smoky halo
#

Well you kinda creating a headache for yourself there using 2 different accounts for uploading content.
The Meta.cpp is kinda important otherwise server won't be able to tell client the steam workshop id for the addon

dusky dune
#

I wouldn't publish under different accounts for the record.

#

I got a persona lmod on my own workshop, kand on the steam i usually play with

#

Then for another mod we have a shared account, because only the original mod author can upload changes,that's the one id'like to login to (temporarily) to publish updates

#

But i'll take a look at CMD, thanks.

#

Meta.cpp you can just upload it manually once and then you're good to go though aren't you?

#

At least that's what i've done in the past and seems good

pastel aurora
#

Hey guys, im having this weird issue with signing a couple of PBOs. I did a signature check and they have failed (Err 0x20 Test FAILED!) and because of that i am unable to play on my own server even with the key on it. I tried re-signing them multiple times but it didnt work. Anyone know what i should do?

#

I even tried with a new key

glossy inlet
#

Did you also try repacking the pbo and then resigning?

pastel aurora
#

yes

glossy inlet
#

with different pbo packers?

pastel aurora
#

i was using dsutils

#

oh packers

glossy inlet
#

Mikero/Arma

pastel aurora
#

no, that was the next thing i was going to do

#

i tried using addonbreaker but it excludes rvmats from my pbo

glossy inlet
#

remove rvmat from the file exclude list?

pastel aurora
#

rvmats were never in the list

dawn palm
#

dsUtils is possibly out of date/ not maintained. Afaik, the dsTools are now part of standard steam tools updates.

#

there's no reason I can think of why you would be doing this manually when pboProject does it automaticallly as part of the packing process..

onyx helm
#

I dont think this is the right channel for this, but does anyone ever get an issue in Object Builder where when they use ALT + RMB to move the camera it goes incredibly slow?

glossy inlet
#

Yup.

#

Known problem. No known fix afaik. #arma3_model miight know more but I didn't read about a fix

sly skiff
#

running in compatibility mode was helping a bit I think

#

but 2nd hand info since Im on W7

#

and thats W10 issue

onyx helm
#

😩 its honestly killing me

#

makes working in OB even harder

rancid relic
#

I've seen some reports that microsoft fixed it in some insider build

pastel aurora
#

@dawn palm It was actually a problem with pbos not being packed properly but ive fixed it with addonbreaker. Tho i really need to start using your tools. Im just having problems installing them since idk all of the things that are required but im sure ill find the list somewhere

sly skiff
#

@pastel aurora thruth to be told you really need to fix your stuff or it will just break in the long run

#

addonbuilder is not part of that solution if you dont know 110% what youre doing

pastel aurora
#

ive fixed it 100%

sly skiff
#

"fixed with addonbreaker" means ductaped it

pastel aurora
#

by that i meant i used it to pack the pbo and it packed properly. Not like some workaround

sly skiff
#

but addonbuilder does not really tell you if it packed properly

#

it packed

#

but properly is questionable

pastel aurora
#

yes but i tested signature checks and everything in those pbos works fine and signatures passed

dawn palm
#

I can't see any relationship between missing rvmats, or 'packing properly' and the simple requirement to sign the result. Good, bad or indifferent, if a pbo is made, then signing the thing is a separate story.

#

Getting your pbo recognised by the engine to at least 'see' some result in game, is the first major milestone. So, genuine congrats on that. What you'll discover later is that the tools you are currently using do not look for, nor report any errors, not even if binarasation failed. In short the bis tools will do everything possible to produce a pbo, my tools wil do everything possibke to NOT make a pbo. The difference between the two is my tools try and remove the need to load game, test, fix, load game, test, fix, load game....

pastel aurora
#

I understand that but as ive started moding from not that long ago, ive never really needed to use anything else besides BI tools. I just used them from the start and never really had any issues till now. Thank you for your advice tho, I really appreciate it.

sly skiff
#

you should try packing with pbo project to see the difference

glossy inlet
#

Or even the pbo now.. Would be interesting to see a diff on the non-working vs the working PBO.
How big is the pbo?

smoky halo
#

If anyones interested, been working on some custom changes to Armake (will hopefully make it into main version). So far have have built CUP Terrains with it
Fork is at https://github.com/Torndeco/armake/releases

Still got some extra checks want to add in etc
note: changes are just for windows & using bis binarize etc

pliant lynx
#

great job Torndeco!

scenic canopy
#

how much validation does it do on wrp/p3d files now?

#

i.e. valid paths, land configs etc

karmic niche
#

Good job on that!

Since we're talking about patches to Armake: would it be possible to remove char something[2048], strcpy() and strcat()s from the code? They make my eyes bleed 😄

scenic canopy
#

I started working on some macOS integration for Armake, such as preview for paa files in finder etc, works quite good

karmic niche
#

I don't even want to think how many ways there are to exploit this with a malicious PBO

scenic canopy
#

seems like pbos with tiles has some issues with the limit of 4096 files too

#

i.e. most islands

#

for unpack/inspect

#

very convenient

glossy inlet
#

@Stack (Overflo)#8649 requested the same. no luck

dusky dune
#

that's quite nice dahlgren

#

you should make an XnViewMP plugin if that's possible and make me happy :3

smoky halo
#

@karmic niche its gpl, nothing stopping for making the changes yourself & making a pull request etc

karmic niche
#

I know, believe me, I would have already done that long ago if I wasn't spending literally every evening writing code for the Frontline mod (4h+ a day after 8h of doing the same at work)

scenic canopy
#

@dusky dune looking into extending the windows shell with the same functionality

#

I'd guess it would work for that application as well then

dawn palm
#

might be helpful,, might be not, because I'm not interested in windoze, but I found that

system("start NameOf.exe somefile");

//was far more usefuil than:

shellexecte(0,0,,"somefile.ext");

the latter relies on file assocations to trigger an exe

#

which, differ from pc to pc, or don't exist at all

nocturne basin
#

in case someone with basic c/c++ knowledge has too much spare time and searches for new headache: sqf-vm still is in need of developers 😃

nocturne basin
#

in case somebody needs AST generation for configs, also got that now (though ... it does not blindly parses everything to string to default meaning that somefield = string without quotas; will result in errors)

dapper pivot
#

Yeah, configs are syntactically weird, you really have to test by parsing every single Arma config.

elfin oxide
#

@nocturne basin but a config entry with something like key=value; does not sound like something that should be working

#

key="value"; should be the only acceptable form

nocturne basin
#

@elfin oxide arma Config parser accepts that syntax

elfin oxide
#

It might accept it, but does that also result in the value beeing parsed correctly?

#

As in when I execute a getText( config >> "key" ), do i get "value"?

#

or does it give back "" because he failed

glossy inlet
#

value = hello this is patrick I think
getText returns "hello this is patrick I think"

elfin oxide
#

that is utterly retarded

#

If i were you, i would not support that, @nocturne basin

dawn palm
#

@elfin oxide

thing = value with spaces and lots a strange CHARACTERS including macros;

is 1,000% acceptable in a config. because it's non numberic, it is automatically a text string and the "quotes" are implied,

you cannot compare this statment against sqf syntax "such as 'thingy' = ""key"";"'

be that as it may, the leading and trailing "quotes" are inferred in a paramfile, and it is the only way to do the following:
#define PBO_PREFIX Alice in wonder\land

model = PBO_PREFIX\my.p3d;

smoky halo
#

Can someone please make a tool for creating particle effects. ._.

dawn palm
#

you really have to test by parsing every single Arma config

that's precisely what bis binarise did up until the release of ArrowHead.

it used the very same code as in the engine which builds the master config.bin, and was exceptionaly useful as a dot.rpt. Saved you loading the game.

Post arrowhead, bis scrapped it because the time to process (I assume) took too long.

glossy inlet
#

@dawn palm macros work in single quotes ' tho. So that's not the only way to use macros in configs.

dawn palm
#

agreed

dapper pivot
#

David: You can do most of your testing in SQF and then move it to configs.

smoky halo
#

SQF?

dawn palm
#

#define BURP This is a Message for Dedmen.

DisplayName='BURP';

#

also,
DisplayName = #BURP;

dapper pivot
smoky halo
#

@dapper pivot but how can I test in SQF?

dapper pivot
#

DavidNickisson: You can create a particle source while you're in the game and then quickly delete it and recreate it to preview different parameters. There should be some examples of doing so in that Wiki page.

rancid relic
#

oops, wrong version - don't have atm fixed one

karmic niche
#

Btw. if anyone was interested in parsing Arma classes (from mission.sqm for example), I have ported Fusselwurm's arma-class-parser JavaScript library to Python so I don't have to emulate its functionality when I want to use it in my Python scripts:
https://github.com/overfl0/Armaclass

pliant lynx
#

nice work.

nocturne basin
#

uhm ... what for @karmic niche

#

i mean: why is a class parser needed at all? unless it is for syntax checking though

karmic niche
#

Definitely, the guy that wrote the original library and the other guys that were submitting PRs thought it was useful 😉

nocturne basin
#

iirc that was used for some editor tool

karmic niche
#

We are using it to pass some metadata information inside the mission pbo about min-players and max-players for that given mission and we can then both access that information from within SQF scripts and also from an external python script that lists the missions available in MPMissions

#

In other words: we have an autorotation script that selects missions based on the number of players playing.

#

And also, lately, I wanted to add some constraints to our CI that is building missions to check for enableDebugConsole = 2 and break the build if it's set

#

...aaaand some other additional checks, like where the mission maker forgets to add isPlayable to the soldier entities and the mission just doesn't work in MP 😄

nocturne basin
#

cool

#

looks like a lot of work though

karmic niche
#

Granted, you could check for that manually each time but having a way to access that programmatically would be cool

nocturne basin
#

theoretically, all that is already possible using sqf-vm (shameless self promoting)

karmic niche
#

😃

nocturne basin
#

though ... there is no support for comments etc. yet inside the config parser due to missing preprocessor (and no support for comments in sqf for same reason in the new cpp branch, but i already plan on fixing both when mergin cpp branch to master)

smoky halo
#

@karmic niche nice thx

pliant lynx
#

that reminds me, need to check if Sbsmac's sqm tool works on eden mission.sqm format.

dawn palm
#

dunno if it's relevant to mention this, but the api of my dll will access any class , any property, and any array, of any paramfile (binarised or plain) in a few simple function's()

perhaps this parse above is a few levels higher up the tree than that.

karmic niche
#

It would probably be relevant if I knew what was the API of your dlls ;), and even then I would have to write a wrapper for that dll(s) since I want to access everything in Python

scenic canopy
#

@nocturne basin we use it for mission validation and improvement suggestions, i.e. checkin if headless, zeus etc is correctly configured. we also use it to generate html docs for mods.

#

@dawn palm are the header files available for subscribers yet? 😄

dawn palm
#

as soon as i can, am in process of cleaning them up/making them more formalised. The funcs() haven't changed, but they're not, currently, organised consistently.

#

you're on my ginea pig list Dahlgren

nocturne basin
#

@scenic canopy Start working on sqf-vm and you can do Unit testing
Hehe

scenic canopy
#

but I've already did 😄

#

maybe I should some more code analysis

#

I think I put a clang formatter somewhere

nocturne basin
#

Hull dull

#

Sqf-vm cpp branch got you covered

#

Full ast Generation for sqf

#

No preprocessor yet

#

But that will come too

hollow barn
#

Is there docs/a guide to setting up a mod in CBA fashion, I presume installing CBA as source is one step of that process

nocturne basin
#

in CBA fashion?

hollow barn
#

Have a multi-component mod that I'll eventually want to reference other components in

nocturne basin
#

what has CBA to do in there?

#

create a mod folder, put PBOs in it and there you go with your multi-component mod

hollow barn
#

In a way for all the macros, i.e. GVAR, FUNC macros

nocturne basin
#

if you want to use XEH of CBA, there are docs for that

dawn palm
#

the answer remains the same (put it all in a mod), but to specifcally USE text macros, eg defines, you place all that you think you will use in a single pbo who's prefix is p:\jaffa\jaffa_macros. The resultantg pbo willl of course be called jaffa_macros.pbo

#

the above names of course are only eg's. you call it whatever you like.

hollow barn
#

CBA and ACE seem to be a bit more involved for their dev side stuff, they seem to use some form of standardised setup

dawn palm
#

pboProject will build that special 'text file' pbo for you, providing you tell it to allow either .hpp and/or .h in the pbo

#

then you start using a 'standardised setup' too.

hollow barn
#

But what is that standardised setup and where can I find it/the setup/docs on it

dawn palm
#

it's up to you to set your own standards and workflow.

#

but as an eg, every subsequent pbo you make (which presumably will take advantage of the macro library YOU wrote, will:

#include "\jaffa\jaffa_macros\library.h"

#

it's up to you to set 'standards' of how you 'present' those macros to make them readily uinderstandable and consistent in usage,.

#

one exampel, eg, would be the macro JAF_HITPOINTS(...)
JAF_GLASS(....)

#

when it comes to something more dynamic, such as firing a rotating belt machine gun via sqf, the rules stay the same.

hollow barn
#

I get how macros work, I have used them

dawn palm
#

so make a library of macros!

#

later on, you will probably separate at them out to jaf_core.h, jafe_base.h, jaf_guns.h

#

it's still YOUR rules

dawn palm
#

and my guess is, it's all documented how-to at top of each file.

hollow barn
#

But surely there's some form of overview somewhere, some external documentation

dawn palm
#

can't see much point you re-inventing that wheel, because you aint never, not ever going to maintain it as well and as consistently as those folks do.

hollow barn
#

How is using what seems to be a standardised setup reinventing the wheel?

dawn palm
#

well on the basis of your question, i probably misunderstood, and thought you wanted to write a series of macros for yourself.

#

if what you're looking for is how to apply CBA, the always up-to-date answer is top of file where the major defines are #ifdeffed

dapper pivot
hollow barn
#

Yeah, I can probably figure it out, I'd just expect there to be some sort of overview of how the mod/components should be structured

dapper pivot
#

Things like GVAR are probably overkill for your own projects though.

hollow barn
#

@dapper pivot I can use google, I already know of that page

dawn palm
#

If there were, they'd be out of date at each update of the code 😎 . But yes, i do get your question, and i'm not aware of any doc that describes how the lego blocks fit together. I can easily be wrong about that.

hollow barn
#

You call it overkill, I'll call it component seperation

dapper pivot
#

Sorry, didn't know you were working on an ACE sized project.

hollow barn
#

It doesn't need to be ace sized to be seperated into compoents

#

i.e. One component is specifically focused on adding custom TFAR radios with accompanying custom code. Another is administration utilities

dapper pivot
#

The CBA macro's don't help with that, they just let you change prefixes from a single file.

dapper pivot
#

How do they help though? The only benefit is you can change the variable prefix from a single file.

hollow barn
#

[args] call FUNC(doStuff)

#

[args] call EFUNC(admin,doStuff)

dapper pivot
#

But how is that better than just "call bis_health_healPlayer"?

hollow barn
#

I don't need to justify why, but I prefer to spend a bit more time to setup things in a way that saves me time down the line

#

Code clarity, Varname conflict avoidance, tooling to quickly check configs and sqf files for errors or misformatting etc

#

It's also easier to setup now than when/if you get a larger codebase

#

I know that fine well from other code projects where I've made that mistake before lol

nocturne basin
#

The whole gvar crap is literally Bullshit...
Though, stuff like gvar May Look useful, it is nothing but forcing Name conventions

glossy inlet
#

@hollow barn https://slackin.ace3mod.com/ I guess you won't get any further help here. Back when I did it I just copied from CBA/ACE by example. I don't know if there is any tutorial on that

#

Though, stuff like gvar May Look useful, it is nothing but forcing Name conventions
That is exactly what it was made for though....

dapper pivot
#

Which is less useful now with CfgFunctions (plus you get the benefit of the help viewer with CfgFunctions registrations).

hallow rapids
#

I'm not entirely sure but I think I've read/heard somewhere that it might be/become obsolete

glossy inlet
#

That exists?! :U
Last update 2 months ago. I think the tools are outdated again but you can just pull them from the ACE repo.
Looks up-to-date otherwise

hallow rapids
#

it's tailored to the ACE3 framework as per the readme but I guess that's essentially just CBA

glossy inlet
#

CBA framework isn't as neat as ACE.
CBA uses CfgFunctions and has script files directly in the pbo instead of a functions subfolder like in ACE

hallow rapids
#

the template includes some ACE stuff for example

#

#include "\z\ace\addons\main\script_macros.hpp" instead of CBA

#

seems like it's the only one and you can swap that to CBA I guess 😛

#

yeah ACE is pretty damn clean but CBA is mostly just scripts anyway so it's fine as is imo

#

as in CBA is more like library-ish while ACE is more framework-ish ^^

pearl beacon
#

CBA scripts + macro library and few smaller frameworks, ACE features, frameworks, and more 😛

#

and yeah, you should be able to just change that include over

#

it's slightly out of date, no beautified component names and few other dev stuff

pliant lynx
#

@dawn palm is it technically possible, do you/community have the knowledge, to develop binarize tool or is there some aspects of the internal workings not known?

glossy inlet
#

Is technically possible

#

But a lot of work

#

Armake is doing that

#

But paused it at about 90% completion because he wanted to get it into a working state faster

#

Also you need to maintain it. if BI creates a new p3d version you have to reverse engineer everything that changed. Need to find out what the changed bytes mean.

#

I guess after Tanks DLC when Arma will get more quiet that won't be much of a concern anymore

#

Models is the hardest part of that. Configs are easy.
Textures are also hard (converting to paa) atleast armake still has problems with that. Guess it just takes a little more time to get it fixed.
What else is binarized? rvmat's? Also basically configs.
Most stuff about models is implemented in Armake already. Afaik there were only some problems with shadows currently.
Oh and Animations are completly missing I think.
The knowledge is certainly there. Just needs time to get done.

pliant lynx
#

okay good to know, and yes WRP is big part of that "what else is binarized". thanks for the answer.

glossy inlet
#

Oh. yeah WRP is also not implemented in Armake afaik

pliant lynx
#

I've been having some private discussions whining to bis devs about 64bit binarize. the current 32bit binarize crashes on WRP with large amounts of objects which is a problem for us terrain devs. thought it wouldnt hurt to ask around if we as community could technically develop a binarize tool of our own.

glossy inlet
#

We certainly can.
I personally don't know about WRP. I think KoffeinFlummi also isn't much into that.
But @dawn palm or @smoky halo Probably know?
And with enough time it also wouldn't be impossible for me to figure everything out

pearl beacon
#

@smoky halo is working on terrains packing for armake, but not binarization, that's just using BIS Binarize still, but he might have some information

smoky halo
#

wrp are quite tricky. they are using a quad tree which is not trivial to handle

glossy inlet
#

Oh gosh. I looked at quad tree in Arma a couple times. I quickly found a easier way to do what i wanted to do 😄

smoky halo
#

also I am not sure how difficult the roadnetwork creation would be

hallow rapids
#

@glossy inlet ask @rare path what he thinks about quad trees in Arma 🤣 (actually, can't remember if it was any good or not.. hmm)

pliant lynx
#

hmm is road network the old tech, we are now using roads.shp and you can easily binarize terrain without them?

smoky halo
#

afaik the roadnetwork will still be created in OPRW for the ai from shp though

#

not completly sure to be honest

hallow rapids
#

don't think it's used at all ^^

pliant lynx
#

I have to say no. my roads.shp is not even listed in the same config as WRP in the addon I mean, my roads are listed in config only terrain err config (difficult to explain). the way I see it, binarize dont even know about if roads are used or not, also I often times binarize WRP first with roads // commented out.

smoky halo
#

the idea of a quadtree and the datastructure is simple. but the way BIS is using it in OPRW file format is tricky 😉

glossy inlet
#

If they use their default serialization then it shouldn't be too hard I guess

smoky halo
#

@pliant lynx well I assume the RoadNetwork structure in the file is empty then. would be easy to check

smoky halo
#

Something todo with old roads is encoded in binarized wrp. Encountered that with cups sahrani, was effecting ai driving on certain roads

smoky halo
pliant lynx
#

good stuff T_D

dawn palm
#

As Dedmen has pointed out, replacing binarise with something better falls over the moment bis introduce differences to any of the formats. Notably p3ds.

My dll already replaces binarisation of any paramfile (conffig.cpp eg), texheaders and rtms. The effects that bis could introduce to those file formats are limited and (imo) easily accomodated.

The only items pboProject lets binarise get near are wrps and p3ds. That won't change until bis run away with enfusion and stop meddling in this engine.

#

Correction: external creation of texheaders.bin, and rtm files is currently disabled in my code.

pliant lynx
#

so I guess the waiting game continues, will bis release 64bit arma3steam tools before arma3 is "EOL".

dawn palm
#

unlikely, imho.

#

I don't think they're able to bugger up wrp anymore since the production of the exported wrp and what 'extras' can be introduced, is now out of their control. Altho they did manage to screw up chernarus+

pliant lynx
#

well would you be willing to add WRP binarization to your tool-set?

dawn palm
#

no, because any change to p3d map= affects the contents of a wrp. TownNames have been externalised so they can add what they want, road TYPES are externalised, and road shapes.

#

(roads aren't much of a concern providing the ai road masks and road clutter, aren't used anymore)

#

externalised here means,. they've avoided the necessity of altering the contents of tb / visitor exported wrp.

pliant lynx
#

okay

elfin oxide
#

Look at how old arma 2 is and the eol update is still to be released fully

#

So I would not expect an eol update for arma 3 on the next year or more

#

I am sure development comes to a complete stop after the tanks dlc but there might still be minor bugfixes for a while

nocturne basin
#

@Arkensor#1337 development will start then!
community is prepared to implement new features 😈

elfin oxide
#

@nocturne basin If they would give us the possibility to edit arma 3 and publish community releases sure ...

nocturne basin
#

intercept

elfin oxide
#

If that will ever be whitelisted

glossy inlet
#

Battleye whitelisted my debugger...

#

Without even asking

elfin oxide
#

0.o okay

glossy inlet
#

So if they don't do it by request. They'll do it by accident some day

elfin oxide
#

Ic

pearl beacon
#

Arma 2 is EOL a long time ago when it comes to changing any formats, they are just bug fix patches

#

in short, after Tanks DLC we don't expect changes (or at least not any major ones) to any format used by the game

steady crown
tiny path
#

open notepad
subst p: "M:\PDrive"
save as .bat

#

double click

#

👍

#

name it like mountpdrive.bat or something

#

/d will delete the virtual drive if it exists already

#

so good to have that there I guess

steady crown
#

that right :S

#

o wait u wont me to make a new file

#

its ok i got it thank you

#

👍🏻

vague shard
#

@glossy inlet @woeful cliff from what i recall you both were working on performance/script profiling/debugging in the past, did you? and if so, still something to be released any time soon? thanks for the info!

glossy inlet
#

The SQF optimizer is the next thing to be released

nocturne basin
#

there is the intercept optimize plugin

glossy inlet
#

I have a ton of features planned for the unscheduled script profiler. Mostly though aiming at displaying the data in a readable form.

#

Debugger might get revived if someone wants to use it. But no interest so far

vague shard
#

cool. is there some preview info or images available or sth?

glossy inlet
#

For my profiler? currently about the same as that yeah.. but.. one sec

nocturne basin
#

theoretically one could write an external tool to display those informations

glossy inlet
#

Or just use any of the dozens of existing ones. Which is exactly what's on todo

nocturne basin
#

yup

glossy inlet
#

I can also use Intercept to create custom UI controls directly inside of arma. But why do a ton of work if you can just use something that already exists

vague shard
#

@glossy inlet very cool work 👍
is the linked intercept version still the one to use?
does it work also with diag.exe builds? (it supports also the capture cmds and so)

glossy inlet
#

Should work with diag. I think there was a problem with that currently.
Aka it doesn't automatically instrument all scripts. I cannot debug arma stuff currently so the fix for that is getting pushed back

#

but if you manually instrument your code it'll work fine

#

Last Intercept test on diag was a while back. Should work but if it doesn't then tell me ^^

vague shard
#

ok will see how it goes

#

did you consider to log the results to some db and have some graph over time?

glossy inlet
#

It can capture multiple frames. But something like live capture is not yet there

vague shard
#

BI is/was doing that with -autotest and some (very) basic fps logging missions (back in OA/A3 pre alpha at least). it can be useful to find if you screw up (or someone else) at some point

glossy inlet
#

will come with brofiler integration though

vague shard
#

well i meant really longer term (day by day, etc)

glossy inlet
#

That will log/display live if it's enabled

#

and it should also be able to save stuff. Meaning you can record a benchmark mission. Save that. Then update game, run it again and then compare to previous result. I guess

vague shard
#

sounds good. i am thinking more about scripted stuff - like if larger components get refactored or similar to have some performance track to follow

glossy inlet
vague shard
#

@glossy inlet getting corrupted core.pbo or sth with that intercept version (Intercept_0.10.0.588.zip)
https://i.imgur.com/Pa4XMbp.jpg

#

updated to latest 7z but didnt help either

glossy inlet
#

wtf 😮

vague shard
#

ty. testing now

glossy inlet
vague shard
#

PS: dll location in the subfolder is on purpose right? \@ArmaScriptProfiler\intercept

glossy inlet
#

yep

vague shard
#

i want to plot the environment sound controller values as some image (ie sea, forest, house, etc - see https://community.bistudio.com/wiki/Arma_3_Sound:_SoundControllers)
so far i found this service http://www1.heatmapper.ca/image to do it as a heat map (the site is somewhat slow but you can also upload the background image - aka SAT map in this case for better reference)

  1. any idea how to visualize the different values together?
  2. any other services or ways to do the visualization
#

color grid in excel could be another approach, yet you probably can do only a very rough resolution with it

#

another might be ingame using markers and coloring them

karmic niche
#

I think @scenic canopy could be able to help you with that

scenic canopy
#

All at once or one per type?

vague shard
#

@scenic canopy for AAO some decent way of visualization would had to be found first

scenic canopy
#

heatmap would probably only represent one value at a time right?

#

could have each type as a layer

vague shard
#

yep layers probably makes most sense. at times you may want to overlay them/two i guess

scenic canopy
#

yeah

#

we mostly use leaflet.js to do map thingies

#

but heatmaps can be tricky

#

probably better to precompute all the layers if you want fast and consistency

normal wigeon
#

what purpose would the heat map achieve? Just visualisation or do you want to do more with it (processing the data)

vague shard
#

@normal wigeon

  1. to see if there is still bugs on BI's end (engine wise or with binarize)
  2. to see if terrains have bugged values (need to be rebinarized)
  3. visualization to help terrain and sound designers
normal wigeon
#

aha ok just visual aid then

vague shard
#

well you could do more with it if its decent

#

like for AI scripting, strategic layer analysis (ALiVE etc), for mission logic (some of the params are dynamic), etc

normal wigeon
#

visualisation is tricky if there are more than 2 parameter active at the same time. Due to the number of them you would have to assign colors and then blend between them, but you can only blend between 2 colors

vague shard
#

multiple parameters is not necessary - just might be useful at times/give a better/deeper perspective

#

like the sound volume is usually/often a combination of some, or the highest among the different "wins" (volume turns out more dominent)

normal wigeon
#

for AI map reading i have done some analysis and imo you need multiple purpose built maps for that. The sound source could be misleading there

smoky halo
#

New version of https://github.com/Torndeco/armake/releases if someone is bored.
Its basically custom version of armake with changes for binarize.exe, so there really is no point testing it on linux.
Recent changes are
Added some MLOD p3d class type checks / checking if model.cfg has animations class defined etc
Fixed issue getting binarise.exe location

sick verge
#

Not sure if this is the right channel to ask but anyway:
Is there some documentation on the enfusion engine and or (more interestingly) its scripting language (Enforce?) 🤔

glossy inlet
#

Yes. Lots

#

Download DayZ standalone. I think in dta there is a system pbo with all the docs

vague shard
#

i would guess much of the Enscript (ToM/CC) stuff is also still relevant as reference

sick verge
#

Well I don't own DayZ so that'll be a problem I'm afraid 🤷

What is Enscript?

vague shard
#

script engine of said games and the other predecessor to Enfusion (next to RV from OFP/Arma)

glossy inlet
#

Enscript is the scripting language

sick verge
#

Ah okay. Thanks!
I'll see what I can find out on that

#

Not much actually... Does someone happen to have a link to some docs? 😇

vague shard
#

https://armaworld.de/index.php?attachment/2456-npn9peb-jpg/&s=ab385aba2bd606294dd7bf893ec5da1ea13f3d01

sick verge
#

Thanks a lot!

arctic coral
#

Anyone know if there is a way to run makePbo without it binarising the pbo...?

vague shard
#

@BrianBoulders#9667 makepbo -n

lofty parrot
#

@sick verge There is a EnfusionScript Compiled HTML Help File in the DayZ folder which seems to tell you everything you need to know

#

I would upload it here for you but not sure if thats allowed?

sick verge
#

I would really appreciate that but I'm not sure either... 🤔

vague shard
#

guys think of OFP modding days

#

of course its fine

lofty parrot
#

Just making sure as I'm pulling something out of the DayZ folder haha

vague shard
#

thought police active

glossy inlet
#

Just don't send it to @tepid spade via PM 😉 😉 😉

sick verge
#

Lol that's what I just suggested xD

vague shard
#

DMCA precrime has already been informed by NSA and SWAT team is on the way in 5 4 3 2 1

sick verge
#

😱

dawn palm
#

Well I don't own DayZ so that'll be a problem I'm afraid

well what's the point then?

sick verge
#

The point being that if one trusts in the current rumor Arma 4 will be based on Enfusion as well and I'm assuming that the scripting language will be similar if not the same. Therefore I'd like to have a look at the general structure and stuff as I might add support for it in my eclipse plugin (somewhen in the future of course)

lofty parrot
#

Oh shit the black vans have started rocking up!

#

Why didnt someone tell me BI has this kind of presence all over the world!

dawn palm
#

(most of) the old hands here learned arma one, via the xbox elite code. It took sth like 2 years for arma to come out of that, by which time we'd pretty much figured out the new fangled rvmats and etc

#

I don't imagine the gestation period for a4 will be any quicker, if they bother at all.

lofty parrot
#

I guess it doesnt hurt to have a look now and just see what the go is

dawn palm
#

true that too. but you can probably ,most likely, make some damn useful tools, right now. Eliteness is an example of an xbox elite tool migrated to arma. I guess too, if soemone were able to supply new scripting examples for people, without the bother of loading up a dragon product like dayZ, that's a good option too.

#

and, if there's a merciful god, it will have no relationship to the sqX awfulness.

sick verge
#

True ^^

dawn palm
#

just imagine with the cleverness of folks in here, how a script parser could finally be made that didn't break each time bis added a new, idiosyncratic, verb to the language. A proper lint parser does not need to know the specifics of functions() or what they do to know whether there's typos or missing params. Over the years, every attempt to make one for sqx has 'worked' for a month and then the author gets the shits at the futility of constantly ammending it,

sick verge
#

That's why I chose to make my Plugin learn how to fetch those information right from the BIKI. Like this I don't have to release a patch for every new scripting command 😇
It relies on the BIKI being properly maintained though 🤷

glossy inlet
#

So it relies on me? 😄

#

I think I still have a couple wiki commands on my list. That were added a couple months back

#

what info do you need? return type and argument types and name? You could also scrape the intercept pointer list.

dawn palm
#

It relies on the BIKI being properly maintained though
that's a klever way of getting round the unknown orders of precedence in unary and binary operators

#

you should not need to give a rat's arse what the operator does for it to be syntactically correct.

#

In any case, you should be able to fix your parser when it falls over from lack of info by simply editing the biki yourself (rather than your code and re-releasing it as version 9..99 recurring)

sick verge
#

Basically yes @glossy inlet ^^
Yes that's all I need. I do also require the page to be layout the way other sites are (especially when it comes to how the syntax is being noted).
where can I find that list? Might have a look at it 🤔

#

That's exactly the idea behind it @dawn palm :D

sick verge
#

Thx

glossy inlet
#

Some things like == and such are missing though

#

but these usually don't change anyway

sick verge
#

Why is there nan listed for some commands?

#

Does that mean that they can also deal with nan as a parameter?

glossy inlet
#

that's probably the arg/return type

dawn palm
#

+1 respect to you @sick verge

glossy inlet
sick verge
#

Ah and it also only lists array and not what elements in the array are expected to be...

#

😅

#

That means nan is in arglist... But isn't that weird?

glossy inlet
#

It just means it won't throw an error immediately if you pass NaN to it

sick verge
#

Ah okay... That's where the trouble with nan not causing errors comes from

glossy inlet
#

The body of that function might detect the NaN and still error out. I don't automatically parse the function body

smoky halo
#

Ultimately a more conventional language with less quirks can utilise more IDE capabilities outside of the game. I think the workflow needs to be fixed so we can run the engine to an extent outside or alongside an IDE and edit on the fly anything, the speed improvement that would bring to development of mods would be enormous.

#

The issue is that its another custom language, which means tooling is going to be slow going again. If a well known language had been embedded instead then that could have been avoided as could all the development time on the language, instead they could have focussed on the API and interfacing. Still a bit disappointed they went this route but its better than SQF.

nocturne basin
#

@smoky halo i call that bs
thing is more: people do not care for IDEs
developed ArmA.Studio, stopped when there simply was nobody interested in it
could have added a shit ton of stuff up to the point where it would have warned you when you pass wrong arguments to an array

#

Enfusion, i could do the same thing

#

the moment i get the AST generator running, i can integrate in my already existing ArmA.Studio and could be done with it

#

but again then: nobody would be using it

#

so what would be the point in creating the toll afterall

smoky halo
#

But I think the reason for that is the cycle time of development is so large due to the limited way in which incremental changes can be done that an IDE seems pretty pointless.

nocturne basin
#

uhm ... wut?

dawn palm
#

must've been too hard for them to use the other half of the C(++) language that they're already using as config.cpp.

how tuff could it have been to simply apply a library of function()'s with laid down in concrete parsing rules?

rasberry pi's, arduino;s, lua, even half-life and it's friends all use the universal_syntax(), but (these guys) know (better i guess) } // end func

nocturne basin
#

no
do not mention LUA @dawn palm
there is so many better things in this world then that

dawn palm
#

sure, agreed.

nocturne basin
#

only reason to ever suggest LUA would be if you are restricted to C

dawn palm
#

if ( (its_universally(understood))=="syntax") {return half_of_them_are_out_of_a(job); }

#

too hard for them to develop a core library beginning with GetPlayer(), or even Get(player) and Get(object). It would require a bit of imagination.

scenic canopy
#

what's wrong with C? 😄

karmic niche
#

It literally has no pluses whatsoever 😛

dawn palm
#

haaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

nocturne basin
#

problem with SQF is the way it is build

dawn palm
#

there are no rules of precedence.

nocturne basin
#

because it was build for non-programmers to understand

#

there is @dawn palm

#

and that is pretty damn simple but not so easy to read out of the syntax

dawn palm
#

not the operators themselves. you have no way of knowing if they take an operand (unary) or need two (binary)

nocturne basin
#

indeed

#

but that is what i was talking about: syntax was not build for programmers

#

idea surely was initially that anybody could understand it

#

and they did a good job with that

dawn palm
#

op1 widdlefunc op2 or?
op1 widdlefunc ? or simply
widdlefunc ( a constant)

nocturne basin
#

as said: syntax has basic rule

karmic niche
#

how tuff could it have been

When I'm giving a lecture to the Python programmers (yup, I'm really going to programming conferences and meetups and giving lectures about how we created a new game mode for Arma in Python 😄 ) I give them a "guess what it does" quiz and show some SQF.
Now here's a quiz for you: guess whether they can guess correctly ;).

And then, the funniest part of that is the fact that the SQF code I'm using in my slides has been taken verbatim from the BIKI as an example of use of some command.
No comments on that. It's just sad.

nocturne basin
#

(((exp1) exp2) exp3)

#

unary and nular are exceptions

#

binary always works that way unless precedence says an operator should be executed first

karmic niche
#

And then the following slide is about why there is a 0.6 in that equation 😄

dawn palm
#
  • and - are unary operators in

rad +60;

and binary operators in

this + that;

nocturne basin
#

that looks more complicated then it is
python, C, C++, .. have more simple syntax
but for non-programmers, the upper thing is easier to understand

#

unless, filled with those notes 😄

#

because semantically, it says you what happens:
"get the friend value of the killer side with the victim side and check if it is < 0.6"
@woeful cliff probably could run it through is tool to output something better

#

thing is: i see beauty in SQF due to its approachability

#

i mean ... there is a reason why there is a shitton of people scripting without knowing what they do

karmic niche
#

The notes are yet another way to make the slide funny. Because the arrows show gradually, while I'm explaining everything and then it gets to them that the whole syntax is ieven more nsane with each next arrow appearing 😛

nocturne basin
#

and them being at least to some degree successfull without ever understanding that there even is a BIKI

#
    BINARYEXPRESSION;0;0;
        BINARYEXPRESSION;0;0;
            UNARYEXPRESSION;0;11;
                UNARYOP;0;4;side
                VARIABLE;5;6;killer
            BINARYOP;12;9;getFriend
            UNARYEXPRESSION;22;11;
                UNARYOP;22;4;side
                VARIABLE;27;6;victim
        BINARYOP;34;1;<
        NUMBER;36;3;0.6```
#

btw @karmic niche

dawn palm
#

no one, not even bis devs, put sqf on their cv's. It's a career path going no-where

nocturne basin
#

@dawn palm as said: not build for programming

karmic niche
#

SQF due to its approachability
Cool. Now tell me why it's not:
side (killer getFriend side victim < 0.6) but side(killer)

nocturne basin
#

only sad thing is that there is no second language besides SQF

#

unary take the right-hand instantly

#

binary run through the full checks

karmic niche
#

And why getFriend has something to its left and right whereas side does not!

nocturne basin
#

nular, unary, binary commands
simple as that

programmers should be capable of understanding the syntax when shown the actual BNF

#

or when explained that a nular is more or less a variable, unary is a modificator of an expression (essentially unary commands can only have variables, values or brackets on their right side, binary would be false syntax) etc. etc.

karmic niche
#

nular, unary, binary commands
Great. Now next question: how do I know that side is an unary command and getFriend is a binary command? :>

nocturne basin
#

definition

#

how you know getPlayer would be a function?

karmic niche
#

You really don't see anything wrong with that? 😄

dawn palm
#

you should not have to know the definition.

karmic niche
#

like ANYTING wrong? 😄

nocturne basin
#

that is simply a stupid question

#

there is no +, -, *, /, .... in SQF

#

there is a narrow set of instruction in the VM

#

need to meet some friend in the gym now

#

we can continue afterwards (already getting late 🙈 )

dawn palm
#

returnval function( arg,um,ents);

#

universal

karmic niche
#

I don't think there is a need in discussing it. You won't convince me that there is a better way of saying that X is a function than using it as X(...)

dawn palm
#

which incidentally is how arrays[]={work,,,,,,,};
bis have been unable to change the rules for them, even in sqf

karmic niche
#

I really, honestly don't understand people defending SQF's syntax. The only reason that I see is... that they've spent so much time with it that they are just starting to get used to it and don't see its flaws anymore.
Some kind of programmer's stockholm syndrome (not joking)

nocturne basin
#

@karmic niche that is the thing: sqf has nö functions but binary operators

#

I recreated sqf... I simply now have an understandin of the syntax itself that allows me to see everything detached from arma

karmic niche
#

@nocturne basin how to put it: I understand. But I don't care because... it makes no sense.

#

There are people who created Brainfuck. The language (still talking about Brainfuck here) itself makes sense if you look at it and realize that you are able to translate it 1:1 to C.
But it still doesn't make sense from a normal programmer's, coder's, modder's perspective. Sorry.

nocturne basin
#

Check the bnf
Makes sense

#

Car battery dead

karmic niche
#

Check the bnf for Brainfuck 😄

nocturne basin
#

Sqf is not brainfuck is the thing..

dawn palm
#

if you wrote a language in mongolian with reverse polish notation thrown in, someone would love it, and most would avoid it as completely undecipherable. that's how I see get player nearest object.

plus there's a layer of defensive hypocrisy here, most people writing missions understand mission.sqm and have to hand edit desc.ext. both of which have the exact same rules as config.cpp's and rvmats. so to introduce gibberish as the scripting language is just another layer of complexity, no-one, needs.

#

my dll btw, does indeed handle sqf syntax and checks it's validity because bis have been unable to change the rules for any syntax that produces constants. eg any mongolian written inside exec/evals, and all sqf written in model.cfg's have not changed. so i can confidently say i understand the parsing rules for that crap.

#

but, this convo started with enfusion, and it seems we have to live with mongolian version2.

#

so it's back to the same shit where no-one in their right mind will ever create an external parser/compiler for this nonsense.

karmic niche
#

I haven't seen the language yet but I've heard a lot of people saying that it actually DOES make sense. Isn't it the case?

dawn palm
#

sqf 'makes sense' too.

karmic niche
#

Oh, so it's that kind of "makes sense"? 😦

smoky halo
#

I wonder why they go through the hassle of creating another custom language. They have to code a new parser, document the language, maybe adapt some tools. instead they could just take something that is already there, documented, has great tools and tutorials. where would be the downside?

dawn palm
#

the downside is job loss.

#

and they prolly can't afford real coders.

karmic niche
#

Are you sure? But wouldn't it make sense for the higher management to cut costs on language development and hire normal people instead? (sarcasm not intended :P)

dawn palm
#

well if I'm taking my advice from an 'expert' who's sole interest is in preserving his carreer, I guess they get bad advice.

smoky halo
#

the guy coding and developing that new language could easily work on something else.

dawn palm
#

it's almost laughable if it weren't so damn pathetic. they moved from sqs to sqf and introduced the C ideas of {braces}; but just could not follow thru.

karmic niche
#

I'd understand the "we can't afford nor have we time to make a full rewrite" argument.
But then they are already rewriting everything to enfusion...

smoky halo
#

yep, just my point

dawn palm
#

well i was being sarcastic because it makes no sense at all to keep pursuing mongolian when they're dev cycle would take a quarter of the time, and have, as you've pointed out, real tools ready made, and off the shelf.

smoky halo
#

maybe they are burned childs due to the failed JAVA integration experiment they did in ToH times

dawn palm
#

if you're going to invest let's say, a conservative 5 million euros in this enfusion saga, spending $100 on an open source compiler is cheep. They did it for config..cpp's thieving open source C++, but functions() must've been too hard for them.

smoky halo
#

they did not. They implemented it themselves. just took the syntax as inspiration

dawn palm
#

i learn something new every day.

#

but they've had no problem using outside source for lzss eg, lzo eg, and even those wrp quadtrees. It can;t be that tuff to even write a c functon compiler, surely?

smoky halo
#

wrp quadtrees are also their child

pearl beacon
#

well I can imagine how Java ruined their experiences lol

#

but as said, I also don't see a reason developing their own is better than taking something that already exist and people know

#

they could even support more languages with an abstraction layer

#

I bet we'd see a lot more being done, and faster

woeful cliff
#

@nocturne basin Not really If the friendliness of the side of the value stored in the variable victim towards the side of the value stored in the variable killer is less than the number 0.6

sick verge
#

Wait a second... Are you saying you'd like BI to keep SQF for ArmA 4 instead of giving us a new (hopefully better) scripting language @pearl beacon ?

pearl beacon
#

SQF isn't bad as a language itself, just missing a few things, like array access

glossy inlet
#

readies the shotgun

#

Missing a few things like everything that Intercept CBA add's 😄

pearl beacon
#

yeah

glossy inlet
#

And if BI would have time all these commands could be easily integrated.

pearl beacon
#

sure new one might be better, I am just saying it would be way easier for them and modders to use some language that's established

glossy inlet
#

SQF won't get faster tho :U

pearl beacon
#

it probably could though 😛

#

compile it 😄

glossy inlet
#

SQF is compiled :u

pearl beacon
#

not enough

#

it's interpreted, no?

glossy inlet
#

optimizing stage is missing

sick verge
#

If they do the same thing with ArmA as they did with tom then a new scripting language will. Be seriously awesome as the community can change literally every aspect of the game

pearl beacon
#

with tom?

tiny path
#

take on mars

#

(i think)

vague shard
#

Take on Mars/Carrier Command - Enscript

pearl beacon
#

ah

#

is there any good documentation on that?

sick verge
#

Haha I was asking just that earlier this day ^^

#

But not really as it seems... The only source is a post in the forums of a device stating that the whole game is written in the script language which means that everything in the game can be changed with the scripting language

vague shard
#

just search for the posts from DRAM

#

they did release some docu and modding "tools"

nocturne basin
#

writing a language stack is not that hard @smoky halo
can be done by a single person in roughly a week

#

design however, is a different story

#

and enscript looks like a simple variant of C++

smoky halo
#

@nocturne basin might be the case but as I said there is more to it like documentation and tutorials and tools etc. And most important: why even bother?

nocturne basin
#

the documentation you would have to write is literally the same for any language

#

documenting that the * operator is executed before the + operator etc. can be done quite easy

#

in not even a few hours

smoky halo
#

but it is already there for existing languages. I am not talking about comref

#

I am talking about the language syntax and features

nocturne basin
#

that is what i just said

#

documenting that can be done fairly quick

#

and has to be done in the designing

#

which will take more then just a week

smoky halo
#

but why even doing it?

nocturne basin
#

for one particular reason: you can design it the way you need it

smoky halo
#

what very specific need BIS could have?

nocturne basin
#

for starters: spawn

smoky halo
#

ok, now we getting to a point

nocturne basin
#

and according to the linked forum post, enscript is more "low level" so i would guess that their objects (like player) now literally get linked to the actual player.<method> stuff

#

unlike eg. using lua, this would also be a pro-selfmade

#

though .. you probably could do the same thing in lua etc.

#

thing is: writing your own language is not that much of a task ...

#

using an already existing one however will force you to live with the problems that exist

#

thing is: i would at least have used eg. the LUA VM but with a custom language ontop (but that is because the LUA VM can be considered as damn stable and LUA as a language is just horrible)

karmic niche
#

writing your own language is not that much of a task
What about writing your own GOOD language? 😉

nocturne basin
#

@karmic niche created SQF-VM
could design one ... but tbh ... i do not see much of a point as nobody would ever use it

#

not even me ...
simply because i have no use currently for scripting languages

karmic niche
#

Hint: if it was that easy, we'd have thousands of programming languages active right now @nocturne basin

nocturne basin
#

we have @karmic niche

karmic niche
#

Active = more than 20 users, lol

nocturne basin
#

usage does not tells you anything about actual languages written

#

as i said: i could create one, but nobody would ever use it probably

karmic niche
#

Stack (Overflo): GOOD language

nocturne basin
#

unless it is some obscure russian top-secret community project for a weirdo game

#

define a "good language"

#

all serve a specific purpose

#

most languages nowadays are still in use simply because they always have been used

#

eg. JAVA ... there is NO reason to let this monster continue to live

#

GO is another example ... it would never kicked off that much if it wasn't google behind

#

writing a language is simply not hard
getting people to use it is a different story

#

in my head right now, i would not have any scripting language that allows for easy threading (as simple example of what i could write)

smoky halo
#

I still dont get what is the benefit of designing a new language. What would be wrong or a problem for BI just using the python language?

karmic niche
#

While you you are partly right, you also have to take into account the ease of use of a given language (i.e. no arg1 command arg2 for example), performance of the resulting code, how powerful it is do stuff like extending other people's code (polymorphism, inhertitance), etc

nocturne basin
#

performance can be improved, for starters that is completly unimportant

dusky dune
#

What would be wrong or a problem for BI just using the python language?

#

This tbh

nocturne basin
#

python is crap, just "better" then lua ..

dusky dune
#

I don't even have issues with SQF because it's what I learned

karmic niche
#

python is crap
End of discussion 😄

smoky halo
#

there will always be people saying they dont like a certain language

dusky dune
#

But I really would much prefer to have a 'real' language so i don't need to learn a language that i would only ever use within arma

smoky halo
#

existing or new, dosent matter

dusky dune
#

And looking at what i've seen for Enscript... it looks like the same issues coming

#

Sure cool you can learn some basic concepts

karmic niche
#

There are actually two problems with Python (and I'm saying that as someone who writes Python for a living)

  1. Its speed
  2. It's impossible to sandbox without using things like PyPy
dusky dune
#

But you're still learning a language that is purely for Arma purposes and really doesn't carry over well

karmic niche
#

The speed doesn't matter, compared to SQF though 😄

nocturne basin
#

you always would have to "learn" the language because it is not the language but the full package you have to learn @Adanteh#0761
C and C++ is dead-ass simple if broken down just to syntax (all other languages are too ... unless we talk about assembly)

smoky halo
#

replace python with any existing language. of course you will always find problems but I think that is still the case with the custom language

nocturne basin
#

as said: benefits of writing your own stack (not language at all though) is that you can adapt it to your needs

#

personally, i would like to see squirrel

#

but ... enscript is fine

smoky halo
#

you can still build your own stack around an existing language

karmic niche
#

Benefits of using a well established language:

  1. It works
  2. It works faster than your language that you and your father in law just invented in your backyard. Yes it does. If yours was faster, you'd be rich and not talking to us right now.
  3. You have a gazillion of libs ready
  4. You have a gazillion of doc pages and blog posts about it
  5. Almost any problem that you will have using it is already solved on Stackoverflow
  6. You have hundreds of thousands of people who already know that language and can start modding it RIGHT NOW
  7. Even if you don't know the language, you learn it and half a year later, you can get a well-paid job with your newly gained knowledge

Beat that @nocturne basin !

nocturne basin
#

you forget the downsides
and that are fairly simple to sum up:

  • Integration could create problems
  • Missing features that are mandatory for what you plan to do
  • You have to live with the quirks of the language
#

and your second argument is completly BS ... people use python for god knows what reason ... and java ... and ... and...

#

for BI, i can imagine that they want to limit file access and do not want modders to be capable of just taking some OpenGL python library, import it and render some idk ... aimbot directly in the script language, undetectable because it is the game itself that renders that stuff and hosts it

#

you forget all those aspects

#

we do not talk about some buisiness application here
we talk about a public modding interface

#

besides ... i already created a language (that compiles to SQF though) ...
i would not do it the way i did back then, but i already did created one

karmic niche
#

So, as I said previously, you are partly right.
- Integration could create problems
Yes, but implementing an interpreter that would do everything that your company requires would create much more problems. [Yes, you can write an interpreter in a week. You CAN'T write an interpreter that will be bug free (at the Python/Ruby-level), fast and secure in a week - surprisingly, those take years to be completed]

- Missing features that are mandatory for what you plan to do
Again, still less time than implementing that from scratch

- You have to live with the quirks of the language
Then you choose the language whose quirks you like. Good thing that SQF does not have any quirks whatsoever and everyone loves it ;).

people use python for god knows what reason
This is low quality bait.

i can imagine that they want to limit file access (...)
This is the first fully valid argument. It's a hard problem in languages like Python (but you can fix that using PyPy sandboxing [any BI dev reading this?]). That's the reason you then embed languages like Lua or JavaScript (not talking about NodeJS) which don't/didn't have I/O operations implemented so they are safe.

just taking some OpenGL python library
This is not possible if the language has no I/O routines or is using sandboxing. Just in the same way as SQF commands are the only way to do anything, you'd then have exposed arma commands that would be (implemented in C/++) that would be called by the language - literally the same way as it's done now (hence Intercept can access those).

nocturne basin
#

You CAN'T write an interpreter that will be bug free (at the Python/Ruby-level) you can ...
there is literally a dozent parser & lexer generators ... all well tested and "bug free"

Again, still less time than implementing that from scratch
Mandatory missing feature is a mandatory missing feature

and sandboxing would also require to make the access to objects etc. available to the sandbox

karmic niche
#

and sandboxing would also require to make the access to objects etc. available to the sandbox
No. Not this kind of sandboxing. I suggest you to read about PyPy sandboxing. Not because I'm disrespectful towards you but because it's much better explained on their page than I could possibly do here.

Mandatory missing feature is a mandatory missing feature
Depends on what you mean by "feature" because I can't think of anything that would be a language feature in any sane language that would be missing here.

all well tested and "bug free"
I'm talking about the whole language interpreter and one that can do something more than just perform addition and subtraction. And in less than 10 seconds, I should add.
Again: if it was that simple and easy, the Python 2 -> Python 3 rewrite would take two weeks (since the Python 2 interpreter is already working, and you just need to change 20 lines, right?), not YEARS.

#

I'm starting to think that you're changing the scope of the discussion between the phrases, as you see fit to better match your arguments.

First you talk about missing features, which would hint at a huuuuge ecosystem, since none of the existing languages would have that one missing feature you wanted.
And then your next argument is about parser and lexer generators, which obviously are only a tiny little speck, comparing to everything else that has to be written and debugged, for embedding to work.

nocturne basin
#
personally, i would like to see squirrel
but ... enscript is fine``` just responding to you and already admitted that i would like to see an already existing language that is called squirrel
karmic niche
#

Okay, peace 😃 👍🏼

nocturne basin
#

only thing though @karmic niche
you should try to defend, then you might find arguments that are actually worth considering 😉
there is never that one truth

woeful cliff
#

I'm fine with their own new scripting language in the Enfusion engine

#

In direct comparison, we can say Enforce Script is much faster and more flexible.

smoky halo
#

a language itself is not fast or slow btw ^^

woeful cliff
#

No need to be pedantic

smoky halo
#

I am sorry. wanted to mention that earlier and you became my victim now 😉

pliant lynx
#

always good to see the occasional programming rant in this channel, cant wait for the next one.

dawn palm
#

Looks like C++ http://i.imgur.com/Npn9pEB.jpg

if that code is so called 'enscript', then the suggestion that it's 'like' sqf, or 'similar to sqf', is rubbish and 3/4ths of this conversation has been nonsense. What i'm seeing is c++ structures (classes) with stdlib calls endemic to the entire c family (such as itoa) in front of me. There is, a merciful god after all.

This might, indeed, be a 'new language' for bis sqf scripters, but anyone who can code in c/perl/php/c++ or c# or any config.cpp can read that syntax instantly. And, it's the syntax with it's ruleset that's important here.

Someone should explain to me how a person already familiar with config.cpp, c++ structures and inheritence could consider sqXshit a 'better' alternative when they already know 3/4ths of the enscript programming language that's in front of them.

AND, the very best news of all, is that bis have been unable to break or change the rules of config.cpp's since ofp times (apart from smart additions like class externs;), so this means they'll be unable to bugger up enscript or any of the tools we might write for it.

dapper pivot
#

Python wouldn't be as good as Enscript, nor would Lua or Squirrel.

#

Enscript is designed to integrate with C++ closely (which none of the popular script engines are) and is also capable of running at C++ speeds.

#

I don't know if that was intended or accidental, but that's what happened.

#

In fact many things in it may compile to faster-than-C++ because of the lack of aliasing issues.

dawn palm
#

if you know all this why did you let the above conversation continue?

#

2 minutes of your time would have saved exasperation.

#

you could also have supplied some examples, which the original questioner was asking for, without effort

dapper pivot
#

I was asleep?

dawn palm
#

you've done this before, to _SCAR, two days of agonising with his code for a problem that has existed in eden imports since arma3 came out., and you THEN supply code to fix the issue that you've had for ages.

dapper pivot
#

I solved the equations to do that and wrote the code only after _SCAR mentioned it.

vague shard
#

@dapper pivot thanks for the insights!

dapper pivot
#

By the way, last time I played with DayZ it was emitting Enfusion bytecode dumps.

#

You can even write your own enfusion code (file patching works in DayZ at the moment), and the engine will compile it to bytecode and dump out the .txt

#

I've sadly had too much work to play with it much but you can replace DayZ's equivalent main() function and write your own engine code that takes control even before the main splash screen starts.

#

There's also a CHM sitting in the DayZ files with all the help for the internal functions.

#

It helps to have toyed with ToM a bit too since some of the engine features and file formats are shared with it.

dapper pivot
#

Here's some Enfusion bytecode:

Math::Clamp()
000312:0x0002b5dc:    cmpf    value, min
000312:0x0002b5e8:    bge    0x02b5fc
000314:0x0002b5ec:    move    ret, min
000314:0x0002b5f8:    rts
000317:0x0002b5fc:    cmpf    value, max
000317:0x0002b608:    ble    0x02b61c
000319:0x0002b60c:    move    ret, max
000319:0x0002b618:    rts
000322:0x0002b61c:    move    ret, value
000322:0x0002b628:    rts
000322:0x0002b62c:    rts
#

Which is from:

    static float Clamp(float value, float min, float max)
    {
        if ( value < min )
        {
            return min;
        }

        if ( value > max )
        {
            return max;
        }

        return value;
    }
#

It compiles everything at the start of the game into that bytecode, though there are ways to dynamically compile during the game too.

glossy inlet
#

that is not directly assembler right? It's still being interpreted?

dapper pivot
#

I don't know, it's possible that the engine JIT's that.

glossy inlet
#

I haven't seen rts in x86 assembly yet.

dapper pivot
#

Yeah, the above code isn't x86.

#

It's BIS' own intermediate representation. I don't know if they just interpret that bytecode or if they then JIT it into x86 assembler.

#

But it's trivial to JIT that kind of IR into ASM.

glossy inlet
#

So then it's probably still interpreted like SQF Assembly

dapper pivot
#

Maybe, but it's reasonably simple to JIT it (as in 1-3 weeks work).

#

Simply JIT'ing it will make it run very roughly 2-4 times faster, and then the main difference between it and something like C++ is the level optimisation the compiler performs.

glossy inlet
#

I can already see how that would be alot faster than SQF.
SQF Assembly is a bunch of classes with virtual functions in an array.
This looks like it's.. yeah bytecode that the engine just iterates over with a switch case (probably something more complicated than that :D)
And SQF Assembly is pushing everything into half a dozen instructions.
where Enscript bytecode seems to have a far bigger and more specialized instruction set

dapper pivot
#

Yeah, there's opcodes for vector operations too.

#

Which you could emit SIMD assembly for in a JIT.

#

I'd be pretty shocked if it didn't either do JIT already or if they didn't have plans to do it.

#

The way inheritance works almost seems like they wanted to be able to just shove JIT'ed Enfusion methods into C++ vtables which would kill the call overhead too.

karmic niche
#

Isn't having JIT on that user-provided script potentially insecure as in: couldn't you obtain code execution by crafting the script in the right way?

#

Or are there ways to somehow have full control over memory accesses while JITting the code?

glossy inlet
#

Btw.. JIT.. Don't some AV programs go crazy on that? I mean.. Program is writing his own executable code that the AV previously couldn't scan and then executes that?

dapper pivot
#

It depends on how you do the JIT'ing, Java had issues with that because it allowed unsafe code and then tried to verify that none of the code was unsafe.

#

And also most of the code is compiled from .pbo's, which you would assume wouldn't be unsafe.

nocturne basin
#

@dawn palm told at the very begining just that + that We need to wait for arma 4 to actually know the specifics

karmic niche
#

Are you sure? Downloading any mission from the internet would then be potentially be the same downloading an exe from a semi-unknown source

#

I mean: I wouldn't assume that code inside PBOs can be considered safe by default

nocturne basin
#

I kinda expect it to be interpreted and no JITing at all

karmic niche
#

On the other hand, now that I think of it, web browsers are jitting their JS code and are still (somewhat :D) safe so that may be possible after all...

dapper pivot
#

I don't really know what AV packages would do, all you're doing is a Win32 memory allocation with the executable flag set (then you write some data into it as you would any other memory block and jump to it).

#

Many copy protection systems do the same thing.

#

Yeah, the only JIT engine that I recall having those issues was Java, and that was because they tried to use a verifier rather than designing it so there's nothing to verify.

dawn palm
#

it would make no sense to do anything less with this 'jit code' except to binarise it. If not, then using an interpreter on it, vs, and interpreter on sqf text, is much of a muchness.

dapper pivot
#

You mean compile it before the game starts? JIT works by assuming a function is called many times.

#

Chrome for example only JIT's a function once it observes that it's called multiple times.

nocturne basin
#

Using not the sqf assembly is already an improvement that should bring speed beyond limits

dawn palm
#

yes,ok, it's going to be faster. frankly, big deal.

#

the idea behind jit is to provide uniform platform support irrespective of the actual cpu's instruction set.

dapper pivot
#

For Enforce it had to be faster because the idea was to write 100% of the actual game in the scripting language (leaving only very basic primitives in C++).

#

In DayZ they abandoned that somewhat (simulation= controllers and netcode, etc are still in C++)

#

But in ToM for example even the netcode is in the scripting language.

#

It's be pretty neat if they kept that for Arma 4; because we could literally mod the netcode to optimise it or add things like ACRE data channels.

nocturne basin
#

@dapper pivot just means less engine based stuff
There still is a gameengine running in the background where they implement stuff like netcode etc
Just the logic now finally will be 100% modable

dapper pivot
#

Netcode could be in the scripts.

#

(Like it was in ToM)

nocturne basin
#

Can you send Examples? I highly doubt the actual netcode stuff is written in enscript

#

Creating custom packages maybe but the actual netcode? Never

dawn palm
#

my goodnees, how easily we digress from using and understanding the c code and functions into something we can do nothing about.

#

it's irrelvant if bis use jit, spaghetti with onions, or mongolian shepherds pie to run the engine, what we have is encsript and a damn good idea would be to spend some energy in understanding and docmenting it.

dapper pivot
#

//! MULTIPLAYER: See comment in GameEntity class
void Vehicle_Controller::OnNetUpdate( PacketOutputAdapter output )
{
output.WriteInt( netUpdateFlags );

if(netUpdateFlags & VCF_CONTROLS)
{
    output.WriteFloat( VInput_mX );
    output.WriteFloat( VInput_mY );
    output.WriteFloat( VInput_mW );
    output.WriteFloat( VInput_aF );
    output.WriteFloat( VInput_aB );
    output.WriteFloat( VInput_aL );
    output.WriteFloat( VInput_aR );
    output.WriteFloat( VInput_aU );
    output.WriteFloat( VInput_aD );
    output.WriteFloat( VInput_sF );
    output.WriteFloat( VInput_sB );
    output.WriteFloat( VInput_sL );
    output.WriteFloat( VInput_sR );
    output.WriteFloat( VInput_sU );
    output.WriteFloat( VInput_sD );
    output.WriteFloat( VInput_actJump );
    output.WriteFloat( VInput_actElev );
    output.WriteFloat( VInput_actRele );
}
#

That's the netcode for a base vehicle in ToM, "output" is a kind of stream object.

karmic niche
#

I would first like to hear some information that there will, indeed, be an Arma 4 so that there is a point in actually understanding and documenting Enscript 😉

dapper pivot
#
//! MULTIPLAYER: See comment in GameEntity class
bool Vehicle_Controller::OnNetMessage( PacketInputAdapter input )
{
    int dataFlags = input.ReadInt();

    if(dataFlags & VCF_CONTROLS)
    {
        if( ownerVehicle.IsControlledByRemotePlayer() )
        {
            VInput_mX = input.ReadFloat();
            VInput_mY = input.ReadFloat();
            VInput_mW = input.ReadFloat();
            VInput_aF = input.ReadFloat();
            VInput_aB = input.ReadFloat();
            VInput_aL = input.ReadFloat();
            VInput_aR = input.ReadFloat();
            VInput_aU = input.ReadFloat();
            VInput_aD = input.ReadFloat();
            VInput_sF = input.ReadFloat();
            VInput_sB = input.ReadFloat();
            VInput_sL = input.ReadFloat();
            VInput_sR = input.ReadFloat();
            VInput_sU = input.ReadFloat();
            VInput_sD = input.ReadFloat();
            VInput_actJump = input.ReadFloat();
            VInput_actElev = input.ReadFloat();
            VInput_actRele = input.ReadFloat();
        }
#

That's the netcode that receives it on the other side.

nocturne basin
#

That looks like a Bad idea

dapper pivot
#

Note that IsControlledByRemotePlayer is ToM's "locality"; if the object isn't local it reads the values but throws them away.

#

Nah, it's an awesome idea, because if I write some entirely new kind of entity (like an ACRE radio) I can just write the raw netcode packets.

nocturne basin
#

Without priorities

#

Meaning that everything is transfered at max prio AND probably backed up with tcp

dapper pivot
#

Oh, by stream I didn't mean TCP stream.

#

That PacketInputAdapter collects the bytes that your entities want to transfer over the network, how it transfers them is up to the C++ side of the engine.

nocturne basin
#

Still means it crunshes up everything at same priority

dapper pivot
#

Hmm? That's only part of the code, your can write your netcode as cleverly as you want.

nocturne basin
#

Shooting > Position > angle > Animation > Sound >...

glossy inlet
#

It doesn't mean that at all

#

It crafts a position update packet for the vehicle. That's what you just saw

#

Doesn't indicate that packets priority at all

dapper pivot
#

Yeah, that's just ToM's implementation for the base class controller, there's a layer on top of that.

karmic niche
#

The C++ code could see that you're transferring 1MB of data and split it into chunks and mux it with other, high-priority packets, for example

nocturne basin
#

If I understood correctly, that is what is the way to Code networking for enscript

dapper pivot
#

Your code has control of when messages get sent, too:

void Vehicle_Handler::RP_Dock(int dockNum, int otherID, int otherDockNum, bool isRemoteCall)
{
    if( IsCallToLocal(isRemoteCall) )
    {
        Dock(dockNum, otherID, otherDockNum); // Call on local
    }
    
    if( IsCallToClients(isRemoteCall) )
    {
        if( CanCallRPC() )
        {
            //if local computer is server: send message to all clients
            PacketOutputAdapter adapter = RPCallEx(RPC_DOCK);
            adapter.WriteIntAsHalf(dockNum);
            adapter.WriteInt(otherID);
            adapter.WriteIntAsHalf(otherDockNum);
        }
    }
}
nocturne basin
#

And it is plain simple
Which is good and Bad
If there is no way to Set the priority it will be filled to the Rim by bad written Missions and mods

dapper pivot
#

We have no idea what a mission might look like though.

#

It may run in a parallel script thread that has no access to these kinds of things.

#

(There's commands in Enfusion to start up new script environments too...)

#

DayZ missions are just empty placeholders to keep the scraps of RV that are left happy, for A4 I don't think we could guess what a mission might be.

#

Bad mods will have the potential to be reeeeally bad, though, so you're right in that respect. 😉

#

But good mods will be insane (in a good way).

#

If controllers and netcode stay in the scripting language someone like RHS could be making DCS level accuracy tanks with completely accurate radar/fire systems.

nocturne basin
#

Indeed... Still I am concerned but that does not really matters in the end

We will see if arma 4 will be multiplayer hell or not 😄

dapper pivot
#

Even the keyboard/mouse input is just handed to the scripts.

#

So if you want to make your own completely unique vehicle like a hot air balloon or a submarine with accurate hydroplanes with their own key bindings you can.

woeful cliff
#

@glossy inlet @dapper pivot I doubt they JIT it into assembly. Scripts need to be serializable so they can be resumed exactly where they left off when saving a game

feral nova
woeful cliff
#

@feral nova What's the path?

feral nova
#

im using a hard drive partition like usual xD

#

same setup as i usually use, never had this issue.

woeful cliff
#

@feral nova But what's the path you're trying to extract to? Clearly it contains symbols the tool doesn't like, or you don't have proper permissions

sweet stratus
#

Who doesn't have proper permissions for their drive they set up

#

I mean that's just a dumb judgement, I would think that would be rather impossible to fuck up

#

and isnt the case

feral nova
#

I have no manually taken ownership of the drive partition, I litteraly just made, and that isnt the issue.

dawn palm
#

win10 has some peculiarities about the root:\ of drives. it doesn't like files scribbled in there.

feral nova
#

I took ownership of the partition, that shouldnt be an issue should it ?

dawn palm
#

it's obviously? trying to make p:\a3\3den

#

IF you are running as admin, the P:\ drive itself does not necessarily exist.

dapper pivot
#

@woeful cliff I don't recall ever seeing any way to suspend a script (there doesn't appear to be anything like waitUntil, sleep, etc) so if you can't suspend a script that isn't an issue.

dawn palm
#

only wild guessing here Mr Banks but the guess is that the equivalent of init.sqs does housekeeping when it fires up (via a savegame of course). I would imagine that the code would allow you to save variables such as state=1,2,3,4 etc and you can read that back on startup

dapper pivot
#

There's an event that entities get on load/save but they don't actually save anything in that event, so perhaps the engine takes care of that.

dawn palm
#

ie, if you've already picked up the blue hammer, the pencil, and created the stock for a gun......

feral nova
#

So it seems like it was an issue extracting to the root drive, which is wierd, i have not had that issue before.

dawn palm
#

you altered permissions did you?

feral nova
#

tried with and without

dawn palm
#

the cause makes sense if you've created a new p: drive. win10 will set defaults

feral nova
#

I tried manually taking ownership of the drive which should give my user full permissions right ?

woeful cliff
#

@dapper pivot In the snippet I posted there's a Sleep()

dawn palm
#

apparently not

woeful cliff
feral nova
#

I might go back to win7 tbh, win10 is do restrictive

dawn palm
#

win10is very fussy about the root of drives and attempts to protect them.

#

but since i have no reason to use win10 here, i don't really know what i am talking about.

dapper pivot
#

@woeful cliff That looks like test code. There's a Sleep in ToM but they only ever use it in a spawned background thread.

woeful cliff
#

@dapper pivot There are functions that calls code and the docs claim you can use both Sleep and Wait in those

#

The call creates new thread, so it's legal to use sleep/wait

#

And they have to save script states in saves, or saves would break the game state

dapper pivot
#

Threads aren't used like they are in Arma 3; in ToM it only ever creates them for non-mission related operations.

hallow rapids
#

so, do we have an opinion about the new scripting language already? 😛

#

I do hope we aren't forced into OOP entirely

scenic canopy
#

I've had no issues with extractpbo and/or arma3p on any of our win10 build machines at least @feral nova

#

but be aware that subst drives might not be in sync across different desktop sessions like mikero mentioned

woeful cliff
#

@dapper pivot So are you suggesting that missions will now have to rely on creating timers and use callbacks to perform actions over time?