Jump to content
Sign in to follow this  
seannybgoode

Requesting a clear status update on Java support for Arma 3

Recommended Posts

As both a huge Arma fan, and a Java developer, I was absolutely elated to hear that Java would become the supported language for Arma 3.

However after reading here that the Alpha would not support Java, I'm extremely disappointed and confused as to the state of Java in Arma 3.

Hi, the Alpha will not sorry to say. We are not happy to include it until we can support it with updates and fixes.

So if Java is not going to be included in the Alpha, can we get confirmation that it will be included in the release version of Arma 3?

SQF is an awful language to work with. It's barely supported as it is, and compared to java, there is about 0.1% as much info about sqf as there is about Java. Worse still, there is virtually no documentation on the SQF language.

Here's a great example of why SQF is just bad. Trying to learn how to script in SQF? Click on any of the links, they're all dead. I'm not trying to be harsh here, but I really want to get it across to Bohemia that the Java replacement of SQF is not only good for this community, it's crucial for the growth of the genre. Prioritize Java support for Arma 3.

Share this post


Link to post
Share on other sites

SQF will not be replaced by Java, really. SQF is still the main language for Arma and scripting commands that are being added are in sqf. At thend I'd be very surprised if Java replaces sqf. I also don't know where you have "barely support" from, as sqf is the main language within Arma (and only within Arma).

Also, sqf is an incredibly easy language to work with. You have very basic if statements, while loops, for, etc, everything you have in language much like Java, but the rest is just ingame commands you can view via BIKI.

Here's a helpful link:

http://seit.unsw.adfa.edu.au/coursework/ZEIT2305/Resources/SQF_Tutorial/basic_sqf.HTML

//Edit

Okay to be fair I might've sounded a bit offputting there :P

I have never heard anything of Java replacing SQF at all and seeing as BI still scripts things in SQF I see little reason why Java would replace SQF. I wouldn't mind it replacing sqf (gives me something new to learn, I just never find the motivation to start ._.), but it's just not going to happen really.

Edited by tryteyker

Share this post


Link to post
Share on other sites
We have not abandoned Java, and we want Object-Oriented scripting.[/Quote]

It sounds to me like Java will be (or at least should be) replacing SQF. SQF is a homebrew scripting language and it's *NOT* object oriented.

I also don't know where you have "barely support" from, as sqf is the main language within Arma[/Quote]

A few forum posts and almost zero documentation is barely supported in my books. Java has thousands and thousands of developers working on it plus a huge API library and excellent documentation. But this is all moot, this thread isn't about Java vs SQF, it's about asking Bohemia for a clear position on where they're at with Java support. *edit* Another point - It's impossible to even get syntax highlighting setup. It's sooooo under supported it's not even funny.

I wouldn't mind it replacing sqf (gives me something new to learn, I just never find the motivation to start ._.)[/Quote]

To be fair, if sqf is the only language you know, you are seriously missing out. I would take almost any language over SQF. Hell I'd even prefer Objective C over sqf.

Share this post


Link to post
Share on other sites
It sounds to me like Java will be (or at least should be) replacing SQF.

Its not in until further notice.

Sidenote: SQF is quite alright for what it is supposed to do, and a lot easier to learn than java. Tutorials aren't really needed, just take an example script so you know the syntax, keep this list around and you are good to go.

EDIT: Also topics in this list(scroll down) have some good examples, and tell you about some engine quirks.

Share this post


Link to post
Share on other sites

SQF is so simple. It can be learned literally in 10 minutes.

Share this post


Link to post
Share on other sites

SQF isn't the only language I know, I am learning Python (been jumping between C++, Java etc), it's just that I don't have motivation to continue with these things really :(

Well, for syntax highlighting, use Notepad ++ with this sqf syntax highlighting (includes autocorrect)

As for "little documentation", you have a whole wiki at your disposal, and you also have an extensive documentation ingame accessible via F1. That is absolutely enough.

https://community.bistudio.com/wiki/Main_Page

Share this post


Link to post
Share on other sites
SQF isn't the only language I know, I am learning Python (been jumping between C++, Java etc), it's just that I don't have motivation to continue with these things really :(

Well, for syntax highlighting, use Notepad ++ with this sqf syntax highlighting (includes autocorrect)

As for "little documentation", you have a whole wiki at your disposal, and you also have an extensive documentation ingame accessible via F1. That is absolutely enough.

https://community.bistudio.com/wiki/Main_Page

The last time I tried the notepad++ sqf extension, the extension hadn't been updated to support newer versions of notepad++.

---------- Post added at 23:54 ---------- Previous post was at 23:46 ----------

And like I said, this thread isn't about SQF, it's a request for an update on Java support. Whether or not SQF is awful (it is, but that's just IMHO), is of no consequence. There's a million reasons why Java is a better option than a homebrew scripting language, but it's not about that either. Presumably, the folks at BI agree that an Object Oriented approach is the way to go, or else we would not be having this conversation.

I just want a status update on Java.

Although if I decide to do any SQF work I'll definitely try the Sublime text SQF Bundle. Thanks for the link. And thanks to the other folks who've posted SQF resources. I sincerely hope I will not need them.

Share this post


Link to post
Share on other sites
I just want a status update on Java.

Like I said, its not in. If it was we would have heard *something* about it, and BI definitely would have bragged about it in the 'we are awesome for allowing modding in the alpha' stuff we heard recently.

Don't worry, you will get used to SQF very quickly, especially since you already have programming knowledge.

You are not the first to complain about the lack of object orientation in SQF, though I do wonder: What do you have in mind? ArmA scripting projects that could take advantage of it are rare as far as I can see.

Share this post


Link to post
Share on other sites

You are not the first to complain about the lack of object orientation in SQF, though I do wonder: What do you have in mind? ArmA scripting projects that could take advantage of it are rare as far as I can see.

Personally speaking, I'm interested in writing an AI that will be smarter and deadlier, and faster (performance wise) than anything done thus far. I'm looking at processing AIs in parallel on GPUs using JCUDA, among other things. Imagine a server with a couple of GPUs able to handle hundreds or even thousands of instances of AI units without so much as a hiccup. I think Arma players would be up for the challenge too.

Honestly though, all of the major Arma mod projects would benefit from an OO approach. Java will make code more reusable and more readable. That, and I think java is probably a whole hell of a lot more optimized than SQF. Complex java programs will probably be a lot less taxing on servers than complex SQF scripts. Plus having access to stacks, queues, trees and other advanced data structures will allow for more nimble programming. Java being a strong typed language will prevent errors, and java being a safe language will force people to write better code. Hell even network sockets are crazy easy in Java. You probably won't see much of a difference with simple mission scripts, but complex projects like A.C.E. and A.C.R.E. will fare much much better. The stuff people will be able to do will be very impressive if the platform is open enough.

Share this post


Link to post
Share on other sites

sounds good seany, please make a surrender ai script if you have time.

Share this post


Link to post
Share on other sites
sounds good seany, please make a surrender ai script if you have time.

Heh, not a bad idea actually, but you can start making requests once I actually have a working prototype.

Share this post


Link to post
Share on other sites
I'm looking at processing AIs in parallel on GPUs using JCUDA, among other things.

Do you have any non-trivial experience with CUDA? Or AI? More importantly, both?

CUDA isn't some magic dust that makes everything go faster. There are limitations and trade-offs made by GPUs, otherwise they would have replaced CPUs.

Honestly though, all of the major Arma mod projects would benefit from an OO approach.

The myriad forms of OO (of which Java's is only one rather limited example) are a kind of organization and reasoning about a program and its data. I was under the impression that the programming community at large has decided that OO has its place, but it's not a silver bullet. More specifically, I refer you to the Expression Problem.

The bigger "problem" with mods is that there are a lot of amateur programmers working on them as well. This is something to be encouraged, but it also means that the code isn't the nicest; I don't know whether some form of dispatch in there will make any difference.

Java would be handy, but for reasons completely unrelated to OO.

Share this post


Link to post
Share on other sites

I would also hope with more detail on support with Java comes with info on improvements to the API. The Java API in ToH looks like something a first year CS student would write. There are no generics, annotations, or proxies that can address cross cutting concerns like logging or setting up mission contexts. They expected you to cast parameters from Object, why bother with Java if you're going to ignore type safety and cast everything yourself. They don't use Futures or a thread executor and have commands implement Callable. Invocations of jcall were so slow I wouldn't be surprised if the JVM it self wasn't started up until it was jload was run.

---------- Post added at 05:13 AM ---------- Previous post was at 05:02 AM ----------

Do you have any non-trivial experience with CUDA? Or AI? More importantly, both?

CUDA isn't some magic dust that makes everything go faster. There are limitations and trade-offs made by GPUs, otherwise they would have replaced CPUs.

This is ignoring the fact you can't implement CUDA from class files, you need an alternative JVM to run java programs via CUDA and you won't be able to change the JVM implementation in ArmA.

EDIT:Alternatively you could also be refering to calling CUDA with Java bindings, which the SecurityManager shouldn't allow you to do. And even if you could, what are you going to do, ship CUDA with your missions and escalate privileges somehow to talk the CUDA driver?

Edited by Milyardo

Share this post


Link to post
Share on other sites
Do you have any non-trivial experience with CUDA? Or AI? More importantly, both?

CUDA isn't some magic dust that makes everything go faster. There are limitations and trade-offs made by GPUs, otherwise they would have replaced CPUs.

Actually I do have some experience writing AI, and no, I have absolutely no experience with CUDA. Why does it matter? Why the bad attitude? This is something I'm looking at implementing a) as an experiment and b) for fun. You have absolutely no business being so condescending towards me.

Just because something is going to be difficult is absolutely no reason to not try. The benefits of *trying* to implement some AI in CUDA or some other framework like OpenCL would be that many instances of AI could be processed in parallel. Using the GPU for pathfinding, an especially taxing operation on CPU, would be a benefit for performance in and of itself. Aren't you the least bit curious to see if it's feasible? Or would you rather spend your time tearing people down in internet forums?

This is ignoring the fact you can't implement CUDA from class files, you need an alternative JVM to run java programs via CUDA and you won't be able to change the JVM implementation in ArmA.

EDIT:Alternatively you could also be refering to calling CUDA with Java bindings, which the SecurityManager shouldn't allow you to do. And even if you could, what are you going to do, ship CUDA with your missions and escalate privileges somehow to talk the CUDA driver?

Believe it or not I've actually considered these problems, and it really depends on how Java is implemented in Arma how we approach a solution. I haven't had the benefit of getting my hands on it yet so I don't really know what it can or cannot do. I understand that Arma 3 Java is going to be "sandboxed" to a degree, but I don't necessarily think that stops us completely from doing some of this more interesting stuff. This whole idea is only a few days old and I haven't done much of the background yet, but I have gotten so far as to consider some kind of standalone application that runs alongside Arma and talks to the GPU, does calculations and feeds them back into the game.

Like I said, it's an idea for an experiment. Anyone using it would require specialized server hardware anyway. But if it works it could be really interesting.

---------- Post added at 07:52 ---------- Previous post was at 07:13 ----------

I was under the impression that the programming community at large has decided that OO has its place, but it's not a silver bullet. More specifically, I refer you to the Expression Problem.

So, enlighten us, what approach would you recommend? Do you think a procedural approach makes more sense? I'm sorry but when you're dealing with abstract concepts like "Player" and "Spawn Area" and "Weapon" it makes perfect sense to encapsulate your code into an object that describes an entity's properties and the things that can happen to that entity. Presumably BI didn't choose a language like C or Fortran for a damn good reason. I get it, you don't like Java, but just because you don't like it doesn't mean it doesn't have its uses. It's a great language if you want to solve your problems within the OO paradigm, and presumably, that's why BI chose it. It's also very easy to read, which will promote more people getting into the mod scene, and hopefully some awesome content.

Share this post


Link to post
Share on other sites

Here's a great example of why SQF is just bad. Trying to learn how to script in SQF? Click on any of the links, they're all dead. I'm not trying to be harsh here, but I really want to get it across to Bohemia that the Java replacement of SQF is not only good for this community, it's crucial for the growth of the genre. Prioritize Java support for Arma 3.

So SQF is bad because of dead links? There's tons of examples floating around and of course the wiki is a great help. Look at other peoples missions and see how things are done, this is the way a lot of people learned sqf including myself.

And like I said, this thread isn't about SQF, it's a request for an update on Java support.

Erhmm didn't you say:

I'm not trying to be harsh here, but I really want to get it across to Bohemia that the Java replacement of SQF is not only good for this community

Whether or not SQF is awful (it is, but that's just IMHO).

Because you haven't learned it yet, sure that makes it crap!

Share this post


Link to post
Share on other sites

Because you haven't learned it yet, sure that makes it crap!

Did I say anywhere that I haven't learned SQF? I've actually done a little work on it. It's an awful and difficult to read language. That's my experience. I'm sorry you don't like that. I'm sorry, I don't spend my spare time honing my coding skills for a soon to be obsolete language that nobody on earth uses except the Arma community.

So SQF is bad because of dead links?

Yes. It's bad because there are very few resources out there for it. Dead links are a part of that problem.

Yes it has a wiki.

Yes there are a handful of people that know it.

Other than that, there are almost zero resources for it.

These forums are rough. If you don't have anything constructive to say, how about you don't say anything at all? Now I can see why people say the folks on these forums are jerks. I make some pointed criticisms and all the SQF fanboys feel the need to make smart-ass comments without bothering to read the whole thread.

Share this post


Link to post
Share on other sites
Did I say anywhere that I haven't learned SQF? I've actually done a little work on it. It's an awful and difficult to read language.

So you did a little work on it and decided it was awful and difficult to read, well it takes a little effort but it's rather easy to learn and understand.

Yes. It's bad because there are very few resources out there for it. Dead links are a part of that problem.

There's tons of resources available, use the search function, read the stickies, use google, ask your questions in the editing forums which is full of skilled and helpful people.

Yes there are a handful of people that know it.

You surely hasn't spend much time in the editing forums i guess.

These forums are rough. If you don't have anything constructive to say, how about you don't say anything at all? Now I can see why people say the folks on these forums are jerks. I make some pointed criticisms and all the SQF fanboys feel the need to make smart-ass comments without bothering to read the whole thread.

Contructive, pointed criticisms... common all you said was that SQF was bad because YOU couldn't find any resources and only few people know SQF scripting.

Share this post


Link to post
Share on other sites

My apologies, I came across wrong. I'm a bit leery of counting chickens before they've hatched, especially these ones.

However, if you want to take a stab at ARMA AI on CUDA, all the more power to you. Who knows, something nice for the community might happen. :)

Share this post


Link to post
Share on other sites
These forums are rough. If you don't have anything constructive to say, how about you don't say anything at all? Now I can see why people say the folks on these forums are jerks. I make some pointed criticisms and all the SQF fanboys feel the need to make smart-ass comments without bothering to read the whole thread.

Don't worry too much about it, it happens quite often around here when someone new comes along complaining about things which are accepted by the community in general. We won't hold it against you. ;)

(Well, as long as you don't become 'that guy' and keep complaining about the same stuff in every topic, we have enough of those already)

Share this post


Link to post
Share on other sites

seannybgoode isn't wrong: SQF is far from being the prettiest language out there, and that's just my polite way of putting it.

The commands are inconsistent (both in naming and how they're called), the parser is finnicky, the syntax is "exotic" (again, puting it politely) and above all it lacks any kind of proper error handling. (The try/catch implementation is a bad joke.) I've worked with a lot of programming/scripting languages in my time and spent several years wrestling with SQF, so I'm just going to drop the politeness and say with absolute conviction that SQF sucks harder than a strung out Chernarussian hooker. Literally any other language would be preferable to me at this point.

Obviously I know SQF isn't going to be dropped from Arma3, but having a different scripting language fully integrated into the engine (so that we can choose not to use SQF at all) would be heaven on fucking Earth.

Edited by MadDogX

Share this post


Link to post
Share on other sites
The Java API in ToH looks like something a first year CS student would write. There are no generics, annotations, or proxies that can address cross cutting concerns like logging or setting up mission contexts. They expected you to cast parameters from Object, why bother with Java if you're going to ignore type safety and cast everything yourself. They don't use Futures or a thread executor and have commands implement Callable.

If you need nice type safe object oriented enterprise ready API and you have an idea how it should look like (it seems you have) you can always build it yourself on top of RVEngine functions and share your results with others instead of whining. Yes, I checked the ToH API and it seemed fine.

So, enlighten us, what approach would you recommend? Do you think a procedural approach makes more sense?

Object oriented is sooo last century. This century it's all about functional ;).

Share this post


Link to post
Share on other sites

If anything in ArmA 3, Java will be something nice to play around with. It's full replacement of SQF is far off at best, just for the simple fact that BIS has never had an OOP language for modders to use in it's engine before and will require a lot of toying around with I'm guessing. Myself, for my main projects (at least early on in A3), I'm going to stick to SQF, just because it's the most developed language. But as Java starts to take form and get improved I'll start moving to that.

Java does seem like something nice to learn, I've been trying to teach myself Java but haven't been able to keep patience, so this would be good for people to learn in a more "fun" way.

Share this post


Link to post
Share on other sites
My apologies, I came across wrong. I'm a bit leery of counting chickens before they've hatched, especially these ones.

However, if you want to take a stab at ARMA AI on CUDA, all the more power to you. Who knows, something nice for the community might happen. :)

Apology accepted. I'm a fairly young coder. I'm ok with trying fantastic things and failing spectacularly (like a Takistan fast-rope).

I'm definitely going to take a stab at it. I read an interesting PHD disertation on ray-tracing with stream processors (there's also a potential approach to AI vision using shadow volume), so I'm confident that I can relegate more than just the pathfinding to the GPU when it's all said and done. Whether any of what I'm talking about will work out? No idea. Gonna try though.

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

×