У меня есть движок игры на С++, который в настоящее время поддерживает Windows, Linux и Android (NDK). Он построен поверх SDL и использует OpenGL для рендеринга.
Одним из конструктивных ограничений этого игрового движка является то, что стоимость разработки должна составлять 0,00 долл. - создание механизма должно быть бесплатным для меня (кроме часов человека), мне должно быть разрешено свободно распространять код двигателя и двоичные файлы, и пользователи должны иметь возможность продавать игры, созданные с помощью движка без ограничений.
В настоящее время я использую очень медленный интерпретируемый язык сценариев для логики игры - он действительно хорошо работает для написания кода клея и простых ответов на события пользовательского интерфейса, но не намного больше.
Я хочу заменить эту систему на решение С# - попросите пользователя скомпилировать библиотеку классов С# (DLL), содержащую их логику игры, и чтобы сторона С++ "потребляла" эту DLL и вызывала соответствующие перехватчики.
Было довольно сложно найти информацию о том, как достичь этого кросс-платформенным способом. На каждой платформе есть другой способ размещения необходимых промежутков времени. Кроме того, большинство статей, которые я нашел, предполагают использование полнофункциональных фреймворков, которые обеспечивают абстракции платформы, которые уже реализованы в моем движке.
Есть ли в настоящее время способ запускать код из С# DLL из приложения на базе С++ на базе Android NDK без использования совершенно другого SDK и без необходимости выкладывать сотни долларов за лицензию?
В частности, я смотрю некоторые недавние инициативы Microsoft с открытым исходным кодом в Microsoft. Что-нибудь там я мог бы использовать?
EDIT: Чтобы уточнить, Windows и Linux имеют хорошо документированные способы запуска .net-кода "бесплатно" - этот вопрос относится конкретно к вызову управляемого кода из приложения Android NDK БЕЗ оплаты лицензий Xamarin или другому вендору.