Best 3D Modeling/Video Game Designing Book/Software for beginners?

  • (2 Pages)
  • +
  • 1
  • 2

24 Replies - 12291 Views - Last Post: 09 October 2012 - 09:47 AM Rate Topic: -----

#1 Sonic Keyblade-007  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 9
  • Joined: 11-September 12

Best 3D Modeling/Video Game Designing Book/Software for beginners?

Posted 11 September 2012 - 10:56 PM

Hello everyone I'm new here, I hope this was the best place to post this topic. Anyway, I'm a third-year in college and would like to get into the video game industry someday so I wanted to start getting my feet wet now by learning how to design and animate 3D models now and make little indie games. So I wanted to ask people here who have experience with video game development, what are the best beginner books and software to buy and start with if I wanted to learn on my own how to create 3D models and create little games of my own to help me get into the video game industry? I know very little about modeling and programing so I wanted to start with the basics. Does anyone have any suggestions from personal experience? Thank you everyone for your suggestions. :)

Is This A Good Question/Topic? 0
  • +

Replies To: Best 3D Modeling/Video Game Designing Book/Software for beginners?

#2 BBeck  Icon User is offline

  • Here to help.
  • member icon


Reputation: 580
  • View blog
  • Posts: 1,286
  • Joined: 24-April 12

Re: Best 3D Modeling/Video Game Designing Book/Software for beginners?

Posted 12 September 2012 - 06:19 AM

Not to give you a hard time, but if you're a third year college student, you should already kind of know the answer on this. It's September, so the semester's already started and it's probably a bit late to change classes. On a four year degree plan, that only leaves 3 semesters left. So, you should be well on your way to wherever you're going. So what is your degree?

Are you looking to be a 3D modeler or a programmer? I mean, there's no reason you can't be both, but you're likely to get a job doing one or the other. It takes many many years to get good at one of them let alone both at the same time. Still, it's good to have at least a little of both skills regardless of which path you're going for.

As a programmer, you should be taking a whole lot of math. You should be taking Trig, Calculus, and Linear Algebra, because you will use them on an almost daily basis in game programming. You should also, at least be taking C++ and Assembly language and possibly other computer classes on data structures and what not. Basically, you should be pursuing a Computer Science Engineering degree.

As a modeler, you should be learning art. I'm less knowledgable about the career of a modeler or game artist because it's mostly just something I've dabbled in. But you should basically be taking the same subjects that you would as a professional sculptor and painter, because that's essentially what modeling is. It's just a digital medium rather than a physical one.

You indicated that you want to actually get a job in the game industry. And that's a lot different than just dabbling and playing around with some home made game making. School should be a big part of that.

But you didn't ask what classes to take in school, so maybe I should get back to answering your actual question. School is really the place to learn a lot of this stuff. You can teach yourself this stuff (I've taught myself a lot of it), but learning it in school is a easier. On the other hand, if you have any chance of being a professional programmer you will spend most of your life teaching yourself. The computer industry changes so fast that you have to almost relearn everything every 4 years and you can't just keep going back to school for that.

Anyway, for modeling, I would suggest learning Blender. It's free. There are tutorials and even a book or two out there on it. I have also used 3D Max, but it costs about $3,000 last time I checked. I think Blender is almost as powerful, especially for the first couple of years you are using it.

Either way, what you want to learn is called "box modeling". Basically, you start with a box and you keep deforming the box by pulling and pushing on it like a piece of clay. Eventually, you can end up with something that looks as complicated as a human being. You're probably thinking, "I want to make real models, not box shaped stuff." But you would be suprised at how many models you've seen in computer games that were box modeled. It's an extremely powerful technique, and probably the one that is most widely used. But you can do box modeling in any 3D modeling program including Blender, Maya, and 3D Max.

You'll also want to learn texturing. I would recommend getting started with modeling first, and then move on to texturing. Starting out, you can kind of just slap a texture on your models. Eventually though you need to actually learn to paint. As you get into modeling, it will start to become more clear what you need as far as textures and how they are produced.

As for programming, start by learning a language. Any language to start with really. In the beginning, you will just be learning the things that all computer languages share, like looping and conditional statements.

I always recommend learning C# and then getting into XNA. C# is very much like C++ but 100 times easier. For a beginner, that's a good thing. It kind of "eases" you into C++. By the time you've mastered C#, learning C++ will be 100 times easier. XNA is the game library/framework for C# that allows you to do 2D and 3D games. Once you've read a couple C# books, you should be ready to dig into XNA.

XNA has managed to get a "bad rap" as "not a serious" game design language. I'll tell you straight up front that it's not quite as "professional" or as ridiculously powerful as programming in C++ with DirectX or OpenGL. But it's 1000 times easier to work with. The power that you are losing by working in XNA is power that you aren't likely to see much benifit from unless you are working on a team of more than 10 people. And although it's 1000 times easier, you still can get very deep into game programming in XNA.

In XNA, you still get into very advanced game programming topics. For example, I'm learning High Level Shader Language in XNA right now. HLSL is also used in C++ with DirectX. HLSL is taking control of the graphics card and doing the math in the graphics card yourself that causes things to be drawn on the screen. Basically, you use Linear Algebra and Trig to produce the eye popping graphics of today's modern video games the same way that the most advanced professionals do. You can't get any more "professional" than that. It has me studying rasterization, z-buffering, g-buffering, and the entire graphics pipeline from end to end on the "mathematical" level where you can do what the graphics card does yourself with pen and paper. Because really, it's all just math that takes numbers that represent 3D points and textures and turns them mathematically into dots (pixels) on the screen.

Anyway, that's just one example of how XNA allow you to get into the absolutely most advanced subjects in game programming in an environment that's a whole lot more friendly to beginners and where there are numerous books written to help you along the way.

So, I would recommend finding a couple of C# books for beginners. You want one that teaches the basics such as "if", "for", and "switch" statements. After reading a couple of C# books and playing around with it for a couple of months, then start going through some XNA books. I would recommend starting with 2D games, as almost everything you learn about 2D game programming will apply to your 3D programs.

Both C# and XNA are free downloads from Microsoft. C# 2010 goes with XNA 4.0 and C# 2008 goes with XNA 3.1 and they are not really compatible with one another. Examples written for one will not work for the other without knowing what to adjust in the code to make them work.

I might also suggest to go through Riemer's tutorials and RB Whitiker's tutorials once you've learned C#. In fact, Whitiker has some C# tutorials as well.

Also, check other posts in this forum. This question is asked on almost a daily basis. So there are some permenant posts to answer the question as well as the fact that you can go back and read some of the replies to the other posts on this subject here. And if you decide to go the XNA route, check out the XNA sub-forum as well.

And while XNA may not be useful for any actual job you will ever get, C# is used heavily in the business world. And C# is great for making tools for your C++ programs. And most importantly, if you master 3D programming in XNA, learning DirectX or OpenGL game programming with C++ will be 1,000 times easier.
Was This Post Helpful? 4
  • +
  • -

#3 Sonic Keyblade-007  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 9
  • Joined: 11-September 12

Re: Best 3D Modeling/Video Game Designing Book/Software for beginners?

Posted 12 September 2012 - 08:14 AM

Hi, first of all thank you for taking the time to make this huge and well informed post. I found it really helpful. So as I said, I'm going into my third year of college and it looks like I'm going to be majoring in Business Administration at the moment. Although I am currently taking Calculus II and have already taken an introductory class to C++ in an attempt to major in Computer Science last year, but the class too difficult for me to handle at that time and I was barely able to earn a B- so I stopped heading in the Computer Science route and decided to work towards a Business Degree since I thought this would be an easier degree for me to handle but can still help me into getting in the Video Game Company working at least from a Business aspect. So while studying in school to get a business degree, I still wanted to study 3D modelling and video game designing on my own to help build a portfolio to help me get into a video game company in the future.
Was This Post Helpful? 0
  • +
  • -

#4 BBeck  Icon User is offline

  • Here to help.
  • member icon


Reputation: 580
  • View blog
  • Posts: 1,286
  • Joined: 24-April 12

Re: Best 3D Modeling/Video Game Designing Book/Software for beginners?

Posted 12 September 2012 - 08:36 AM

So, I would definately say the C#/XNA route then. C++ is difficult. A guy that I worked with who was already employed as a "Systems Analyst" for a cell phone manufacturer that everyone here would recognize if I said the name, went and took a C class just to "learn how to program". I tried to tutor him through it, but he just wasn't "getting it". Computer programming has a little bit of a learning curve and C++ is kind of jumping into the deep end of the pool.

If you've already taken a C or C++ class, learning C# should be a lot easier. C# looks like C++ a lot, but you don't deal with a lot of the more complex topics of C/C++ such as pointers and advanced data structures. The two really go hand in hand, C# is kind of like C++ with "training wheels". But that being said, C# is still powerful enough to put together serious applications for business and what not.

Give C# a try. It's a free download from Microsoft's website. I would expect to have to read a couple of C# books before you start to "get it". I find that different authors explain things from different perspectives and their combined perspective is what I generally learn from.

I'm sorry I can't recommend a lot of specific books here. I started programming when I was 12 in Basic. By the time I got to C# and XNA, I had already worked as a professional (business) programmer. I kind of skipped all the "beginner" stuff with C# and XNA. I never read a C# book (I just already knew it from years programming C++ and Visual Basic.Net) and I almost immediately jumped into 3D programming with XNA, kind of skipping all the 2D stuff. (Which now I'm thinking I need to go back and learn to use sprites in XNA, since I totally skipped that pretty much. At the very least, I need to do 2D sprites in my 3D programs.)

But I say, go download the free Visual C# 2008 Express version from Microsoft and the Visual C# 2010 Express version (that way you can take advantage of both XNA 3.0 and XNA 4.0 tutorials). Or just download 2010. Then go order a C# beginners book or two. And while you're waiting for the books to come in, go through RB Whitiker's C# tutorials. He teaches game making in XNA, but has C# tutorials to start you from the very beginning. I think he even has a tutorial on how to download Visual C#. Here's a link to my links page on my website, which will lead you to RB Whitiker's site as well as Riemer's site:

http://xna-3d-101.com/Links/Links.html
Was This Post Helpful? 0
  • +
  • -

#5 BBeck  Icon User is offline

  • Here to help.
  • member icon


Reputation: 580
  • View blog
  • Posts: 1,286
  • Joined: 24-April 12

Re: Best 3D Modeling/Video Game Designing Book/Software for beginners?

Posted 12 September 2012 - 08:45 AM

And don't let a bad experience with a C++ class discourage you. If a 12 year old can learn to program, anyone can. C++ is one of the most difficult computer languages out there. There are easier languages that you can learn (Visual Basic being the easiest "real" language I can think of and C# not being "that" much more difficult than VB.) And it takes some time and continual effort no matter what language you are learning. And there's no shame with starting in an easier language. Every computer language you learn will make learning the next one considerably more easy, even if you start with the easiest languages.

I made straight A's in my Pascal, C, and Assembly Language classes, largely because I started as a kid in an easy language (Basic) and so I already knew the "basics" on the first day of class. And I just kept learning harder and harder computer languages as I went. Pascal prepared me for C and Assembler.

And any "good" computer programmer will know half a dozen languages or so. Learning C# is a great stepping stone towards learning C++.
Was This Post Helpful? 1
  • +
  • -

#6 Sonic Keyblade-007  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 9
  • Joined: 11-September 12

Re: Best 3D Modeling/Video Game Designing Book/Software for beginners?

Posted 12 September 2012 - 12:05 PM

Thanks again for your advice, I'll definitely take your consideration and look into playing around with C# and Visual Basic. I also wanted to ask, In order to be a good programmer, is it really essential to have good math skills? When I took introduction to C++ at my university last school year, I was in Calculus I at the time and after I left programming for business, I was still required to take up to the beginning of Calculus II. I'll finish my math requirement for the business major by the end of this week, but I was thinking about maybe studying further into math while getting my business degree and even consider getting a minor in math if I still have the time for it. I heard that the more advanced topics after basic Calculus are important to know in order to be a good programmer such as Linear Algebra but I'm curious what exactly makes math so crucially important in the programming field and I'm assuming the same goes for Physics right? If so, do you think it's possible to learn these subjects on your own or would you need to be taught these subjects at a university?
Was This Post Helpful? 0
  • +
  • -

#7 BBeck  Icon User is offline

  • Here to help.
  • member icon


Reputation: 580
  • View blog
  • Posts: 1,286
  • Joined: 24-April 12

Re: Best 3D Modeling/Video Game Designing Book/Software for beginners?

Posted 12 September 2012 - 12:44 PM

I'm kind of a hobbie game programmer as opposed to a professional game programmer, but I do do 3D. On the other hand, I've worked in the business world as a programmer on and off for many years.

So, there are two questions there: the one you asked and the one you meant.

You asked, "In order to be a good programmer, is it really essential to have good math skills?" The answer to that question is an absolute no. I knew most of the math I needed as a professional programmer when I was 12. If you know the meaning of "A+3=7" and maybe some basic math functions like Floor and Ceiling you're pretty much there. I always heard growing up that you had to be really good in math to be a computer programmer and that's just a flat out lie. If you get really deep into it you need to know some things that are a little more complex like binary math so that you can use binary and hexadecimal. But again, that's not that far beyond grade school math, and you're getting to the advanced level by the time you get into that.

Now for the question you intended to ask, "In order to be a good game programmer, is it really essential to have good math skills?" The answer to that question is an absolute YES with a capital Y-E-S.

The math skills are necessary when you are programming scientific or engineering programs... or games.

Getting started in game programming doesn't require much beyond middle school math. For a lot of 2D game stuff, the math just doesn't go that far beyond addition, subtraction, and division.

Now you "can" put physics into your 2D games.

My experience with physics (assuming that you aren't going to just use someone else's physics library) is that you need to know trig. Personally, I don't know calculus and that's never been a problem. The only time I ever really regretted not knowing calculus as a game programmer was when I was trying to understand the physics of how a car engine turns octane(gasoline) into presure in the cylider which then drives the crank shaft through a torque force. The accelerator pedal constantly changes the octane (gasoline) going into the cylinder and you get a constantly changing cylinder pressure that is also constantly changing by the fact that the other cylinders are driving the crank shaft that then pushes and pulls the cylinder even when it's not firing. Blah blah blah... but suffice it to say that I think you need calculus to really model the problem of how a car engine actually works.

I "have" however seen most of the physics books written for games written entirely in calculus notation. They really like to turn simple algebra equations like Force = Mass times Acceleration into differential equations and such. I have a college physics text book that I have read (I took physics in high school but only Chemistry in college). And in that text book there is basically no calculus in it anywhere. That's two symesters worth of college level physics and it didn't require a lick of calculus. So, I think it's safe to say that 95% of the game physics you will need does not require calculus.

It did require a fair amount of algebra and trig though. So, I consider those mandatory for game physics, but not necessarily calculus. Calculus would be a real plus and maybe let you go a bit further, but I really don't think it's a requirement most of the time.

Now linear algebra is another story. I've never taken Calculus let alone Linear Algebra. However, I've taught myself a lot of the linear algebra stuff that you really have to know for 3D game programming. Specifically, you need to be pretty solid in Matrix Algebra and Vectors which are primarily studied in Linear Algebra. I'm reading a linear algebra book right now to get better at it. Linear Algebra is probably also useful for physics and collision detection. But again, most of it is Matrix Algebra and Vectors.

I was introduced to Matrix Algebra in middle school, although we didn't cover it after that. I read a couple game math books and basically taught myself Matrix Algebra. However, I never used it after that. You may not use it at all in 2D game programming. In 3D, you may get fairly far without really knowing it, especially in XNA. My website discusses matrices and what you need to know about them to go almost to the advanced level in XNA.

Now, right now, I am finally getting a "little" into using my matrix algebra knowledge. I'm studying High Level Shader Language and the math involved in drawing computer graphics. XNA obscures a lot of this math from you. But HLSL does not at all. When you start doing HLSL you need a solid understanding of what a matrix is and at least a basic knowledge of matrix algebra. But, HLSL is an advanved topic for XNA. You might even be able to do DirectX and OpenGL without HLSL. I haven't dabbled in either for several years since I found XNA. But I know I will be much more knowledgable when I finally do go back to DirectX. HLSL is exactly the same in DirectX as it is in XNA.

In several of the books that I'm reading on how to use HLSL to do things like draw shadows and have multiple lights in your scene, it's all matrices and vectors. They just "assume" you know vector math inside and out and that you're pretty solid with matirx algebra. If you do, understanding the books is fairly easy. If you don't you won't understand them at all.

Now Vectors are a subject from Linear Algebra that you need to really understand well to do 3D games. You will be introduced to them in 2D, but they get misused in 2D so much that it's easy to get deep into 2D and not know what a vector is at all. It's best if you can learn them in 2D because they are just easier to learn in 2D. By the time you get to 3D you pretty much have to understand them well and know how to use them correctly.

I learned vectors mostly by studying game math books. Then I took a trig class and was formally introduced to them in trig. However, we spent "maybe" two weeks on them and I think I understood them better than the guy teaching the class due to my years of studying game math on my own. So, technically Vectors are part of Trig. However, they are focused on primarily in Linear Algebra.

Really, trig is what I use constantly in game programming. But I consider matrices part of high school algebra and vectors as part of trig. I think Linear Algebra is mostly reinforcing the use of matrices and vectors.

Oh. And then there are quaternions. I'm not sure what class teaches quaternions. Quaternion class, I think. lol Quaternions are used in place of matrices to store orientation information. Matrices use Euler Angles to store the orientation and run into problems such as Gimbal Lock. Quaternions are used to avoid the inherient problems with using Euler Angles to represent orientation. I "just" finally figured out how to use quaternions about a month ago. Suffice it to say, that you really don't need to know what they are or exactly how they work as long as you know how to put them to work. The same can be said for matrices in XNA.

So to sum it all up. As a business programmer you don't need to know squat about math. As long as you made it all the way through high school math you're good. If you want to program games, you are going to be using Trig constantly for everything from making waves to measuring angles to vector physics. But that's really it. Calculus is a real plus, especially for physic simulation. And Linear Algebra really spends a lot of time on vectors and matrices, which are used all over the place in 3D game programming.

So, bottom line is, you really only need trig if you're doing more than a fairly simple 2D game. But you can get really deep into game programming knowing nothing more than trig, vectors, and matrices. Calculus and Linear Algebra are just "icing on the cake". Any math you know beyond that may prove useful at some point, but that's really the bulk of it.

If you're finishing Calc II, you probably know more math than you are likely to ever need for programming games or business apps. If you're weak on Vectors and Matrices, you might think about picking up a game mathematics book. If you find yourself with some extra time, you may want to study linear algebra on your own.

This is one of the books I'm currently reading and I love it:
http://www.amazon.co...lgebra+geometry

Really good stuff for programming 3D games. But you need to know matrix algebra before reading it and need to be very solid with vectors as well.

I can also recommend this book as a place to start learning about vectors and matrices:
http://www.amazon.co...ame+mathematics

You should definately read the Primer book before the Linear Algebra book there, because it will kind of build on what you learn in the Primer (matrices and vectors).

But all that is really very advanced for XNA. You probably shouldn't worry about either until you've written a few 3D programs of your own in XNA. Until you are ready to dig into HLSL in XNA, neither are really required knowledge.

But I definately think you could teach yourself most of any additional math you need to know once you're pretty solid in calculus.

This post has been edited by BBeck: 12 September 2012 - 01:04 PM

Was This Post Helpful? 2
  • +
  • -

#8 BBeck  Icon User is offline

  • Here to help.
  • member icon


Reputation: 580
  • View blog
  • Posts: 1,286
  • Joined: 24-April 12

Re: Best 3D Modeling/Video Game Designing Book/Software for beginners?

Posted 12 September 2012 - 01:12 PM

Oh. And I can also recommend this book for Physics:

http://www.amazon.co...eywords=physics

It's a college text book that I read on my own. (Although I went to a school that used it for the Physics 101 class. I just didn't take the class.) It's easy to read on your own if you know algebra and trig. And it provides a good foundation for game physics.

It got mixed reviews, but I would give it 5 out of 5 stars. I just wished it was a 2 or 4 year book instead of a 1 year book, because I wish it went deeper into the subject. What it covers, it covers very well. And it's pretty easy to read.

I took the time to read some of the negative reviews. I might mention that I took honors physics in high school. So, much of this book was "review" for me. That may skew my opinion of it a little. A lot of the negative reviews suggest it's hard to read and poorly written and that the exercies don't match the text. I didn't go through the exercises, and my prior knowledge may have made it easier to read. But I'm still a big fan.

But again, you don't need this until you get to the intermediate game programming level. Even in the advanced level of 2D you can probably find a library to do your physics for you. In 3D you may start having to do your own. I prefer to do my own anyway, but I'm not doing a lot of super complex physics.

Right now, you should probably just focus on learning C# and then XNA. That along with modeling should keep you busy for the next couple of years and then you can get into the physics and then HLSL and all the Linear Algebra. Just start getting familiar with Vectors in 2D XNA and get very familiar with them as you go into 3D XNA, and start to learn the basics of matrix algebra.

This post has been edited by BBeck: 12 September 2012 - 01:26 PM

Was This Post Helpful? 2
  • +
  • -

#9 Sonic Keyblade-007  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 9
  • Joined: 11-September 12

Re: Best 3D Modeling/Video Game Designing Book/Software for beginners?

Posted 12 September 2012 - 01:52 PM

Thank you so much, after I play around and try to get my feet wet with C#, XNA, and Visual Basic, I will definitely take a look at the books that you mentioned. I find it really amazing that you were able to teach yourself all this stuff on your own. So you said you were programming since you were 12 right? How long did you spend each day programming, how did you find the time to teach yourself these programing languages and game math, and how old are you now? I'm just curious because I wanted to get an idea of how long exactly it would take for me to study C#, Visual Basic, XNA, and eventually C++ again before I can finally start making my own games or work with other people making games.
Was This Post Helpful? 0
  • +
  • -

#10 BBeck  Icon User is offline

  • Here to help.
  • member icon


Reputation: 580
  • View blog
  • Posts: 1,286
  • Joined: 24-April 12

Re: Best 3D Modeling/Video Game Designing Book/Software for beginners?

Posted 12 September 2012 - 02:33 PM

I did start when I was 12. I had a friend who knew a lot more about programming and game programming than I did and he would show me things. But a lot of what I wrote was on a skill level that was appropriate for my age at the time. I spent a lot of time on the computer (maybe sometimes 12 hours a day), but I was a kid and you've got that kind of time during summer break.

I got interested in girls in middle school and they didn't like computers, so I dropped it (had to play the part of the cool guy). Then after I got out of high school I decided to go to college and women liked to see a guy have a substantial sized paycheck and so I decided to study computers in college. I dropped out of college after I got a job as a programmer half way through.

I've always read a lot. And I took honor chemistry and physics in high school.

But to answer your question. There are a lot of different levels of "game programming". When I was a kid I programmed text games like "21", or "Guess this Number", and some simple graphics games like pong and whatnot.

I think if you read a couple of C# books cover to cover, you'll be ready to get into game programming. Depending on how much time you have on your hands, you could probably get through one of those books a month. So, in two months you could probably be ready to get started. With your background in C++ in school, it may actually only take one book on C# and one month. But don't get discouraged if it takes 3 or 4 months. If you find C# too difficult after reading a book on it, then consider trying Visual Basic, but C# is not a whole lot more difficult than Visual Basic and with your prior knowledge of C++ you will probably find C# easy.

Once you've kind of got an idea how C# works. You're ready to start XNA and game programming. Now, don't get me wrong. You're not going to be programming Grand Theft Auto VI at that point. If you can do a simple number guessing game you're off to a good start at that point.

Then you start getting into XNA. At first you'll probably just be playing around and experimenting. You'll see if you can draw a sprite on the screen. You'll learn to put up a picture in the background. You'll learn how to play sounds. You'll learn how to get an XBox controller working on the PC and receive input from it. This is just going to be a playing around stage and quite frankly, I'm still in that stage.

You'll basically be building up a "bag of tools and techniques". You learn one technique, like how to play a song in the background. That's not going to make much of a game. You learn another technique about how to draw sprites to represent the player and the enemies. Still not much of a game. You learn to move them around the screen. Now you're getting somewhere but it's still not a game. With 5 or 6 of these techniques you'll be able to do pretty much nothing. As you start learning 100 or 200 of these techniques, you may be able to create a fairly interesting game. Pong probably only requires something like 40 such techniques. The more you learn the more you will be able to do and the more you will start seeing the road ahead of you and what the next step is.

Honestly, with your background in C++ and math, I'm guessing you can be through a C# book and ready to start XNA in a month as long as you can read well enough to study for college classes and it sounds like you can.

Once you get started with XNA, you can probably start doing simple games like pong or maybe even Tetris or Angry Birds within a couple of months. The main thing is that you enjoy the "journey" because you are going to be on that journey for a very long time.

I've been trying to learn 3D game programming off and on for about 8 to 10 years. But that wasn't consistant working on it every year. I tried a lot of different things including Torque game engine, C++/DirectX, level editors for various games and producing content for them. I took a game programming class that I mostly didn't understand and a really good 3D Studio Max class on modeling. I used to sit around building stuff for the Second Life game all the time, but got board after about 6 months to a year because there wasn't anything to do except just build stuff. Still, I got a lot of experience producing game art that way including modeling, sound effects, animation in Poser, texturing, scripting, etc.

So, my point is that it's a journey, expect to spend the next 10 years learning a lot of the "basics". But I'm not sure you will ever stop learning about game programming. There's just too much for one person to learn and it gets more complicated every year.

Get comfortable with C# and XNA before you start digging into 3D in XNA. But you could probably start dabbling in 3D within the next 6 months. Almost everything you learn in 2D will get used at some point in 3D. So stay in 2D as long as you can force yourself to stay there. For me, that wasn't very long. I did a little 2D growing up and was working on a 2D tile engine in DirectX/C++ when I discovered XNA. Pretty much as soon as I started in XNA I discovered that getting started in 3D in XNA isn't that hard. So, I just pretty much immediately went into 3D. I suppose you can always go back to 2D if the 3D stuff gets to be too much.

For one person, it's much more realistic to produce a complete 2D game. The 3D games one person can produce are probably more simplistic than the 2D games because there's so much extra work that goes into 3D.

A game like GTAIV requires a team of hundreds of professional programmers and artists many years to produce even though they are working on it at least 5 days a week all year round. Keep that in mind, and realize that even small victories in 3D are victories.

If you want to produce finished games, stick to 2D or simple 3D that works like a 2D game but has 3D visuals. I saw a guy that teaches game programming that said he was able to produce 3D Pac Man in a week with a little bit of help from a couple of friends (mostly to do the music I think). I "might" be at a level where I could produce the same thing in about 2 months working entirely by myself if I worked on it on week nights and all my weekends.

For something more along the lines of a first person shooter, it is likely to require a lot more learning and a lot more time to build. Expect to spend at least a couple years learning the basics of how to do that.

Really, if you have any hope of learning 3D game programming, you have to love just learning it, because successes of any substantial size are many years in the future. But if you love the "journey" you won't care about that so much.

This post has been edited by BBeck: 12 September 2012 - 02:38 PM

Was This Post Helpful? 1
  • +
  • -

#11 Sonic Keyblade-007  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 9
  • Joined: 11-September 12

Re: Best 3D Modeling/Video Game Designing Book/Software for beginners?

Posted 12 September 2012 - 10:32 PM

So you think my journey in programming may take ten years? I'm turning 20 this month so let's say I spend the next ten years programming in different languages to help myself build a good portfolio and experience in programming. I'll be 30 years old applying for a job in the video game industry. Do you think Game companies would still consider me to be a worthy candidate to work for their company? Or would they prefer 24 year old graduates fresh out of college with a Computer Science/Engineering Degrees?
Was This Post Helpful? 0
  • +
  • -

#12 BBeck  Icon User is offline

  • Here to help.
  • member icon


Reputation: 580
  • View blog
  • Posts: 1,286
  • Joined: 24-April 12

Re: Best 3D Modeling/Video Game Designing Book/Software for beginners?

Posted 13 September 2012 - 07:31 AM

It will take a good long while to get good at game programming on your own. It depends on how dedicated you are to it. If you work on it every day, you're going to get better a lot fast than if you work on it for two weeks every year. But in my experience it takes at least 10 years to get good at anything in life that requires skill to the point that people recognize that you're pretty good at it. But it's mostly dependant on how much time you spend working at it. And that mostly depends on how much you love doing it.

Game programming, especially for modern 3D games is ... what's the word I'm looking for ... difficult ... no ... impossible would be a better word. It's an almost impossible skill to learn. By that, I mean that if you were to learn all the skills that go into a game like Skyrim or GTAV you are looking at many life times of study.

You need to be really good at: C++, DirectX and/or OpenGL, Data Structures, the target Operating System (PS3/XBox/and Windows - learning Windows under the hood is a major acomplishment in and of itself), Foley sound effect creation like in the movies, Scoring, Music Composition, How to play every instrument in the song (most people say it takes a life time to master a single instrument), Cinematatography, Lighting, Modeling/Sculpture, Texturing/Painting, Animation, Physics, Trig, Calculus, Linear Algebra, and probably a whole host of other skills I can't think of off the top of my head. A lot of the skills involved are things that people spend an entire lifetime studying. So, for all the skills combined you could be looking at several life times to learn.

So, to say that it would probably take very roughly 10 years to get good at enough of that where you're producing something halfway respectable, I don't think is much of a stretch. It might even be a bit overly optimistic. I don't see a ton of 3D independent game makers here or anywhere else. It's a rough skill to learn. Or more acurately, it's a whole bunch of rough skills to learn. But it's largely dependent on how much time you dedicate to it every day.

It takes time. And it takes a lot of time. Kids who got started at it when they were 15 or younger already have a 5 year jump on you. You may have met some of those guys in your programming class. So, if it takes 10 years they'll have that 10 years at age 25. Honestly, that's why it's important to decide what you're going to do with your life as young as possible and get started on it.

Now as far as a portfolio. I've never worked for a gaming company. I worked for one company that produced games, but it was an enormous company and I had nothing to do with the gaming part of the company. But I have gone through a lot of tech interviews for big name companies. Generally, it consisted of about an hour of being drilled by people that were experts in the field about arcane technical things. As a programmer, expect to get an hour of questions like "How many bytes is a float datatype on the heap?" or "What's a mutex?" Generally, it's going to be a lot of stuff that's well beyond the stuff that they teach you in school. But it will be questions that are focused on whether you know enough to do the job well without supervision. In a nutshell, "Do you know what you're doing?" After that they generally, have a manager drill you with manager type questions for an hour such as "Where do you see yourself in 10 years?". They tend to be pretty brutal job interviews, but as long as you know the job and how to perform it really well, you'll shine. One of those companies said they had been interviewing and turning people down for 6 months until I got the job. And I did well because I knew the answers to all their obscure tech questions.

So, bottom line is that it's a safe bet that they are going to want you to be really skilled at the job they are asking you to do. They probably aren't going to care if a programmer can annimate or if an annimater can compose music. They know it takes many many years to get good at any of those skills. They're probably going to focus on "Prove to us that you can do the job we want you to do better than anyone else that we can find in the world."

I don't know exactly what job you're trying to target. You said you wanted a business job with a gaming company. To me, that sounds like they aren't even going to care if you know squat about programming games. If they are hiring you as an accountant, they are probably going to want to know that you are a CPA and that you know the difference between accounts payable and accounts receivable. I can't imagine they would care whether you know anything about games.

It's going to come down to, "Show us that you know how to do this job and that you know how to do it really well." If that involves programming, then you need to get really good at programming. And the easiest/fastest way to learn game programming is probably to get a computer science engineering degree, although I think a lot of game programmers would tell you that only gives you the foundation to "start" learning game programming.

Maybe start by picking a very specific job that you are going for. I'm sure gaming companies have a business side, but even in "marketing" there are likely to be several jobs to choose from. Once you've got a specific job title, then maybe start asking around as to what skills are expected from a person with that job title. Then maybe start asking how most people get those skills.

It just seems to me that most companies would not care if a business person knows how to build games, even in a gaming company.

Oh. And incidently, I'm a college dropout and I've worked in IT for several Fortune 500 companies. Even in college I was mostly self taught. The professors just threw books at us and gave a descent lecture (if we were lucky). You absolutely can learn to be a great programmer on your own, but I just think it's easier to get a good foundation to start your journey as a programmer by getting the CSE degree. It's difficult to know what to study without the type of guidance you get in college and so when you're self educated you often end up with a lot of gaps in what you know. For example, I don't know Calculus and sometimes I think I would probably be using it if I knew it. (But that's just for game programming. Business programming doesn't require any math to speak of.)

This post has been edited by BBeck: 13 September 2012 - 07:36 AM

Was This Post Helpful? 2
  • +
  • -

#13 BBeck  Icon User is offline

  • Here to help.
  • member icon


Reputation: 580
  • View blog
  • Posts: 1,286
  • Joined: 24-April 12

Re: Best 3D Modeling/Video Game Designing Book/Software for beginners?

Posted 13 September 2012 - 08:31 AM

View PostSonic Keyblade-007, on 12 September 2012 - 11:32 PM, said:

So you think my journey in programming may take ten years? I'm turning 20 this month so let's say I spend the next ten years programming in different languages to help myself build a good portfolio and experience in programming. I'll be 30 years old applying for a job in the video game industry. Do you think Game companies would still consider me to be a worthy candidate to work for their company? Or would they prefer 24 year old graduates fresh out of college with a Computer Science/Engineering Degrees?


I thought you said you were going for a business job in the game industry, not a programming job. :-)

I've never worked in the game industry, so take everything I say with a grain of salt. All I can say is from my experience working in the IT business world.

I personally think the game industry is looking for people to take advantage of. Kind of like the military. The older you get the less willing you are to get shot at for a living. That's one of the reasons the military is mostly full of young recruits. I hear that game programmers are a bit abused, forced 80 hour work weeks, low pay until you've really established yourself, and there are 90 other candidates ready to take your job from you the second you are no longer willing to put up with the abuse.

I found this video yesterday and it pretty much sums up my impression of the video game industry (although I'm admitadly an outsider):

http://www.youtube.c...feature=related

That kind of sums up why I decided several years ago I would just stick to the business world where I could make tons of money on a 40 hour work week instead of desperately pursuing a job as a game programmer. With the extra time on my hands and plenty of money to buy computer books and a new graphics card, I can spend my weekends playing around with my own creations rather than working on someone else's project that I hate. I've spent enough time in the business world to know that when you work for a living, you almost never get to work on what you want to work on. Usually, you're working on what your boss tells you to work on. I was a photo-journalist for a small town newspaper in high school. I really liked photography, but I spent most of my time developing other people's pictures or taking the picture that I was told to take rather than the ones I wanted to take. I hated it.

So, yes, I'm thinking they would probably want a 24 year old college graduate that would put up with the abuse of 80 hour work weeks, rather than someone in their mid-thirties who has a wife and a newborn at home that he needs to get back to and spend time with.

Someone with a CSE degree has proven that they know a little something about computer programming and math, which are absolutely necessary skills for game programming. Without the degree you are going to have to prove even more that you know those skills as well as someone who aced those classes.

College is tough and I think they push people too fast. One of the last classes I took was Biology. 75% of the class dropped out by the drop date and I was making straight A's. Even the teacher was ticked off at me because I was throwing off the grade curve. But I think the reason was mostly because a lot of those students were taking a full load and I wasn't. I think the reason was that I spent easily 6 times more time studying then they did because I wasn't taking a full load and had the time available to me.

My advice is to get the CSE degree if you want to be a professional game programmer. And if you graduate with a C, go back and reread your text books until you could go back and get an A. It's not about passing the class, or even getting the grade. It's whether you know the subject well enough to teach it and that means making an A. When you get the job, you will need to know it and it won't matter whether you learned it in class or you learned it on your own as long as you know it.

In the real world of game programming, it's not whether you can answer a trig problem on a test. It's whether you see a problem that needs to be solved in the program and realize that you can use a trig function to solve the problem and how to use that function. That's totally different than passing a test. That's recognizing how trig is used in the real world to describe real problems. It's closer to solving word problems, which tend to give people a terrible time in school. But the word problems are easy if you actually understand the subject. They're terribly difficult if you just learned enough to pass the test.

As far as being 24 and straight out of college as opposed to be 30 and experienced, I don't know that age would matter so much as long as you're willing to put up with the abuse. But candidates who are younger are more likely to be willing to put up with the abuse.

With age tends to come experience, and that can give you a tremendous advantage. I mean, if you're 30 and you've got 6 years of experience working as a business programmer in C++ and you can show that you know the math and that you have a portfolio with some simple 3D games in it that demonstrate that you know what you need to know, then I think they are going to give you the job over some guy that's 24 and fresh out of college who has no job experience and doesn't know the specifics of game programming because they don't teach collision detection and animation/model deformation in a CSE degree.

The game industry is extremely competitive because we all at least want to work for them a little bit. And a whole lot of people want to work for them a whole lot. And a lot of those people are going to spend every weekend of their life perfecting their craft, not because they want the job, but simply because they love programming and they really love programming games. They're going to give up friends and girl friends and everything else so that they can spend 24 hours a day with their computer. And that's going to put them at the front of the line for those jobs. Honestly, to have any hope of competing against them, I think you are going to have to spend most of your weekends doing the same and accept that you will never be quite as good as them at it.

I worked one job where several of the guys down the aisle from me were published. You could go to any major bookstore and find their books on the shelf. Honestly, I don't want to be that good. I want to have my own life and not spend all my spare time studying computer stuff. I've probably spent 50% of my free time studying computer stuff during my adult life if you include the gaming stuff. And that's been enough to land me pretty good business IT jobs. I just really have no interest pushing it to more like 90%. And I believe that's what it takes to be known as the best in the world. The more time you work at it the better you're going to be. It's really that simple.
Was This Post Helpful? 1
  • +
  • -

#14 BBeck  Icon User is offline

  • Here to help.
  • member icon


Reputation: 580
  • View blog
  • Posts: 1,286
  • Joined: 24-April 12

Re: Best 3D Modeling/Video Game Designing Book/Software for beginners?

Posted 13 September 2012 - 11:02 AM

Just to give you some idea of what you're up against, I wanted to kind of describe what I've been working on for the past month.

I work for a living. So, I can't spend 8 hours a day on weekdays coding or even studying. And generally, I'm pretty tired when I get home and not up for it either. That pretty much leaves the weekends and a little bit during the week nights.

I'm currently trying to put together an interior level editor. I've got it to the point where you can model walls in Blender and then import them in. And the walls are solid (they have collision detection that prevents you from walking through them). And the floor and ceilings are done as tiles that can be placed and rotated with up to 64 different tile textures used in the scene. I've also got a door placed in the scene, but I still need to make the doors solid and include the code to allow you to click on the doors and animate them to open and close when clicked on.

Anyway, with standard Blinn and Phong lighting that you get without High Level Shader Language interior scenes look "flat" and completely fake. That has prompted me to try and learn HLSL and how to do point lights (light that shines outward from a point like a light bulb or candle) and shadows.

I spent about two weeks reading various books and Internet tutorials on the basics of HLSL. What I discovered is that most of the tutorials and whatnot cover Blinn and Phong shading and the types of shading that you can do without using HLSL. From an XNA perspective, they're just teaching you how to make your own version of "BasicEffect" which is built into XNA. So, you've gained nothing except a knowledge of how BasicEffect works to light your scenes. But the whole reason I'm studying this is because BasicEffect doesn't do point lighting or, really, shadows.

So, I spent all weekend last weekend just trying to figure out how to do some sort of shadow. Now keep in mind that you can produce 2D games all day long and not know anything about HLSL, Point Lights, or Shadows. You can even do a whole lot of 3D outdoor type games and not know about any of this stuff. The built in shaders will light an outdoor scene quite nicely and quite easily. But interiors require complex lighting. I think that's why you almost never see a tutorial on how to do a modern "dungeon crawl" type game or anything on how to do interior scene type games. It's because it requires HLSL to get the lighting to look half way descent and that requires a firm knowledge of Vector Math and Matrix Algebra. Not to mention, reading through probably a dozen, or so, text books written at a college level.

I've read through this book to learn about HLSL, as just one of several books I've been reading through:

http://www.amazon.co...ics+programming

It's very well written and explained several things I would not have learned anywhere else. It explained a lot of how graphics get drawn to the screen from one end of the process to the other. It assumed that you know Vector Math and Matrix Algebra as well as most people know addition and subtraction. Fortunately, I had already started studying this stuff from other sources.

But the book really only discusses handling a large number of point lights and shadows at a very high level. These books have taught me how to do a point light, but if you do it without defered rendering your frames per second is cut by the number of lights in the scene. Because it has to redraw the entire scene for every light in order to combine their lighting effect. So, if you have 6 lights your FPS is your normal FPS divided by 6. So, a FPS rate of 120 (very nice) just went down to (20) unacceptable. And that's only a mere 6 lights. Handling a large number of lights requires defered rendering which is considered a more advanced subject in these books. I mostly know this because I've been reading through these books.

Here's another book that I read select chapters out of:

http://www.amazon.co...ics+programming

Notice that these books are not cheap and they are written at a college reading level. And that last book over a thousand pages. Incidently, I don't think it's a very good book, but I already have it on my shelf. So, I might as well read anything it has to say on any subject that it covers that I need to understand.

I've also read through this book trying to figure out HLSL and ultimately how to address point lighting and shadows:

http://www.amazon.co...eywords=xna+4.0

This book has example programs that do exactly what I want to do, but the book doesn't include half the source code. You have to give your email address at the publisher's website and then most of the code wouldn't compile once I got it downloaded. I had to go in and fix them in order to get the examples to work. And the book does a terrible job explaining the examples or how they work. And the code doesn't have really any comments in it to speak of. Not only that but he includes a lot of stuff in the current example that applied to another example but have nothing to do with the current example. So, you have to figure out which half applies to what you are trying to learn and which half has absolutely nothing to do with the current example or what you are trying to learn. The only hope you have of understanding how to do what the example programs do is to read the extremly high level "flipant" explination of it and then reverse engineer the program line by line until you understand why every single line of the program has been included in the program and exactly what it does. I spent probably a good 6 hours reading and rereading the example code on how to do multiple point lights last weekend. I tried using what it taught in one of my own programs and "almost" got it to work with great frustration.

So, now I'm going through Riemer's tutorial on HLSL to at least understand defered rendering. I'm not sure his examples include one to do an arbitrary number of point lights, but he at least covers using defered rendering to do shadows for a spot light. I'm still going through the examples. And, again, I'm reverse engineering where I'm reading and rereading through ever single line of code until I know exactly why it's included and what it does and what it contributes to the overall program.

Assuming that I will figure it out, I'm probably looking at at least another 16 hours of study before I get the basics of how to do mutiple point lights and basic shadows. So, that's over a month spent on something that a lot of gamers might not expect to be complicated at all. I mean it's "just" how to include 10 light sources in a night time scene without killing your frame rate and having those lights produce appropriate shadows of what you would expect from 10 lights in a scene.

I just got this book last night:
http://www.amazon.co...hadow+rendering

And it may be required reading for understanding shadows. The back of the book says it covers every shadow technique in the industry. I flipped through it this morning. It very obvious expects you to know Vector Math and Matrix Algebra as well as most people know addition and subtraction from page one. It's only about 400 pages. And it appears to be a college text book and appears to read like a college text book. I won't be suprised if I have to read most of it before I figure out how to do shadows.

But notice no one is pushing me to do this. I spend countless hours trying to figure out one single technique that in some ways doesn't even have anything to do with the game. I mean game play has nothing to do with the shadows unless something hides in the shadows or something like that. In a 2D game, or maybe even in a 3D game, you could just draw a dark blob under things and call it a shadow and the game would work the same. In 2D you probably wouldn't even worry about rendering shadows.

Producing shadows is just one very small part of producing 3D games. There are 100s of subjects like this before you can even produce a simple 3D Shooter. So, when you figure it takes a month or two just to learn this one little thing and thousands and thousands of pages of reading, you can start to see why I say it takes 10 years to get where you can produce something fairly respectable in the way of a 3D game.

But the bottom line is that if you enjoy game programming, you don't have to produce a top notch game any time soon. If you enjoy game programming, (with your knowledge of math and having taken a C++ class) you could be working on simple 2D games in a couple of months and be producing working 2D games in under a year. And in probably less than a year you could be fooling around with 3D stuff. If you enjoy doing it, that should be a lot of fun for you. And if you don't enjoy doing it, you'll never make it as a professional game programmer anyway, sorry to say.

This post has been edited by BBeck: 13 September 2012 - 12:45 PM

Was This Post Helpful? 2
  • +
  • -

#15 Sonic Keyblade-007  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 9
  • Joined: 11-September 12

Re: Best 3D Modeling/Video Game Designing Book/Software for beginners?

Posted 13 September 2012 - 10:29 PM

I greatly appreciate you taking the time to type up these well informed posts. Just by speaking to you on this website, I feel like I'm learning more about the game industry than I could ever learn if I spoke to someone at my university and how should focus the next few years of my life. In your last post, you said that you have never worked at a game company before but you have had a business positioned job at a company who produced games and were asked a lot of technical interview questions. I wanted to ask, did you have to make connections with people in order to get that job position? If so, how did you get these connections? I've been trying to connect with video game programmers on websites such as Linkedin.com but so far I haven't had much luck. And how exactly did you prepare yourself to have good answers ready for those interview questions? Personally, I don't think I would have many good responses at this time to impress employers of a video game company in an interview.
Was This Post Helpful? 0
  • +
  • -

  • (2 Pages)
  • +
  • 1
  • 2