Visual Studio’s native code debugger is pretty top of the line IHMO. semi-programmable break-points for CPU? Check. Need to debug GPU code? Check. GPU assem? Check. (plugin in current version, native in next) The next version looks pretty sweet for game development BTW. I think eclipse’s worst feature is probably debugging. This is all apples and oranges.
Meh, its a broad subject. A discussion of alternatives for using Java (or why Java is a better choice) and the development tools involved is not off-topic IMO, just a logical evolution of the thread given its subject title.
I’ve learned today that you can be very productive by using C# and XNA; people have done it, then so can I and even ra4king can once he gets over himself BUT. I still love Java, I see doing proper games using Java as a personal challenge that adds a whole lot of fun to the hobby. I won’t be lured away by stories of epic success using other technologies!
So what’s the result? Im just stepping into game development, doing some slick tutorials and stuff. So far i like it, even if i don’t really know how to distribute the game yet. Should i stick with java or should i switch to unity?
Ha. Like all game (and almost all CS) related questions…the answer is: it depends. Where are you at? And where are you going? And what do you want to learn along the way?
I’m at the beginning. I got some programming experience in C++, C#, Java and some other unimportant languages. I wanna make money with game development independently. And i wanna learn as much about game development as i can. Including Marketing and Distribution. Is Java the right choice for me?
Hm if you want to make money with games quickly you’d genuinely be better off with Unity at this point in time, which has greater reach and more consistent focus on delivering games. Java hasn’t got that dedication to games; it’s more generally useful for general purpose programming.
The only reason I use Java for games is because I used Java to earn a living for years before I got into making games. That meant I was already pretty good at coding in Java, and while I was rubbish at making games, I still earned a living using Java in the meantime.
Both JVM/.NET have lots of specific technical ups and downs, but the major differentiating factor is the community. On the JVM side, Oracle’s blessing means nothing, non-Oracle technologies thrive everywhere, and technologies are constantly debated and thrive or perish on their own technical merits. On the .NET side, there is less willingness to experiment at the software infrastructure level, and much less tolerance for something that doesn’t have Microsoft’s endorsement. There are exceptions of course, I’ve met a few completely rogue .NET open source people, but I’ve worked at lots of .NET only jobs and I know lots of .NET oriented developers and the overall culture has been very hesitant to use or even acknowledge non-Microsoft products.
Look at the independent languages like Scala, Clojure, and Fantom that targeted both .NET and JVM: The JVM crowd seems far more eager to embrace and adopt them (and endlessly argue about it) based on their merits. The .NET community mostly ignores anything unless it’s promoted by Microsoft. jQuery is a good example of a non-Microsoft technology that’s endorsed by Microsoft (I think it’s bundled with Visual Studio now) and is widely adopted by the .NET crowd.
Just to clarify, most programmers are independent people. The average game developer who uses .NET is an independent person, and many of them make brilliant stuff, but the larger community is less likely to use or even consider a non-endorsed technology even if it’s .NET compatable such as Scala/Clojure/Fantom.
And also, if you like .NET or Visual Studio, you should definitely use what you like. You should explore for yourself, make up your own mind, etc. I don’t want to hate on anyone’s favorite toolset, but I wanted to articulate the main attraction of the JVM development toolset better than the other people on this forum.
Some very good points there dude. I do object to you quoting me with a story mostly about .NET - I don’t like .NET much at all, I only like Visual Studio
but I’ve worked at lots of .NET only jobs and I know lots of .NET oriented developers and the overall culture has been very hesitant to use or even acknowledge non-Microsoft products.
Not entirely a bad thing in an office environment. When you get new people or you hire in external help, you have more of a chance of the developers being productive sooner. But yeah, what is more hazy is what type of people you are getting. Do they know what they are talking about, or do they just do what Microsoft tells them to do and not think much about the why? Even in .NET projects, I wouldn’t want the people who don’t ask the hard questions, even when the tech makes it easier to not worry about it.
I think Java is great if you want a bare OpenGL programming layer and you want to target Win/Mac/Linux/Android and want to be spared the legacy and drudgery of C/C++.
If you want a higher level game engine, you should shop there. Higher level engines may push certain structure on you and may take away some of the fun of building but it can also give you a lot of polished lower level implementation so you can focus more on the more unique pieces of your game.
Another advantage of Java is you can transition to the higher level elegant languages such as Scala or Kotlin when you feel comfortable.
Additionally, I’d caution against indie game development as a career track. It’s great for those that succeed, but I’d argue there is a high failure and unhappiness rate.
They get most major features waaay later than the Java IDEs. Every major Java IDE had integrated unit testing support back in the '90s. Visual Studio didn’t get that until 2008 or 2010.
Less support for various third party technologies. IntelliJ supports everything! Does Visual Studio even have built in support for Git and Mercurial yet or do you still need to get third party add ons working?
Visual Studio still uses proprietary and typically machine generated project/solution files. Most Java devs prefer having elegant hand-coded Maven/Gradle build files that the IDEs read from and work off of. The advantages are huge. They work better with source control, they allow more precise control over your build, and allow you to easily swap IDEs or drop IDEs on a dime, or integrate with various build and process management tools.
… and you raise some more valid points. Especially the lack of unit testing support was a pretty dismal brain-flatulence on the part of the MS designers.
That one, although from a Java dev perspective quite valid, doesn’t fly where Visual Studio is concerned. Remember the Microsoft creed: you do it our way, or you’re a communist Visual Studio is exactly designed according to what Microsoft believes and tries to enforce through solutions such as .NET: you don’t need other tools. So why build in stuff that would make it easy for people to move away?
He he, that one made me chuckle “Transition to a higher level”, quite a unique way to put it I can’t agree that moving to a newer JVM language is transitioning up though, to me its transitioning sideways. The Java language is old and that is why people like to pick on it. Not me, its my dependable chum with which I still get the job done, fast fresh & simple.
I was about to post a big rant about unit testing being a complete waste of time and fixing broken design by papering over the cracks with tests etc etc but realised that this would derail the thread completely so I shall start a new thread on it