I stumbled across ChilliSource on /r/gamedev on Reddit. I'm interested in adding support for the GameUp Game API as an open-source third-party library using the
HttpRequestSystem. What's the best way to do this?
Should I depend on the ChilliSource library and simply build the library as a standard C++11 project? Is there a plugin system in ChilliSource which I should use instead? How are third party libraries integrated into the packaging process for use in Android/iOS projects?
It's great to hear you're interested in adding ChilliSource support!
There is no specific way to write a plugin/extension for ChilliSource, however the engine is essentially a collection of modules in the form of
Components. In your case you would probably want to supply an
AppSystem. To package your library for a user, the easiest way would be to supply source. If you're not willing or able to do that, you could provide static libraries for each supported platform.
As far as implementation goes, the easiest way would be to use
HttpRequestSystem as you suggested. However if you already have libraries for each platform you could handle it in the same way we support other third party libraries. This is a bit more involved, however. On Android in particular it is a bit messy due to crossing the language barrier between native and Java. We'll be tidying this stuff up soon - it has been a secondary concern up until now because it's behind the scenes. If you want to take this approach, I'd recommend looking into
CSCore::DialogueBoxSystem. It's a fairly clean example of how it is achieved on all 3 platforms.
Hope that's helpful, let us know if you have any trouble!
Thanks for getting back to me.
I'm happy to make the codebase open-source and provide the module as a source library that developers can drop into their codebases (possibly as a git submodule). I think this is a simpler solution than the alternatives and we're happy to open-source it as we do with all of our client libraries.
I will start experimenting with
HttpRequestSystem. I'll let you know how I get on.