Wow… and I thought this would be easy. All I wanted to do was explore products that would take a swf (a flash application) and package it as an ‘exe’. Sounds straight forward given there a like a ton of products that claim to do this.
First up, just create an exe using the standalone flash projector. Like here. Of course I would have to hack the icon, and this says nothing about reading and writing local files (so I’d have to use SharedLocalStorage like any sandboxed flash app). But whatever, I just wanted something to work. Verdict: doesn’t work with flash 10. Specifically, I can’t remove the flash projector default menu on flash 10 via fscommand(“showmenu”, “false”); And I mean the menu at the top of the flash projector, not the right click menu. Score one for Adobe… touche on removing one alternative to AIR.
Second up, mdm Zinc. Looks like one of the most popular options. Downloaded the trial and gave it a go. There are TONS of nice looking native system options (reading/writing files, etc). I was pumped up and expected the best. Well, mouse wheel support appears broken. I’ve questioned it here. No response so far…. with each passing day I get more bummed. Performance also appears to be… poor. Some people blame that on the demo water mark. Perhaps so, perhaps not. Keep reading for what I have to say about this regarding another option mProjector….
Third up, Jugglor. This app looks kinda crazy what with the bright red controls and all. I mean I’m an NCSU fan and grad but this is a bit much. Anyway, red filter glasses on and things look better. After all I’m here for what it does, not how it looks. I click around through a bunch of options screens and get an exe built from my swf! Now, I had to uninstall flash 10.1 from Internet Explorer, find archived editions of flash 10, install one of those, then I could build the exe, but that’s fine. Anything… ANYTHING at this point is acceptable. And guess what? Frame rates are just fine! At least they are AFTER i click “Convert SWF to Flash Projector”. If I don’t do this, the resulting exe doesn’t bundle the flash player and for whatever reason the resulting frame rates are less. So, feeling confident I decide to try the window options. Things like controlling what happens when you resize the window, full screen, etc. One thing it does that is cool is that it will lock the aspect ratio of the window. So as you resize the window it keeps things non-distorted. Of course this is true right up until you hit the window maximize button. On my 1920×1200 desktop that stretches the window away from the 4:3 ratio and my flash app gets distorted as well. So much for locking the aspect ratio. I thought I’d get cute and remove the maximize button. That would cure this problem. ‘Click’ in the jugglor settings and problem solved. But this begs the question of full screen support. How will that work? If I take out maximize I would like a way to switch to full screen. So I set Jugglor’s setting to start the app in full screen. It even has an option to change the screen resolution. I set it to 800×600. Build the app and run it. Resolution changes….. and app is nowhere to be seen. In fact what I have is an 800×600 version of my desktop. My app is in the taskbar. Rick click and close it and my screen resolution resets to 1920×1200. Ug…. total bummer. 1024×768 produce the same results. Ok, lets not switch the resolution. I’ll just keep whatever the user has. Now this does work……. but I’m still nervous. I feel like I’d need to test this on just about every platform and OS I’ve ever heard of. If this screen resolution switching is broken, then what else is broken? At this point I thought to see if they have a mac version (like zinc does). Whoops. I must have neglected to look at this. I had been trying to look only at solutions that could target both mac and windows. End of road….
FOURTH up, mProjector. I’m so sick of these things by now I’m ready to go running back to AIR as fast as I can (well not really, but it may come to that). mProjector seems clean and has a fair amount of functionality. The forums are really slow, but not dead at least. I grab it and try it out hoping for the best and expecting the worst. It is easy to use and produces an exe pretty quickly. It runs and doesn’t suffer from mouse wheel issues like Zinc. It is supported on both PC and Mac, unlike Jugglor. I don’t know about full screen support yet, because the next thing I noticed was my game’s frame rate. It was clocking in just above 20, not at the 30 I had set it to. “Here we go again”, I said. I document the issue on their forums here. I just posted this a little bit ago. Hopefully somebody will say something in the next day or so. Why…., oh why! Oh, after noting this about mProjector it made me wonder if Zinc suffers from the same issue….
Fifth up???? SwfKit was last released in the middle of 2009. Flash 10 and 10.1 have probably eaten it alive since then. I hesitate to even download it. Northcode only support windows. I’ve read some good things about it, but only windows is a real killer. That just hurts. There are other little swf2exe’s scattered all over the internet. But few of them do more than host the flash ocx control. I was really looking forward to some native functions (that WORK, of course).
Well, back to the game proper I guess. There is always AIR if I must…. I’ll give mProjector and Zinc a chance to respond. They both are probably working on flash 10.1 support, so a whole new set of behavior is probably right around the corner…
how about you target the mac market and the windows market by writing the game in two different…. what ever they ares,[i dont know the name 4 what they are], you can write the games in the best for both markets!
Sounds…complicated, to say the least.
Hope you find something that works.
By the way, when do you think that you can post screenshots?
I can’t wait to see some beta game play.
I’m getting close to releasing some dev shots. This means some “raw” images as I have not gone crazy with final polish and all of that. I’ve got a few game elements I’ve not talked about yet that will also be revealed….
What could be wrong with the current version of AIR is something to do with buffering many additional frames in advance – perhaps the draw calls all get queued up and it has to render through all of them, meaning that any user input can’t take effect until it goes through the entire buffer of pending rendering tasks. I remember early versions of DirectX having this sort of problem.
The solution/workaround is to ensure that the game logic never gets ahead of the renderer by more than a couple frames. Whether this means checking the time every frame, and only rendering if the game time is in line with the wall time – that is, simply skipping drawing the frames if the game logic gets too far ahead. The problem with this is that it may not do anything to solve the problem if the commands are actually issued on time, only to sit in the command buffer for a prolonged period.
A better solution would be to dig through the API for a flush() call. In general, flush() would stop the program from progressing until the command buffer is empty, thereby ensuring prompt response to input if flush() is called at the end of every frame.
The guys at Adobe seem to have this under control. I’ve tested a fix that they have been working on and all seems to be well with the fix. Once that fix rolls out, AIR 2.0.2 performance should be a thing of the past.
So I never really had any doubt that they would fix this… that’s not the real issue. The biggest issue is that it happened in the first place. I know that mistakes happen, and things slip out despite the best intentions and the best people. But if this had happened during the launch week of CW, the results would have been a nightmare of support issues for me. What it speaks to is what I have always found to be the biggest ‘flaw’ with AIR… I can’t bind my application against a specific version and bundle that. I’m always at the mercy of the stability of whatever platform Adobe decides to release.
Great, I never knew this, thanks.
it was very interesting to read.
I want to quote your post in my blog. It can?
And you et an account on Twitter?
Of course…. quote , linkback, etc. are all fine
As for twitter, here is my account account…. though I don’t use it much except for more major announcements:
http://twitter.com/knucracker
Genial fill someone in on and this mail helped me alot in my college assignement. Gratefulness you seeking your information.
Man, really want to know how can you be that smart, lol…great read, thanks.