11 August 2011

Analysis of some #gamedev questions and answers

As anyone who's ever browsed #gamedev or any other game development related forums knows, there's a very large number of people trying to communicate somewhere along these lines:
I [don't have any/have a little] programming experience/knowledge and I want to know what are some free resources to make a next-next-generation [trendy game]. Can anyone help?
Most of the answers are quite stereotypical too:
Use [this language] and/or [this engine] because it's the best thing since pet rocks.
or
Don't do it, instead start with something simple like [game from '70]
and
Oooh, I so want that game made. It is close to [some idea] I had a while back and I won't be able to find happiness in life unless you make that game.


Most of the few (if any) informative answers usually get lost in the noise. That's to be expected on the Internet but lets try and do a cold analysis of the facts, just for fun (as I don't expect it'll change anything).

First, we'll pick on the answers (there will be slight exaggerations involved):

1. Most of the "answers" are not answers at all
Short "why?": because the question is wrong. And, as some Chinese philosopher said, "A wrong question can only have one right answer: silence".

Long "why?": people are wired to voice their opinions with every occasion available. It doesn't matter if the context is not about them or what they use/code/believe, they sure want to tell others what's the best/only way to do things. Does that help the person who asked? Who cares?

2. You shouldn't do what you want, do what I say because I know better
Look around you: most of the people pass through life without any higher goals than food/roof/car/sex. If you consider game programming as a creative endeavor, why should you choose to discourage someone who appears to want to create something? Sure, he/she will fail by any statistical standards but you could also think of the things learned in the process. We're so mad at people who tell us "you won't be able to do this, or that", but we're doing the same in most cases.

I salute anyone who wants to make a game. Do it, just because you want to, not because other people believe you can do it.

3. Start with Pong
If we're at it, why not take a hint from Douglas Adams? Why not direct people to invent the universe first?

I think it would be an enlightening study to see how many professional game developers and indie game developers really started with Tic-tac-toe, Pong then moved to Tetris, then got to World of Warcraft. I suspect most of them started coding whatever game idea they had, then they failed. Then started again and failed again. And at some point they finished a game and life continued.

Experience is important in any field and experience is made from successes AND failures. Learning along is very important, IF you are willing to learn; if you're not... tough luck. You'll fail forever but at least you tried.

Unfortunately, programming is prone to "having the knack for it". I know many programmers who can earn their wages with most business tasks but who are not capable of figuring out what O(n) means. For any person wanting to start game development, there's 2 chances: either they'll be able to learn programming well enough to code games, or not. No answer or hints can change that, just the work and time that person will spend on what they want.

4. Use [language] or [engine] for entirely the wrong reasons
There's so many wrong arguments in this quasi-religious subject. For the type of questions we're looking at, they may miss the point completely.

For instance, recommending to someone who don't know programming to pick C++ because "everyone in the industry does it" is moot. The questioner never said he intends to work in the industry; a more useful rephrasing would be "use C++ because most of the free tools/libraries you'll find will be in C++". Same hint, different argumentation.

Or, "use engine X because I'm using it and it's greaaaat. And no, I haven't finished a game myself, but I'm so working on this 5th game"; "Don't use engine Y because it's shit. You can't do game [obligatory AAA title] in it; no, I haven't tried and I have no clue about the inner workings of that game, but I just know"; wrong arguments with the single outcome of making the answerer look like a pretentious [your favorite expletive here]... which brings me to my last point

5. Noob questions get _mostly_ noob answers. Real questions get _some_ real answers
There are some reasons for this: the same Chinese philosopher continued "The right question contains the right answer".

A real question involves an experience bar to cross before even figuring out what the question is about. For beginners' questions, they mostly go like "I need help with something impossible/ improbable/ undefined" and we tend to read "Your opinion matters so much to me, please confirm that what you think is more important than what I want".

Experienced game coders tend, understandably, to avoid answering void questions. They know their answers won't change anything and time is quite an asset these days.

(next time, I'll pick on the questions)

No comments:

Post a Comment