The new forums will be named Coin Return (based on the most recent vote)! You can check on the status and timeline of the transition to the new forums here.
The Guiding Principles and New Rules document is now in effect.

Game Development Tools

zensunnizensunni Registered User new member
edited July 2007 in Games and Technology
So, I'm pretty sure I know what is "industry standard" for PC games.

Developers use vc++ with OpenGL/DirectX and then use libraries like havoc, ogre3D, or take their pick. Then, they use Moya/3dfx to make the 3D environment and [hic] somehow translate it into code.

Am I right? How wrong am I?

I'm also curious about SDK development packages like HL source and ID's unreal engine. Are they based on a language, or just overgrown map editors?

I've taken up c++, so I'd like to know what direction I need to be looking.

zensunni on

Posts

  • schmadsschmads Registered User regular
    edited July 2007
    This is an interesting question. I write software, but nothing that relates to gaming (except peripherally, with my G15 TeamSpeak plugin, I guess), and games are some of the most advanced and sophisticated applications out there that are distributed to wide audiences. I bet there are some people with experience in this field here.

    schmads on
    Battle.net/SC2: Kwisatz.868 | Steam/XBL/PSN/Gamecenter: schmads | BattleTag/D3: Schmads#1144 | Hero Academy & * With Friends: FallenKwisatz | 3DS: 4356-0128-9671
  • Dr_KeenbeanDr_Keenbean Dumb as a butt Planet Express ShipRegistered User regular
    edited July 2007
    HL source is written in C++. Matter of fact, Valve recommends you use VC++ to compile source mods. I have looked at the source code for HL2. I wept. It is art.

    If you really want to get into this sort of thing, I recommend getting Visual C# Express (free!) and the XNA toolkit (free again!) and find yourself some tutorials. You'll be making windows and 360 apps in no time.

    My crowning achievement was bouncing, colliding balls. After fucking around for about 45 minutes.

    Dr_Keenbean on
    PSN/NNID/Steam: Dr_Keenbean
    3DS: 1650-8480-6786
    Switch: SW-0653-8208-4705
  • mausmalonemausmalone Registered User regular
    edited July 2007
    I'm no professional, but if you want to get into graphics programming, you'll want to use C++ of some sort... and use the NeHe Tutorials to get started with OpenGL programming.

    You have to understand that there's a ridiculous amount of effort that goes into making a game. Even the "simple" act of loading a character model and having it walk around takes hours of work, days of research, and thousands of lines of code if you're starting from scratch this way.

    mausmalone on
    266.jpg
  • IShallRiseAgainIShallRiseAgain Registered User regular
    edited July 2007
    Its appears that most companies use multiple languages for their games, but C++ is still very popular. LUA appears to be gaining some popularity for UI work.

    3D max appears to be the preferred 3d graphics program for a lot of devs.

    You also have to remember that a lot of companies use engines too. It saves them a lot of work, but they still usually heavily customize the engine.

    Most companies also use map editors for level design and oftentimes the map editor you recieve for a game is just a simplified version of the one that game developer use themselves.

    I know this because I aspire to one day be a programmer for a game company.

    IShallRiseAgain on
    Alador239.png
  • Burning OrganBurning Organ Registered User regular
    edited July 2007
    Okay, first off, talking from experience.
    Unreal engine >>>>>>>>>>>>>>>>>>>>> Source if you want to make mods.
    That's very simple. Reasons? Well, source SDK is confusing, lacks documentation etc etc and most people that have years of c++ experience will have a hard time understanding it.
    Unreal has its own scripting language that I'm told is very easy, and unreal maps can be whole mods on the whole. I swear I've driven a warthog in unreal.
    Mapping tools are also in the same veins. Mapping for unreal is alot easier, and you have alot more flexibility just with a map. Make a tank that shoots reedemers or a tesla coil. It's all possible. You get a free UnrealED(itor) with unreal games, and that supports coding and mapping. You can get a free trial version of maya that lasts as long as you want and a patch that will support Unreal (atleast 2004)
    Source is overrated and overhyped.

    As far as tools go, it's all based on experience and what you're used to. 3dsmax is very versatile for game models, I think maya is very common when animating, Zbrush is the best for CGI and so on.
    But Blender is also superb in that it's free, simple (Unless you've learned more traditional modelling ways first) open source and has alot of plugins available. Also, it has a good community.

    My 2 cents.

    Burning Organ on
  • rayofashrayofash Registered User regular
    edited July 2007
    http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=2963
    http://en.wikipedia.org/wiki/List_of_game_engines


    I can't find the 'which programming language?' thread we used to have.

    Also, keep in mind the Quake 3 engine is open source now.

    rayofash on
  • Burning OrganBurning Organ Registered User regular
    edited July 2007
    There's also a rumor about teh DoomIII engine going open source when tech5 is released...
    Just a rumour though.

    Burning Organ on
  • DravalenDravalen Registered User regular
    edited July 2007
    Just about any modern game you see today sans XNA and mobile stuff is written in C++, so that's a good place to start. With that said it takes a ton of work and a lot of experience to write something from the ground up that works well, your better off going with a mod if you want to get something up and running.

    There's a bunch of different options on the route, HL Source is powerful but unless you have a solid C++ background I would avoid it.

    I haven't worked with the most current public unreal engine so I can't comment on it too much. I'm pretty sure they only give you access to script so you might find yourself wanting functionality that you can't get without having access to the source code.

    Unreal tournament 3 should be coming out later this year using Epic's Unreal Engine 3. It's a pretty solid engine for the most part, we are using it at work and while I have my gripes but from a mod perspective it should be pretty accessible.

    There's also Torque and many more options, I'm sure other people with experience using them can fill you in.

    Dravalen on
  • NickTheNewbieNickTheNewbie Registered User regular
    edited July 2007
    mausmalone wrote: »
    I'm no professional, but if you want to get into graphics programming, you'll want to use C++ of some sort... and use the NeHe Tutorials to get started with OpenGL programming.

    You have to understand that there's a ridiculous amount of effort that goes into making a game. Even the "simple" act of loading a character model and having it walk around takes hours of work, days of research, and thousands of lines of code if you're starting from scratch this way.

    don't forget SHADERS!!!!!!!!

    NickTheNewbie on
  • f00fyf00fy Registered User regular
    edited July 2007
    Check out Torque Game Engine:

    www.garagegames.com

    It is a great system, works on Mac, Windows, Linux, 360.

    f00fy on
  • zilozilo Registered User regular
    edited July 2007
    mausmalone wrote: »
    I'm no professional, but if you want to get into graphics programming, you'll want to use C++ of some sort... and use the NeHe Tutorials to get started with OpenGL programming.

    You have to understand that there's a ridiculous amount of effort that goes into making a game. Even the "simple" act of loading a character model and having it walk around takes hours of work, days of research, and thousands of lines of code if you're starting from scratch this way.

    Hours? Days, more like, and weeks of planning even if you already know what you're doing. Character animation systems are difficult.

    And fwiw those NeHe tutorials are mostly woefully outdated, especially the early ones.

    zilo on
  • BendystrawsBendystraws Registered User regular
    edited July 2007
    Check out Torque Game Engine:

    www.garagegames.com

    It is a great system, works on Mac, Windows, Linux, 360.

    I will second this.

    I'm currently teaching a class on it now. If you understand basic programming and game logic, you should be able to figure out a lot on your own. Its pretty easy to learn and you can do tons with it.

    Multimedia Fusion Developer 2 (by click team) is another decent program. Fusion doesn't require any programming knowledge; however, after using it you will severely notice its limitations. It's still good for prototyping games though.

    Bendystraws on
  • GlalGlal AiredaleRegistered User regular
    edited July 2007
    f00fy wrote: »
    Check out Torque Game Engine:
    www.garagegames.com
    It is a great system, works on Mac, Windows, Linux, 360.
    Or, for 2d, the Toque Game Builder. There's a Pro variant if you want to mess with the source code.

    Glal on
  • LittleBootsLittleBoots Registered User regular
    edited July 2007
    zensunni wrote: »
    So, I'm pretty sure I know what is "industry standard" for PC games.

    Developers use vc++ with OpenGL/DirectX and then use libraries like havoc, ogre3D, or take their pick. Then, they use Moya/3dfx to make the 3D environment and [hic] somehow translate it into code.

    Am I right? How wrong am I?

    I'm also curious about SDK development packages like HL source and ID's unreal engine. Are they based on a language, or just overgrown map editors?

    I've taken up c++, so I'd like to know what direction I need to be looking.

    On the topic of how wrong you are the Unreal engine is not ID's it is Epics.

    That is all, carry on.

    LittleBoots on

    Tofu wrote: Here be Littleboots, destroyer of threads and master of drunkposting.
  • mspencermspencer PAX [ENFORCER] Council Bluffs, IARegistered User regular
    edited July 2007
    Nobody has answered yet, so I'll take a shot. I'm not a professional game developer but I want to be. I AM a computer science grad student, though.

    I believe there are three different areas someone needs to master to become a good developer of any kind, game or otherwise:

    1) know your language
    2) know your machine and its components
    3) know lots of data structures, algorithms, and procedures

    When I seem to ask if you know things, these are rhetorical questions used to illustrate the kind of learning I'm speaking of. You don't need to answer me, but answer yourself.

    When I say 'know your language', I'm talking about the various grammatical constructs that make up the language and how to use them. How does your language handle types and type conversion? How does it handle classes and inheritance? Is there multiple inheritance? How does your language handle recursion, if it supports it? In C, if x is an int and you see the expression "x++++x", what does the expression evaluate to, and what side-effects change the value of x both before and after a value is returned?

    Game programmers can use many different languages. Right now, for example, there is a lot of money to be made in casual games to be played in a web browser on the PC, so you would need to know Flash or Java like the back of your hand to get a professional position writing those kinds of games. If you want to write handheld games you may need to learn a specific platform's assembly language and become good at optimizing code.

    When I say "know your machine and its components" I'm talking about computer architecture. When you start learning C++ you are taught the bare minimum computer architecture stuff you need to write interesting example programs: you are taught how to print to the screen, how to take input from the keyboard, and how to read and write files from the filesystem.

    To write games you need to learn SO MUCH MORE. You should learn about networking: how do I open and close connections, send data, and handle unexpected events? You should learn about 3D: how do current high-end graphics cards receive their meshes, textures, lighting instructions, and shader program code? You should learn about sound: what format should my sound data be in, and how do I hand buffers full of sound data off to the sound card? How do I mix multiple sound buffers in real time? What is 3D positional audio?

    These requirements change depending on what platform you end up writing games for. Even if you're reaching for mastery of Flash, it helps to understand how the underlying computer hardware works. If you're writing code for a game console, you may find you need to be an "insider" before you can get access to detailed technical information on console hardware.

    When I say "know lots of data structures, algorithms, and procedures" I'm talking about understanding the nature of information. Study Computer Science. Years ago my current graduate advisor once said to the class: "calling what we do 'computer science' is like saying a surgeon studies 'knife science'." You won't be learning things that are true for one specific platform or language - you will be learning things that will always be true and will always apply to any computer, because you are studying information itself.

    If you need an undirected graph search algorithm (for pathfinding perhaps, like helping units navigate intelligently in an RTS), what is A* ("AY-star") and when can you use it? What is an "admissible heuristic" and how do you know if you have one? Can you customize an A* search for your particular game needs? Do you know several different ways to sort data, and which sorts are appropriate for data which is likely to be partially-ordered in different ways? What data structures are common in 3D graphics? What is a triangle strip? What is a BSP (binary space partition) tree, and how do you generate and use them? How do graphics cards cull (remove) hidden surfaces from a scene to reduce their workload?

    Beyond the above, being a game programmer requires a lot of soft skills that I have yet to master. Organization and teamwork, for one: you must be able to find a balance between fighting for what you believe is right, and accepting that sometimes team cohesion is more important than winning that argument. Are you good at stepping back and thinking "six weeks from now, how will this discussion be remembered? Did I piss people off to win a minor point, or is this thing I'm proposing really so important that it will still be remembered and appreciated at that time?"

    I just described what's essentially a life-long quest. Where do you go from here? I think the best take-away lesson from this post is: there are so many skills to learn, you should pick a language and a platform that gives you the best tools for your current skill level that you can start exploring something interesting. That might mean you need to start with Flash. Don't be embarrassed writing Flash games -- professionals can make a LOT of money writing good Flash games. Start with the basics and then see how far you can push the envelope. Can you make a simple Flash RTS, complete with unit pathfinding AI and a computer opponent?

    TL;DR version: try flash or XNA or Torque or something. There are many different platforms you can write games on, and they all use something different -- but those things I recommended will help you build general skills you can then apply anywhere.

    mspencer on
    MEMBER OF THE PARANOIA GM GUILD
    XBL Michael Spencer || Wii 6007 6812 1605 7315 || PSN MichaelSpencerJr || Steam Michael_Spencer || Ham NOØK
    QRZ || My last known GPS coordinates: FindU or APRS.fi (Car antenna feed line busted -- no ham radio for me X__X )
Sign In or Register to comment.