First off, I'm plugging my new release like crazy - kind of pointless since it should still be somewhere to the left of this post on the front page but whatever :P
Now that that bit of self-indulgence is out of the way, time to bitch.
I started working on a new project a while back, only to essentially run into a brick wall. Figuratively, of course, but from where I'm standing I can't think of a better way to describe what's been done to my creative process. And it's all Adobe's fault :(
First, let's describe the wall. It's a bit of an error in the software. A glitch, or bug, if you want to be technical :) Personally, I don't find the term suitable in this case. It doesn't really do justice to what literally makes progress impossible. This isn't something which you can code your way around, or jump through some hoop or other to get past. This bug is, quite simply, the project killer.
BORING CODER SPEAK BEGINS HERE
I'm not an expert, but from what a few other people have said the error seems to crop up when you use too many classes. For the non-OOPers of you, classes are basically AS3's skeleton. It's possible to code without them, but what you end up with is a sloppy mess of skin and muscles with the odd eye poking out, blinking occasionally. I'm going back into metaphors here, but you get the idea. With classes, you can order your project into a load of neat, sensible objects, with methods and properties passed on from parents to children, instances which can have their behaviour changed en masse instead of as individuals, and order everything into neat, stackable files.
When it comes to large, complex projects (such as the RPG type affair in which the error occurred), utilising classes makes an engine which would drive any coder insane with its complexity and unpredictability into one nice, streamlined, easy to tweak collection of files. I've not even approached the subject of attached sounds and objects yet - AS3 requires you to give any library item you want to attach via script a class. This is great, since it makes sense in relation to the rest of the language, and allows you to set base-classes for objects so that they inherit their properties and methods from external files (for example, you could have a load of different looking enemies with MovieClips in the library, all of which inherit their behaviour from the same template file).
Now, everything's good so far. Unfortunately, all of this inheritance and whatnot leads to a large collection of classes. This shouldn't be a problem. Really. For an object based on OOP, as AS3 most definitely is, having a big pool of classes and sub-classes should be expected, if not encouraged. Unfortunately... Flash doesn't seem to realise that.
All of which brings me hurtling back to the error in question. In summary, it seems to be this:
If you use too many classes, or classes in a way which Flash doesn't like, it will stop running code
Seems simple, doesn't it? This is the project-killer. It can strike at any time, stopping it would generally require you to re-work an entire engine, and code is mandatory for any real game. There is no internal way of working around it - I've heard some talk about exporting and importing into Flex and messing around... Which as a Flash kid just goes way over my head.
BORING CODER SPEAK ENDS HERE
If you want another metaphor, this glitch is equivalent to something which is built around accommodating an object falling apart if you use too much of that object. It's equivalent to building a crematorium out of petrol. There is no way that a piece of software with a scripting language specifically designed for OOP should fall apart if you use more than a certain amount of OOP.
I'm a developer, so being limited by something or other is a fairly common experience. You start making something and realise you don't have the time, or resources, or drawing ability for it, and you have to stop. Having a great idea, knowing you can make it work and then being stopped at an early stage by an unforeseeable bug is profoundly annoying.
I always figured that serious coders who claimed that AS3 was removed from normal development were just, you know, unwilling to change old habits, and that if they'd give it a go they'd see how neat and clean and shiny a new language can be, allowing projects to be set up like never before. This whole thing is just a kick in the teeth to people who've supported Flash's moving forward as a serious bit of software.
NOW, obviously just bitching isn't going to get anyone anywhere, so I thought I'd head over to Adobe's site and make a report about the error. I had a slightly bigger look around today, and some of the stuff over there is just silly.
Here's something which caught my eye. The latest error: "ActionScript 3.0 movie clips and components exported by Adobe Flash CS3 Professional incorrectly play through their timeline when ActionScript is used to prevent the timeline from playing. ActionScript 3.0 components will appear to flicker between their normal state and their skin settings." - so essentially Flash ignores specific instructions not to play by (ahem) playing.
Have no fear, though! "This issue only occurs in specific circumstances where a movie clip or component is placed on the stage on a keyframe other than the first keyframe, or if the object is removed later in the timeline." It's funny - I've never though of using any frame whatsoever other than the very first on as a 'specific circumstance'. Still, only crazy people would want to remove stuff from the timeline, right? I mean, they put it there in the first place! Do you want it there or not? Make your mind up!
Time was when you only needed to update your player every major update, and most Flash viewing regulars could keep track of what was being released and when. Apparently, though, this issue is present in 'Flash Player 22.214.171.124 and earlier' (yup - we're up to four separate version identifiers).
Not only that, but to rub salt into the wound, Adobe points out that "Flash CS3 Professional ships with the updated player, and developers will not encounter the behaviour when testing with this version or later." Good idea? Let's just clarify - if you're a developer, and you're testing your game, the version you see on the screen isn't the same as the version a great portion of the non-developing public will see. Who's idea was it to upgrade players for people making Flash separately to those for people viewing it? It's like that old joke about the UK moving from the left-hand lane to the right, and to ease the transition we're doing lorries and busses on Saturday and smaller vehicles on Sunday. It makes no sense for somebody who's making something to see a better version than the thousands of people who are going to be looking at it afterwards.
Now, updating software is good and all, but with something like Flash which is spread so widely, surely it's reasonable to expect that updates should be so big, loud and significant that almost all of the viewing public will know that they're supposed to update their players. Sneaking stuff like this under the radar is just going to confuse people, and penalise developers who don't have the mind-reading skills to realise that their work is buggy in a different version of Flash Player 9.
On a personal note, I've got a strong feeling that this is the reason behind the submission I'm currently plugging being glitchy with a few reviewers. Back when Flash 8 came out, it was easy to blame people for not having updated from Flash Player 7 - I mean - the site had great big disclaimers and everything. At the moment, though, you can't really hold it against the viewer for having Flash Player 126.96.36.199 when what they should have is Flash Player 188.8.131.52 (actually, as I write this, the latest version is 184.108.40.206). Remember simplicity? Remember when Flash was that one bit of software which you didn't need to constantly download 'The Latest Version!' for?
I don't like admitting that I'm wrong, but I can't help but get the impression that Adobe is completely out of touch with everyone who isn't a corporate management arsehole. It's taken long enough, but I'm finally beginning to see Flash as more and more as a faceless bit of money-making, run by people whos sales-pitch consists of bombarding people with versions and jargon until they're suitably impressed to make a purchase. I miss Macromedia :(