Jump to content

  • Log In with Google      Sign In   
  • Create Account

Recommendations of A Langauge


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
24 replies to this topic

#1 Orlan Of Solace   Members   -  Reputation: 105

Like
1Likes
Like

Posted 22 February 2013 - 04:00 PM

Hi there! New to the forum and I'm wondering which langauge (the most common of all common questions) that you guys are most comfortable with creating video games with. I've heard that I should learn C++, or take a look at some of the nice engines that are available to use (Unreal, Unity, JMonkey ect.) Though I've always been they guy to want to his own thing. I've already a strong grasp of Java, and a somewhat understanding of HTML, my eyes were wondering on the web today and found Python and was wondering what people though ot developing with that was like. My goals as of making games are small, I don't want anything flashy, nothing big right now I'd be impressed if I managed to make a sprite move across the screen. So at your mercy mates! :D



Sponsor:

#2 Benderwiz   Members   -  Reputation: 162

Like
0Likes
Like

Posted 22 February 2013 - 04:23 PM

C++ has an advantage of programming for almost any system and saving memory but programming times can be a lot longer.

 

Python I have no idea as I've never used that style yet.

 

I would stick with HTML 5 and JAVA if its a small goal your looking for if you really enjoy making games then move up to C# and/or C++.

 

In the end its about the "style" and not the language you write it in.



#3 EWClay   Members   -  Reputation: 659

Like
3Likes
Like

Posted 22 February 2013 - 04:49 PM

If you don't want to use an engine and you know Java why not go with that?

Experiment with Python, it's a very useful language and easy to get started with.

C++ has the steepest learning curve and while you can ultimately do anything with it, it might take a while to get there.

#4 Sudi   Members   -  Reputation: 711

Like
0Likes
Like

Posted 22 February 2013 - 05:02 PM

Well if you know Java give jmonkey a go.



#5 minibutmany   Members   -  Reputation: 1675

Like
0Likes
Like

Posted 22 February 2013 - 06:51 PM

If you go the Java route, I recommend using LWJGL or Slick2D(Their website is currently down).

People argue that C++ is more powerful, but since you already know Java there is no need to learn a new language for minor performance increases.


Stay gold, Pony Boy.

#6 Geometrian   Crossbones+   -  Reputation: 1599

Like
0Likes
Like

Posted 22 February 2013 - 07:41 PM

There have been a lot of extremely similar threads on this in the past. As usual, my advice is to:

1: Start with Python, because it doesn't get in your way while you're learning the basics

2: End up with C++ when you need more power

3: Avoid Java, because it is restrictive and bloated

4: Avoid game engines, because they prevent you from learning, get in the way, and take a lot of the fun out of development.


And a Unix user said rm -rf *.* and all was null and void...|There's no place like 127.0.0.1|The Application "Programmer" has unexpectedly quit. An error of type A.M. has occurred.

#7 minibutmany   Members   -  Reputation: 1675

Like
0Likes
Like

Posted 22 February 2013 - 09:39 PM

4: Avoid game engines, because they prevent you from learning, get in the way, and take a lot of the fun out of development.

I agree with this.

3: Avoid Java, because it is restrictive and bloated

 

It may be bloated, but it is not restricitve. Using a library Java is very powerful, look at minecraft, made with Java and LWJGL.


Stay gold, Pony Boy.

#8 TheSasquatch   Members   -  Reputation: 452

Like
0Likes
Like

Posted 22 February 2013 - 10:42 PM

If you know Java, you basically know C#; C# has XNA, which will let you get to the point of moving a sprite around the screen in literally minutes--it obscures a lot of the low-level tedium from the programmer, allowing you to focus on the actually interesting game programming part and letting you get things done much faster. Sure, you sacrifice some perfromance for that convenience, but you'll probably never even notice (when you reach a point where XNA can't handle what you're doing, then it might be time to move to C++).

 

Personally, I learned Java, moved to C#/XNA, read Kurt Jaegers' XNA 4.0 Game Development by Example, then started extending the sample code provided to suit my own needs. It's a great beginner book, but the engine he builds makes a lot of really bizarre design choices early on that are a nightmare to change later--and to be completely honest, I've learned more from trying to "fix" his code than I did from the book itself. Maybe that was the point, though; I'd certainly claim it was if I was the author.



#9 Geometrian   Crossbones+   -  Reputation: 1599

Like
0Likes
Like

Posted 22 February 2013 - 11:41 PM

3: Avoid Java, because it is restrictive and bloated

 
It may be bloated, but it is not restricitve. Using a library Java is very powerful, look at minecraft, made with Java and LWJGL.

To clarify, the Java language itself is very restrictive. It lacks copy constructors, destructors, operator overloading, explicit memory management, and multiple inheritance among other things. When you become a more advanced programmer, not having these things starts to hurt. I believe it is best not to get involved to begin with.


And a Unix user said rm -rf *.* and all was null and void...|There's no place like 127.0.0.1|The Application "Programmer" has unexpectedly quit. An error of type A.M. has occurred.

#10 DevLiquidKnight   Members   -  Reputation: 834

Like
0Likes
Like

Posted 22 February 2013 - 11:57 PM

If you have a strong grasp of Java. I fail to see why it would be hard for you to learn C# or even C++ for that matter.

 

Just go ahead and teach yourself already, its not some giant impossible to climb curve to learn the language of C++ or even C#. Only way you will do it is if you do it.

 

No language should be seen as a stepping stone to another language they are all unique in their own rights, claiming you know C# from Java is a ludicrous statement. They have several unique differences.


Edited by DevLiquidKnight, 22 February 2013 - 11:57 PM.


#11 Akrucious   Members   -  Reputation: 104

Like
0Likes
Like

Posted 23 February 2013 - 12:55 AM

I'd recommend staying away from game engines in general. When I first started getting into game development I used engines and quickly found out how restrictive they were. On top of that it becomes harder to stray away from the use of engines in the future. 



#12 Aldacron   GDNet+   -  Reputation: 3271

Like
3Likes
Like

Posted 23 February 2013 - 06:55 AM

I've already a strong grasp of Java, and a somewhat understanding of HTML, my eyes were wondering on the web today and found Python and was wondering what people though ot developing with that was like.


You can see from the posts above that there's no consensus on this. If you had come here with this post 10 years ago, you'd have seen a thread full of Java and C# bashing and lots of recommendations for C++. It's a different world now. My advice is to stick with what you know. I think it's better to learn game development in a language you're already comfortable with, rather than trying to learn both the process and a new language at the same time. Later on down the road, when you're more comfortable with what it takes to make a game, then you can more easily adapt that to experiments with different languages. Obviously, you could go the other route (learn a language or two then pick up game development), but we all know it's much more gratifying (for most of us) to go for the game dev stuff first.



#13 kazisami   Members   -  Reputation: 558

Like
0Likes
Like

Posted 23 February 2013 - 07:25 AM

4: Avoid game engines, because they prevent you from learning, get in the way, and take a lot of the fun out of development.

 

I also code with C++ and I know its fun. The OP also wants to code and thats a good thing. But I really don't see anything bad when it comes to using game engines. They are really good for fast prototyping. And if you want to make a fully polished game, then either you have to learn something from every aspect of game coding(as needed, not all) or you already have a very good code base. But it doesnt seem that the OP has enough or any code base ready(related to game development).

 

So let's offer him some choice. If he gets demoralized at some point(we all get sometime). He can look at one or two game engines. And some game engines also teach you how should make a framework for your game, like- Unity is a good example of component based architecture.

 

Lastly, game engines are one of the hottest part of game industry. Let him taste one or two. Dont say it like its a rule :P


To follow the path:

look to the master,

follow the master,

walk with the master,

see through the master,

become the master.

http://kazisami.wordpress.com/


#14 TheChubu   Crossbones+   -  Reputation: 4755

Like
0Likes
Like

Posted 23 February 2013 - 10:03 AM

 

I've already a strong grasp of Java, and a somewhat understanding of HTML, my eyes were wondering on the web today and found Python and was wondering what people though ot developing with that was like.


You can see from the posts above that there's no consensus on this. If you had come here with this post 10 years ago, you'd have seen a thread full of Java and C# bashing and lots of recommendations for C++. It's a different world now. 

Yeah, now its just mostly Java only bashing :P


"I AM ZE EMPRAH OPENGL 3.3 THE CORE, I DEMAND FROM THEE ZE SHADERZ AND MATRIXEZ"

 

My journals: dustArtemis ECS framework and Making a Terrain Generator


#15 Serapth   Crossbones+   -  Reputation: 5707

Like
0Likes
Like

Posted 23 February 2013 - 10:06 AM

 

3: Avoid Java, because it is restrictive and bloated

 
It may be bloated, but it is not restricitve. Using a library Java is very powerful, look at minecraft, made with Java and LWJGL.

To clarify, the Java language itself is very restrictive. It lacks copy constructors, destructors, operator overloading, explicit memory management, and multiple inheritance among other things. When you become a more advanced programmer, not having these things starts to hurt. I believe it is best not to get involved to begin with.

 

 

You say this like it's a negative.  Multiple inheritance is one of the worst features of C++, there is a reason later languages got rid of it.  Operator overloading is another one of those language features that was so badly abused that it's value certainly becomes questionable.  Lack of implicit control over memory manage is the only real missing feature that actually hurts the language, and even in that case, 99% of the time this is an advantage as well.

 

 

The design ethos of C++ is to never make a decision for the programmer.  This is a double edged sword, as on one hand, it gives you maximum flexibility   On the other, you are left with dozens of options of how to do something, even in cases where one option was vastly superior to all the others.  Its a trade off of flexibility over productivity.  Neither is "right" or "wrong" per say.

 

That said, some aspects of C++ are simply "wrong" and there is a good reason for this.  C# and Java are both languages that came later and learned from C++'s mistakes.  Plus it's burdened with all kinds of legacy crap that are basically a land mine for new ( and experienced ) developers.  Some parts of C# and Java are "wrong" too  ( for example, pre-Generic data collections in C#, or well... most of the Java standard libraries ).  No languages get everything right, but generally later generation languages learn from their predecessors mistakes.

 

A couple links that might help you are my getting started guide, it's a long read, but presents most of the popular language options and libraries/learning resources for each.  On top this is a list of the most common 3D engines, the languages supported, costs, etc...

 

 

On the whole topic of using an engine starting out, I'm torn.  An engine hides you from a great deal of the complexity, and when learning, this is a very good thing.  You really shouldn't attempt to create your own until you actually understand how they work, or you will just waste a ton of time.  On the other hand, I am not sure if its a good idea to learn a language while using an engine, for example C# or Javascript with Unity.  I can see merits both ways, so can't really make a recommendation one way or the other.



#16 Serapth   Crossbones+   -  Reputation: 5707

Like
0Likes
Like

Posted 23 February 2013 - 10:08 AM

 

 

I've already a strong grasp of Java, and a somewhat understanding of HTML, my eyes were wondering on the web today and found Python and was wondering what people though ot developing with that was like.


You can see from the posts above that there's no consensus on this. If you had come here with this post 10 years ago, you'd have seen a thread full of Java and C# bashing and lots of recommendations for C++. It's a different world now. 

Yeah, now its just mostly Java only bashing tongue.png

 

My biggest issue with Java is C#.  It's hard to recommend Java when C# is cleaner, faster and generally better designed and frankly, is aging better.

 

The advantages of Java over C++ are fairly easy to state.  The advantages of Java over C# are .... well, are there any?



#17 TheChubu   Crossbones+   -  Reputation: 4755

Like
0Likes
Like

Posted 23 February 2013 - 12:20 PM

I don't know. Never programmed in C#. Though I like that you run the same VM on every Java supported platform. Code against Java 7 and you get exactly that in Linux, Windows and OSX (x86, x86-64, etc), plus Java ME for mobile devices. Not sure about how easy is going back and forth from .NET to Mono.

 

Boxing/unboxing in Java is kinda weird though.


Edited by TheChubu, 23 February 2013 - 12:25 PM.

"I AM ZE EMPRAH OPENGL 3.3 THE CORE, I DEMAND FROM THEE ZE SHADERZ AND MATRIXEZ"

 

My journals: dustArtemis ECS framework and Making a Terrain Generator


#18 Serapth   Crossbones+   -  Reputation: 5707

Like
0Likes
Like

Posted 23 February 2013 - 01:01 PM

I don't know. Never programmed in C#. Though I like that you run the same VM on every Java supported platform. Code against Java 7 and you get exactly that in Linux, Windows and OSX (x86, x86-64, etc), plus Java ME for mobile devices. Not sure about how easy is going back and forth from .NET to Mono.

 

Boxing/unboxing in Java is kinda weird though.

 

C#'s native invocation system absolutely kicks the crap out of Java.

 

Mono is binary compatible with the .NET runtime, the experience should be remarkably consistent between platforms, just like Java.

 

The only catch is a handful of libraries aren't "open".  The area most affected by this is UI ( WPF/WinForms ), so if you want to do cross platform GUI work with Mono/.NET, you are often best of using a crossplatform library like GTK#.



#19 SimonForsman   Crossbones+   -  Reputation: 6294

Like
0Likes
Like

Posted 23 February 2013 - 01:14 PM




I've already a strong grasp of Java, and a somewhat understanding of HTML, my eyes were wondering on the web today and found Python and was wondering what people though ot developing with that was like.

You can see from the posts above that there's no consensus on this. If you had come here with this post 10 years ago, you'd have seen a thread full of Java and C# bashing and lots of recommendations for C++. It's a different world now.


Yeah, now its just mostly Java only bashing tongue.png


 
My biggest issue with Java is C#.  It's hard to recommend Java when C# is cleaner, faster and generally better designed and frankly, is aging better.
 
The advantages of Java over C++ are fairly easy to state.  The advantages of Java over C# are .... well, are there any?


The various JVMs have some advantages over .Net/Mono
1) better runtime performance on *nix servers and in some cases non x86 clients.
2) Java is the "standard" language on Android. (The only good CLR implementation costs $299-$1899 per developer)
3) Some ARM CPUs can execute Java bytecode nativly.

When it comes to the actual languages i can't think of any reason to use Java over C# though and i wouldn't recommend Java over C# to anyone, (If you know C# you can easily switch to Java in the few situations where it works better anyway)

Edited by SimonForsman, 23 February 2013 - 01:18 PM.

I don't suffer from insanity, I'm enjoying every minute of it.
The voices in my head may not be real, but they have some good ideas!

#20 Geometrian   Crossbones+   -  Reputation: 1599

Like
2Likes
Like

Posted 23 February 2013 - 02:53 PM

You say this like it's a negative. Multiple inheritance is one of the worst features of C++, there is a reason later languages got rid of it.

No. Multiple inheritance has comparatively few applications, but it is not never the Right Thing. As the FAQ says: "People who spout off one-size-fits-all rules . . . make your design decisions without knowing your requirements. . . . there are some situations where a solution with multiple inheritance is cheaper to build, debug, test, optimize, and maintain than a solution without multiple inheritance."

 

Operator overloading is another one of those language features that was so badly abused that it's value certainly becomes questionable.

No. If a language feature is abused, that doesn't mean the language feature is bad. It means that the programmers who abuse it are stupid.

In this case, not having it forces a hypothetical Java BigNum class to have an API like: "new BigNum(4).exponentiate(51).mod(6).subtract(1)". You laugh, but I have often seen method chaining of such cruftitude in production code.

 

Lack of implicit control over memory manage[ment] is the only real missing feature that actually hurts the language, and even in that case, 99% of the time this is an advantage as well.

I agree somewhat, but not being aware of how memory is structured is a common pitfall of novice programmers. Exclusive use of Java encourages that. Finally, teaching ignorance of resource management is not merely suboptimal, but irresponsible.

I'm not going to deny that C++ isn't somewhat messy and that, at least with respect to Java and C#, its syntax is somewhat less intuitive. I don't fancy perpetuating a holy war about which is better though, mostly because I don't really care. I will stick with my recommendation not because I necessarily like C++ better, but since C/C++ is the de facto standard for games, game engines, and high performance computing in general.


And a Unix user said rm -rf *.* and all was null and void...|There's no place like 127.0.0.1|The Application "Programmer" has unexpectedly quit. An error of type A.M. has occurred.




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS