Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411283 Posts in 69325 Topics- by 58380 Members - Latest Member: bob1029

March 29, 2024, 05:03:35 AM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsDeveloperTechnical (Moderator: ThemsAllTook)Learn programming. Where to start? Any mentors out there?
Pages: [1] 2 3 ... 5
Print
Author Topic: Learn programming. Where to start? Any mentors out there?  (Read 6023 times)
Keops
Level 6
*


Pixellin' and Gamedev'n


View Profile WWW
« on: December 13, 2012, 05:52:50 AM »

Greetings fellow TIGers. It's been a while since I posted.

I've been working on and off on many game projects in the last couple of years, only to have problems with the team (where I live it's really hard to get a good programmer) and the coders I find online tend to randomly dissappear... So I'm increasingly frustrated that I will never finish a game project. Thus, I've decided to learn programming so I can work on my own games. But the problem is, I'm an artist myself, a graphic designer. I'm fairly competent with computers but don't really know much about coding except for HTML and CSS.

So, I tried the classic Google approach and found several gazillion websites, books, manuals and whatnot. It's overwhelming.

I'm asking my fellow TIGers: Where do I start? Are there any good souls with enough free time and patience to mentor me through the process or at least through the initial stages?

Where I stand at the moment:

I'm pretty sure I want to learn Java, because I have several Android devices laying around here at home and I find it an attractive platform to develop for. I wouldn't mind learning other languages or work for another platforms. I bought an iPad (3rd gen) just for the purpose of learning to code for it, but then I learnt that you need a Mac to develop for it, and unfortunately at this moment I don't have enough dough to buy one.

So, tl;dr version. Where to start programming / learning about it? I'm like stuck in the hallway with so many doors...
Logged

Hearthstead: Hand Point Right Website - Twitter Hand Point Left

OPEN FOR COMMISSIONS! Behance portfolio
RalenHlaalo
Level 0
***



View Profile WWW
« Reply #1 on: December 13, 2012, 07:48:15 AM »

I'd learn C++ first if I were you, though I'm probably alone in making that recommendation -- most would consider it too complex for a beginner.

Here are some reasons why, in my opinion, C++ makes for a good choice of first language:

1) C++ is a very richly featured language, meaning that once mastered, making the transition to any other imperative object-oriented language is very easy. For instance, I once had to do a university assignment in Java -- a language I'd not used before -- but as I was fairly proficient in C++ I was able to both learn Java and complete the assignment all within the space of an afternoon.

2) Due to its backward-compatibility with previous standards and with C, most language features are optional. If you don't like a particular feature (perhaps you haven't learnt how to use it yet), you can avoid it completely. It is perfectly reasonable, for example, to completely forgo the use of exceptions, or of templates, or of multiple inheritance, etc. It is in no way unprofessional to use a subset of C++ rather than the whole thing (just think of all the great programs that've been written in C).

3) C++ is a compiled language, meaning that your code runs natively on the target platform -- it's not interpreted by some VM. There are advantages and disadvantages to this, but one advantage is that as you write C++ code you can sort of visualise the machine code that's being produced -- you're working very close to the metal. I would advise finding a tutorial that starts by teaching you a bit about assembly code, and then describes the process of compilation, linking, etc., and then shows you how simple programs translate into machine language. By the end of it, you'll likely have a much better understanding of how computer software works than the average Java programmer Tongue

4) C++ is a very popular and widely used language, so there are lots of learning resources and libraries available. It's used in everything from video games to jet fighters and Mars rovers. If you want a career in software engineering, C++ is the language to learn.

There are probably tons more reasons, but I'll leave it at that for now.


EDIT: A lot of people here are probably going to recommend Java, but remember, as you learn C++ you are pretty much learning Java at the same time (see point 1 above); this isn't true the other way round!
Logged

Polly
Level 6
*



View Profile
« Reply #2 on: December 13, 2012, 08:10:55 AM »

I wholeheartedly support your stance RobJinman, and this in particular ..

I would advise finding a tutorial that starts by teaching you a bit about assembly code, and then describes the process of compilation, linking, etc., and then shows you how simple programs translate into machine language. By the end of it, you'll likely have a much better understanding of how computer software works than the average Java programmer Tongue

However, Keops doesn't seem to want to become a software engineer, he just wants to make games. In that light I'd personally recommend getting familiar with something like Game Maker or Unity instead.

@Keops - This thread will probably end up like another one of those hallways I'm afraid ( with everybody suggesting different options ) Wink
Logged
Keops
Level 6
*


Pixellin' and Gamedev'n


View Profile WWW
« Reply #3 on: December 13, 2012, 08:11:57 AM »

Hey Rob. Thanks a lot for your input. I really appreciate it.

I thought that too. While doing the very research that overwhelmed me with tons of information I came across lots of guys who also recommended learning C++ and even more guys that warned against it. I'm considering learning that because I know that all the skills I learn there will serve me well when I transition to Java programming.

Any resources you suggest? I'm going to start by checking the programming languages thread.

See ya!
Logged

Hearthstead: Hand Point Right Website - Twitter Hand Point Left

OPEN FOR COMMISSIONS! Behance portfolio
Keops
Level 6
*


Pixellin' and Gamedev'n


View Profile WWW
« Reply #4 on: December 13, 2012, 08:21:10 AM »

Hey Polly! Thanks for the input.

Yeah maybe it'll end like that too but it is always insightful to hear what others think about this topic, or even better to hear what worked for others to get inspiration.

Unity looks promising but I'm afraid I need some previous knowledge before being able to work with it.

Once again, thanks a lot for your words!
Logged

Hearthstead: Hand Point Right Website - Twitter Hand Point Left

OPEN FOR COMMISSIONS! Behance portfolio
Richard Kain
Level 10
*****



View Profile WWW
« Reply #5 on: December 13, 2012, 08:22:16 AM »

C++ is best if you want to be independent of any existing software, frameworks, or platforms. It is one of the most widely accepted cross-platform languages. If you are capable enough at C++, you can do almost anything.

The obvious downside is that it can take years to become capable enough at C++ to do what most game developers actually want to. C++ is one of the slower options, and will require a considerable degree of technical skill and practice before you are able to capably produce anything. C++ is one of the slowest and most technically demanding options available.

The .NET framework would be a compromise, but still leans toward fairly heavy programming. This would include Java and C#. (there are several other languages that are .NET compatible, but these two are the most commonly used in game development) .NET framework languages are memory-managed. They require less technical overhead to learn and use, but are somewhat less powerful because of this.

C and C++ are often cited as good places to begin for programming. This is because they are ECMA script languages. Any other ECMA script languages will use the same programming logic conventions that you find in C and C++, and their syntax will have many similarities. Java and C# are both ECMA script languages as well. Learning C or C++ will prepare you for learning any other ECMA script languages.
Logged
Polly
Level 6
*



View Profile
« Reply #6 on: December 13, 2012, 08:41:43 AM »

Unity looks promising but I'm afraid I need some previous knowledge before being able to work with it.

I'd say it's the other way around. Unity is like a bike with training-wheels, easy to get started with and you can take the training wheels off when you're ready for it ( the "danger" obviously is that you get too dependent on the training wheels ). While if you start off with C++, be prepared to eat allot of dirt Wink



Guess it's somewhat of a learning mentality / preference thing as well.
Logged
Netsu
Level 10
*****


proficient at just chillin'


View Profile WWW
« Reply #7 on: December 13, 2012, 09:27:35 AM »

I am an avid C++ programmer myself, been learning it for almost 4 years so far, but it's an industry language. If you need a TOOL to help you make games yourself then C++ is definitely not the way. It will easily take you 10-100 times longer to make your first game in C++ than it will take in Game Maker, Unity, Python or even Java.
If all you want to do is be able to make games without the need to hire a programmer, then I advise you to try Unity, Flash or Game Maker (probably depends on what kind of games you want to be making).

So basically, don't learn C++ if you don't want to be a professional programmer one day. You simply don't need any of it.

I also disagree with the point that learning C++ you're learning Java at the same time. You're wasting your time learning C++ specific issues that you will not need writing in other languages. It's better to just learn the tool you're intending to use.

The obvious downside is that it can take years to become capable enough at C++ to do what most game developers actually want to. C++ is one of the slower options, and will require a considerable degree of technical skill and practice before you are able to capably produce anything. C++ is one of the slowest and most technically demanding options available.

I very much agree. C++ only shines in areas that you will need YEARS to master.
« Last Edit: December 13, 2012, 09:32:58 AM by Netsu » Logged

Sergi
Level 1
*



View Profile WWW
« Reply #8 on: December 13, 2012, 09:36:39 AM »

I also would advise against (pure) C++. If you're starting out, choose a platform/framework that's good and has plenty of examples, tutorials, community, etc., and whatever language comes with that. It's more important to do a lot of stuff than it is to do it perfect.

My advice would be to choose something like Game Maker, Flixel or Unity and learn from basic examples. Unity for example has a lot of introductory tutorial videos on youtube. After a while you'll be able to do some stuff on your own, and then it's just the power of google. You said you worked with HTML, it's not programming but you're probably used to the "internet" google-it-yourself way of learning, so you'll be fine.

Just don't waste time on lower level stuff, it's not worth it until you definitely want to learn it, which is nice, since it helps with a lot of stuff. But not from the get-go.
Logged

Keops
Level 6
*


Pixellin' and Gamedev'n


View Profile WWW
« Reply #9 on: December 13, 2012, 09:40:44 AM »

Wow, thanks a lot for the feedback. It sure is food for thought to see all the different perspectives here.

Considering what I've read here and what I knew from before, this is my plan:

Learn Unity first > Work on some demos or maybe a simple full game project there to learn the ropes. I wonder how many TIGforums members are familiar with this platform?

Then as I get more confidence delve deeper and tackle C++ / Java. I would love to specialize on the game design / artistic aspects of Game Dev, but I'm not entirely adverse to becoming a programmer myself as I enjoy computers and technical stuff a lot.

Once again, many thanks to all of you.

Best regards,

Keops
Logged

Hearthstead: Hand Point Right Website - Twitter Hand Point Left

OPEN FOR COMMISSIONS! Behance portfolio
RalenHlaalo
Level 0
***



View Profile WWW
« Reply #10 on: December 13, 2012, 09:52:40 AM »

Keops, you may be better off taking the advice of the other posters; I think my C++ fanboy-ism may have clouded my judgement.

However if I could make just one more point in support of C++: There are plenty of game engines / very high-level APIs available that make game development not THAT much harder than in something like Java. And as long as you're sure to do things the modern way (smart pointers, etc.), you shouldn't run into too much trouble wrt memory management. That said, there are quite a few varieties of smart pointer...

My advice is still relevant to anyone who's serious about software engineering though.
Logged

Netsu
Level 10
*****


proficient at just chillin'


View Profile WWW
« Reply #11 on: December 13, 2012, 09:57:10 AM »

I think there are quite a lot of Unity users around here. I started playing around with it some time ago too and am very impressed.
I made a few games in C++, all programmed by myself, and though it was a great learning experience and I intend to use C++ professionally I will never again write a personal game project in it. It takes forever of writing, testing, rewriting, debugging, fixing and optimising and in the end I still would have gotten better results using something else if working alone and at my current level of expertise.
Logged

Eendhoorn
Level 6
*

Quak


View Profile
« Reply #12 on: December 13, 2012, 10:20:38 AM »

I really think you should avoid c++ at all costs. Your interest is in art, I don't think you want to bother with all the low-level memory management and stuff.

I think you should start out with actionscript 3 and flash. It's very beginner friendly because it's high level and the Adobe Flash IDE is a very visual tool. You can drop some artwork in an object and use that in your code, should be very satisfying for an artist.

You can also export to Android, but performance is not the best. After you feel comfortable in actionscript you could move over to some more difficult languages.

But I really advice against c++, that's just trying to run before you can walk.
Logged

nikki
Level 10
*****


View Profile
« Reply #13 on: December 13, 2012, 10:20:48 AM »

Quote
Learn programming. Where to start? Any mentors out there?

I know of a mentor that I wished was around when I learned programming. Zed Shaw
Not a gameprogrammer but more a systems guy / language freak who turnd teacher a few years ago.

this is his Python book
he's got a C book too

and some more little books you should learn when you want to become a programming-motherfucker.

Tip:
begin with a high level object oriented language, with a small syntax (like python)
then advance deeper and deeper.

Tip:
make stuff from the get go, dont learn by 'just reading' DO!

Another Tip:
If you want to learn how to make games (as opposed to write a game engine) you could have a look at gamemaker or scratch.


Question for all the peeps advicing to start learning programming by learning c++ :
"Really ?!! Thats how you learned it too ?? Are you  guys nuts!! have you forgotten about your messing around in gwbasic / turbopascal / visual basic / java / c / gazillion frameworks etc etc and all other stepping stones towards that ugly baremetal beast that is c++ ?? "
sure c++ is a powerhouse but that is not a good thing if you're a beginner.

best getting your hands dirty in a nice and little modern language.
after that  Ninja

oh and ps: Have fun!




Logged
Keops
Level 6
*


Pixellin' and Gamedev'n


View Profile WWW
« Reply #14 on: December 13, 2012, 10:24:44 AM »

Yeah I'll try Unity and see how far I can get. I know it's a bumpy road ahead but I think this is a sensible path.

@nikki: Thanks for your opinion on the matter. I'm going to take a look at those links you provided there! I completely forgot about Python.
Logged

Hearthstead: Hand Point Right Website - Twitter Hand Point Left

OPEN FOR COMMISSIONS! Behance portfolio
Evan Balster
Level 10
*****


I live in this head.


View Profile WWW
« Reply #15 on: December 13, 2012, 10:27:56 AM »

My advice:  Definitely start with Unity as it's probably the best, easiest-to-use engine available.  (Hopefully you are interested in 3D, as Unity is a bit awkward for 2D!)  Program your Unity projects in C# rather than Unity's Javascript variant.  Avoid the latter entirely.  Then, later, you can move to pure C# and MonoGame if you want to get more in-depth -- this combination works on a wide variety of platforms and I've heard very good things.  A few other good portable C# engines also exist.

(This comes from a guy who's a C++ programmer and has been writing a game engine for ages and has a neglected ambition to make something Unity-like or Game Maker-like and release it for free.)
Logged

Creativity births expression.  Curiosity births exploration.
Our work is as soil to these seeds; our art is what grows from them...


Wreath, SoundSelf, Infinite Blank, Cave Story+, <plaid/audio>
Richard Kain
Level 10
*****



View Profile WWW
« Reply #16 on: December 13, 2012, 10:29:17 AM »

Learn Unity first > Work on some demos or maybe a simple full game project there to learn the ropes. I wonder how many TIGforums members are familiar with this platform?

That sounds like a pretty good plan to me.

I started off trying to learn C++, but ran into a wall when it came to using it for object-oriented coding. Back then, there were very few examples on how to use OOP in C++ properly, most on-line tutorials focused on procedural coding.

I eventually wrapped my head around OOP when I learned Actionscript 3.0 and C#. Both of these languages made OOP much easier to understand, and I didn't have to bother with memory management.

For my current project, I am developing with Unity. I am using C# for the coding. (since I am already familiar with that language) For Unity, you can code using either C#, Javascript, or Boo. I would suggest either C# or Javascript. Javascript isn't taken quite as seriously as a language. But it is extensively used in HTML5 client-side programming. So learning to use it effectively in Unity would not be a waste.
Logged
Keops
Level 6
*


Pixellin' and Gamedev'n


View Profile WWW
« Reply #17 on: December 13, 2012, 10:38:28 AM »

I'm downloading Unity as I write this down. Its going to take at least one hour at the rate its going. So I think this is a good time to ask about proper forum etiquette. Is this board the one to ask technical questions about Unity? I guess the official Unity forums could also work.

By the way any particular tutorials or books you recommend for Unity? Is the official documentation comprehensive and simple enough or is it too technical for newcomers?
Logged

Hearthstead: Hand Point Right Website - Twitter Hand Point Left

OPEN FOR COMMISSIONS! Behance portfolio
Evan Balster
Level 10
*****


I live in this head.


View Profile WWW
« Reply #18 on: December 13, 2012, 10:49:40 AM »

Unity's tutorials are pretty good.  I've also heard positive things about Alec Holowka's Unity tutorial series on YouTube.

You could ask technical questions in this subforum or in the Unity forums.  I'd make the choice based on whether it's a very Unity-specific question (why does changing this material fail?) or a general game programming concept (how do I make a maze generator?)
Logged

Creativity births expression.  Curiosity births exploration.
Our work is as soil to these seeds; our art is what grows from them...


Wreath, SoundSelf, Infinite Blank, Cave Story+, <plaid/audio>
Sergi
Level 1
*



View Profile WWW
« Reply #19 on: December 13, 2012, 11:06:28 AM »

Yeah I'll try Unity and see how far I can get. I know it's a bumpy road ahead but I think this is a sensible path.

So now you should decide whether you'll program in Javascript, C# or the other languages Unity supports.

I use C#, it's just an awesome language and framework. But you might prefer to use Javascript, if you think that will be useful to you in other areas (the web building you mentioned on the original post).
Logged

Pages: [1] 2 3 ... 5
Print
Jump to:  

Theme orange-lt created by panic