Very interesting topic, @Pixiloom! I have been researching the same thing myself lately, without making any real progress.
But I have made some observations that I would like to share here as an attempt to answer your question(and maybe others could help us further?), where I understand “app” as a broader definition of a “one-click solution to launch a MakeCode Arcade(MCA) game/program on the desired system/platform”, even though you specifically mention exe(Windows executable) in your question:
Executable:
- Windows executable: Though I still have not found out how to compile a simple native Win32-type executable, the open GitHub pxt source code is full of references to WinRT, UWP etc. I am not sure whether the functionality is restricted on makecode.com and if it might be possible with a local instance of the pxt server running, or if I just have not found the right “magic” URL flags yet.
-
Linux executable(at least for ARM/RPi, haven’t tried x86/x64 yet): However, a solution for compiling and running a standalone executable for Linux, is already there:
https://github.com/Vegz78/McAirpos -
UWP app: There’s also an interesting GitHub project by @eanders for running MCA games as an UWP app: https://github.com/eanders-ms/arcade-uwp-demo.
I managed to compile and run this from Visual Studio, but I get an access violation referencing the provided pxt.dll when I try to swap the included “castle-crawler” game with any other game(compiled with as experimental VM pxt64 file). I am not sure yet if there are other variations possible of the pxt64 files to compile to than the VM, if there are version differences or what is preventing this from working. It is also a very impractical solution, since every appx deployment has a size of 10-100MB for each MCA game file of 150-500kb, and the produced exe file in this project does not execute standalone with Windows standard shared libraries.
VM
There is a VM solution included(but deprecated?) in MCA, which @mmoskal describes as:
- “…a native SDL-based interpreter for MakeCode VM bytecode. That worked on Windows, macOS and Linux (all x86, but I see no reason it wouldn’t work on ARM)…”,
- “…not really used by anyone (it’s 5x slower than normal native compilation), when it will be used we’ll fix it.”(The speed penalty should not be a problem on modern desktop hardware) when trying to compile at makecode.com, and
- " You may also see
"vm"
in future."(Coming soon? VM already an experimental feature/hardware…)
But the wheres, whats and hows regarding the VM simulator(a standalone app somewhere?), to actually run the pxt64 bytecode on Windows, MacOS and Linux is still unclear to me, and - as mentioned above - I am not sure how it is connected to @eanders’s project and whether they also could be compiled as standalone native Windows executables?
Web links
As a final suggestion for achieving a one-click solution, could be a collection of Web-links to the shared full screen playable web links of online MCA games, which would open be played in Microsoft’s web simulator inside your preferred or a minimal (kiosk) browser from the desktop, a folder, RetroPie/-Cake etc.
Supported hardware
Just for completeness, I will mention the standard and well-known uf2 boot image solution for loading and playing MCA games on various supported (handlheld microcontroller) devices.
Any new information about and solutions to this(especially the standalone Windows executables and a VM solution not requiring 100MB of UWP for each game) is very helpful and greatly appreciated!