December 2nd, 2008, 07:35 PM
Game Design: Which Programming Language First?
I want to get into game design, but I'm not sure which programming language I should learn first. I'm going to use resources on the internet, but mostly I'll be teaching myself. I want to be able to design smaller games first and build a portfolio, and I eventually want to work on big multiplayer games. Which language should I learn first to get experience and prepare for more advanced projects?
December 2nd, 2008, 07:56 PM
December 3rd, 2008, 12:05 AM
Usually it depends on the programming background that you have. If this is your very first language, then I would not reccomend c/c++ or java. The reasons being are that: all three of those languages are very strict, beginners usually have difficulties in these(such as myself ), and there are much easier languages designed for beginners. Personally, I reccomend BlitzBasic as it gets you experienced for harder, stricter languages while giving you a taste of the game development process.
December 3rd, 2008, 06:22 PM
I disagree that if you have no programming background then you should start with making games in a simpler language like Basic. I would say that if you have no interest in learning a strict programming language, then just use something super high-level like Game Maker 7 instead.
But if you are really serious about becomming a game developer, you must begin by familiarizing yourself with the programming language you want to eventually use long before you ever start trying to create a game. Developing a game is all about knowing your programming language inside and out, since there are so many aspects involved in the process, such as graphics, buffering, sounds, input, networking, reading files, and so on. This level of familiarity will probably take more than a year to acquire, depending on how your brain works and much effort you want to put into it. You must spend a lot of time in your chosen language. Search for simple online tutorials, and work your way up from there. I would also recommend buying a book for your language if you have the money - books are sometimes easier to use as a quick reference.
When you start getting a feel for the language, create simple challenges for yourself, such as "Load and count the letters in each line from a text file", or "Display a red square in the middle of the screen". Then solve each problem utilizing forums like this for help when you get stuck.
When you have a good basic all-around foundation in your language, dive right into your game. Again break it down into smaller tasks, and utilize the forums to help you solve each task. You will definitely fail on your first attempts, but if you don't give up no matter how long it takes, I believe anyone can accomplish their goals.
As for deciding on a language to use, I agree with jellis1408 that your current programming background will definitely be a factor in the decision process. At the same time, however, it is also going to depend on what is your eventual goal (it is generally a good idea to use the right tool for the right job). Each language has its strengths. Java is designed to be used in cross-platform or browser-based programs, while having experience with the c++ language might be more likely to qualify you for a job on a team of professional game developers.
Comments on this post
December 8th, 2008, 11:03 PM
While I agree with most of that, it widely depends on the scope of your project, the maintainability of your code, and the time and resources you have to dedicate - rather than your goal (Just a bit from the basic software engineering handbook.)
Originally Posted by paulscode
If you have plenty of the time and resources, go ahead with a language like C/C++ - which will ultimately lead most serious developers into seeking optimized libraries for math, physics or memory management. In other cases developers will need to learn a bit about assembly, the processor, and in general the way operating systems work in order to write truely efficient executable code. Cross compatibility becomes an issue with poorly designed code.
If your strapped on time and resources, seek a language that provides the same (general) ability but with a shallower learning curve such as Java. Although you still need to do some research into how to structure your code for the language.
If your scope is rather large, you may ultimately need choose C/C++ simply because a lag free game is all about how well you handle memory. If you dont have the time and resources - then scaling down your scope is a neccessary move.
December 10th, 2008, 08:04 PM
This statement is true if you are talking about a specific project, however I believe the original question was more about "getting into game design" and "building a portfolio". In that case, the central question has to be what is your ultimate goal -- what are you trying to get out of all of this? Namely, if your goal is to get a job on a team of game developers, I recommend learning c++. If you want to develop a game yourself, and the goal is a browser-based game then Java might be a better choice (or if the question's DarkPadian brought up apply to your situation). Other possible goals might be cross-platform games or console games. Like I said, it is usually a good idea to choose the right tool for the right job, and that is a question of what is your goal, in my opinion.
Originally Posted by DarkPadian
December 11th, 2008, 07:03 PM
Hehe, you did rather scare of the topic starter)) games may be very differently and for start, must have exact target then should choose implements and get additional knowledge, if it's necessary.
December 13th, 2008, 10:24 AM
I guess it's different for everyone, I can tell you what I did. I first started with Game Maker with its Drag and Drop Function. Then I started to learn TI-BASIC for my TI-Calculator and make programs and games for it. And then later, I went back to Game Maker and learned its GML programming language. Then I started to program with the script instead of D&D. Now I basically converted into Java. The process is easy since TI-BASIC is very simple, translate into GML pretty well. And GML give a pretty good foundation for Java. So if you don't have any programming experience at all. I guess this way is somewhat easier.
Some other software such as GameStudio and Virtools are pretty well too, but they are harder to learn and less programming (i guess). DarkBasic, I just don't like. FPS Creator is easy, but lag a lot and limited your creativity.
So far in my experience with Java, it is quite difficult to create GUI compare to Game Maker. I like Game Maker, even though its function in 3D is limited, it's 2D functions are pretty good. You can do lots of thing with it, and if something is not possible, you can always get a DLL and extends its function.
December 17th, 2008, 03:18 AM
I have to say that whatever your intentions, C++ is the LAST thing you should be learning if you're just starting out. It's likely to frustrate and put you off coding completely. You have to realise that game development these days goes way beyond just designing a game and programming it. You'll also need to learn a graphics library as well. The one I first picked up for the PC was Allegro. You need a minimum of C programming for that one.
A lot of Universities teach Java as the language of preference. Personally I've never been a big fan of Java but of you want to write mobile games then Java is a must-have. A lot of Java is borrowed from C and C++ but packaged together in a simpler form. Java is all about objects, though, which for a beginner can also be frustrating.
I'm surprised that nobody's mentioned C# yet (a bit of snobbery on here, maybe?). As far as C-style languages go, this is the best of the bunch for new coders. There is a mass of information on the net and the tools and libraries are available for free (like Java). A lot of new programmers pick up C# and the XNA library for writing games on PC and Xbox 360 (it also supports Zune now as well). C# is being increasingly used in game studios, although primarily for developing tools because C# development is quicker than C++ (it's not as complicated).
December 17th, 2008, 02:57 PM
tickled_pink, i'm confused -- what do you mean about 'beyond'?
December 18th, 2008, 07:25 AM
If you get frusterated and give up that easily, you are not likely to ever finish any serious video game anyway - it takes a long sustained commitment. Just my humble opinion.
Originally Posted by tickled_pink
December 18th, 2008, 11:39 AM
it's just justly)
Originally Posted by paulscode
December 20th, 2008, 07:41 PM
Simply that in the old days that's pretty much all you needed. You could code directly to the hardware because the hardware, even PC hardware, was simpler (you could do some nifty graphics in Pascal even). Today you need to learn additional libraries to get the most out of PC game development. It's not a massive task, though.
Originally Posted by Alg0Z-z
The primary library for Windows games is, of course, DirectX. The new kid on the block here is Managed DirectX, which can be used neatly with the new Visual Studio languages. Alternatively there's XNA, which is like a simplified DirectX but requires that you program in C#. It's what I'm using at the minute to knock a couple of games together.
As for using C++, it's not for the faint hearted. Not everyone gets pointers and templates immediately, especially if they've never programmed and don't fully understand the hardware structure of computers. I first came across pointers in an old 8-bit compiled language in the late eighties, so I understood what they were when I finally picked up C++ 10 years later. But, to me, C++ is even harder than assembly language ... I taught myself both 6502 and 68000 assembly in 2 weeks back around '91. It took me considerably longer to become just 'okay' at C++.
Everyone has their favourite language. In the long run you need to learn C++ inside out if you're planning on getting a job as a pro games developer. But if you're looking to develop games for fun or as an Indie developer then go for something simpler.
And if you really want to start simple, you can always try one of the BASIC languages (which is where almost everyone started in the 'good old days'). Try Blitz Basic or Dark Basic if you don't want to try one of the 'pro' languages like C++, C# or Java as a first attempt.
Just a little food for thought: One of the most popular Open Source games is Frozen Bubble ... and that's written in Perl! A scripting language of all things.
Last edited by tickled_pink; December 20th, 2008 at 07:46 PM.
December 21st, 2008, 10:00 PM
tickled_pink, does c++ need knowledge of the computer structure for game building?? hmmm... i think it rather needs math knowledge. a fact is game building has more problems than in past time. but it has simple explanation - first games even wasn't 2d - now, they are 3d with all sequels of this fact but human can a choose what game he wants and it defines implements building.
December 22nd, 2008, 08:05 AM
No, C++ doesn't need direct knowledge of the hardware ... not anymore. That's why you use libraries like DirectX or some of the engines built on top of DirectX and OpenGL. They hide the hardware from you so all you have to concentrate on is the coding.