Flex 4 vs. FlashDevelop 3
I'm a frequent visitor of FGL chat, and one of the topics that comes up often is which IDEs game devs are using. I have listened to a lot of respectable game devs that ship solid games talk up Flex/Eclipse/FDT and thought that I'd say why I at least have stopped using Flex/Eclipse (i've never tried FDT). I decided that a chat room is much too incoherent to detail everything that is relevant, so here's my comprehensive reasoning.
Flex. Adobe's Flash IDE built on Eclipse. We've all seen it, heard of it, most have used it. Here's the argument for Flex;- Flex mx components, which allow you to easily present data in dozens of novel (and useful!) ways. It also allows you to program declaritively in a way. Without mx, there would be no Flex. Because MX is poorly supported in FlashDevelop, I consider mx components/mxml the greatest strength of the Flex IDE.
- Flex has a profiler. Because your memory footprint is lower in a pure AS3 project with FlashDevelop, due to reasons mentioned below, you're not as likely to be needing this. But if you do, you can always just put an FPS counter in.
- Flex has a design view. This can definitely come in handy if you're working at a web development shop, but not as a game developer. Your UI is probably going to be either a lot more complex than what flex can accomplish, or too simple for the design view to make a difference.
- Flex has better debugger. It is no secret, FlashDevelop has some work to do in the debugger arena. The debugger for FlashDevelop is not Native, while the Flex debugger is incredibly natural.
- Flex (4) has autogenerated event handlers. Flash develop doesn't have these, but that is probably because it doesn't support mxml, which is the only use for them.
- Flex has refactoring. For those of you that love renaming things, this feature is hard to beat. For the uninitiated, refactoring allows you to rename a method or variable and have that change propagate throughout your project; all references to that property/method are also renamed. This is simply not possible with a site-wide search/replace (another post).
- Flex is cross platform
Now, on to my favorite editor, FlashDevelop
- FlashDevelop has scary fast autocompletion! Flex does not autocomplete anything without you typing "this."! FD hints anything and everything, even member modifiers(private,public,static,et al)
- FlashDevelop is lightweight, even on slower machines (slower being a 2Ghz dual core with 1GB running XP Pro
- FlashDevelop can run multiple instances from the get (eclipse asks for another workspace setup), I cannot emphasize this enough.
- FlashDevelop can easily whip up UIs with CS4. I'll be honest. I've used Flex but still don't understand their convoluted skinning workflow. Read it! It's ridiculously laborious. I'd rather just whip up my buttons in CS4, compile them as SWCs, instantiate them and use them. Now Flex 4 doesn't even allow you to do that; they expect you to do copy and paste (yes you heard that right) an existing skin and then change a bunch of fill elements in an xml file. Tedious to say the least. Could I do it? Yes. Is it hard? Yes, but not in that "interesting and cool" way: like using Jacobian matrices to write an IK solver, but in the "here, write this login form in Visual Basic and make sure the css works in browsers a,b, and c" way. At least, thats what it reminds me of.
- FlashDevelop quickly autocompletes parameters in functions. I've poked around endlessly in Flex to figure out how to get it to autocomplete parameters, but to no avail.
- FlashDevelop has firefox-like find feature which is easy to underestimate (ctrl + F), especially if you're looking for a variable and don't have the class outline window open.
- FlashDevelop has easy-to-use high precision customizability, like spacing between parameters, changing the code background color, and almost anything else you can imagine. Eclipse has a lot of customizability too, but in my opinion, not where it counts.
- FlashDevelop is free!
Besides Problems i've had with Eclipse/Flex:
- AutoComplete one day just stopped working[1] - I had no idea why, it just stopped and i had to spend hours googling around trying to increase itsstartup memory limit and other nonsense things, only to find these methods were futile. I finally did get it working but it shouldn't have happened in the first place. Chalk it up to bad UX.
- At random, strange alerts; java-related errors, error windows, shutdowns, and a bizarre windowing action.
- Sometimes i'd startup flex and get a "No Disk" error. WTF?
- Eclipse is constantly "rebuilding" the project. Then reconfigure it, you say? Sure, but I'd rather shit just work.
- This is more of an mxml problem than a flex one, but out with it anyway; when creating mxml components that need to reference events Flex kept overzealously erasing my import statements
- Again, more of a Flex framework problem than the Flex editor, but Flex bloats your code by implementing and inheriting from everything and its mama. By the time you have that canvas (or sparkgroup as they're now calling it), you've extended an unknown number of classes. By keeping things close to the wire - which FlashDevelop forces you to do - you're reducing your game's memory footprint, which in turn is making your game run faster.
I know a lot of the big companies that make flash games do so in Flex, but I will stay away from Flex / Eclipse as much as possible from now on, to avoid carpal tunnel and insanity. I will say this: For PHP development, I haven't found a better editor than Eclipse.
So, why am I writing this? Because I just switched back to FlashDevelop! I feel like a liberated jedi.