The Notebook Review forums were hosted by TechTarget, who shut down them down on January 31, 2022. This static read-only archive was pulled by NBR forum users between January 20 and January 31, 2022, in an effort to make sure that the valuable technical information that had been posted on the forums is preserved. For current discussions, many NBR forum users moved over to NotebookTalk.net after the shutdown.
Problems? See this thread at archive.org.

    Game development and modding

    Discussion in 'Gaming (Software and Graphics Cards)' started by Jalf, Oct 14, 2006.

  1. Jalf

    Jalf Comrade Santa

    Reputations:
    2,883
    Messages:
    3,468
    Likes Received:
    0
    Trophy Points:
    105
    Ok, since we managed to derail the other thread pretty badly, I'm going to try to assemble all the objective information from it here.
    To anyone who want to contribute, let's keep anything that's biased, subjective or opinionated in the other thread. :)

    Further, this is not a programming (or game programming) forum, so if you're serious about this, look up one of those. This thread is just to answer a few basic questions and allow you to get started.

    Ok, to start with, "making a game" is a pretty broad statement. You have an awful lot of options.

    First, should you make a game, or should you mod an existing one?
    Tough to say. Most moddable games do give modders quite a lot of freedom and flexibility. I've made a sword-fighting action-adventure'ey thing in the Source engine, which is made for FPS games, for example. Some Civilization 4 scenarios really turn the rules of the game upside down. In Warcraft 3, you had people creating small Diablo-like RPG scenarios.

    So if you're interesting in modding a game, what do you do? The process varies a lot, and may or may not involve programming. The only thing to do is look up the mod tools online. Use Google or start at the game's website.
    Sometimes, all that's required is that you sit down and mess around with the game's level editor. Sometimes, they provide a bunch of C++ files, and you have to program anything you want. Still, modding is often a great way to get started.

    Second, if you want to create a game yourself, what do you do?
    Again, several choices.
    Of course, the hard way is to program it from scratch yourself, create all the assets yourself (music, sound effects, graphics). If you want to go that route, don't expect to be able to even start on your game for the next 6 months or so. And expect to take another year or two to actually make it. (This is assuming you do want to do everything yourself, and have to learn from scratch)
    Alternatively, if you want to just see if this "game development" thing is anything for you, you can try tools such as GameMaker. Easy-to-use drag&drop toolkits that allow you to make games. The problem is that these pose a couple of restrictions on what is possible, but they're actually surprisingly powerful once you get to know them.
    A game made with GameMaker is Ninja Loves Pirate, which actually won the annual game development contest Four Elements last year, on Gamedev.Net. (The contest sets no requirements on how the game is developed. It is judged on how well it fits the year's theme, and how well it works and how fun it is to play. Nothing more. So this game competed head to head with games programmed from scratch in C++, with browser-based games, text-based adventure games and dozens of other things. And it won. So yes, while tools like this might seem like the "easy way out", don't underestimate it. You won't make Half-Life 3 with a tool like this, but you might still be able to get a feel for game development, and make the games you want)

    Third, should you do all this alone? Can you get people to do all the hard work for you, if you provide the ideas?
    Well, first, let me emphasize one thing. Ideas are cheap. Everyone has ideas. And not only that, but everyone has *good* ideas. You might have thought up the ultimate MMORPG/FPS/RPG/whatever you like, but unfortunately, so has everyone else.
    This has some very important implications.
    If "ideas" are all you contribute to a team, you effectively aren't contributing anything. That means you won't be able to assemble a team, or won't be able to join one. You're useless if that's all you can do.
    And it means that you can't go to a game development community and say "I have a brilliant idea, do anyone want to help me create the game?", you probably won't get much help. As I said, everyone has ideas. Why should a programmer or 3d artist put his own ideas aside to work on yours?
    He'll only do that if you can contribute something to the project that he wouldn't otherwise get access to. For example, if you can program, your offer suddenly becomes very attractive to artists. They can't make a game themselves, so they're always interested in teaming up with those who can program, even if it means putting their own ideas aside for a while. Similarly, a programmer might just be able to make a game himself, but he'd still prefer if he had someone talented to do the graphics or music. Or even if he had another programmer to work with. So if you want to team up, you should learn *some* practical skill. 3d modelling, animation, sound/music or programming are all viable choices. Alternatively, more vague stuff might work if you're good at it, such as project management, community manager, pitching the game to potential publishers (if you're planning on selling it commercially). But you do need more than good ideas.
    That said, teaming up is usually the way to go. Making even a simple game is a lot of work. Doing it alone will take you ages. Doing it with 5 others might be manageable.

    Fourth, if you want to learn programming, what do you do?
    I've left this as the last point on purpose, because I want to de-emphasize programming a bit. Not because it isn't useful or a popular way to enter games development. But because it is often seen as the *only* way to go if you want to make your own game. It isn't, as I've tried to explain above.
    But *if* that's what you want, here goes.

    Programming is, well, challenging. It takes some getting used to, at least. It also tends to require a lot of "unrelated" skills, depending on what you're programming. If you're making a 3d game engine, you need to know a good deal of maths and physics. If you're writing a word processor, you need to know an awful lot about grammar. And no matter what you're making, you always need to know about the strange beasts called algorithms and data structures.

    All this can be learned later though. When starting out, the big challenge is much simpler.
    Programming requires a certain mindset, which takes a bit of practice. The fundamental task is to take some big vague idea like "if you press the space bar, the player's character should fire his plasma gun at the nearest enemy, which takes moderate damage if hit", and break it down into tiny fragments. It takes practice, and it's going to give you a headache for the first week, and it will take you months to *really* get into it. but once you've got it down, that's really it. You're a programmer.

    After that, all that's left to do is to learn all the specifics of individual programming languages, learn all the clever tricks and techniques, learn how to structure your code to make it easier to read and understand, and so on.
    True, getting on top of that might take the next 10-20 years, but hey, no one said it was easy to master. ;)

    Oh, and one more point. You're going to have to start with non-game specific stuff.

    You're going to spend at least a month writing simple text-based applications. Then you're going to spend even longer writing more advanced text-based applications. And then you're going to keep doing it until you can do it in your sleep. That's when you might, if you're in a hurry, begin to start wondering if it's time to take a quick look at how to do graphics and such.
    If that sounds like too much bother, don't learn programming. Go with Gamemaker or learn to make graphics or something instead.

    Fifth, which programming language should you learn?
    Tricky one. Check the other thread to see what I mean. This question has spawned quite a few religious wars, so let's keep it at this:
    There are no *wrong* choices. Some languages are more widely use in commercial games than others, but for learning purposes, it doesn't make a big difference in the long run.
    The key thing to understand is that the part that takes the most time for beginners to learn is language-agnostic. Getting into the programming mindset is what beginners need to focus on, and that's the same regardless of which language you use. But once you've truly reached that point, you can pick up new languages in a matter of days. So it doesn't make a difference in the long run.

    But in the short run, I'll try to describe the most popular choices you have:
    - C++: Currently the "industry standard", and often seen as "the perfect language", at least by those who don't yet know it. The more you learn of it, the more you see it's just another language. Most industry veterans aren't particularly fond of it, but hey, it's the standard, so they're pretty much stuck with it. (Note, I'm not saying it's a bad language, just that it's not the holy grail either. For most of those who know it, it's just a minor obstacle they have to deal with)
    - Java or C#: The new kids on the block. They both intend to replace C++ as the standard language for everything. They're both heavily object-oriented, which can be a blessing and a curse (because it means they ditch most of C++'s flexibility, but on the other hand gain some from being a much more well-designed language). I mostly list them because they're very popular outside games programming, and so there are lots of resources for learning them.
    - Python: Is heavily championed by many experienced games programmers as a really nice language for just getting things done quickly, and a nice language for beginners who just want to see some results from their efforts. It's easy to learn, but that doesn't make it any less powerful. In particular, PyGame is a toolkit for Python that is, you guessed it, focused on games development. It allows you to easily make quite advanced games with fancy 3d graphics and everything. Is also used for scripting in several commercial games.

    But keep in mind that in the long run, there are no wrong choices. Starting with Python won't make it harder for you to switch to C++ later, and vice versa. It's only in the short run, for getting started, that the choice of language really means anything.

    So, now you've chosen a language, what do you do?
    Read. Read and ask questions.
    A great place to learn is www.gamedev.net. Drop by, read the Getting Started section, and ask questions on the forum. Lots of amazingly clever people there.

    Next, buy a book. Yes, I know you can find tutorials online, but most of them suck. Most of them are written by beginners who are using it to motivate them to learn. Sure, nice for them, but half of them are misleading or factually wrong. The other half just aren't very well structured, and skip a lot of important things.
    Books have a much better quality assurance process they go through, so while there are still lousy books, on the whole, they're much better than relying on tutorials.
     
  2. Dreamer

    Dreamer The Bad Boy

    Reputations:
    2,699
    Messages:
    5,621
    Likes Received:
    0
    Trophy Points:
    205
    I like the idea to talk about game programming and developing objectively since that obviously did not happen in the other tread and I admire the original poster intentions. However, as we all know, the road to hell is paved with good intentions…

    As far as I understood the original poster wants to answer a few basic questions which would allow you to get started. That is seems as not a bad idea. Unfortunately, I would say most of what is written, here, could best be best described as belles-lettres or myths…

    I strongly recommend anyone looking for objective information about game programming and issues to find another forum since this definitely is not the best source...

    I will skip the first four questions not because they are no important but because they have many answers and all of them are relative to one’s requirements. It is quite difficult to list all possible options in order everyone to be able to find that which would best suits him and his requirements. As I mentioned before there are better sources for that.

    Now let’s take a look at the fifth issue or so-called "Choosing a Language"

    First, I will try to be objective though that I would happily admit that I have not always been which I consider to be something normal.

    In order to be objective:

    I am not going to talk about religious wars, because it is kind of pointless, we can not talk about any wars here but rather different people with different personal preferences which in this cause leads only to pointless discussions like "which language is better'.

    I am not going to speak for all programmers because I can not. I am going to speak only from myself. I do not want you to believe me so I recommend you to make your own research about those issues.

    I do not know weather the original poster is allowed to speak from "the central organization of veterans who aren't particularly fond of C++" or from "the organization which determines the Holy Grail of computer languages" but if it is true I would like it proven. Also I would like to know how exactly (facts!) the original poster decides when a language is "not bad" or "perfect" or anything else… Otherwise, one can find only ignorance hidden behind those words.

    Now we are talking about "Choosing a Language"

    I agree that there are no "wrong" choices but unfortunately, your forum “friends” opinions are sometimes shown to be not in your best interest after all. So I would not rely on similar threads.

    I am going to provide some information about C++ not because is the best or the perfect or the only one language but because C++ is the most discussed language, especially when we are talking about game developing.

    C++

    The perfect language – God forbid! Are we live in "vacuum"? Are there perfect things made by people on this world!

    C++ is a high-level, object oriented, multi-paradigms, general purpose language with low-level facilities originally developed by Bjarne Stroustrup who is still the best source of information about C++.

    Nowadays, C++ is the most popular game development language. Actually, almost all commercial games are written on C/C++.

    Pros:

    - object oriented
    - very fast (compiles to binary code)
    - widely used
    - huge amount of tools, resources, libraries and object collections are available
    - gives the programmer freedom (even to do ‘bad’ things)

    Cons:

    - low-level facilities (garbage, memory…)
    - gives the programmer freedom (even to do ‘bad’ things)

    The Question: Is C++ appropriate for beginners:

    Some people say that C++ is too difficult for beginners. I myself disagree with that.

    First, C++ is most widely used language today as I mentioned, so you will find huge amount of resources, well written books and specialized forums.

    Second, there is powerful tool such STL which can remove part of the most common problems (low-level details) for beginners. Of course, C++ is a really "huge" language so it just needs time. Another problem is the complicated at the first sight syntax but you just should put up with that (sooner or later), especially when languages like Java and C#, which are very common in other areas, have similar syntax.

    Third, if you find it difficult you always can go back and learn a simpler language or to find another job (I am joking). So I know that C++ is not the easiest way to start but I also know that just a try will not hurt you. The important thing here is weather C++ is difficult (or not) for you so it does not matter what the others think about that. Also it is relative some people (universities) have no problems with starting with C++ while other have. I would just say find well written books (ask programmers), take course (the best way), use Google (but careful) too and just try it.

    That is enough for the time being.