kevinspk at September 29th, 2012 16:54 — #1
Hi to you all who use this site.
Firstly my name is Kevin and am glad to have finaly signed up to a game dev comunity. I have been wanting to get into game dev as I feel I have some decent ideas. Maybe great ones maybe not, who knows and right now who cares. They are ideas I do believe would be fun. First problem is while I have the ideas, I have no way of fleshing them out into something playable. Second problem, how do I flesh them out into something playable.
Yes I have seen some posts asking the same thing. But nothing realy answering the questions I have. Sorry for the irritation of spiting it all out again, but my greatest thanks go out to anybodie who remembers how daunting it was when they started and are willing to lend a hand.
So here wo go.
1) What langauge to learn. It apears C++ is the way to go. And I guess that's what I will pick up as I don't think I could handle learning something on the easier side to just have to pick C++ up at a latter stage. I am willing to put in the time needed to learn the language. As its just a hobbie right now I'm in no rush.
2) What would be a good book to start with. I have seen some around writen from the point of game dev. Has anybodie read any like this or do you all prety much go the route of a straight forward C++ everything you need to know book.
3) Now that I have a language to focus on and a book or 2 to work through. What programs would I need to get going. I hate to think about having to work my way through 2D before going onto 3D, but as I don't want to take on something so big that I hate the task and give up all together, I understand 2D is the place to start. So whatever is necesary to start up there please. Like what program do I use to program with. What is good for making sound effects. And something for sprites of objects, and to animate them too. And on a side note, I don't want to make my own resources just yet, so is there any place you guys recomend to get them free.
And finaly, for now.
4) When learning something new we all know its best to break it down and focus on smaller areas. So is there a "traditional" sort of route through game dev. Like start with this type of game, then move onto this and finaly this. And presto. You have lernt all the baisics in a sneaky manner without knowing by picking up how to make a charecta move from one game, and decent collision detection from another and now can make a simple game that isn't just a straight clone of Mario or Tetris.
Is there any sort of structered lessons on this forum for beginners looking to jump strait in and begin learning.
I'm sure there's plenty more I should be asking. But I just don't know enough of what I want to do to know that I don't know what is necesary to do what it is that I want to do to be asking what it is I should be asking. Or some such.
Thanks for the help.
reedbeta at September 29th, 2012 17:53 — #2
Regarding the language to learn: I know you said you just want to jump into C++ and it's good that you're willing to put in the time, but I would still recommend starting with Python first. Note that Python isn't a baby language or anything. It's a powerful language in its own right, plenty of professonal coders use it for various tasks, and there is plenty of gamedev you can do in Python, e.g. with PyGame. Why start with Python? It has a lot simpler syntax than C++, so you spend more of your attention learning actual coding skills as opposed to memorizing arbitrary rules of the language. It requires a lot less code to get something working, because the language is doing more for you under the hood; this makes your iteration-time faster. (It's not uncommon for something to take 1 line of Python that would take 50 or 100 lines of C++.) Python's standard library has excellent documentation and it's all in one place. And there are some excellent free online books about learning Python, such as Think Python or Learn Python the Hard Way.
Now, everyone is different, and you personally might do fine jumping into C++ directly; I have no way of knowing. The thing about C++ is that you will have to mentally keep track of a lot more details all at once, and it has a greater potential to be confusing. Yes, C++ is a more powerful language in some senses (it's also much less powerful than Python in other senses), but it's also more difficult to work with. C++ is like a fancy sports car while Python is like a Camry or something. Which one do you want when you're just learning to drive?
By the way, once you've learned one programming language well, others will be a lot easier to pick up. Many of the concepts that you learn in Python will translate straight over to C++ or almost any other language. And it would be wise to spend some time working on basic programming concepts before doing stuff with even a 2D game. I'm not saying you have to work through the entirety of one of those books I linked to before you crack open Pygame and start making a 2D platformer or something. Just that again, it's a matter of balancing how many details you're trying to keep track of at once. If your brain's still trying to get a handle on loops and variables, for example, it'll be a lot harder to figure out your player character's jumping physics. Likewise, I think it's a wise decision to stick with 2D first and save 3D for later.
fireside at September 29th, 2012 18:04 — #3
You are going to get a lot of disagreement on this topic. My own feeling is that c++ is not the way to go if you want to develop a 3d game in the shortest time possible. You will need an engine now days to do a 3d game because it took those engine developers years and years to perfect that engine. You don't need to reinvent the wheel, and they make sure it runs on all systems. The engine is written in c++ and is 90 percent of the code in the game, so using a scripted language, which is much easier to debug, will only slow the game by about 5 to 10 percent, not noticeable by most hardware.
I generally recommend writing a few games in 2d because you will be doing your own basics like rectangular collision detection, grid based movement, astar path finding, simple physics (what goes up must come down) and finite state machines as well as things like game loops which become somewhat hidden in engines. You could learn those things in a 3d engine like Unity, but it tends to hide them with higher level tools. Still, it's up to you. Many people do begin with 3d programming in an engine like Unity without doing 2d work.
If you haven't programmed at all, I think Python is an excellent language to learn programming. Once you have learned one, it's fairly easy to learn the next. However, I don't think it's necessarily the best way to share your games with other people who will give you input on design. For that, I think perhaps FlashPunk is a good place to start, so you can put your games on Kongregate or something similar. Other choices might be Impact, which costs 100 dollars and is an html5 engine, or possibly EaselJS, which is free.
One thing you don't want to do is to get in too big of a hurry. That's the kind of thinking that leads people to start large projects before small projects and pick the hardest language like c++ as a first language. Almost all colleges that teach programming will not start their students out with c++. They do that for a very good reason, to keep as many people as possible in the program and graduating.
kevinspk at September 30th, 2012 04:49 — #4
Thank you both for the help. I will look into Python. If it makes me better in the long run.
As for the programs needed, is Pygame all I have to get a hold of to get started. Thanks for the book links to. Will go through them as soon as I get a chance. Yes that's much better, learning what's hapening in the back ground of an engine by doing it myself is a great way in. Hate it when things just appear to hapen and I have no idea why. Thanks again you guys.
fireside at September 30th, 2012 06:53 — #5
Pygame is the usual choice. Another library that's interesting is Pyglet. It's a little lacking in documentation, but looks pretty easy to get up and running. No external dependencies, and written in a more object oriented way. Since you will be using it as a stepping stone, you might want to give it a look. Also, you have to make sure you use the version of python for the library since there was a big break between version 2 and 3 in Python. There's a little tutorial here:
If you are following along with most books, they will probably use Pygame, so check that out. If you just want to get the job done and learn about game loops, ai, etc, then I think Pyglet might be a good choice, but you won't find a lot of examples.