Off-Topic: Java and Framework Alternatives - 'Friendly' Discussion.

Although I know this is the Java-Gaming forum and I do not want this to become a “Which is better” debate.

I was curious, as we all like to learn and explore, What other non Java frameworks and languages have you tried out and what are your thoughts and experiences on it?

How does it compare against your Java experiences? Have you learned anything that you brought back to your Java Programming? Approaches/Style?

I personally love LibGDX quite a lot and Java, its my #1. I have never found anything that quite meshes with my workflow quite as well. Everything from Eclipse/IntelliJ IDEA, auto complete, refactoring support, compile hot swapping <3, suggested ‘fixes’, etc…
However I do from time to time, go and explore alternatives, for learning and exploratory purposes.

I know quite a few people I am sure have played around Unity3D at least a little bit.
I have tried Unity3D(C#) several times before and just never liked it? Maybe its because I didn’t have the workflow set up properly? Things like intellisense or the time it takes to modify code, compile, and see outcome. Although this is easier in unity3D, when I last tried it, the built in text editor had no real support, so I was pushed to use an external compiler/IDE which just slowed my ‘instant feedback’ that I have come to know and love.

I recently was exploring SFML(C++) and liked it a fair amount, its probably my fav C++ game framework at the moment. I had some issues with visual studio with it, such as slow compiling times and other issues. However after switching over to Code::Blocks all my issues went away. Code::Blocks and C++ doesn’t seem to have some features and functionalities that I’ve come to use and love in Java/Eclipse/IDEA.

I have toyed around with ActionScript, Flixel, and FlashPunk and liked them all a fair bit. Though there is always something that pushes me away from it?

Though I’ve considered and been wanting to explore some OpenGL libraries/frameworks, equivalent to LWJGL, such as OpenGLUT, FreeGLUT, GLUT, or ??? Suggestions?

Things I hope to explore at some point:
XNA?
MonoGame?
SDL?
DirectX?
pyGame?
Source Engine?

Edit:
Please try and NOT make statements like “X is better than Y”, or “A is faster than B”, or “Q sucks”, “I hate Z” or worse
Keep it to reasons why you didn’t personally like it, or you did personally like it.

Editx2:
If this thread gets even slightly out of control or too much ‘fanboy’ ‘hate’ ‘troll’ I will ask a Mod to move to Chitchat Monster or delete thread.
I am just hoping for some insightful thoughts and experiences, and not a ‘debate’

Due to all the crap around Java (cough, cough, applets, cough), I have been considering learning other similar languages in case of the event that not enough players have a JVM installed. Although then I guess I could just include a local JVM.

I had a look at Python, but the thing about indenting instead of parentheses put me off.

I haven’t found anything else I liked the look of. Turns out that it’s hard to find an OOP language with nice syntax and decent garbage collection.

As much as I like to do things myself, I hate all these languages/development environments that have so many trivial things you need to do before you can even worry about programming.
I want to be able to start coding on a new project within a minute of opening my IDE.

@HeroesGraveDev
With the Applet/JVM issue. Is one of the reasons I started to look at AoT for my Java stuff. I was one of the lucky few who got Excelsior JET for $10 a while back.

Also one reason why I like LibGDX, GWT, and deploying to mobile (android/iOS) to avoid ‘security warnings’ and some peoples fear and misunderstandings of .jars (Given the time, its why I would bundle to exe for windows launcher, even if its still using local JVM)

I currently am teaching an Object Oriented Programming(C++) course at my university and I wanted to show them what inspired me into programming and game development. It is written in Java. And stupidly the classroom’s computer doesn’t have ANY JAVA JVM installed on it! :frowning: and my laptop only has HDMI out, and projector only accepts VGA. Sigh the world is against me! ??? :emo: :cranky: :’( :-\

@Lukasz1985
Excellent! Thanks!
Reading it now

Although I’ve pretty much only tried java, I agree with HeroesGraveDev on the point of Python. The simplicity, even if just of the hello world code, really turned me from it.

@namrog Do you have an online version of that course or something? When I started programming I jumped right into Java so I don’t have any traditional/theoretical training that you would get at a college.

Scala is turning out to be pretty good. Runs on the JVM as a functional language and its interoperable with Java. Should totally give it a go.

I’ve tried Unreal, Unity 3D and C++ with GLFW. The main reason I tried them was because they’re the industry standards, and because Java isn’t compatible with consoles. I thought that it would be a great advantage to learn them good and maybe one day get a job in the industry. But I quickly figured out the bad side behind this.

I gave up on Unreal and Unity 3D because I’m a guy that like having that low level control with OpenGL. I tried GLFW, and while it’s an API with mostly the same purposes as LWJGL, I felt like C++ was fighting me as a developer. Therefore I returned to my dear Java. I did some reflection on this later; Why I tried these solutions. The main answer was, as said, the industry. I figured out though that the experience from developing a game isn’t platform/language specific, and that I should just pick the language I was most comfortable with. Therefore, Java. :wink:

I’ve recently used Unity 3D and must say, for an engine so hyped its missing quite a few critical features required to make great games, I’ve found it average at best.

I much rather the flexibility of writing an engine from scratch, at least I know what I’m getting for my time investment.

Currently looking at implementing sparse voxel octrees as a java framework, which is fun, interesting and pretty darn exciting!

The web is actually a really great platform to deliver games these days. It’s come to a point where you can do some amazing things with a combination of DOM manipulation, canvas rendering, and WebGL.

For example, see HelloRun:
http://hellorun.helloenjoy.com/

And for general interactive products (think art installations, virtual reality, interactive storytelling, etc), it’s also great:

A few benefits:

[]Unlike LibGDX/GWT, there is no JS bloat and you better control over JS in the browser (things like DOM and Canvas).
[
]JavaScript is a powerful language once you really get the hang of it. Until then, though, you will probably hate it. (There’s always CoffeeScript and others for that…)
[]Live-reload in your browser means no compilation. Java has hot swapping but I found that never played well with OpenGL (for example, it wouldn’t re-compile shaders, it lead to some texture artifacts, etc).
[
]THREE.js is (IMHO) much easier to work with than LibGDX’s 3D API or jMonkeyEngine.
[]Users don’t need to download anything. Nobody wants to download stuff in the 21st century.
[
]It can be delivered to a wide audience; and even mobile is pretty easy to target. This will only improve as mobile and touch devices begin to support more HTML5 features, like WebGL.

Unity is great if you actually want to make a fully fledged and cross-platform game. The problem is, most of us here are tinkerers and programmers, and would rather create a game on our own engines and get our hands dirty with low-level stuff, even if it takes us an extra year. But, for start-ups and dev companies, Unity is a godsend.

No one has messed with C#? It’s a very viable language, and great for programming games. The syntax is very similar to Java. That’s kind of the reason I didn’t try to get deeply involved with it, though. I don’t really need 2 different languages that acted so similarly to do the same thing. That, and I’m not a .NET person.

I did do some game programming in C#/.NET/XNA, and it was quite easy to get started with. C# is really a nice language, not so much different from Java in my experience. However, C#/.NET/XNA also means doing things “the Microsoft way”, which in my experience means: if you want to do something non-standard you are in deep trouble.

Javascript/HTML5 sounds nice and promising, and I do follow the developments there. However, I still have my doubts about the performance and ease of development there. So far I simply have not seen a JS demo in the browser which was not 10+ years behind in performance compared to Java (e.g. “cool, we have Doom in JS!” ;D)

Anyway, use the tool to suit your purpose. I use Python now and then for quick jobs, e.g. for writing a simple script to crawl some websites. It’s quite an elegant language, and it can be really productive to work with. I worked with C and C++ but that felt too much like working in Assembly. Just too much additional stuff to keep track of for my tiny brain. So I settled on Java: a nice compromise between performance and ease of development. It’s also very possible to do a user-friendly deployment of Java applications on several different platforms with a little effort.

[quote=“Grunnt,post:10,topic:44383”]
You must not be looking very hard. :wink: WebGL performance is strong and only getting better. Shaders and FBOs were not even part of core 10 years ago.

http://www.findyourwaytooz.com/
http://mrdoob.github.io/three.js/examples/webgl_materials_cubemap_dynamic.html
http://codeflow.org/webgl/deferred-irradiance-volumes/www/
https://www.shadertoy.com/

The technology is there…

Hey Davedes, thanks for the links. However, these links kind of make my point: it’s promising and worth following, but not a serious competitor for Java when it comes to making computer games.

  • Link 1: “sorry, you need Chrome for this.” In Chrome it looks pretty but quite low-detail (as in: low polygon count) and performance is not great.
  • Link 2: again, good looking but only 2 cars and some primitives, render cutoff of 5 meters.
  • Link 3: tried both in Chrome and Firefox, hangs in both (not responding/shader compile error) while loading.
  • Link 4: awesome idea. However, crashes in Firefox for me, doesnt do anything in Chrome for me other than “shader error” and the “busy” circles turning forever.

Don’t get me wrong, I love the idea of Javascript + WebGL and maybe in a couple of years it will really be something. But currently it’s just some tech demos with lots of cross-browser incompatibilities and issues showing less-than-impressive performance and capabilities.

Bummer the sites aren’t working for you. They are all very responsive on my computer and with Chrome, FF, and Safari.

It’s true that there are not too many WebGL games at the moment, and most focus on low-poly art styles. The point of showing, say, the car example, is not to say look how amazing this demo is, but to say the technology is there: FBOs and multiple render passes, post-processing shaders, programmable illumination & reflection, VBOs for rendering, etc. These features were simply not realistic 10 years ago, let alone within a web browser. So to say that JS isn’t making anything more than DOOM is a bit of an exaggeration.

Unfortunately, not many game dev companies have the confidence to drop too much money on WebGL. So we aren’t seeing many games with high production costs, beautiful graphics, and endless content. Maybe this will change as the technology evolves.

As a Opera user I dont see WebGL as a viable solution right now.
If WebGL would work everywhere without problem then yes. But I am also primarily interested in more complex games and not casual games which most web/android games would be.
But hey I’m probably going to check out threejs at some point since I do a lot of Firefox OS programming and get better in javascript - although I hate javascript now that I know it.

I have often played with the idea to really try some C++ game development… and I will eventually.
It’s just… what library ?
I did something in SDL once but that seems horribly outdated for today.
Also I would like to not use OpenGL directly, too much work.
Might as well just check out Unreal Engine…
Best case would be Libgdx in C++.

Then again what would be the point in using C++ at all ? Well I need to learn it anyway probably if I want some industry jobs - in that case Unreal engine would be best anyway.

I did C++ on Windows before I started to use Java; did DirectDraw, Direct3D and OpenGL stuff (I prefer DirectDraw/Direct3D because its slightly more OO). Always low level, never any high level “engine” stuff except for me diving into the source code to figure out how certain things were done. I went through my own engine building phase like most people, until I saw the light and I started to put the focus on the games.

I did quite a lot in my C++ days, but it was cumbersome and fragile to do, and debugging was hard; I once spent a month trying to figure out a crash that had something to do with misuse of DLLs - not continuously of course, I was busy working around that crash until an accidental debug step into code of the standard lib showed me a comment that explained all to me where books and MSDN had not. The bug was solved and I liked C++ on Windows a little less yet again.

The turning point for me was when I decided to port a piece of game I had done in C++ and I had something up and running using Java, without late hours of debugging and without inexplicable crashes and memory leaks, in a fraction of the time it had taken me to build it in C++. And that is including the time I needed to figure out how to use LWJGL properly. I never turned back, except to port over more code.

I tried C and C++. They are awkward programming languages (I don’t like the preprocessor, the strength and weakness of C). Nevertheless their compilers create the fastest executables and for me this is the only reason to develop in C/C++. To make it short I don’t know of any tool, framework or library that would make me want to program in C/C++, but if I had to choose I would take the Qt Framework with the QtCreator IDE, because of the clear API, good documentation, platform independence and good refactoring capabilities of the IDE (personal experience).

But I like speed (or at least the idea of it ^^). So I tried D. It has a syntax as good as that of Java, low level control, optional GC (garbage collector), the ability to use C libraries and more and more and more. It was very promising. The derelict project makes possible to use GLFW and other libraries needed for games. So I made some tests concerning the daily use of the language and it turned out that the usability of D was indeed very good, but the speed of the executables (compiled with dmd 2.062, i386) was behind that of Java. I didn’t see the point to change to D. Java was faster and had better tools.

I also tried other languages like Go (version 1.1) and Chapel (version 1.7.0), but not metioning the missing tools they couldn’t deliver the performance they promised. (Go has multithreading disabled by default? I don’t know… And Chapel had real performance problems in multithreading >.<)

By the way, the development of the XNA framework is discontinued [extremetech.com]. One can use MonoGame, a free implementation of the XNA API. It’s actively developed and not touched by the XNAs stagnation [thread 1, thread 2].

To be honest, there are probably better things out there. But some of the notes are posted online, though its an in class lecture course.

There is a ‘prerequisite’ C++ course (with no objects) at http://www.cs.fsu.edu/~myers/cop3014/

This is the course I took, when I was learning the material for ‘main’ c++
http://www.cs.fsu.edu/~lacher/courses/COP3330/lectures/ which does contain everything
You can see some of the assignments http://www.cs.fsu.edu/~lacher/courses/COP3330/fall12/organizer.html#CALENDAR

This is the course I teach 2x recitation period in every week, and also do grading of all homework, answer questions, tutor, etc…
http://www.cs.fsu.edu/~myers/cop3330/
http://www.cs.fsu.edu/~myers/cop3330/notes/ (not all notes are added as of now, they are added weekly, check back as the semester progresses)

If you want to do the assignments and send them to me, I’d be glad to grade them and give you a ‘grade report document’ the same that any student in the course would. For a pseudo college c++ experience.

Though to be fair, there is a ton of resources online and elsewhere that are probably better, but this isn’t too bad.

Someone tried cocos2D?

I originally started out programming with C++ but abandoned it when I started java. I have also used Unity and the Source engine which were ok for what I was doing with them. The only other framework/engine that I would have used would be UDK which is unnecessarily complicated.

In short: JAVA: good, Unity: Okay , Source: < Okay, UDK: overly complicated

I’ll work my way through those, about time I learned a bit about a non-Java language anyways. Gonna be bogged down by tests and SAT and what not but I’ll send you some assignments if I can. Thanks!