On learning and games

A shame the thread was closed. It was a debate, nothing more. Just different ways of seeing things. Maybe I passed my message a little roughly; it was indeed meant to be rough. But not to be taken as offensive. Simply food for thought. So my apologies if it offended.

Regardless, here's how I see it. This time in prose.

The whole notion that in order to learn a programming language one needs to find encouragement in the form of games, frankly annoys me. And it's not the fact the end result of these early text-based games are the computational equivalent of a very bad gastrointestinal disorder. For one I like text-based games. Even today I find enjoyment in revisiting text adventure games of old in the ZXSpectrum and DOS emulators, I still play nethack actively (well, sorta), and I still have live MUD accounts.

It's more to do with the fact I personally think wanting to learn how to make games by means of learning a programming language is a sure shot way to produce a bad programmer. Now, certainly not everyone. But that's where the vast majority of students eventually end up. And all because they didn't think themselves, or wheren't tutored into, or advised at, actually looking at a programming language as something worth studying. It's like the painter who doesn't really enjoys the art, or cares about it. It's just a means to an end.

Having fun while learning? Sure, why not? But since when fun became a dictator? Should it rule over every one single aspect of learning something? And where exactly does that fit with the much harsher reality of a programming career (in games or not)?

I personally can't accept that we must suffer the knowledge that in order to learn anything in this day and age we need to feel some sort of encouragement other than simply wanting to learn it. The thought is scary to me. But this does not mean I'm unaware that having fun while doing it doesn't cost a dime and is a good thing. What I question however is the methods.

Wanting to do a game at every corner of your apprenticeship (like when you just learned how to use functions and references) is going to burn you faster than you can say "Oh my god! Programming games can be so boring!". If you want to do games, fine. So be it (Whatever. It's not even original. But get in line, there's like tenths of millions ahead of you). But you will not learn anything special if you keep treating your programming language like a piece of disposable tool you put aside at every opportunity in order to pursuit your goal.

If you want to program games, your programming language is going to be your damn best friend. You will want it badly. More than your girlfriend. If you learn to love to program, if you really want to learn how to program, if you really study your programming language and try to master every nut and bolt, inspect every dark corner, then yes; You are in your way to become a damn good games programmer.

No matter what they tell you at that games course of yours, no one gets to the top having fun. It's hard work, it's pain and it is a thirst for knowledge more than a thirst to do games.

Why do I know this when I'm not even a games programmer, never was or ever will be? Because games programming is no different from any other type of programming. Same rules. Don't trust me? That's cool. We'll talk in a few years.

Last edited by Mario F.; 10-06-2009 at 10:07 PM.

Originally Posted by brewbuck:Reimplementing a large system in another language to get a 25% performance boost is nonsense. It would be cheaper to just get a computer which is 25% faster.

I, as a game programming student, do love to program games. In fact, I love programming in general. I consider myself to be a pretty avid gamer, but since I've started programming, programming has become my new hobby. When I asked for game ideas, my goal was to program a game and to learn from what I was programming, not just to program a game. I wanted to program a game because it's what I love to do and because I wanted to improve my knowledge of C++ so that I might someday "master" it.

I wanted to say something to you in the last thread that was closed - and even considered PMing you, but this is much nicer...

The ONLY reason I started to learn C/C++, was because I wanted to make games. That's it. In fact, I started learning HTML/JS for this reason too (I was 11 at the time). A desire to make games was the only thing that caused me to learn C++ (but I guess, I would've wanted too later in time also cause of other things, but I'll never truly know).

What about now? Games are on the bottom of my list. My programming ventures introduced me to such new ideas and concepts that basically made games seem so, not worth perusing. This didn't happen over night, it's just something that slowly happens as you learn more.

So why discourage him? He'll wean himself from game-lust as he develops as a programmer. And if he doesn't... oh well, he could become a real game programmer, or just find that he's not fit for the job. And at this point, there's no way to honestly say that he's headed for a cliff.

“I just want to use my computer in a productive manner, not learn how to use it.” — Elysia“A year spent in artificial intelligence is enough to make one believe in God.” — Alan Jay Perlis

I consider myself to be a pretty avid gamer, but since I've started programming, programming has become my new hobby.

Not anymore. Remember? You now decided to take a course on it. It's a job. And one you better become good at. Lest you flunk or worst, hold your future to a career where you will become just a mediocre representative, like me.

I wanted to improve my knowledge of C++ so that I might someday "master" it.

But don't you question yourself one bit? I mean, don't you ask yourself:

- "I just only learned how to use function and references. The programming language is far, far more than just this. Shouldn't I keep advancing my knowledge instead of wasting my time with pet projects that will not advance my knowledge one bit?", or

- "If I really love to program games, why is that I'm asking folks for ideas to do a game with such basic concepts as function and references? Shouldn't these just like pop out of my mind?"

These aren't questions meant to put you down. Don't get all watery on me again. These are questions meant to wake you up. You are really, really free to ignore me and my ways. But you can also put yourself against the wall, slap yourself a few times across the face and tell yourself "Look buster! In order to do games I need to learn how to program. So put the goddam games aside for a while and get to business. This is business! It's not an hobby."

Last edited by Mario F.; 10-07-2009 at 02:27 AM.

Originally Posted by brewbuck:Reimplementing a large system in another language to get a 25% performance boost is nonsense. It would be cheaper to just get a computer which is 25% faster.

Here's my story, I've created few simple C 2D games using SDL(Snake, Tetris, Pong and etc). Text based is so crazy, really. You'll just waste your time doing a game on command prompt. If you want a better, try SDL. I study it on my own by researching so I guess you can do it also. That time I only knew array, pointers, files and the famous bubble sort. Apply some trigonometry then whala! lol.

Then after a few years, I moved to C++ and practice how to make my code nicer and cleaner. So I read about classes, inheritance, polymorphism, templates, stack, queue merge sort, insertion sort, binary, trees, hashing, bst, quadtree and etc.

Dreaming to become a game programmer really help me on pursuing that dream. But it change everything when I moved to 3D. I enjoy coding 3D graphics more though I didn't had a 3D game yet but I enjoy playing with shaders, really. Applying vector calculus on it was really great. Rendering your dream virtual world is wonderful. [/crazy]

Game Programming is very broad. Correct me if I'm wrong but there are no such thing as game programmer position. Maybe, graphics/engine programmer, ai programmer, sound programmer, and etc. You can't master all of those, really. If you can do that.... HAIL TO YOU!

Anyway, I guess I'll just say that study first what you really need. Make the programming language your top priority. That's what I do. My second is MATH. :P

I have this book, Programming Game AI by Example, by Mat Buckland (2005) that I plucked out of a bin for $6 about a year ago. I've barely looked at it, since I actually don't play games, and it is C++ based. I have too much other stuff to read, really, I don't know if I ever will.

BUT I would say it looks like a GREAT book to use learning programming. It progresses from very basic things like implementing Cartesian space and progresses thru much more complex things like fuzzy logic (which it's all fuzzy to me ), includes a large example project, and gets into some nitty gritty about the practices and tools of the genre (eg scripting in Lua). To me, this book could be about any appied field: kernel programming, network programming, embedded programming, whatever. For a beginner, it will take A LOT OF MOTIVATION to even get halfway through largely because you will need to get comfortable with the language. People who play and like games probably have a lot of motivation and can MAINTAIN IT.

Originally Posted by Mario F.

If you want to program games, your programming language is going to be your damn best friend. You will want it badly. More than your girlfriend. If you learn to love to program, if you really want to learn how to program, if you really study your programming language and try to master every nut and bolt, inspect every dark corner

Almost sounds romantic You are not wrong, just it seems to me that learning how to exploit the language is stressed in game programming; from dabbling a bit with 3D (which of course that has got to be a major goal!) I would say you will be up a creek otherwise.

I think it is totally comprehensible that there are a lot of C++ programmers who start out wanting to program games and in fact that is why they program in C++, really it is the only area I have heard of that is exclusively (by tradition) a C++ realm (but not by necessity, the same way some areas could be seen as, by tradition, exclusively C, but surely not by necessity). It seems to me this (almost fanatical) "attachment to a language" is surely a sign of respect and serious interest in it. I'm sure a lot of C++ programmers never stop programming games and are better off for it.

I also believe that the gaming industry has been a major driving force in the development of technology, both hardware and software, for more than a decade. So I don't see how you can say that an interest in gaming is somehow an unhealthy one for a programmer to have AT ANY LEVEL.

I just wanted to say all that, even tho I personally have close to zero interest in games. Like zero is the number of games installed on my computer. The number of hours I spend in a month playing video games = zero. They just don't don't interest me that much. So I'm not being defensive about anything (except maybe I do think "having fun" is a GOOD idea).

But you will not learn anything special if you keep treating your programming language like a piece of disposable tool you put aside at every opportunity in order to pursuit your goal.

Again, in reality game programming == C++ programming so this is just silly...

This is business! It's not an hobby.

Sure it could be a hobby. Who the heck are you? But considering what has already been pointed out about the highly competitive nature of the industry, if it is a business for you, it will probably ALSO have to be a hobby. Good Luck!

Game development is also what initially got me into this field of study/discipline. Although games are not my main focus anymore, they aren't the bottom rung either. I still like to sit down and test my skills on a good game project.

When I started out, I tended to have 1 game project per year. Now it's a bit more sporadic.

My first two game projects were text based games (8th grade and 9th grade). The second one was actually fairly complete

My third game project (10th grade) was an isometric RTS. I failed miserably. But who cares? I learned a lot

My fourth game project (11th grade) was a side-scrolling game similar to Liero. Once again, failed miserably, but once again, I learned a lot

After that I attempted a 3rd-person 3D turn-based tactical game based on the Battletech universe. Failed miserably, but I learned a lot.

Freshman year of college I attempted a top-down RTS game. It was wonderful. I almost completed this one. The only reason I didn't is because I left to go to Italy for 2 years (as many of you know). I haven't returned to working on this game since then. Learned a lot

Recent post-Italy game project: 3D toy army-men game. Still working on this one. Learning a lot

People who play and like games probably have a lot of motivation and can MAINTAIN IT.

That is a big motivator (to me anyway). I don't want to do something pointless, and given a choice between doing something I can learn from, and doing something I can learn from that others might find amusing, I would pick the latter.

I stumbled across a game called 20k Lightyears into Space that I have now spent many, many hours playing it. It's simple, and it seems to me like something I could write if I knew a graphics library a little better. I do know curses though, so I started writing a RogueLike clone of the first Rogue game I played (downloaded from a BBS almost 20 years ago) to polish my very weak C++ skills. First and foremost I am writing it because I want to see if I can. Second, because I want to be able to play with settings and extend it, and also to learn SDL with it when I finish the curses version to make it easier to springboard into something like 20k and then perhaps later into something else a little more complex. Third, because I think someone else might find it amusing to play with. I've never been inspired like that by Excel or Word...

The whole notion that in order to learn a programming language one needs to find encouragement in the form of games, frankly annoys me.

You can be annoyed, and still be wrong. Being annoyed doesn't make you right. YOU may not need motivation to program, but that's because you're a geek.

Also, it may not be that they need motivation, rather it may be what is motivating them. Why not teach them through making games, instead of regular boring lessons?

Your problem is that you seem to not understand that people learn in different ways. There are three or something like that (by doing, by watching, something else, I can't remember). Anyway, the point is, not everyone needs to be bored to learn.

Maybe you are right. Maybe I'm being too clinical about it. Although I don't find boredom necessarily the opposite of fun.

But anyways, I'm wrapping up:

Have just learned about functions and references in C++? Do you want to make a small text game with that? Do you want to ask someone to help you come up with an idea for said game? Do yourself and everyone else a favor and don't take a course in games programming.

Over and out.

Originally Posted by brewbuck:Reimplementing a large system in another language to get a 25% performance boost is nonsense. It would be cheaper to just get a computer which is 25% faster.

I've programmed simple games like tic-tac-toe and I'm working on an RPG system, so I have done a little bit of game programming. Anyway, I'm not going to get anywhere continuing this debate, and I'm not going to keep it going. You won't be hearing from me for awhile. When I have another question and do post again, Mario F, will you kindly stay out of my thread?

Games brought me to programming and keep me in it as well. You can learn a lot by trying to make even the simplest games. However it is important to understand the fundamentals and concepts being used rather than just copying and pasting from this or that tutorial.

I closed the other thread out of courtesy to the OP and his/her request.

When I have another question and do post again, Mario F, will you kindly stay out of my thread?

I think we should have a "Mario F. free forum" for threads like this. (just kidding)

You can have "the wrong attitude" in any field. The ones that bug me are the math and science grad students, who want to do their own programming but seem baffled when they have not taken the task seriously and cannot get teh code to work proper. Like the computer was the stupid one, unable to deal with even the simplest requests from these geniuses.

I've programmed simple games like tic-tac-toe and I'm working on an RPG system, so I have done a little bit of game programming. Anyway, I'm not going to get anywhere continuing this debate, and I'm not going to keep it going. You won't be hearing from me for awhile. When I have another question and do post again, Mario F, will you kindly stay out of my thread?

My first 'real' application in C was a tic tac toe game that learned to play better by using a probability map of previous wins/losses. I wish I still had the source code to that old game :cry:

The point being, games are some of the most challenging applications to write, they generally draw upon more aspects of programming than any other type of application, and the end result is something that is fun and that you can show your friends and importantly, they ca appreciate even if they aren't programmers. Peer group recognition is an important factor in encouraging an individual to achieve difficult tasks that may not pay significant immediate benefits.

Personally, I think Mario doesn't find learning to be fun. I'll watch a movie or read an article about some scientific discovery that is of absolutely no use to me in my daily life, simply because I enjoy learning things, that and it helps to have a wide variety of knowledge when picking up chicks at MENSA meetings