Check the facebook page!

If you prefer, you can also follow the Facebook page for this blog :)

Saturday 14 June 2014

Where to start Programming/Game making?

This is a question that quite a few people have asked me already, and since I talked more about "why" than "how" to program I feel it is the right time to do this post.  Also, since you'll probably need to know how to program before you make a game, I'll talk about it first.

Before I begin though, I just want to say a few things about it.

First, each person has a different learning method, I will mention a few but feel free to explore on your own whatever fits best for you.

And second, someone once said that the only way for anyone to learn anything is if the person wants to. Even the best masters in the whole world can't teach you 1 single thing if you do not want to.

So let's get started shall we?




What language should I learn?

Ok, first things first. Before you start learning you've got to know what you want to learn right? First ask yourself what kind of programs do you want to do? And for what platform (PC/Mac/other devices/etc)?
Would you like a language that's more efficient or one that's easier to understand?

These questions would probably require some personal research to find out, but it shouldn't really matter.
Keep in mind that almost all languages can achieve the same result. Some, however, might require you some more work to have the same effect as others but it will probably have some other advantage as well. Another good thing to keep in mind is, even if you learn one language but later need or want to learn another know that most are very similar in some aspects and knowing a language will let you understand most of another.

If you want a deeper knowledge maybe you should start with a lower-level language, one that's closer to the computer's "language" than your own, like C for example (there are even lower level languages but it really isn't needed).

Languages like C# or java are object oriented programming languages, if you are interested in programming a game, for example, this would probably be the best one to use as they work based on creating "objects" and adding properties to it. Like you could create a variable named "Car" and add values for price, top speed, weight, etc, and each time you instantiate a "Car" it will already have those properties which you can alter (more into that later if you're interested, aka if you comment asking for it I'll make another post).


But really, it's good to know more or less what you want but don't be afraid, you can't really go wrong with a language and whatever you learn in it will probably also work on another language, so choose whichever you like the most. As I mentioned before, all the C languages, Ruby, Python and java are really popular ones.



I've chosen my language, what now?

Now, (and sorry if this disappoints you) you start "googling".

As I mentioned before, each person is different and you only learn if you want to, therefore I will not tell you The One Magic Spot for you to learn, just pointers on what to do and look for.

My biggest suggestion however, is to me as much hands-on as you can. First think about a program you'de like to do... Maybe a program that acts as a simple calculator? Maybe one that you can input simple commands (like "yes" or "no") to interact with? Maybe even a simple game such as the one I made  :P (I know it's not polished, but I kind of gave up on it because of reasons)?


After that, search online for a tutorial for the language you want, it's up to you to decide if you prefer a video tutorial or a written one, in my case, the one I feel helped me the most was this one, he is very detailed on what is going on and what each line of code means. That tutorial is for Adobe Flash Cs3 and above (I believe) and uses ActionScript 3.0 (which is object oriented), you can download the trial here if you want.

Here's also a Unity Tutorial that really helped me out :)

I recommend you do this first, follow the tutorial (since you don't know how to program yet) and just try to understand as much as possible, and along the way see if you could change or add any kind of feature to it.


And again, be as much hands-on as possible, specially if you are following a written tutorial always write the whole code manually! Do NOT copy-paste! Because you will never learn if you don't practice it and while following the tutorials keep an active mind, think about what you could do with what you already know, or even if you could use certain pieces of the code to do some cool things, you're free to do what you want as long as it works as expected. 
That is why in a way I discourage you to try online courses (unless you already know some basics) because they usually have very strict automatic checking for your solutions, if you miss a " " (space) it can tell you that it is wrong and it will also discourage you to program for yourself, since you have to do exactly what they expect.


Keep practicing and practicing, that is the only way you'll ever learn how to program, no matter how many books you may read, they can help you understand a bit sure, but you'll never know how to use it if you don't try it. Again I recommend: follow some tutorial, use the person's code and then try to come up with ways of using parts of that code to create new things, you'll soon be able to do it by yourself and won't even need to go back to the old working code to grab pieces from it when you need them.


I already know how to program, I want to make games! 
Where do I start?

Before you throw yourself to work on any "serious" project I highly recommend you first make a game on your own.

It doesn't even have to be a good game or have nice graphics, just something that works. Follow a tutorial, do a game from it and then try to make another game entirely on your own (but feel free to use bits of code from first game you made, you probably aren't a programmer yet so you will likely need help) and see if it turns out alright.

Where should you make a game you ask? First ask yourself if you want to make a 3D or a 2D game and for what platforms (PC, web, etc). Adobe Flash has been around the internet for a long time and most of the games you play on the internet are made with it, however, nowadays Unity have become immensely popular on the web! And why? Because unity allows for 3D web games, as well as 2D.

Unity is the one I am currently using, and for good reasons! It's free, has a really nice work environment, works with 2d and 3d, lets you program with C# (which I'm currently using), javascript and boo, and also allows you to publish your games to pretty much anywhere! Mobiles, PCs, Macs, Playstation, Xbox, web, etc.

After you feel somewhat comfortable with game-making and want to start working with a team, go to the collaboration forums and post a thread explaining what you do and what you're looking for, that's what I did. I went to Unity's collaboration forums and posted a thread saying I was a programmer looking to gain experience. Shortly after my e-mail got flooded with offerings, some of them were even offering some money for it even though it was the non-profit category.

And from there on, just program and keep doing what you love ^^


Conclusion

If your goal is to learn how to program:

- Decide what language you want to learn;
- Think about what kind of program you want to do first;
- Look for a tutorial on how to do it on the language you chose (or another one if you don't mind);
- Type the whole code manually from the tutorial and feel free to experiment with it a little;
- Make new feature to what you did, or even create a new program, based on the previous code;
- Practice practice practice.

And if you already know more or less how to program and want to start making games:

- Make a few games on your own, even if they're nothing special;
- Post on the forums your "application" asking for work;
- ????
- Profit!



And that's the essential I wanted to say I supposed, if I wasn't clear on any aspect or if you have any doubts feel free to ask! Sorry if it was a long read but I like to explain things as best as possible :P


Cheers!

No comments:

Post a Comment

What do you think or want to share?