views:

784

answers:

6

Hi all,

I'm really wanting to get into game development (childhood dream!) and i think I'm now in a position to finally invest enough time into it. However i have a few questions and I'd really like some feedback from some guys already involved in development, so i thought i would ask here :)

  1. How easy is it to learn?

    I have some programming experience: VB.net applications (only small ones), and a little C#, but I have never really been able to commit to learning a language to proficiency as i find reading from books etc very hard to concentrate on.

    I made most of my VB apps from finding snippets and bodging them together, understanding what the code did as i went along. However XNA/C# games development is a lot more closed off, people don't seem to post a lot of their code the the internet (understandably), and I worry this might slow me down somewhat.

  2. What sort of time frame should i be looking at to get a good understanding of the language?

  3. Will XNA/C# stick around?

    Am i going to spend years learning the language only to find out that the C#/XNA combo is phased out for the next gen Microsoft devices?

  4. How relevant is C# to the professional game studios?

    OK sure saying you've released a dozen highly popular Indie games looks great on your resume, but is it really going to land you a job? Don't big studio's mostly use C++? How much of C# is relevant to C++?

  5. Finally, if I do decide to learn it, are there any books/sites/tools you reccomend for learning it?

If your still reading this then thanks for taking the time, i know its a little drawn out but I would really like to know these things before putting in some serious time!

Any answers to any of my (many) questions are very appreciated!

Joe

EDIT

Thanks for all the answers guys it means a lot! I'm bookmarking all these sites :)

+1  A: 

i use XNA/C# to do some games dev
i take it you havn't done much programming before so c# is a great place to start and the skills can be transfered to C++.
XNA is managed DirectX code so once you get comfortable with the advanced stuff you should be able to move to DirectX and without too much trouble.

these are a couple of websites that should help you get started:

http://verysillygames.com/
http://www.riemers.net/

harryovers
+1  A: 

i'm not that experienced with XNA but the little i've looked into i've used http://www.riemers.net/ aswell as the following sites

http://blogs.msdn.com/shawnhar/

http://xna-uk.net/blogs/randomchaos/archive/tags/Randomchaos+3D+Engine/default.aspx

http://www.thehazymind.com/category/xna/

And I might aswell mention that unreal 3 development kit has been released.

http://www.udk.com/

haven't had a chance to delve into the details for commercial development in this aspect, but basicly they are providing you with more or less the entire toolkit for developing UT3 and games on that engine, including particle editors and all sorts of wicked things :)

thmsn
+7  A: 
  1. It's pretty easy to learn, but you will need to put in the hours, there are plenty of good tutorials kicking about to get you started

  2. A life time? ;)

  3. C# is here to stay, the only thing likely to happen to XNA (and I suppose C#) is that it'll evolve

  4. I'm not much of a C++ coder (ok, total understatement), but learning C# and XNA will teach you a lot of important and relevant concepts that should be valuable across languages, such as object orientation, 3D Geometry, etc etc etc. Further, I think you'll start to notice, soon, more games companies starting to use technologies such as C# (and others) - not to say that C++ will die out any time soon!

If you look to the Unreal Engine, you'll notice that they tend to use UnrealScript to do most of the gameplay code.. and there's a small list here of games that make use of python.

It's worth remembering that a games company will make use of a huge number of technologies and skill sets, you'll need to think about exactly what it is you want to do within a games company to know how best to tailor your skills. (i.e. do you want to be doing all the snazzy graphics code? Gameplay code? Audio? Writing support tools and tech? Dealing with databases? and so on)

General Advice

Inspired by Ben S's comment on source control, I think this will provide a valuble list of DOs and DONTs if you want to get a small indie game done. I'll start with the DONTs

DONT

  • let anyone tell you that your game idea is stupid
  • let anyone tell you that learning anything (C#) is a waste of time
  • try to do an RPG, it requires more content than you have time to create
  • get hung up on network multiplayer, it's a pain in the ass and often doesn't add that much to your game
  • think that for a game to be good that it has to be in 3D use the latest snazzy graphics card effects - it's all meaningless if the game is boring.
  • feel that you have to write EVERYTHING, there are a lot of libraries that take care of things for you. It's better to write your game than a library that handles menu-screens elgantly!

DO

  • Use source control! Ben S suggested svn/TortiseSVN, I personally prefer mercurial/TortiseHG but almost ANY source control system will do.

  • Keep your game as simple as possible. You've got more chance of completing it and less chance of getting disheartened with it

  • ask your friends what they think when you've got something on screen that does something, if they say it's rubbish, ask them why.

  • take shortcuts! If you think a user won't notice that your collision isn't pixel perfect, it's true they probably wont. If they do, you can always change it later

  • use other peoples code! (but give them credit!) if someone has solved a problem you are working on, why solve it again?

Lee
+2  A: 
  1. How easy it is to learn all depends on how you learn. If you don't learn well from books, you may want to find other ways to learn that suit the way you learn best. Finding code samples and pasting them all together is not really learning to code, even if you understand what the code does. I learn, for example, by trying things, and seeing the results, and trying again. When I get stuck, I go to a reference to figure out what I am stuck on, then move on and keep trying. You need to figure out how you learn, and find materials that support that.

  2. 3-12 months, depending on how much time you can work on it each day, and how quickly you pick things up. Maybe you can do it faster, maybe it will take you longer, that is just a rough estimate. Definitely learn C# before you try to start coding with XNA.

  3. Of course time will tell, but I think Microsoft is pretty dedicated to C# (they use it a lot internally), and .NET is their "flagship" language, at the moment. Either way, learning to be a programmer is more important that learning a language, and that will carry on with you no matter what. XNA I think has a good chance of sticking around, though again, you never know.

  4. C# isn't really used at professional studios, but you aren't going to code a couple indie games, and get a job at a professional studio anyhow. If you are successful enough at C# and coming up with game ideas to get a job at a studio, you can learn C++ easily enough.

  5. There are a lot of tutorials for 2D development at http://www.xnadevelopment.com You may find some off of ziggyware.com and such as well. Also, definitely get active in the XNA community at xna.com

Good luck in your endeavor!

Rick Mogstad
+2  A: 
  1. Depends on you more than anything else. For C#/XNA there's tons of resources out there both official and non. It's been a while since I've used it but I remember using this a lot: Creator's Club - along with posting any questions in that community. In the whole scheme of things it's probably one of the easier tools to learn (I'd put it second only to Python/Pygame).

  2. Again this depends on you, it's not something we can really tell you. It depends how familiar you are with programming concepts (Algos, Data Structures, etc). Game programming is still programming.

  3. I don't think it'll be going anywhere anytime soon. XNA is tied to the 360 (and I believe the Zune as well), so it'll exist for at least as long as that console does (and it's very likely it's carried into the next gen). There's really no reason for MS to cut it off, it encourages people to use Microsoft products and is an extremely friendly environment to develop in. C# is relatively popular for use in .Net apps in the business world, and so as long as that sticks around C# will.

  4. Gaming houses are an extremely competitive places in terms of jobs (especially with the recent layoffs). Making games on your own seems to be one of the best things you can put on your resume (barring actual release experience, which you don't seem to have). Being proficient in C# is just a couple jumps away from being able to use C++, there are definite differences but with both being imperative languages there's definitely a pattern there. I'd imagine knowledge of Algos, good Engineering practices, prior experience (indie releases) and critical thinking are much more important than knowledge specific to c++ (although I'm sure it helps).

  5. It's been a while and I'm not sure how up to date my resources are. See the link above. I'm sure others will post.

Good luck and stick with it, you'll more than likely get tired/bored/sick of a project somewhere between design and mid-implementation, but stick with it - it's worth it.

cmjreyes
+18  A: 

1. How easy is it to learn?

Video games have historically pushed the envelop when it comes to technical requirements. Depending on the depth and complexity of your games, you may need to understand complex geometry, artificial intelligence or graph theory.

However, since you're designing the game from the ground up, you can choose to avoid these problems by making a simpler game.

Also, XNA is a framework designed to make things easier for the developer, so I wouldn't expect an enormous learning curve.

2. What sort of time frame should i be looking at to get a good understanding of the language?

I would say a few weeks to a month or two, depending on your learning speed and how much time you have to invest. If you have a little bit of programming experience and under stand the basic concept of object-orientation. If you don't understand object-orientation, I would push my estimate to 2-3 months of learning.

3. Will XNA/C# stick around?

C# will stick around for sure. Microsoft has invested significantly in it, and it is widely used.

XNA will likely stick around at least for a little while. XBLA games can be developed using it, and it's been a fairly well received framework for game development. My university offers a cross-faculty class where computer science and engineering students team up with visual art, business and planning students to make a game over the term. The course coordinator suggest using XNA.

Of course, while you're learning you can also be programming your game. You'll probably fiddle around with the code a lot, and years from now, you'll likely think your first game was poorly implemented, but you should still be able to get the game to behave how you'd like in that time frame (given that it isn't too complex.)

4. How relevant is C# to the professional game studios?

The language itself, probably not a whole lot, but the concepts and ideas are the same and are transferable. Programmers should be able to adapt to different programming languages, C# is just a tool to get the task done.

You would probably be more employable to a game company with OpenGL or DirectX programming experience, but you can still do that with XNA in C#.

Most games are done in C++ due to its compiled, native speed, but that doesn't mean all games need to be written in C++.

5. Finally, if I do decide to learn it, are there any books/sites/tools you reccomend for learning it?

Read the XNA tutorial on the creator's club site and go through the video demos. Particularly the tutorial where you make a game that controls a cannon that shoots UFOs out of the sky. It only takes a few hours to complete, and you end up with a playable game that demonstrates many important concepts.

If you have any specific questions, ask here or on the XNA forums. There's ton's of helpful people out there.

General Advice

Before you even get started, install some sort of version control. I highly recommend TortoiseSVN because it's so easy to use and well integrated.

Ben S
+1 excellent! But I think it would be fairer to say that most game /engines/ are done in C++
Lee
+1 for source control. can't give enough best practices when one is willing to learn
m_oLogin
I second the source control! Find a good, stable place to store your code with backups (my host is xp-dev.com, they've been great so far). +1
Ricket
Agree 100% with #4
Shahin