ActionScript Version mismatch

I’ve recently switched computers and in my latest installation of flash and CLIK my flash exports are causing crashes whenever I import them into UDK. I went through and removed the suppression of the DEVGFXUI logs by removing the required line through UDKEngine.ini to see what errors pop up and I’m getting the same error whenever my game is about to crash;
DevGFxUI: Failed loading SWF “/ package/UDKFrontend/udk_ime”: ActionScript version mismatch
I have 0 idea what this means since all my code is already actionscript 3. What am I doing wrong? I’d appreciate any input as this is driving me crazy.

1 Like

I think i’ve always seen that error, as it’s because udk_ime is using AS2.

I don’t think that is the cause of your crashes.

I personally use Animate (which replaced Flash), and haven’t experienced the crashes you are mentioning.

So the crashes are occurring during the import into UDK, or during gameplay?

1 Like

My crashes occur during gameplay. This always happens after I get that actionscript mismatch error and I always have the the following log pop up;

[0111.03] Log: === Critical error: ===
Fatal error!

Address = 0xf2e6fc3a (filename not found) [in D:\Projects\Renegade X\SVN_Uncooked\Binaries\Win64\UDK.exe]
Address = 0xf2e6fea7 (filename not found) [in D:\Projects\Renegade X\SVN_Uncooked\Binaries\Win64\UDK.exe]
Address = 0xf2e81e8b (filename not found) [in D:\Projects\Renegade X\SVN_Uncooked\Binaries\Win64\UDK.exe]
Address = 0xf2e9d8c8 (filename not found) [in D:\Projects\Renegade X\SVN_Uncooked\Binaries\Win64\UDK.exe]
Address = 0xf2ea6c3a (filename not found) [in D:\Projects\Renegade X\SVN_Uncooked\Binaries\Win64\UDK.exe]

1 Like

I haven’t used animate at all is there a guide on setting it up so I could maybe switch to it?

1 Like

Those fatal crashes never usually give any useful information in the logs.

Usually (almost always) these crashes are when AS3 makes a call to a US Gfx object, when that object has been removed from memory. You need to make sure that when you destroy/cleanup a gfx object in US, that you also cleanup the AS3 reference to that object.

Regarding setting up Animate. The process is mostly the same, except the scaleform .mxp file provided by Epic needs to be converted to a .zxp (which you can do using the default extension manager in Flash). Then i used a third party extension manager to import the scaleform extention .zxp into Animate (as i don’t think it will show up in the extensions search in Animate).

Here is the original documentation for setting it up in Flash for reference: UDK | SettingUpScaleformGFx

1 Like

I see, thanks for the input. The current flash file I’m working on has a decent number of AS files inside it, I’m believe the issue may really be with AS itself. Is there maybe a way for me to debug these? Maybe have them show some sort of “x is not found” log in unreal? I’d like to at least try to get it working in flash before I switch over to animate.

1 Like

To be honest, I don’t think switching to Animate would solve your crashing issue. Unfortunately there is no way of logging a stack trace when this error occurs, as it is essentially a memory address lookup error (to my knowledge anyway). It will always crash the engine.

I’ve had painful experiences with this in the past. Although I was always able to trace it down to a AS class, bound to a US gfx class, which was attempting to make a call to the US class after the US class had been destroyed and cleared from memory (garbage collected).

The first step in debugging it is figuring out at what point it typically occurs, and try to reproduce it. Remember that the garbage collection in US happens in intervals, so sometimes the crash can be delayed from US classes actually being removed.

Another idea, although somewhat laborious, is to add a trace(“some message about the calling class”) on the line before any external calls to US within your AS3 code. This will successfully log to file before the crash occurs.

1 Like

Putting in trace messages is not an issue for me, I REALLY want to get this thing working. However I must admit I’m a bit clueless when it comes to Actionscript. Could you please elaborate on what you mean by a AS class bound to a US gfx class? I have my US gfx classes and grab the Objects from my flash file with “GetObject” and I occassionally use the GotoAndStop and SetText calls with a couple GoToAndStopI and GoToAndPlayI
sprinkled in between are these calls what you mean? My actionscript is mostly limitted to tweens and other basic stuff so I’m not sure where exactly the crash would occur. But If it’ll help me figure out whats wrong I’m okay with putting trace messages on the top and bottom of each file to figure out whats going on.

1 Like

About the AS object bound to a US object, I think it means this:

You can set up an ActionScript class to call the UnrealScript class GFxMoviePlayer’s WidgetInitialized event when an instance of the ActionScript class gets created. In WidgetInitialized, you can cast the GFxObject Widget to your subclass of GFxObject and you can use that to communicate back and forth between UnrealScript and ActionScript. The GFxObject Widget is the UnrealScript representation of the ActionScript class that gets created in Flash.

If the UnrealScript class calls something in ActionScript that has been deleted, or vice versa, then you get a hard crash. Nothing informative in the log. Just a crash.

1 Like

No idea if this will help, but usually after I switch computers or reinstall Windows, I will have to open and re-export some flash files, especially those that are used as dependencies, or stuff will be broken.

1 Like