Skip to main content
gamedev.net
🔒 Locked

Which Programming Language / Programs?

Started by Ranma13 Aug 29, 2005 at 3:23 AM 27 replies 3.8k views
Original Post
Ranma13
Ranma13
Hello, I am beginning my foray into game programming and although I am just starting out, I am dedicated to continue this endeavor. However, I had a few questions first: 1. What is a good programming language to start out with? I know the guide on this site suggested C/C++ but I heard that .NET is what everyone is starting to migrate to. What is .NET anyway? I heard that it uses both Visual Basic and C#, but can someone give me a dumb-downed answer? All the resources that I've seen about it are confusing. Edit: What about the D programming language? 2. What programs would be beneficial towards game programming? That would include any programs that help with graphics/music/sound and perhaps code maintenance and the sort. 3. How much C/C++/Other do I have to learn before I can start to program games? My first goal, as outlined by the site, is to make a Tetris game. Thank you for your answers and I look forward to being an active member on this forum.
Tyr
Tyr
I, prsonally, wouldn't recommend starting with C++. With languages such as Java or C# you're more likely to be able to get down the basics of object orientated design without having to worry about wrestling with the language quirks.

As for .Net, well, your answer will likely be different depending on who you ask. As far as most people here are concerned, I would imagine, it's a common intermediate language, its runtime, and a handy-dandy set of classes that make your life easier. Basically, what happens with .Net is that, unlike C++ or other languages that compile straight to 1s and 0s (machine code), .Net languages compile to a common intermediate language that can, theoretically, be run on any computer that has the runtime, regardless of platform. This means that you can indeed use C# and VB together, as they both compile down to the same thing before being 'proper' compiled at runtime. And that... was probably a very bad explanation, though. Sorry.

Useful programs: A good IDE is invaluable; I like Code::Blocks, myself. Also, I like Audacity for messing around with sounds, The GIMP for images, and Wings3D for 3D models; all of these programs are free and open source, so your wallet need not be afraid.

You'll need to be comfortable in whatever programming language you use before you get graphical. Being able to think like a programmer is a must if you want to get anywhere with your ideas, really... also, I'm tempted to advise against writing Tetris; Tetris has been done to death. But do what you want, though; everyone loves those falling blocks!
jbadams
jbadams
I recommend starting out with Python as your first language. You can get all the basic tools needed to start with Python on the website, and there are a few useful tutorials for learning the basics as well. Once you've got the basics down you can use the PyGame library to help you make some games.

Python will allow you to learn some good programming techniques while getting some reasonably quick results, and isn't prone to teaching bad habits as a lot of BASIC variants are.

After Python, I'd recommend moving on to C#, which is still relatively new compared to C or C++ but has recently been gaining in popularity. At the moment there are more recources around for C++, but there is starting to be more information available on development with C#, and in my opinion it will eventually take the place of C++ as an industry standard. Learning C and/or C++ is also a very good option however, and as mentioned there is a massive wealth of recources available on both.

Starting with Python, you should be able to make your first graphical game in a relatively short period of time after getting familiar with the basic syntax of the language and learning some of the commonly used functions. You'll need to use PyGame to help you out with graphics. I recommend making a Pong game before Tetris personally; it's a little bit simpler, but still contains many of the elements common to almost all games.


I'm not going to recommend any programming related software, but for graphics and audio I'll point you to these lists:
- Audio Software
- Graphics Software

In particular, for 2d graphics I'm quite fond of Paint.net and The GIMP.

For 3d, check out Blender and Wings 3d.

Audacity is an excellent free audio editing package. For music I actually recommend purchasing FL Studio if you're really interested, but there is also some pretty good free software around if you aren't particularly interested in this area, such as the excellent Modplug Tracker.


Hope that helps. [smile]
- Jason Astle-Adams
Glak
Glak
I recommend starting with C++. However most C++ books that you buy aren't actually C++ books, instead they are actually C books that throw in a little C++ code! Thus I recommend Accelerated C++, the only C++ book that is an actual C++ book.
jbadams
jbadams
As you can see, you've got 3 responses and 3 different languages recommended thus far. [wink] Most people will simply recommend the language they prefer, some will recommend one they think is a good learning language, and others will recommend what they learnt with (whether it's actually good for learning or not).

Almost any language will do - the important thing is to learn the fundamental programming concepts and the appropriate techniques for developing games. Stay away from BASIC variants as a general rule, but other than that feel free to pick any language and try to learn it.

I myself actually learned first with QBasic and then moved on to Visual Basic before learning some Java and C++, so I actually broke my own rule about BASIC variants quite heavily, but it's not something I would recommend; it's very easy to pick up bad habits which are hard to un-learn when using those languages.

In any case, once you've learned one language (assuming you learn it well and develop a good understanding of programming), picking up most other languages is quite easy to do.

To provide a brief list of some of the common choices, some good potential languages that are recommended often include Python, Java, C#, C and C++. Choose a language that you think will suit your needs and give it a go. Stick with it for a while, and if it really doesn't work out (give it a while, it can take some fair time and effort to first get into programming) you can always try another.
- Jason Astle-Adams
pTymN
pTymN
Learn lisp before those other languages clutter your mind with false categories and preconceived notions. stay pure ;p
 
TheNobleOne
TheNobleOne
If you eventually want to use C++ I would recomend learning either Java or C# first. This will get you familiar with the syntactical feel without all of c++'s quirks. Once you learn one of those you will hava a rather easy transition to C++ because you already know the basic loops, control structures, function signatures(methods in Object Oriented Programming). The only real difference you will find are a few things here and there and you learn them.

If you want a personal opinion here I would say start out with C#. Why I hate java. That was the lang I learned before C++ because C# was not around. C++ I recomend not starting with because the only program I have wrote yet that I did not have to debug was a basic hello world console app. In C# I can slam out a whole 200+ line program without any errors. But that is my personal opinion. You can really pick any language you want and can learn it in time.
My JournalComputer science education cannot make anybody an expert programmer any more than studying brushes and pigment can make somebody an expert painter. (Eric Raymond)"C makes it easy to shoot yourself in the foot. C++ makes itharder, but when you do, it blows away your whole leg."-- Bjarne Stroustrup
Parrot
Parrot
There's something to be said for a good authoring system too. You said you were interested in adding graphics, music, and sound easily, so that might be the way to go. I believe the FAQ mentions authoring systems briefly but doesn't go into too much detail.

I've experimented a little using Game Maker ( http://www.gamemaker.nl/ ) - it has a free version with no time limit, and the upgrade to the full version is pretty cheap. People make pretty sophisticated games using Game Maker.

There's also BYOND ( http://www.byond.com/ ) which is completely free and allows you to easily make multiplayer games. I haven't used it much but it looks fairly interesting.

You might also try Game Editor ( http://www.game-editor.com/ ) the free version comes with a time limit, but I've heard it's pretty good and if you want to buy it the cost for a single license is pretty reasonable if you don't care about subscribing for updates.


I think there are advantages and disadvantages to starting out with an authoring system. The biggest advantage is that they're usually easy to learn and you can start making games pretty quickly.

I think the biggest disadvantage is that some people get too comfortable with the authoring system they choose and are reluctant to expand their horizons and learn a more challenging language language later, even when the authoring system isn't well suited to what they want to accomplish.

So I'd say it's a personal thing. Use C++ if you're feeling adventurous and want a lot of power. Use Python if you're looking for something fairly easy and well structured. Use an authoring system like Game Maker if you want to get started quickly and still learn important programming concepts.

[Edited by - Parrot on August 29, 2005 1:39:37 PM]
Sneftel
Sneftel
Python is not my favorite language, my "current" language (whatever that means), or my most frequently used language. But I strongly recommend it for starting out. In my experience, the syntax is nice and clean for beginners and doesn't lead to having to treat certain language elements as "magic".
coding insanity
coding insanity
I would second the python reccomendation. I tried starting with C++, but I got bogged down with some of that languages' problem areas. Python is a more easy to understand syntax, and IS a good learning language.
Ranma13
Ranma13
Thanks for your input, everyone! I think what I'll do for now is start using Python and eventually switch over to C#. I'll learn the basics and then try to make a Pong game, and then expand from there.

Those authoring programs look interesting but I think it's best that I not start out using those programs. They're good for storyboarding and creating quick games but I feel that they would be too restricting in the long run.
TommySauder
TommySauder
Well, if you want to make quality games (don't flame me :D <3) ie nice 3D games, RPG, shooter wise, with good FPS, pick up C++ first. Sams Teach Yourself C++ in 21 days is a good read, and I'd go with that first, then accelerated C++. The only problem you will most likely have is with pointers and arrays, but there are plenty of resources on the internet that sum them up quite nicely.

After that, get some intermediate C++ books, one that was recommended to me was Code Complete. This is to get your C++ skills up there so when you switch over to an API, such as OpenGL or DirectX, you won't get confused as much.

I skipped Python because I didn't feel like it was necessary for me to learn that, as I knew some QBasic and some VB (VB is the worst thing you can learn.. unless you want to make quick window based apps). I'm not saying Python is a bad language to learn, its actually quite the opposite. But I felt it wasn't needed to jump into C++.

And again, with C++ there is a LOT of material out there, and the hardest part is finding the right material to read. Gamedev helps a lot with that in their book sections, which you can read user reviews, and then if you're stuck between a couple titles as here in the forums!
Parrot
Parrot
Good choice! I think you'll find too that once you get comfortable with one language it will become fairly easy to learn new ones. After all, a for loop is a for loop in any language, it's just a matter of syntax.

And you can even mix programming languages for your projects, even some authoring systems like Game Maker allow you to use DLL's. It's a wild world :)
Calin
Calin
If you plan to go beyond the hobbyist level in game programming C++ is a must.
I would start learning C++ without any intermediary steps.

[Edited by - Calin on August 30, 2005 2:02:23 AM]
My project`s facebook page is “DreamLand Page”
Sneftel
Sneftel
Quote:
Original post by Calin
If you plan to go beyond the "hobbist level" in game programming C++ is a must.
I would start learning C++ without any intermediary steps.

I'm not sure what a "hobbist" is, but anyone who thinks learning more than one language is a waste of time clearly hasn't been programming for very long. Yes, eventually you'll have to know C++. You'll also most likely need to know Perl, Python, Lua, Java, Awk, x86 assembler, Scheme, and C#. Don't let that list scare you, though. Once you're a good programmer, learning a new programming language is a simple, quick task. When you're just starting out, though, learning a new programming language is tied up with learning to program, which makes your first language much more difficult to learn than your second. That's why learning a hellishly complicated language like C++ is, in my opinion, a bad way to start.
2DExtremeOwner
2DExtremeOwner
Hello im new to everything about Programming but i would like to point out that a Program to make games easier(GameMaker,BYOND,etc...) is a really good way to learn what it takes to make a whole game and put it all together than C++ and it is very simple to understand and use,i personaly am learning BYOND as a part time language(Great for making prototype ideas and see what ppl think about them) and C++,im still newbie at both but i belive its a very good learning experience.
The Rug
The Rug
Quote:

Well, if you want to make quality games (don't flame me :D <3) ie nice 3D games, RPG, shooter wise, with good FPS, pick up C++ first

I disagree- you won't be making cutting edge games from the outset. Bear in mind it will be a long time before your chosen language becomes the performance ceiling, at which point moving from your current language to something more "powerful" should be a lot less painful. Trading ease of use for power is not a good idea early on.

Starting out with Python is good. Stick with that until you've gained some experience, then decide where to go from there.

Good luck!
the rug - funpowered.com
Calin
Calin
Quote:
Original post by Sneftel
Quote:
Original post by Calin
If you plan to go beyond the "hobbist level" in game programming C++ is a must.
I would start learning C++ without any intermediary steps.

I'm not sure what a "hobbist" is, but anyone who thinks learning more than one language is a waste of time clearly hasn't been programming for very long. Yes, eventually you'll have to know C++. You'll also most likely need to know Perl, Python, Lua, Java, Awk, x86 assembler, Scheme, and C#. Don't let that list scare you, though. Once you're a good programmer, learning a new programming language is a simple, quick task. When you're just starting out, though, learning a new programming language is tied up with learning to program, which makes your first language much more difficult to learn than your second. That's why learning a hellishly complicated language like C++ is, in my opinion, a bad way to start.


*hobbyist* sorry for my spelling.

I am not suggesting that learning some other language is a bad thing.
What I am trying to say is that he will have to face C++ sooner or later. This is the standard programming language in the game development industry. It`s not easy to go with C++ as your first programming language but on the long run it will pay off.

[Edited by - Calin on August 31, 2005 4:05:29 PM]
My project`s facebook page is “DreamLand Page”
Sneftel
Sneftel
Quote:
Original post by Calin
*hobbyist* sorry for my spelling.

I am not suggesting that learning some other language is a bad thing.
What I am trying to say is that he will have face C++ sooner or later. C++ is the standard programming language in game development industry. It`s not easy to
go with C++ as your first programming language but on the long run it will pay off.

In the long run you'll know C++ regardless of what order you learned your languages in. Why would it matter in the long run whether you learned it first or third?
Parrot
Parrot
Well, I think it's also true that some of us are only hobbyists. So that's one thing you have to consider in addition to everything else when trying to choose a beginning language.

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.