Game Development Langauge

Started by
16 comments, last by jpetrie 12 years, 4 months ago
I Think i voted java on accident. I meant to vote c++ which I have been learning for about 2 months now. After 2 months of non stop late nights and weekends writing extremely boring console programs, I am finally tackling the first 2d game.

Now that I am finally finishing my basic Jedi training ready to write a simple game, i am thinking ok. This would have been much easier in flash action script. This game is not going to be sold or get published and will just be an excercise.

However if I had learned flash action script instead of c++ I could have made the same simple game and published it on facebook and on a site and have the potential to do some major free distribution

I am happy with my choice but had I picked flash It would be easier to share with the world.

My Projects: - www.repulse.com

Advertisement
Of the listed languages i'd recommend neither, Python or Java would probably be the best beginner choices but ...

Unfortunatly both Python and Java has their shortcomings,

Java has a very strict math library which cannot use the x86 FPU for many operations since it doesn't meet the accuracy requirements of the language (This causes some math operations to be extremely slow if called with the "wrong" parameters) and its default graphics API is pretty weak (There are solutions, none that is really beginner friendly though), making Java game development fairly difficult for beginners, (You can make great games using Java but it requires significantly more knowledge of the language and programming in general than you'd need if you were using something else, It works very well for Android though)

Python has a fairly small community so finding help and resources for the language can be difficult. (It is supposedly a fairly good language though and it has gained alot of ground in recent years)

C is just a pure pain in the ass. (Sure, it was great in the 70s when we didn't have anything better but that was a very long time ago).
C++ is a bit like C, except it supports half a million other ways to completely screw yourself over and the quality of internet tutorials is abmyssal at best, There are great modern features in the language but all the old, outdated and plain awful stuff is still there ready to be used by unknowing beginners.
If you look at a game like Skyrim and its technical issues on the PC and PS3 you can see why C++ is a poor choice of language, not even experienced professionals manage to avoid shooting themselves in the foot with it, i wouldn't recommend using it while you learn how to program and after that its still a good idea to avoid it when possible, (It has alot of momentum and is pretty much the only reasonably high level language that has compilers available for almost all platforms making it difficult to avoid completely in some situations)

C# on the other hand (Which wasn't included in the poll) has pretty much all the advantages of Java and few of its disadvantages, it also has XNA which makes game development significantly easier and allows you to deploy your games on the xbox360 at a very low cost. (It is also the only language supported for third party WP7 development, unfortunatly it isn't supported on the other big mobile platforms)

Flash/Actionscript is also a very solid option due to its installbase and ease of deployment, especially now with Flash11 having good 3D support. (Lack of mobile support might be an issue for some projects though but it is worth knowing and is reasonably easy to get started with).
[size="1"]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!

Of the listed languages i'd recommend neither, Python or Java would probably be the best beginner choices but ...

Unfortunatly both Python and Java has their shortcomings,

Java has a very strict math library which cannot use the x86 FPU for many operations since it doesn't meet the accuracy requirements of the language (This causes some math operations to be extremely slow if called with the "wrong" parameters) and its default graphics API is pretty weak (There are solutions, none that is really beginner friendly though), making Java game development fairly difficult for beginners, (You can make great games using Java but it requires significantly more knowledge of the language and programming in general than you'd need if you were using something else, It works very well for Android though)

Python has a fairly small community so finding help and resources for the language can be difficult. (It is supposedly a fairly good language though and it has gained alot of ground in recent years)

C is just a pure pain in the ass. (Sure, it was great in the 70s when we didn't have anything better but that was a very long time ago).
C++ is a bit like C, except it supports half a million other ways to completely screw yourself over and the quality of internet tutorials is abmyssal at best, There are great modern features in the language but all the old, outdated and plain awful stuff is still there ready to be used by unknowing beginners.
If you look at a game like Skyrim and its technical issues on the PC and PS3 you can see why C++ is a poor choice of language, not even experienced professionals manage to avoid shooting themselves in the foot with it, i wouldn't recommend using it while you learn how to program and after that its still a good idea to avoid it when possible, (It has alot of momentum and is pretty much the only reasonably high level language that has compilers available for almost all platforms making it difficult to avoid completely in some situations)

C# on the other hand (Which wasn't included in the poll) has pretty much all the advantages of Java and few of its disadvantages, it also has XNA which makes game development significantly easier and allows you to deploy your games on the xbox360 at a very low cost. (It is also the only language supported for third party WP7 development, unfortunatly it isn't supported on the other big mobile platforms)

Flash/Actionscript is also a very solid option due to its installbase and ease of deployment, especially now with Flash11 having good 3D support. (Lack of mobile support might be an issue for some projects though but it is worth knowing and is reasonably easy to get started with).


I agree with basically everything said here, except my biggest beef with Java is everything is just so over-freaking-whelming-freaking-ly over engineered, everywhere. everything. Eclipse, Maven, Ant, nHibernate, the sixteen billion UI toolkits, the fifteen billion webkits, etc... everything seems to have a hundred layers of XML, a few dozen different processes, built on X design pattern using Y framework with Z component along XYZ methodology to print freaking hello world on the screen.


I know thats some massive hyperbole, but once you start working with Java you will really start to get what I am getting at. I found while working with Android, as often as not I was fighting with Eclipse, the plugins and the crap emulator as I was the actual code. Now web development HA! What a process that is... moving all your logic out to XML files is all well and great, especially if you are a contractor who bills by the hour and are deploying your prebuilt solution, but to people actually trying to get shit done, so not fun. All those XML files are an absolute joy, until there is a problem, which makes debugging a virtual nightmare.

I am unfairly condemning Java the langauge because of Java the ecosystem, but truth is, it's hard to divorce one from the other. Especially because new developers ARE going to face these issues, and probably are going to be useful that hateful product Eclipse and will run into these issue. Noone, nowhere with Java ever seem to follow basic KISS principles, which is annoying to the extreme.


Want an idea what I am talking about... heres the original (beginner friendly!) instructions I put together for installing PlayN. This process is pretty typical of the Java world, BTW. Now that PlayN is part of the Maven Central respository, you can get up and going faster, but these are still the instructions if you want to build it yourself. Compare that to your typical windows install of "Download and extract zip. Double click FileName.sln. Click Play icon" and you will see what I mean. Hell, Java makes the Linux command line build process seem downright inviting!

C is just a pure pain in the ass. (Sure, it was great in the 70s when we didn't have anything better but that was a very long time ago).
C++ is a bit like C, except it supports half a million other ways to completely screw yourself over and the quality of internet tutorials is abmyssal at best, There are great modern features in the language but all the old, outdated and plain awful stuff is still there ready to be used by unknowing beginners.
If you look at a game like Skyrim and its technical issues on the PC and PS3 you can see why C++ is a poor choice of language, not even experienced professionals manage to avoid shooting themselves in the foot with it, i wouldn't recommend using it while you learn how to program and after that its still a good idea to avoid it when possible, (It has alot of momentum and is pretty much the only reasonably high level language that has compilers available for almost all platforms making it difficult to avoid completely in some situations)


Most of the bugs in games havent got anything to do with the chosen language, it is very rare that I see a pointer bug coming along, it is mostly pure logic bugs that cause major glitches in games. Memory bugs are far more common, and this has to do with scoping issues not pointers or any other weird feature in the language, any language that supports pass by reference can be affected by these bugs.

C++ isn't that horrible as you make it out to be, once you understand pointers correctly it all starts making sense quickly, even though there are a lot of idiosyncrasies in C++. It's not because of the momentum or just cross platform compiling, it is also one of the few fairly highlevel languages that allow you to control everything, which is what you need to push a console to the extremes. The ability to mix in asm on the fly, use of intrinsic functions and full memory management are just a few of these.

To the point though all of that isn't important when learning how to program and using a language that comes with a huge standard library makes the learning process far easier. Remember however that it is still a good idea to figure out how these library containers and other features work internally. Because when you switch to another language that doesn't support that lib you are going to have to implement these if you want to use those features.
I would still recommend you start in C# or any other managed language that takes your fancy as you won't yet have to think about some management features of other languages, and alows you to focus on algorithm design.

Worked on titles: CMR:DiRT2, DiRT 3, DiRT: Showdown, GRID 2, theHunter, theHunter: Primal, Mad Max, Watch Dogs: Legion


[quote name='SimonForsman' timestamp='1322079017' post='4886998']
C is just a pure pain in the ass. (Sure, it was great in the 70s when we didn't have anything better but that was a very long time ago).
C++ is a bit like C, except it supports half a million other ways to completely screw yourself over and the quality of internet tutorials is abmyssal at best, There are great modern features in the language but all the old, outdated and plain awful stuff is still there ready to be used by unknowing beginners.
If you look at a game like Skyrim and its technical issues on the PC and PS3 you can see why C++ is a poor choice of language, not even experienced professionals manage to avoid shooting themselves in the foot with it, i wouldn't recommend using it while you learn how to program and after that its still a good idea to avoid it when possible, (It has alot of momentum and is pretty much the only reasonably high level language that has compilers available for almost all platforms making it difficult to avoid completely in some situations)


Most of the bugs in games havent got anything to do with the chosen language, it is very rare that I see a pointer bug coming along, it is mostly pure logic bugs that cause major glitches in games. Memory bugs are far more common, and this has to do with scoping issues not pointers or any other weird feature in the language, any language that supports pass by reference can be affected by these bugs.

C++ isn't that horrible as you make it out to be, once you understand pointers correctly it all starts making sense quickly, even though there are a lot of idiosyncrasies in C++. It's not because of the momentum or just cross platform compiling, it is also one of the few fairly highlevel languages that allow you to control everything, which is what you need to push a console to the extremes. The ability to mix in asm on the fly, use of intrinsic functions and full memory management are just a few of these.

To the point though all of that isn't important when learning how to program and using a language that comes with a huge standard library makes the learning process far easier. Remember however that it is still a good idea to figure out how these library containers and other features work internally. Because when you switch to another language that doesn't support that lib you are going to have to implement these if you want to use those features.
I would still recommend you start in C# or any other managed language that takes your fancy as you won't yet have to think about some management features of other languages, and alows you to focus on algorithm design.
[/quote]
"Undefined behavior" is the word that comes up as to why programming beginners should stay far far away. It's easy to learn a little and think you know a lot. Pointers and memory management is a fairly tiny reason of why C++ is off the recommended list. But I digress, that's not the topic here.
[color="#1C2837"]Python has a fairly small community so finding help and resources for the language can be difficult. (It is supposedly a fairly good language though and it has gained alot of ground in recent years)
[/quote]
"Small" is relative - smaller than C++ or Java? Of course, C/C++/C# has the advantage there, but Python certainly has enough of followers to not fall into the obscure category (unlike other languages, e.g. Boo). That, and the speed with which you can go from idea to implementation, makes it an invaluable experience for beginners. If it had more support, it'd win hands down against any language I can think off - including C#; one of the languages I constantly rain praise for.
[color="#1C2837"]Flash/Actionscript is also a very solid option due to its installbase and ease of deployment, especially now with Flash11 having good 3D support. (Lack of mobile support might be an issue for some projects though but it is worth knowing and is reasonably easy to get started with).[/quote]
Agreed. It's a good language to start with if you want to "get right into it" and has a wide support base.
[color="#1C2837"]I actually dare say that Python is not a good advice. Only because there are far more resources and online/beginner help for C# XNA than for Python oriented libraries IMO and that Python is not a sustained game dev language. (While ignoring multi platform worries for a beginner altogether)[/quote]
Python doesn't have the install base of C# or C++, no. What it does have is a minimal no-headaches setup and a programming flow that any other interpreted language is envious off. Python has been used as a scripting toolset on AAA+ titles, so it can certainly handle pretty much anything you can throw at it. When you move on to other languages, you'll have the chance to use it in a similar fashion - while third party libraries that can handle the heavy lifting.

Java is to me a lesser version of C#. The awkwardness of getting it to run and run properly is the reason I don't think it appropriate for a beginner.
@OP: Forget about C, unless you are writing driver level code it's just a waste. C++ is very difficult to start with correctly and is a massive (unnecessary) headache for what you want to do. Python is a good choice, it'll teach you a lot in a very short timespan and, when learnt, will allow you to develop prototypes quickly. C# is good, but with more setup cost than Python and also more support base; something that might or might not be important to you. Java is... not worth your time.
"I will personally burn everything I've made to the fucking ground if I think I can catch them in the flames."
~ Gabe
"I don't mean to rush you but you are keeping two civilizations waiting!"
~ Cavil, BSG.
"If it's really important to you that other people follow your True Brace Style, it just indicates you're inexperienced. Go find something productive to do."
[size=2]~ Bregma

"Well, you're not alone.


There's a club for people like that. It's called Everybody and we meet at the bar[size=2].

"

[size=2]~

[size=1]Antheus
I Have Decided To Go With C#.
It Seems Like the Best Choice, Although If you think im making the wrong choice. Please Give me another suggestion.

I Have Decided To Go With C#.
It Seems Like the Best Choice, Although If you think im making the wrong choice. Please Give me another suggestion.


There is no best choice, if there was, there would be a hell of a lot less programming langauges in the world!


That said, C# is a good choice, and probably the choice I would make if I was in your shoes but knowing what I know. That this scenario would create a paradox that could potentially create a hole in reality, destroying us all, is a thought best not pondered.
Closed; this question has been asked-and-answered elsewhere on these forums. Please search.

This topic is closed to new replies.

Advertisement