#1 Members - Reputation: 127
Posted 20 October 2012 - 03:57 PM
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
#2 Members - Reputation: 878
Posted 20 October 2012 - 04:53 PM
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.
Small and simple Python 3.x media library: pslab
#3 Members - Reputation: 820
Posted 20 October 2012 - 04:57 PM
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 Moderators - Reputation: 5035
Posted 20 October 2012 - 05:05 PM
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 Members - Reputation: 2751
Posted 20 October 2012 - 05:09 PM
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 Staff - Reputation: 8924
Posted 20 October 2012 - 11:21 PM
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!
- Jason Astle-Adams.
From my blog: 20 ways to advertise your game | What next? Intermediate to advanced C++
How to make games WITHOUT programming | 4 reasons you aren't a successful indie developer
#7 Members - Reputation: 132
Posted 21 October 2012 - 12:29 AM
#8 Members - Reputation: 127
Posted 21 October 2012 - 03:59 AM
#9 Staff - Reputation: 8924
Posted 21 October 2012 - 04:22 AM
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.Python seems like a god one but it seems that it is more web development rather than games.
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.
- Jason Astle-Adams.
From my blog: 20 ways to advertise your game | What next? Intermediate to advanced C++
How to make games WITHOUT programming | 4 reasons you aren't a successful indie developer
#10 Members - Reputation: 127
Posted 21 October 2012 - 04:29 AM
#11 Members - Reputation: 1307
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
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.
#12 Members - Reputation: 127
Posted 21 October 2012 - 04:45 AM
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
I think I will end up going with Java
funny how you choose the only language that nobody suggested
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.
#13 Members - Reputation: 497
Posted 21 October 2012 - 06:03 AM
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 Members - Reputation: 392
Posted 21 October 2012 - 11:37 AM
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 ....
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.Python is just fine for games. You have access to many libraries such as ... Panda3d, and ...
All of those games use an engine written in C, that utilize scripts written in Python. None of them are Python based .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.
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.Python would be more than capable of creating a game similar to Civilization or Minecraft.
Edited by Shippou, 21 October 2012 - 11:38 AM.
#15 Members - Reputation: 179
Posted 21 October 2012 - 12:25 PM
- 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 Members - Reputation: 179
Posted 21 October 2012 - 12:31 PM
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.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.
Python would be more than capable of creating a game similar to Civilization or Minecraft.
As opposed to, say, java, which makes this a royal pain in the ass.
#17 Crossbones+ - Reputation: 3541
Posted 21 October 2012 - 12:45 PM
[citation needed]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.
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.
#18 Members - Reputation: 392
Posted 21 October 2012 - 01:29 PM
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.[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.
I do agree that using C / C++ arrays are a much more efferent way to go.
#19 Moderators - Reputation: 5035
Posted 21 October 2012 - 02:44 PM
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.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.
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 Members - Reputation: 103
Posted 21 October 2012 - 05:00 PM
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.






