Jump to content

  • Log In with Google      Sign In   
  • Create Account

FREE SOFTWARE GIVEAWAY

We have 4 x Pro Licences (valued at $59 each) for 2d modular animation software Spriter to give away in this Thursday's GDNet Direct email newsletter.


Read more in this forum topic or make sure you're signed up (from the right-hand sidebar on the homepage) and read Thursday's newsletter to get in the running!


Looking to start programming, where to start?


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

#1 RussDawgUnlimited   Members   -  Reputation: 121

Like
2Likes
Like

Posted 06 June 2012 - 09:46 PM

Im looking to get into some programming (i wanna be a game designer but i also wanna do some game programming too) and i just wanna know where are some good websites to learn from?

Where are some good programs to program with? (Preferably something free, im a tad poor :(

What language should i start with? (Ive been researching C++ but ive heard to start w/ java or python)

What would be a good way to start out? Should i jump straight into trying to make games or start w/ making simple programs and work my way up?

Just some help and advice would be great or if someone could point me in a direction of where to start would be great, ive just been going around different websites finding tutorials and stuff.

THANKS IN ADVANCE!

Sponsor:

#2 Inukai   Members   -  Reputation: 1297

Like
2Likes
Like

Posted 07 June 2012 - 12:30 AM

http://www.gamefroms...-developer.aspx
http://www.gamedev.n...ion=rules&f=101
http://www.gamedev.n...me-programming/

What would be a good way to start out? Should i jump straight into trying to make games or start w/ making simple programs and work my way up?

You start with simple programs to learn at least the basics of the language you chose before you try any game project..

Have fun on your journey ;)


By the way, this is the wrong section to ask. Check out the "For Beginners" section.

Edited by Inukai, 07 June 2012 - 12:32 AM.


#3 jbadams   Senior Staff   -  Reputation: 19406

Like
0Likes
Like

Posted 07 June 2012 - 01:30 AM

Check out the "For Beginners" section.

Moving you there. Good luck! :)

#4 Cagnazzo   Members   -  Reputation: 140

Like
0Likes
Like

Posted 07 June 2012 - 10:15 AM

Inukai linked to some good posts. I answered another topic with a post that may be of some help here.

Basically, I'd recommend checking out university websites that have online computer science departments. MIT is the one I use the most, but there are others out there. Of course, going through all the courses is unnecessary unless you have the goal of learning computer science rather than just getting the ability to code games, but the foundations of the introductory courses will serve you well in programming. Another pretty good advantage is you won't be stuck thinking "what should I program...?". The professors already have laid out exercises to teach you fundamental things like using classes and recursion, which, personally, was exactly what I needed and is something a lot of tutorials don't provide.

As for 'good programs to program with', are you talking about the text editors and development environments that you can program in? Those will be very language dependent. Python usually comes bundled with IDLE, which is an excellent (in my opinion) environment. For C++, I liked Code::Blocks, but my libraries got all screwed up recently so I started using the command line. I've never programmed in Java, but I know people recommend Eclipse and NetBeans.

I would probably recommend starting with Python - the two main reasons I've seen people try to start with C/C++ is because it's the industry standard and it's so fast. The reason it's the industry standard is partially just based on inertia, and industries tend to use what they know because it's what they know, rather than because it's actually better, so don't read too much into that. As for speed, it is certainly very fast - but a good coder with good knowledge of algorithms will be able to write something faster in Python in about a fifth the time it takes a newcomer to write a less elegant solution.

People get pretty obsessed with speed (myself included), but the truth is that if a program is running slowly in Python, it's probably because the programmer took the naive approach and brute forced a solution rather than implementing an efficient algorithm. And if you're just starting out, Python is good because it's not going to make you deal with some of the nasty, nasty low level stuff that C++ does. I have spent far more time hunting down segfaults than is reasonable, because I jumped into C++ before I knew how to handle its power.

#5 Goran Milovanovic   Members   -  Reputation: 1104

Like
0Likes
Like

Posted 07 June 2012 - 11:19 AM

My video tutorials (Blender Game Engine - Python): http://www.gamedev.net/topic/625003-video-tutorials-blender-game-engine/

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

| Game Dev video tutorials  ->   http://www.youtube.com/goranmilovano |
+---------------------------------------------------------------------+

#6 DeafTV   Members   -  Reputation: 1238

Like
0Likes
Like

Posted 07 June 2012 - 05:46 PM

I personally recommend starting in C++ as it is very versatile and is the industry standard. It is a little more difficult in the beginning, but if you want to learn more languages after C++ it will be much easier. I would start with small programs and work your way up. You can also get the Code::Blocks compiler for free for C++. If you go the route of starting with something like Java you can get the Eclipse compiler for free as well. Books are a great source as well as online tutorials, just make sure you practice what you learn. :)

Fly Safe 7o


#7 RussDawgUnlimited   Members   -  Reputation: 121

Like
0Likes
Like

Posted 19 June 2012 - 08:39 PM

Oops my bad guys, thanks for the help, I'll move over there and check it out! Appreciate the help, while im here tho i had a few questions regarding a couple of the articles:

Out of all the languages, which would you guys recommend? Ive heard lots of good and bad things about C++ which is where i was going to start, but I've heard its outdated and takes too long to do simple things, but I've also heard its the best one.

Isnt C# a subsidiary of C/C++?

I wanted to start out using Visual Basic, but read its outdated, would C# or Python be good starting languages?

If I can learn to program one language, are most of them basically the same? (I know theyre all different, but theyre all programming languages so they have similarities right)?

Just some random questions I had, I'll post more in the beginners section but you guys arent beginners lol, but I'll still go to the beginners section just wanted your guys' thoughts.

#8 Josh Petrie   Moderators   -  Reputation: 3887

Like
2Likes
Like

Posted 20 June 2012 - 09:35 AM

I would recommend you start with C# or Python. Learn the basics of the language with simple, text-based programs. You can graduate to simple text-based games (tic-tac-toe or hangman or the like) relatively quickly and keep working on those until you feel accomplished and comfortable enough with the environment to move on to something larger. Practice is key.

Isnt C# a subsidiary of C/C++?

No. C# is an entirely distinct language, although it has some syntactical similarities to other C-like languages.

I wanted to start out using Visual Basic, but read its outdated, would C# or Python be good starting languages?

C# or Python are both probably better choices. However, a newer version of Visual Basic (VB .Net) would be suitable as well, it's just sort of an ugly language with (in general) poor toolchain support for games. A lot of libraries and APIs that work in Visual Basic do so primarily because VB .Net is a managed CLR language like C#, so things "work" but they don't quite end up feeling right.

If I can learn to program one language, are most of them basically the same? (I know theyre all different, but theyre all programming languages so they have similarities right)?

Learning any language of one paradigm (imperative, functional, et cetera) would make learning other languages of that paradigm easier, and to some extent even make learning new programming paradigms easier, yes.

Josh Petrie | Game Developer, Undead Labs


#9 XNA-3D-101   Members   -  Reputation: 120

Like
0Likes
Like

Posted 20 June 2012 - 11:00 PM

Oops my bad guys, thanks for the help, I'll move over there and check it out! Appreciate the help, while im here tho i had a few questions regarding a couple of the articles:

Out of all the languages, which would you guys recommend? Ive heard lots of good and bad things about C++ which is where i was going to start, but I've heard its outdated and takes too long to do simple things, but I've also heard its the best one.

Isnt C# a subsidiary of C/C++?

I wanted to start out using Visual Basic, but read its outdated, would C# or Python be good starting languages?

If I can learn to program one language, are most of them basically the same? (I know theyre all different, but theyre all programming languages so they have similarities right)?

Just some random questions I had, I'll post more in the beginners section but you guys arent beginners lol, but I'll still go to the beginners section just wanted your guys' thoughts.


C++ and C# outdated. ROFL :-) Where did you hear that from?

I work in business IT and not the game industry. But I hear of lots of jobs for C# programmers.

C++ jobs are a bit rare because very few businesses have use for such a powerful language as C++. After all, if you can program it in a week in C#, why pay someone to take 3 months to program it in C++?

Still, C++ isn't going anywhere. I'm hearing the C++ is "evolving" with Windows 8 and whatnot, but that's not the same thing as "going away".

Machine language is what the computer "speaks". If you want to get real technical, Machine Language is nothing but switch settings (the transistors in your CPU and memory are electronicly controlled switches that are either on (1) or off (0)). That's usually represented with bytes that have values between 0 and 255 where each byte is 8 electronic switches. Machine language is programming the computer by setting the switches by setting every byte a specific value. Now that's a dead language. Not because it's not awesome, but because Assembler is the same thing.

Assembler just assigns mnemonics to the numbers. So just for example, you might have 32 46 29 in machine language. 32 might mean add the next number that comes up to whatever number is in the memory address provided in the next number. Or Add 46 to the value at memory location 29. Assembler allows you to write: ADD 46, 29 rather that 32 46 29 and makes it more clear what you're doing. But it's one for one with machine language. Essentially, it is machine language.

When you get deep into C++, you find out that C++ is Assembly language. Instead of ADD 46, 29 you will have something like X +=46 which says to add 46 to the current value of X. But under the hood X is just a memory address that might be at location 29.

When you dis-assemble Visual C++ you find that it's next to impossible to write better machine language code than Visual C++ does. It's just really good at it. That means C++ is direct control over the hardware. You just simply can't get any more powerful or efficient than that. So good luck replacing it.

Unless Object Oriented Programming goes out of fashion, I don't see C++ going anywhere in the next decade. That doesn't mean it won't evolve. Most modern programming languages are just rehashes of C++. Java is basically C++. C# is basically beginner level C++ that calls the .Net library. It's like new languages can't even manage to do it better than C++; they just abstract it more and take it further away from machine language reducing the performance and power.

Now things like Windows managed code are making things a bit more complicated. So, you have to have managed C++ and CLI and all that, but C++ is still as powerful as it gets. It's so powerful that no one even bothers writing Assembly language code anymore.

Granted, modern machines are so powerful that you can afford to waste a whole lot of the computer's resources. Visual Basic, for example, is not nearly as efficient as C++ but it's a whole lot easier to learn. And there's the question of "maybe it's ok to be less efficient if it makes it easier and development time is shorter".

C# is half way between Visual Basic.Net and C++. It reads a whole lot like C++, making it a little more difficult to learn, but it spends 90% of it's time calling .Net just like VB.Net to the point that the two languages look very similar.

Anyway, to the OP, Visual Basic.Net is a good easy way to start learning programming. C# is just a little harder but a really good language to learn and not that much harder.

I would not recommend C++ as a beginner language. I've seen people fail to learn easier languages. Yes. You can start by learning C++, but if it seems overly difficult definately take a few steps back and learn C# or VB. C# is very similar to C++ but just a whole lot easier because you don't deal with low level stuff. For example, you're going to have to get very familiar with pointers in C++. It's a difficult enough subject it gave me a bit of trouble in college even though I've been programming since I was 12. C# is similar but there are no pointers anywhere in the language. You just simply don't have to learn about pointers in C#. (Granted, eventually you need to learn about pointers but not at the beginner or intermediate level.)

Oh. And most programming languages are similar. I mean, after all, all of them are used to program the computer. But they were all created with different purposes in mind. Basic was created to be easy for beginners and kids to learn. Visual Basic is just a modern version of that, but maybe not as common in the business world today as it once was. Pascal was created to teach college students to program "correctly" before Object Oriented Programming was popular. Assembler was created because it was easier than machine language and nothing else existed at the time. C was created as a powerful improvement over assembler that could be used across many platforms. (Assembler is specific to the CPU being used. Mac Assembler is nothing like Intel Assembler when you get into the specifics.) Java was created to be used on even MORE platforms without any code changes but ran through a virtual machine which is slower than C. C++ was created to make C object oriented. C# was created to compete against Java and leverage the .Net CLR. So they all have their advantages for certain things related to why they were created in the first place.

Learning any computer language will make learning the next one a whole lot easier. And, yes, an array is an array no matter what language it's programmed in. In other words, a lot of what you learn in one language will apply directly to the others.

Generally, the more powerful the language, the harder it is to learn and the more time it takes to get anything done in it. That's why no one does Assembler anymore, since C++ is a little easier but can do the exact same thing just as efficiently (with some rare exceptions). And that's why businesses don't want to hire C++ programmers (except game design companies who primarily want to hire only C++ programmers) when they can hire a C# programmer to do the same thing in 1/10th the time and just buy a more expensive and more powerful computer to make up for the performance lost. Businesses can afford to throw more hardware at a problem. But game design companies can't tell their customers "Well, we could have programmed our game in C++ so that you could run it on a $1,000 computer, but we decided to program it in VB.Net. But HEY, it will run JUST as well if you go buy a $5,000 computer to run it on. Oh. And by the way that will be $60 for the privledge of playing our game."

So: easiest language VB.Net
best language to start with if you can handle it: C#
best language to know but one of the most difficult:C++ (C++ is actually a whole lot more than just C++. Good C++ programmers know Win32, ATL, STL, maybe MFC, and can tell you exactly how Windows works under the hood with things like multi-threading management using mutexes and semephores and large block memory management using page locking. In short, learning C++ is just the beginning of learning C++ for Windows. Learning C++ is actually the "easy" part and only about 1/100th of the journey.)

Post Script: I actually got up out of bed after going to bed to write this because I forgot to tell you: you can download VB.Net Express edition or C#.Net Express edition for free from Microsoft. It's hard to beat that price. So, it won't cost you anything to give them a try. (For that matter, I think you can also download C++ Express edition for free too.)

Edited by XNA-3D-101, 20 June 2012 - 11:37 PM.


#10 6677   Members   -  Reputation: 1058

Like
0Likes
Like

Posted 21 June 2012 - 02:47 AM

you can download VB.Net Express edition or C#.Net Express edition for free from Microsoft. It's hard to beat that price. So, it won't cost you anything to give them a try. (For that matter, I think you can also download C++ Express edition for free too.)

You can then get XNA for C# express for free aswell. If you know what your doing you can use XNA in VB.net but its much harder becuase XNA gives loads of templates for C# express which don't appear in VB.net express and it also gives additional compile options which you will have to work out for yourself.

Personally I've just taken the plunge into XNA. My only previous graphics experience was using py-game but I never found and tutorials that worked for me. XNA I find just works, no faffing around.

I never learnt C# properly, I learnt VB.net but the XNA tutorial I've been going through is so good IMO that I've been able to make the switch easy. Play around with VB.net express, make a few console applications, even play with windows form applications, then when you really think your ready install C# express and XNA.

#11 Tipotas688   Members   -  Reputation: 86

Like
0Likes
Like

Posted 21 June 2012 - 04:33 AM

I'd say give it a go with C# or javascript using the Unity engine. Python is very easy to learn but also has kinda distinct way of writing, I'd say go with C# if you want to touch your feet in the water or go with javascript if you want to have an easier time ( from what I've seen in the industry artists always pick it up ).

Edited by Tipotas688, 21 June 2012 - 04:34 AM.


#12 Fredericvo   Members   -  Reputation: 482

Like
0Likes
Like

Posted 21 June 2012 - 05:45 PM

I learned languages in the following order and it works out for me: BASIC (C64), assembler (6502,68000,X86,X64), C, C++.
On the side I learned JS&PHP as well.
OOP was and to a big extent still is the biggest challenge for me, not so much pointers but that's the assembler background I suppose. :-)

#13 Ryan Schurton   Members   -  Reputation: 176

Like
-1Likes
Like

Posted 22 June 2012 - 10:47 PM

Download Unity3d:
http://unity3d.com/unity/download/

Start learning here:
http://www.walkerboy...g___free__.html

Also more tutorials on Unity Teaching Forums:
http://forum.unity3d...ums/23-Teaching


Good Luck, and Happy Developing Posted Image

Edited by RoyalRyan, 22 June 2012 - 10:48 PM.


#14 antiHUMANDesigns   Members   -  Reputation: 58

Like
0Likes
Like

Posted 23 June 2012 - 08:04 PM

I'd recommend going straight to C++, and learn to do things the correct way right from the start. I also think C++ (due to the fact that it doesn't hide the pointers) will allow you to learn more about how a computer works, rather than if you work with Java, for example, which officially pretends not to use pointers.

C++ is great because the performance can't really be beaten, and it allows you to write small programs as well as huge ones. I believe OOP will stay strong from a long time, and C++ definitely isn't going anywhere since there is nothing that can realistically compete with it anywhere in sight.

And once you know C++, other languages will come naturally. But if you only know a high level language, you'll have a hard time stepping out of the comfort zone and into something that gives you true control.

#15 CaptainKraft   Members   -  Reputation: 266

Like
0Likes
Like

Posted 24 June 2012 - 11:37 AM

Lots of great advice here, but I thought I'd give my two cents as well.

IMHO, C++ is the worst language to start with; however, it will depend a lot on your personality. If you are more interested in taking your time, learning the absolute basics, and moving up to more advanced concepts slowly, then C++ might be for you.

On the other hand, most people want to see the results of their hard work sooner rather than later and enjoy using what they create. C++ won't really allow you to do that.

I didn't write this article, but it's a perfect place to start out. I highly recommend you read it.

Now that I got that out of the way, here are my recommendations:

Two choices:
1. Start with an engine that does almost all the work for you
2. Learn to use a framework (library, API, etc) in your language of choice

The first option will get you something to play the fastest, but most, if not all, of the programming is abstracted away. You won't learn as much about game programming this way, but you will get the satisfaction of actually working on a project that you'll get to play with.

The second option is the one I prefer. I would recommend going with Python, C#, or Java and using PyGame, XNA, or Slick2D respectively. These libraries give you the framework to start making your game. You'll get to learn much more about development because EVERYTHING isn't done for you. Just the high level stuff that allows you access and use of things like the mouse, keyboard, and graphics.

Well, I hope you like the article and get something from another distinct point of view. Wish you the best and make sure you share your games with us when you get going.

Edited by JDGamedev, 24 June 2012 - 11:38 AM.





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