There seems to be a flood of responses going on here, but I didn't notice some important info on first glance.
Nobody here seemed to mention the problem c2 currently has with work flow scalability. Creating a robust frame work for a large game that leaves you with plenty of options can be a chore with c2. It's not to say you can't do it, but lets say you wanted to create smashbrothers... Creating a multi state machine that each compound character can use is going to be funnn fun fun
, and way more complicated than just cracking out the code and coding.
I am an artist btw, but if you can use logic, then you can code. I recommend c2 for quick dev of prototypes, an indispensable tool for making small games, but a headache for organizing large projects. The work flow simply decreases as the needs of the game become more flexible.
Also, if you plan on pushing a unique idea, construct 2 may impose a number of limitations of which there are too many to list... but its not uncommon on the forums to be told you just can't do x,y, or z due to x, y, or , z.
But alas, the only way you may discover these things and if they pertain to you is to start working. Construct 2 is a great tool, and you can try out alot with the free version. Make something then see what you think. Make the same thing in Unity, and see what you think. In the end I recomend both. c2 for speed, unity for sophistication. and if you want, there is always the sdk, but lets clear something up right away, you can't make "everything" with the sdk. There are limitations there as well.. .. But lets face it, you can't make everything on one thing, that's why there are all the other things... It also depends on how much "out of the box functionality you want" . Construct 2 has a ton of pure awsomeness from the get go, but it may be a little more difficult to expand that via the sdk than in, say, unity or unreal.
Sorry to muddy the water.