Noob asking questions
Posted 31 December 2012 - 07:24 AM
So I'm 17, and will need to move out of parents house soon, and will need a serious job in few years. I'm currently studying medicine, however I do not see myself working passionately in the industry. The decision to get into those studies were probably out of pure need to make my father proud, or make my life great later on. However, I realized that game development is where I belong.
I'm at the point 0 right now. Never even touched any programming languages (would of started learning at a young age if I wasn't more concerned about catching all the pokemon..). No skills around that subject whatsoever. Not even a lot of knowledge about it.
However, I'm the type of person who can study a new thing for years, 16 hours a day, without taking my eyes off of it. So I learn very fast.
So to get started, I need someone experienced in the industry to answer me some questions if that's not a problem, and add something if you feel like I missed out.
1) I want to start off working at a game dev. company like Activision, riot, or w/e (when I feel like I'm prepared of course). Most probably as a programmer. How does a company come together into making a game? I understand that there are different roles everyone takes. Artist, creative writer, programmer, music producer etc. However, I also realize that different people prefer different programs. Some artist may prefer Mudbox over Rhino, or some other modeling program. Some programmer may know C++, but not some other programming language, or vice versa. So do all those different art programs for instance give the same end result that can be implemented within any game programming? Does any programming language suitable for gaming can be made to cooperate with another programming language? (so 2 programmers with knowledge of 2 different languages can work together). Or do certain projects use only certain programming language? And certain art tools?
2) How do game engines work? What do they do?
3) What's opengl for instance?
4) In game files, you see .dll, .cfg, etc. But you rarely see any in game art work as view-able picture within game files. How are those artworks stored in those different format files? Are they converted to some sort of code?
5) If answer to 1) is "Every project can only use 1 type of programming language", what languages are best used then? I'd guess c++?
6) What languages are best learned for game programming in general?
7) Why are there so many different languages? How is one language superior to another?
So that's pretty much all. I know the questions are very very lame and noobish, and probably contains many misunderstandings, so I apologize for that
Thanks for all your help.
Posted 31 December 2012 - 08:36 AM
If i were first starting, if i wanted to do it stylishly, id get straight into physics! they make better games, imagine a fighting game where you could run into your opponent to knock him over, and stumble and place a foot down to stop you from falling over.
Soft body mass spring systems could be used to make soft bodies for characters, and even with some rigid body fix you could make cages for cars also, make for a new breed of more realistic video game.
it would be cool to see you get into this stuff, its really fun.
Posted 31 December 2012 - 09:30 AM
oh yeh... questions...
1. dont know, all ive done is make my own stuff from scratch.
2. game engines are just further programming after the initial graphics api (direct x or opengl) they have collision detection, map plotting, physics, etc, and a way of importing in models and animation.
3.opengl is the bare startoff, all it does is draw triangles with the video card for you, unity on the other hand, is code even more on top of this.
4.its professional to hide the content so its not viewable by just anyone, that way it keeps your graphics safe so people cant easily just copy it.
5. i use c++, but only in a procedural way, i think thats the easiest way to program there is, that still lets you use direct x and opengl. you can teach it on a single page, to get started with text based graphics.
6.theres a few languages, java, c#, the new html 5, depends on what your doing, if you want it imbeddable in a webpage or you dont mind.
7. its all personal taste, i like typing less, but i hate garbage collection, and i dont care for imbeddable applications, and i like developing from my own engine, and i dont care for design patterns... so i guess procedural c++ (no classes) and direct x 11, ends up being the winner for me. i always end up running out of ram with garbage collection (java, c#) so i dont touch them.
Posted 31 December 2012 - 11:01 AM
A studio will typically standardize on the programming language(s) to be used. Most commonly, this will be C++ for the innards of the engine; there is often also a scripting language embedded in the engine, which designers can use to create missions and suchlike without the assistance of programmers. A variety of languages (including custom languages invented by the studio) can be used for this purpose. Finally, tools (e.g. level editors/compilers) might be written in C# or another "managed" language, although C++ is popular for this purpose as well.
Similarly, art tools are going to be standardized across the studio. Artists of different specializations use different tools - Maya/Max, Photoshop, ZBrush/Mudbox, custom level editors, etc., but everyone in the studio will be using the same tools for the same purpose. It'd be chaos otherwise - if everyone just picked their own tools, then Jane wouldn't be able to open Bob's files and vice versa.
Yes, different people may have different personal preferences for which language or tools they like to work with best, but when you work for a company you have to use what everyone else uses. But learning different languages or tools is no more than a temporary inconvenience for a professional game developer. All good programmers know multiple languages and can pick up a new language quickly. Likewise, all good artists know multiple tools and can pick up a new tool quickly.
A game engine is an application that provides basic systems and services for making a game, such as: graphics rendering, physics simulation, animation playback, sound and music playback, scripting language support, input handling, networking, level loading, savegames, low-level AI tools such as pathfinding, raycasts and queries, memory and performance profiling, and in-game developer tools for debugging and editing. At its core it is a frame loop: a loop that does everything required to generate the next frame of the game - which can include contributions from any or all of the aforementioned systems - then displays the frame on screen, and repeats. Pro game engines will almost always be implemented in C++ and can easily run over a million lines of code.
Some game engines are custom-built for a specific project; others are designed to be general-purpose engines adaptable to a wide variety of projects, and the company that makes the engine sells it to studios to make their games with. Engines you may have heard of, like Unreal, Crytek or Unity, are the latter kind. Even when using one of these engines, though, there is often a lot of code customized for the specific project.
OpenGL and Direct3D are graphics APIs. They provide a standardized interface for application programmers to talk to the graphics hardware (GPU), regardless of which company made the GPU or what its particular features might be. The ideal with these APIs is that the programmer doesn't have to know or care about differences between hardware (in practice, we still have to worry about it a little bit). An engine programmer writes code to command the GPU what to do to render their game, by calling OpenGL or Direct3D.
Game art assets like models, textures and so forth are usually stored in a container file of some sort - a big file that includes the data for many art assets packed together. This is primarily to help loading time - it's much faster for the hard drive to load one big file than many small ones. Additionally, the data will usually be compressed into a custom format that matches exactly what the game engine needs, so the engine can just slurp the whole thing into memory and not have to do any processing. So it's not going to be in a standard format you can open in Photoshop or similar.
The fact that it makes it slightly more difficult for people to extract or hack your art assets is only a side benefit. Serious hackers won't be stopped by pack files; it's not that difficult to reverse-engineer these kinds of formats. It does discourage casual hacking, though.
I recommend people to start with Python, because it's easier and clearer to get the general concepts. C++ is a more powerful language, but also more difficult, and has lots of fiddly details that aren't very friendly to a beginner, so save that one for your second language. BTW, time spent learning Python is not wasted, since it is a quite useful scripting language in its own right. Note that the general concepts of programming are largely common to all languages. Once you've learned one, it's much easier to pick up a second, third, fourth, etc. Professional programmers pick up new languages on an as-needed basis.
Posted 31 December 2012 - 08:30 PM
Guess I'm off to learning python then
1 user(s) are reading this topic
0 members, 1 guests, 0 anonymous users