Hi everyone,
The biggest blocker for me working with AppGameKit is the difficulty to create plugins in C++ and use them in both Tier 1 and Tier 2. I would like to propose a potential solution to this to the AppGameKit developers and get some feedback from the community
The difficulty with C++ plugins is that when C++ is compiled, usually it will only run on one platform and to run it on multiple platforms you usually have to build it individually for each one
A solution to this is to compile C++ code into a special instruction set called LLVM IR. LLVM IR can be converted into another architectures machine code at runtime, eliminating the need to recompile for every platform
Another advantage of LLVM is that you can add your own languages to it so the AppGameKit basic compiler can just use LLVM. This should improve speed greatly as LLVM will automatically optimise the code and convert it to machine code
Compiling both AppGameKit basic and C++ to LLVM IR gives another advantage which is the ability to easily mix the two so you can develop part of your game in Tier 1 and other parts in Tier 2 and they will work together. You would even be able to create plugins using basic and use them in Tier 2!
The biggest advantage of LLVM is its free, open source and can be embedded in commercial products for free. It is used in Emscripten to compile C++ code into javascript so it can be run on the web. It is also what PNaCl uses to get the same code running on different architectures at native speed. And LLVM is the standard C++ compiler used in XCode for compiling to Mac OS X/iOS so techinically, you are already using it!
Heres some links:
http://llvm.org/
http://en.wikipedia.org/wiki/LLVM
http://www.drdobbs.com/architecture-and-design/the-design-of-llvm/240001128
http://llvm.org/docs/tutorial/index.html