Jump to content

  • Log In with Google      Sign In   
  • Create Account


What language does what?


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
27 replies to this topic

#1 Monkayy   Members   -  Reputation: 127

Like
0Likes
Like

Posted 20 October 2012 - 03:57 PM

Hello,
I am very new to game programming and am still deciding what language to chose. I was wondering if someone could tell me the basic languages and what they are used for/best suited to. All I know is that Minecraft uses Java and Perl is for advanced webpages.
Thanks, Owen

Sponsor:

#2 Goran Milovanovic   Members   -  Reputation: 1107

Like
1Likes
Like

Posted 20 October 2012 - 04:53 PM

For someone who is just starting out, I would suggest a modern, high-level language, with a sizable community, and a wealth of resources.

More specifically, I would suggest Python, and my video tutorial series: http://www.youtube.com/playlist?list=PLDFB7FFF90EE6F0C1

That said: You really don't need to worry about "picking the right language" - As long as you start somewhere, you'll learn the basics of programming no matter what language you start with, and that should be your initial goal.

+---------------------------------------------------------------------+

| Need a programmer?        ->   http://www.nilunder.com/protoblend   |

| Want to become one?       ->   http://www.nilunder.com/tutoring     |
| Game Dev video tutorials  ->   http://www.youtube.com/goranmilovano |
+---------------------------------------------------------------------+

#3 ultramailman   Prime Members   -  Reputation: 1437

Like
2Likes
Like

Posted 20 October 2012 - 04:57 PM

This is what I think:

C: general purpose language, has some nice libraries for game developement, like SDL and Allegro
C++: seems to be very popular for game development, provides OOP features to allow easier OOP than in C, and other features that C doesn't have
Objective-C: a superset of C, also provides OOP features, I've never used it though
C#: never used it

Java: has OOP features, and runs on any machine that can run a Java virtual machine. I usually see it used for non game programs, but thats just me. It has a built in library called swing that allows you to make GUI for your programs.

python: interpreted language, a lot less typing compared to C or Java. There is a SDL wrapper called pygame. Great for actually writing a game, instead of braces and semicolons.

This is what I think I know, might be wrong though. I suggest python + pygame as a starting point.

#4 rip-off   Moderators   -  Reputation: 6875

Like
6Likes
Like

Posted 20 October 2012 - 05:05 PM

As a beginner interested in games, I recommend Python or C# for starting out. The exact one doesn't matter - flip a coin if you like. I would advise against a low level language like C or C++ as your first language.

Enumerating all other programming languages, and their strengths and weaknesses in different domains would be tedious and I suspect less than useful to you. There is no universal right answer, and technologies are fast moving targets. People manage to make amazing games in all sorts of programming languages, so don't fret.

#5 Ravyne   Crossbones+   -  Reputation: 5695

Like
6Likes
Like

Posted 20 October 2012 - 05:09 PM

If you're mostly going to be self-teaching, I would suggest either C# or Python. Java is a reasonable answer too, but C# is the nicer of the two languages, and they more or less fill the same niche.

Modern C++ (That is, C++11) is actually a whole lot nicer than "old" C++, and its not nearly as harsh for a beginner as it used to be. In a few years, after all the compilers are a little bit more similar and far along on implementing the new standard, and more resources are created for it, it'll actually be worth recommending again. Until then the information landscape and confusion about which compilers support which features is probably too confusing for a complete beginner.

#6 jbadams   Senior Staff   -  Reputation: 14780

Like
7Likes
Like

Posted 20 October 2012 - 11:21 PM

Another vote for Python! It's a popular and expressive language that is used extensively both within the games industry and for more general programming tasks. It's a great language to learn with, but it's also one that will remain useful to you if you want to continue using it. You might try the freely available Thinking In Python, A Byte of Python, or Learn Python The Hard Way for learning texts.

Python was used extensively in EVE Online and Disney's Toontown Online, and as a scripting language in Civilization IV. You can read a few quotes about the language on the website.


C# or Lua are good second choices if you're looking for alternatives.


Almost any language -- excepting domain-specific and highly specialised languages -- can be used for almost any purpose, and while there are certain advantages and disadvantages a lot of it comes down to personal preference or is based upon things that change rapidly over time. Skilled professional programmers normally learn and use many languages during the course of their career, and you shouldn't be overly worried about trying to choose an ideal first language -- rather it's more important that you choose any language and begin the learning process.

Hope that's helpful! Posted Image

#7 pharaoh357   Members   -  Reputation: 132

Like
1Likes
Like

Posted 21 October 2012 - 12:29 AM

Hello there friend I'd would recomen Lua (http://lua.org) which is a very simple and clean Language and Love (http://love2d.org) which is a framework writen by Rudy, It is very easy to learn, with Love and Lua you will be writing games in no time.

#8 Monkayy   Members   -  Reputation: 127

Like
0Likes
Like

Posted 21 October 2012 - 03:59 AM

Python seems like a god one but it seems that it is more web development rather than games. My ultimate goal with programming is to create a game like Civilisation (a simpler version and a game like Minecraft. Java sound good? One of my friends knows Java so that is a bonus for it as I can get help from him.

#9 jbadams   Senior Staff   -  Reputation: 14780

Like
0Likes
Like

Posted 21 October 2012 - 04:22 AM

Python seems like a god one but it seems that it is more web development rather than games.

Python is just fine for games. You have access to many libraries such as PyGame, Panda3d, and Pyglet as well as bindings to libraries originally written in many other languages such as PySFML, PyOgre and many others. You can also use the IronPython implementation to access any .NET libraries or bindings.

Examples of games using Python include EVE Online, Toontown Online, and Pirates of the Caribbean Online. It can also be used as a scripting language, as was the case in Civilization IV.

Python would be more than capable of creating a game similar to Civilization or Minecraft.


That being said, if you really prefer Java it's also a perfectly viable option that's quite capable of your goals.

#10 Monkayy   Members   -  Reputation: 127

Like
0Likes
Like

Posted 21 October 2012 - 04:29 AM

I think I will end up going with Java and maybe learn Python at a later point. One last question, would it be possible to make a game like Civ in Java? (That is worded wrong, I know I could but I suppose my question is, is it relitivly easy?)

#11 kunos   Crossbones+   -  Reputation: 1773

Like
1Likes
Like

Posted 21 October 2012 - 04:36 AM

I think I will end up going with Java


funny how you choose the only language that nobody suggested Posted Image
Why post a question in the first place if you've already made up your mind about it?

To answer your question, ya, you can do a game like Civ in pretty much every language on the planet, and that, by definition, includes Java.
The biggest bottleneck is always the programmer, not the language.

Edited by kunos, 21 October 2012 - 04:37 AM.

Stefano Casillo
Lead Programmer
TWITTER: @KunosStefano
AssettoCorsa - netKar PRO - Kunos Simulazioni

#12 Monkayy   Members   -  Reputation: 127

Like
0Likes
Like

Posted 21 October 2012 - 04:45 AM


I think I will end up going with Java


funny how you choose the only language that nobody suggested Posted Image
Why post a question in the first place if you've already made up your mind about it?

To answer your question, ya, you can do a game like Civ in pretty much every language on the planet, and that, by definition, includes Java.
The biggest bottleneck is always the programmer, not the language.

I had not made up my mind on Java but I knew in my head that at some point I would want to do it. I left it out of my original question to try and get un-biased knowledge of all of the languages to see if I changed my mind. But good spot anyway :P

#13 Anri   Members   -  Reputation: 577

Like
0Likes
Like

Posted 21 October 2012 - 06:03 AM

Ten years ago, I would have said plain C, but only to learn the basics of programming. Its a great stepping stone to C++ and Java; first learn procedural programming and then move on to OOP(object-orientated programming).

Today...I would recommend Java. Reason being its very popular in many fields other than gaming and has great educational support.

If anyone is thinking of learning Java, and looking at a University to learn it from scratch then I would recommend the Open University's M250 module. I took its predecessor M255 and it begins with an example with croaking frogs - of all things - to illustrate OOP, and it was a pretty good way to explain it even to a complete beginner. Just a recommendation, of course.

#14 Shippou   Members   -  Reputation: 1090

Like
0Likes
Like

Posted 21 October 2012 - 11:37 AM

To learn how to program a game, I would recommend a high level program. Python, C#, Visual Basic, Lua ... to name a few.
Once you are familiar with game design, and can write decent games, I would recommend switching to a lower end language for better performance, and portability. The most populate one would be C++ .

It is all up to you, and what you feel comfortable programming with. Just be aware that some folks who posted in this topic may be misinformed as to what certain languages are capable of. Always do your research to see what a language is actually capable of doing ....

Python is just fine for games. You have access to many libraries such as ... Panda3d, and ...

Panda 3D is not a Python library. It's a game engine written in C, which utilizes scripts written with it's own version of Python 2.6 HERE is the manual.

Examples of games using Python include EVE Online, Toontown Online, and Pirates of the Caribbean Online. It can also be used as a scripting language, as was the case in Civilization IV.

All of those games use an engine written in C, that utilize scripts written in Python. None of them are Python based .

Python would be more than capable of creating a game similar to Civilization or Minecraft.

It has been shown that Python has a difficult time rendering voxel worlds ( Minecraft ). It can be done, however you will suffer incredible frame rate problems.

Edited by Shippou, 21 October 2012 - 11:38 AM.

My YouTube Channel Filled With Geek, Nerd, Politics, Economics, & More !  
[Click Here]


#15 Eelco   Members   -  Reputation: 246

Like
0Likes
Like

Posted 21 October 2012 - 12:25 PM

Seems you have already made up your mind, but anyway:
  • The Java community and its libraries are centered around enterprisy stuff. Id say the java gamedev community is small. That sort of thing matters a lot. (then again, I believe python does not have a very large gamedev community either)
  • Java is probably one of the least expressive languages around. In terms of learning a wide variety of well thought out language concepts, I wouldnt touch it with a ten foot pole. If you use windows yourself (and dont bother worrying about your users just yet), id urge you to give C# a look; which is basically java done right. In general, id say .NET is a great learning platform.


#16 Eelco   Members   -  Reputation: 246

Like
0Likes
Like

Posted 21 October 2012 - 12:31 PM


Python would be more than capable of creating a game similar to Civilization or Minecraft.

It has been shown that Python has a difficult time rendering voxel worlds ( Minecraft ). It can be done, however you will suffer incredible frame rate problems.

One of pythons great strengths is interoperability with C and its libraries. You write it in python, and if it isnt fast enough, and you have the skill to take it to a lower level, that option is always wide open to you.

As opposed to, say, java, which makes this a royal pain in the ass.

#17 Bacterius   Crossbones+   -  Reputation: 7025

Like
0Likes
Like

Posted 21 October 2012 - 12:45 PM

It has been shown that Python has a difficult time rendering voxel worlds ( Minecraft ). It can be done, however you will suffer incredible frame rate problems.

[citation needed]

Python can do well, although obviously you can't use "pythonic" lists and dictionaries to store your voxels, because that's just not going to work. But using C arrays instead, there is no reason at all Python cannot manage voxels.

"The best comment is a deleted comment."


#18 Shippou   Members   -  Reputation: 1090

Like
1Likes
Like

Posted 21 October 2012 - 01:29 PM

[citation needed]
Python can do well, although obviously you can't use "pythonic" lists and dictionaries to store your voxels, because that's just not going to work. But using C arrays instead, there is no reason at all Python cannot manage voxels.

It can handle voxels, however it is SLOW when it comes to handling them. A good practical example would be MC-Edit which is a Minecraft world editing tool written in Python. It works, however on my duel core 2.6Ghz computer, it takes forever for it to render surface areas.
I do agree that using C / C++ arrays are a much more efferent way to go.

My YouTube Channel Filled With Geek, Nerd, Politics, Economics, & More !  
[Click Here]


#19 rip-off   Moderators   -  Reputation: 6875

Like
0Likes
Like

Posted 21 October 2012 - 02:44 PM

@OP I think Java is a decent choice as a first language, but has suffered (at least in the past) from a rather weak community support for writing games. Maybe my information is out of date, due to the popularity of a flagship produce like Minecraft might speak of a more active community I am unaware of.

It has been shown that Python has a difficult time rendering voxel worlds ( Minecraft ). It can be done, however you will suffer incredible frame rate problems.

...

It can handle voxels, however it is SLOW when it comes to handling them. A good practical example would be MC-Edit which is a Minecraft world editing tool written in Python. It works, however on my duel core 2.6Ghz computer, it takes forever for it to render surface areas.

Careful now. That a given program doesn't handle something well is not something one can draw conclusions about the technologies involved from. There is also the skill and determination of the programmers to be taken into account. For example, maybe they aren't particularly good at or interested in optimisation, or perhaps optimisation is less of a priority than building the map editing features.

Likewise, that Minecraft manages to have a decent voxel renderer doesn't say much about Java. I don't know the details, but perhaps the Minecraft team are adept at getting the graphics hardware to do a lot of the sweating.

I could write a terrible Voxel renderer in assembly, does it prove anything?

#20 TheDespite   Members   -  Reputation: 104

Like
0Likes
Like

Posted 21 October 2012 - 05:00 PM

I would not suggest starting with Java. This is mostly because of the lack of community.

I suggest you start playing around with XNA (C#). I know (and you should as well) that XNA is not so good option for actual game development anymore(if it was in the first place), but is still a great platform to learn with! This is because the game loop(s) and content management are already handled for you so you can just drop in a couple of sprites and start moving them on the screen.




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