A Basic Question
Members - Reputation: 104
Posted 14 February 2013 - 09:54 PM
A very flabbergasted noob, thanks in advance.
Members - Reputation: 2380
Posted 14 February 2013 - 10:31 PM
Game making and learning to program are separate goals, and there are ways to fast track game making without learning a language.
But for learning a language, the way to go is simple: get a book. Read each chapter, do the oversizes at the end or practice the skills learned at every step. Then create a game with the skills you learn. You don't need to read the book before starting on the game, but you should practice the things in the book that are not immediately relevant to your project.
Members - Reputation: 452
Posted 14 February 2013 - 10:47 PM
Other than the obvious ones like an Integrated Development Environment (probably Microsoft Visual C# + XNA, since you want to use C#), here's a nice list of free resources maintained by Ludum Dare, a site that holds 2-day "build a game from scratch" competitions: http://www.ludumdare.com/compo/tools/
Keep in mind that learning to program doesn't happen overnight, and it'll likely be months before you're ready to actually do anything with these tools (as far as incorporating them into a game, anyway--you could start drawing sprites tonight). Now, the link I'm about to post is dedicated to Java programming practice, but Java and C# are very similar and the exercises focus on basic programming logic that applies to any language (loops, arrays, string manipulation, etc.). http://codingbat.com/
Edited by TheSasquatch, 14 February 2013 - 10:55 PM.
Crossbones+ - Reputation: 1719
Posted 15 February 2013 - 09:33 AM
C# is starting to get more popular among all platforms with Mono. I recently switched from Visual Studio C# and .NET / XNA to Mono Develop C# and Unity. Mono Develop is much cleaner, much higher performance than Visual Studio, is also free and creates code to run against the cross platform Mono libraries as opposed to the Windows specific .NET libraries. People will argue that not all of .NET is supported in Mono and this is correct, there are many aspects of windows only stuff that Mono simply doesn't do. However in my experience everything comes with limitations and the trade off of productive cross platform coding vs not having some windows specific features that .NET provides is acceptable.
In short, everyone has preferences and there are ton's of tools out there that help you build code and assets for games. In the C# world we are a bit limited as not many big companies have jumped on board yet. Being that your choice is C# I would recommend looking in to Unity if you want to fast track a game with a nice visual editor. It will come with Mono Develop to write your C# logic scripts in, Unity will handle the rest. It's pretty easy and you'll be surprised how quick you have something like a game working with little to no programming experience. Unity provides ample tutorials that teach you their scripting commands and options, from there you will need to learn some general programming and C# related data management and logic methods to actually make your game smart.
If you prefer to take a more code based approach you have a few options in C#. XNA, it's great but it's dead and or dying. It's Microsoft only, it uses Direct X 9 or 10 (depending on if you go with XNA3 or XNA4). Mono Game (the cross platform open source version of XNA created by NOT microsoft people). This is regularly maintained and is NOT dying, it's actually growing. Haven't done too much with it but it is also very promising in my opinion.
Then you have Sharp DX. This is a unique managed build of Direct X (8 - 11 I believe). It is actually giving you direct access to the hardware in a managed environment but outside of the .NET libs. It is best that you research this yourself to see what all it means with the better technical description but in short it's how you can use the real direct x from C#. Many C++ / Direct X people will probably talk bad about this and say that it's still under performing, that it's a hack so forth and so on but it's worth noting that even some Microsoft employees are quite impressed with what the author did. He basically wrote a program that re-engineers the API calls in a managed system, it's not a hack wrapper of the Direct X dll's. Do note however, there is little to NO information on Sharp DX. The idea is "It's managed Direct X go ahead and use it". The author assumes that you are already a Direct X master coder and don't need any help. I strongly urge against this as a beginner because you will need to learn Direct X in C++ and then apply that knowledge to C#'s implementation. It's difficult, very difficult.
Beyond that there's many different "what if's" that go into deciding what you need to work with and or no. The first and in my opinion most important is what platform do you want to target. As a beginner pick just one and life will be so much easier. Windows has the widest variety of choices, mobiles don't support C# (although mono is on android and growing), new windows phones don't support it anymore (whats up with that Microsoft, C# was your baby for the longest time...), Apple is anti anything that Microsoft supports so it's not likely they will be allowing / supporting anything C# related any time soon BUT mono could bridge that gap. Legal issues are probably the most pressing on that and I would just say if your a C# coder don't expect to ever make an iOS game. Mac and Linux support C# through Mono and this pretty much limits you to Mono Game (or Unity which uses an integrated C# scripting system). Anyway, pick what platform you want to start with and go from there.
Once you pick the platform and you know your language now you can look for what frameworks, api's and engines are available. Unfortunately as I touched on us C# guys aren't always well supported when it comes to high end graphics. There are a few XNA engines that quite frankly are pretty horrible with the exception of Flat Red Ball which is quite advanced but it's tool set is VERY lack luster (and remember XNA is a dying MS only tech). Then we have Mono Game which is a frame work that you can code your own engine around, you will want to check this out yourself but I don't think there are many or any engines built on this yet.
Once you've gone through all of that you will have ideas of what frameworks and or API's are available for the platform and the language (the code bases you can work with to make things happen). As a beginner be prepared to be overwhelmed and dissatisfied with your options as many will appear unsuitable without extensive programming knowledge. Once you have gotten good and frustrated check out Unity, and I mean REALLY check it out. In my opinion Unity is something of a holy grail for coding in C# and making a game although it happens at a different level than most might think. No it's not as powerful as say the C4 or Unreal engines but unless you can afford hundreds of thousands in license fee's and go with C++ you can't use them anyway, (not to mention there are only a small handful of games that actually require that much power).
All in all my recommendation is first do your research on what is available for you, key searching terms will be "windows C# game engine" or "mac C# game engine" and so on (depending on what platform you chose). This will start leading to things that don't particularly look relevant and I believe it's important that you read up on them and see what the truth is. It will be confusing, it will be frustrating and it will start to look like a dead end street but I personally don't think that's true. I more so believe that C# is just the new kid on the block (in relation to other major coding languages). In windows C# is actually faster than Java, on everything else through Mono C# is about the same performance as Java and it's only a matter of time before the stigma of it all wears off and more big companies start getting in to it. For now you kind of have to take what you can get and what you can get is severely limited. That doesn't mean you can't do it, it just means you have to do it with what is available.
Professional Programmer & Hobbyist Game Developer