A few years ago, I created a simple mobile game using a simple but limited game creating platform called GameSalad. I was able to export the game with a key and everything and was able to install it on my own phone to try it, however it needed a MAC computer to do so (even though I edited my entire game using the PC version of their program).
Now I don't have access to a MAC computer anymore, and I don't have the APK anymore. However I have the folders of all the different versions of my game on my PC.
I was wondering if there'd be a way to open the project and compile it as an APK for android using either VS Code or Visual Studio ?
I believe GameSalad was using LUA as a langage. I tried searching for GSPROJ, GameSalad and all combination I could thinkl of in order to find an extension, but didn't find any. Maybe there's a way that I missed ?
While opening my folder in VS Code, the arborescence looks like this :
Screenshot
Most files are in .xml , the mainfile (with extension .gsproj) seems empty, and most other scripts/code parts are in a format/extension called ".behavior" and they also seem emtpy.
Any ideas or tips on how I could proceed ?
Thank you !
The GameSalad engine that interprets GameSalad's game project files is proprietary so there would be no easy way to compile from VSCode.
The GameSalad Viewer App should work with the current versions of GameSalad for Windows and GameSalad Creator 2 (the web version).
I have created a project using the Windows XR Plugin and XR Plugin management. I am NOT using the XR interaction toolkit, I have created my own tools, including my own XRRig using the Tracked Pose Driver.
My project is NOT built with UWP since I need file access that UWP does not provide or is too tricky to provide (after many attempts and work with a senior developer here, I just gave up). So I'm using standard Unity and my build settings are "PC, MAC, Linux stand-alone". My Player settings in the XR Plug-in management are "Windows Mixed Reality". I am using a few UWP functions for file access within the app.
Now, once the build is built, I obviously don't see it within Steam, but it also does not appear in the Mixed Reality list of applications. I have to start it manually by clicking on the icon on the desktop. It works great, but wtf...?
I know for applications to appear in Mixed Reality they must be built with UWP, but then if this build is neither UWP nor Steam, what is it then? How do I add it (or sideload it) to the Mixed Reality applications that the Windows menu brings up within the cliff house for e.g.?
To answer first question on what type of application is being built if UWP and Steam are removed as target in Unity, this is being built as a PC desktop application.
To answer the second question on how to access this application inside the Mixed Reality Cliff House shell when the application is not a UWP application, this can be launched via the “Classic Apps” pin inside the mixed reality cliff house shell.
Here is more information on the "Classic Apps" pin:
https://learn.microsoft.com/en-us/windows/mixed-reality/whats-new/release-notes-may-2019#how-to-launch
That should answer the question asked on how to launch inside of VR experience itself.
I'm building a windows app using Unity3d and I want to include an executable .jar file which has to open on button click from the app. Is there any way to develop this? Please help.
Unfortunately I don't think there is a direct way to do this. Pure UWP apps (which are generated by Unity) are sandboxed and compiled using .NET Native. As such they don't allow executing external code/process as that would pose security risk.
If you used an external Desktop Bridge app (which has full permissions) and communicated with it via app service (see this documentation article), you could theoretically achieve this, but it sounds a bit too complex. Another alternative would be to publish your app as a classic Win32 game. It would still be possible to publish it on Microsoft Store, however it would be limited to desktop devices.
I have tried to show a usb webcam video in a simple app. I tried it through Unity3d, regular C# project and a UWP project. in unity3d the same code works when the target is windows 10 store and the app manifest declares webcam usage, and when I compile it to a standalone x86/x64 app the camera is turned on and the app crashes. I also wrote a simple UWP app using the windows 10 camera api and it worked fine but the .net 4.5/4.6 crashed like the unity app. I also tried accessing the camera through OpenCv but no luck. I think it's the webcam authorization in windows 10 but I do not know how to set it for standalone apps. Microsoft claims that only store apps are subject to the camera authorization setting but in real life the camera causes a crash. Can anyone help?
This sounds like a potential bug. Could you post the c# code you are running that is causing the crash and can you find the error message/code associated with the exception causing the crash?
I am a little confused on whether to embed swfs or load them when making apps for the iphone. Does anyone know what are the advantages of each (which is preferable to use)? I know that embedding swfs should be a little faster than loading them but is that all?
Also and this is kind of important, I read that Apple will reject any app with external swfs?? Is that indeed correct? If so, will embedding or loading said swfs solve this problem?
Thanks in advance
EDIT: after some searching around, turns that Apple does have problems with loading external swfs, u can still do it, but your swfs need not have any actionscript attached, here is a link http://whizzkid74.blogspot.com/2010/12/air-for-iphone-loading-external-swf.html It doesnt say anything about embedding swfs however, so my question is this: can u embed swfs when writing apps on the iphone??
EDIT To clarify, when i say external SWFs. I mean SWFs that are found on your system locally but you need to add them to your program since they contain MovieClips or Sprites etc... that u need. I didn't mean SWFs that you need to download from a website or an online source. (hope that clarifies things)
EDIT Changed the question's title...Problem solved, thanks for all the help guys and happy new year =D
Update, Oct 2012:
In Adobe AIR 3.5, adl is introducing a feature called "multiple SWF support" that allows the use of Loaders to load SWFs delivered in the .ipa (local files, not from servers) to have code in them. The adl compiler AOT compiles SWFs that are included in the .ipa, allowing them to be loaded and work under iOS.
AIR 3.5 is currently in beta at the time of this writing, available on the adobe labs site:
AIR 3.5 on Adobe labs website
AIR 3.5 release notes
Note that this feature requires -swf-version=18 or greater of the root SWF (not necessarily the assets being loaded) and AIR namespace ending in 3.5 in the application xml file.
Older answer:
I wanted to update this answer because I've learned a lot about this issue since I first looked into it.
The root of the issue is that, when making iOS apps with AIR, Apple TOS disallows runtime interpretation of code - and this includes SWF bytecode. So loading SWFs with code in them (even simple animation commands like stop(), gotoAndPlay(), etc) is disallowed and will not work via a Loader (prior to AIR 3.5).
Note that it's perfectly fine to load SWFs for their vector graphics content. The graphics will display, but the code will not execute.
However, there are a few workarounds for this. Both workarounds avoid a Loader by compiling assets with code in them into the main SWF, because once they're part of the main SWF, the AIR compiler (adt) will cross-compile the code into objective-c, and everything will work fine on iOS devices.
Using SWC libraries
This is the best option for iOS development. If you compile your graphical assets (.fla file) into SWCs (or export SWCs from symbols in your library), then compile your main swf against these SWCs, this goes through the compiler and actionscript code will execute on iOS devices.
Using SWFMerge for [embed]ed SWFs
Embedding assets into SWFs is very easy, and looks like this:
[Embed(source="GameLevel.swf")]
private var GameLevel:Class;
public function main():void
{
var my_level:* = new GameLevel();
addChild(my_level);
}
In this scenario, if gameLevel.swf has code in it, it typically wouldn't work in iOS, because new gameLevel() would create a Loader and interpret SWF bytecode. But, if you first run the above SWF through my tool called SWFMerge, it will take your embedded SWF and merge it into your root SWF. Then ADT will compile your main swf (including embedded code) into objective-C, it will work on iOS, and note: new gameLevel() now results directly in an instance of your asset - NOT a Loader.
The SWFMerge tool is here:
http://www.onetacoshort.com/temp/SWFMerge_alpha.swf
Let me know in the comments if this workaround works for you or if you have trouble.
Using Loaders
Prior to AIR 3.5, if you use a Loader to load a SWF file (whether this swf is included in your IPA or served from a webserver), the target SWF graphics will load just fine, but no code inside the SWF will execute, again because this is disallowed by Apple's TOS.
As of AIR 3.5, packaging SWF files in the .ipa as assets, using a Loader will work even if they contain code as this code is now AOT-compiled by adt. This requires -swf-version=18 or greater of the root SWF (not necessarily the assets) and AIR namespace ending in 3.5 in the application xml file.
However, it is technically possible to interpret SWF bytecode, it's simply an App Store legal restriction not to. If you only want to test on an iOS device and won't be distributing your app via the App Store, you can compile your SWF using adt's -target ipa-test-interpreter option, and Loading SWFs with code in them will work.
I'm not familiar with the rules around Apple and iPhone apps, but generally when I make apps/games, I embed everything. The advantages:
Your game/app is in one swf, making it easy to share
Your game/app loads quicker as all the assets are there at load-time
You're not dependant on internet access to get your assets (if you're loading them from a site) - good for an app
Your game/app will "just work" - no security issues, no problems with urls changing/asset site going down (if they're external)
If you use a swc instead of an swf (an swc can also be loaded btw), then you can also benefit from strict-typing
The disadvantages:
If you need to update one of your assets, you need to republish the game/app
The answer is yes, you can embed SWFs, but that is not the only way. You can also use normal Loader methods, with everything relative to the main SWF:
var myLoader:Loader = new Loader();
// iOS apps act as if the main SWF is in a folder
// and the other SWFs are in the same (or sub) folders.
var url:URLRequest = new URLRequest("loadedSWF.swf");
myLoader.load(url);
addChild(myLoader);
myLoader.x = 50;
myLoader.y = 30;
With one caveat: during compile time (in the "Air for iOS Settings", in the "Included files" list), you have to list the SWFs that you want to be loaded, and they will get compiled into the IPA.
So, no you cannot call to external SWFs, but you certainly can access other SWFs using the embed tag, or using (what might be called) IPA embedding.
Edit:
Since the question and title have changed a bit since I first answered this, here is a more generic summary. Apple does not allow loading local SWFs in the same way that you would be able to if using Flash Player on a website. There is no way to load an SWF (or anything else) using "relative" or "local" references in an i-device unless that content is compiled into the app. This does not apply to some types of "remote" SWF loading, and also does not apply to Actionscript "Native" coding, but that is not what the (original) question was about.