I have a background in python and I'm looking for a new language. I am almost only intrested in making games.
开发者_运维问答I have come to 2 languages. C# and Action Script. C# because Microsoft allows you to make Indie XBLA games programmed in C# ONLY. Action Script so I can make flash games for new grounds and ect.
What do you think is better to learn in the long run?
I would say C#. You'll learn the basics and then be able to write games for the Desktop (XNA), XBox (XNA), Mobile Devices (XNA and XNA Touch for the iPhone), the Web (via Silverlight), etc.
Flash only gets you limited exposure to each.
I have zero experience with C#, but I'll speak to AS3/Flash's #1 advantage:
For learning game development, Flash lets you make games very quickly, but more importantly lets you get feedback from a large number of users faster than any other environment (except possibly Ajax only). I started Flash programming a little over two years ago. In my first three months I learned AS3 and wrote a TD-style game that was eventually played by over a million people. During beta testing and after release I was getting constant feedback and tweaking the game mechanics and interface with multiple "releases" a day.
While not every game out there gets that much play, with Flash it is much easier to make something and have a large number of people actually play it and tell you what they like and what they don't. Learning how to make good games is harder than learning a different programming language.
To give a comparison of the two:
Action Script is useable only in Flash games (mostly run through web browser), which may be fun for some time, but it limits what you can do. On the other hand, it is probably the best way for developing web-based games.
C# and .NET allows you to write all sorts of different games (and is also more generally useful language in case you wanted to switch from game development to some other field, including web site development and various business applications). Regarding games, you can use it on:
- Web based games (similar to Flash) using Silverlight
- Desktop/XBox/Zune games using XNA Game Studio
- iPhone games using MonoTouch (although there are some licensing issues recently)
By learning C#, you'll also learn .NET Framework (in general), which is (I think) a useful knowledge that you can benefit from in many situations (e.g. when looking for a job :-))
Why not learn both? I think programming a good game is harder than adapting to a new programming environment.
Also, if you get into Flash game dev, you'll probably want to check out Flixel.
C# is the nicer language (although AS3 and C# are similar) and has a wider range of uses than Flash but since you mentioned games only I would tend to say start with ActionScript 3.0 then move to C#.
Firstly we can ignore the fact that C# is useful for writing business apps since that is not relevant to this question.
C# offers game programming via XNA, SilverLight, and Unity3D compared to ActionScript 3.0 with Flash.
So why do I recommend AS3 to start with? Firstly 2D games are where you should start off and I think this is where Flash excels. The development lifecycle of 2D games is much shorter and tend to produce better gameplay. A lot of indie 3D games suck since they fall short of realising what they started out developing. It is relativly simple to get a 2D game up and running and there is a lot of game engines, physics engines and tutorials available. It is also the platform of choice for artists (that can make all the lovely looking levels, characters etc). Second, the flash platform is the most accessible to your audience. No point making a great game that people never play. Third, AS3 is faily simple to come to terms with.
From my experience the web games that I come across that I think are noteworthy tend to be made in Flash. Checkout Scary Girl and Machinarium.
For 3D or anything that you need the power of the GPU then C# with XNA or Unity3D is what you should be looking at.
I will add that if you are interested in very fast action style 2D games then avoid Flash.
精彩评论