I didn't get involved in flash dev back in the day, but last year I switched my primary game dev product to GameMaker: Studio. The ease of rapid prototyping was the largest factor. I believed in it so much I bought the whole professional bundle.
My thoughts after half a year or so are as follows:
- it's very flexible, between the drag n drop functionality and plain writing scripts or inline code for object events. You can mix and match, too.
- the syntax is also pretty flexible, c-ish or javascript-ish.
- the IDE has a lot of nice integrated features, like being able to whip up sprites directly in there. Good for rapid prototypes and removing context switching.
- the most challenging part has been learning the command set. The old "I know what I want to do, just not the magic words to make it happen". Online tutorials seem to cover a lot of the same ground, and the help is good but verbose enough that searching for simple terms related to what you want to do can return more results than is feasible to weed through.
- for me, the most difficult portion is in debugging code, especially if it's and asset I haven't written (there's a marketplace where I've purchased things to learn from or speed up prototyping). There's no good way to view all the code from objects/events in one place, so trying to find where a variable is getting set can be a bit of hunting. I find myself using Agent Ransack to find all instances of a given text within my project. This can be mitigated somewhat by coding style, consistency, and naming conventions, but I find as a project grows in complexity it becomes more of an issue. For a simple example, I had a pong prototype where I was increasing the puck speed every time it bounced off a paddle. But should the code for that be on the puck's collision event with a paddle, or a paddle's collision event with a puck?
Overall, I'm very happy with my choice. I think in the first week of owning it I was able to recreate (at least to a prorotype level, if not more) almost all of my previous game projects. Literally years of work in various languages.
As a final remark, I had stayed away from GameMaker in the past due to the name. Sounded like it was more of a toy than a usable environment. I wont't make that mistake again :) Check out their website to see some of the games made in it. You might be surprised, I know I was.