views:

174

answers:

5

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?

+2  A: 

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.

Justin Niessner
Yeah, I am really excited about gettting my games on xbox live arcade.. That would be sick!
A: 

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 :-))

Tomas Petricek
Wait, You can make iphone games with a microsoft language? why would apple allow that..?
It is based on Mono (which is an open-source .NET implementation not from Microsoft). However, it is not clear whether the recent license change (which is mainly against Adobe) also affects MonoTouch.
Tomas Petricek
Well, to be precise it's pretty clear that Apple's language prohibits MonoTouch apps - it says that all apps must be "originally" written in obj-C. But how Apple will enforce the terms is anyone's guess.
fenomas
@fenomas: They really need to clarify what they mean here - most of the applications are "originally" written in email/word (a specification) and then converted to obj-C. MonoTouch is (in a way) the same thing.
Tomas Petricek
@Tomas: Yes, many have noted that a literal reading of the rules seems to ban programs that were "originally" written as pseudocode or test cases or flowcharts. But Apple's been famously inconsistent in applying their rules until now, so it wouldn't really be a shock if they turned a blind eye to some compatibility layers. Apparently games from EA generally include a Lua interpreter, which pretty inescapably violates the new rules, so it'll be interesting to see if such apps get removed.
fenomas
A: 

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.

Jesse Aldridge
+2  A: 

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.

justkevin
A: 

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.

Allan