创建可以注入修改的游戏

时间:2013-06-12 06:14:46

标签: java android

情况:

我正在开发一个概念验证Android和PC游戏,它实际上只能作为基础沙箱使用,实际的“游戏”是一个分层在提供的沙箱之上的mod。我无法弄清楚的是如何将开发人员代码注入我的应用程序实例中。

mod需要加载到已经运行的沙箱实例中,而不是编译重写和重新分发原始应用程序类文件。而且,虽然mod将引入它自己的代码,但预计开发人员将被要求在给定沙箱基础结构的某些边界内工作。

我设想的解决方案:

我觉得最好的解决方案是在沙箱旁边创建一个库。该库将包含沙箱将理解如何调用的类和接口,并且通过扩展和实现,开发人员可以编写可以作为其自身之一的代码的类,同时还能够实例化由开发人员实现的外部类。

问题:

问题在于我为这个概念计划的执行。 愿景是一个人可以下载一个mod,将其移动到一个mods \文件夹,启动我的应用程序,点击“玩游戏”,然后点击所有可播放的mod文件的下拉菜单mods \文件夹,并将其加载到现场播放。每个游戏都将使用熟悉的UI风格,基本的图形架构将会熟悉,按钮响应,玩家或单位移动,hud,图标排序,都将具有熟悉和可预测的风格,但每个mod都将具有独特的实际一个完全独立的开发者的头脑中的游戏体验。 我无法弄清楚是如何将代码从单独的开发人员动态注入我的原始应用程序并被识别,因为它既不在类路径中也不在我的任何原始包中。

2 个答案:

答案 0 :(得分:2)

从技术上讲,您可以使用DexClassLoader

从法律上讲,您的应用可能与Google Play Policy有关自我修改代码的内容有冲突。

答案 1 :(得分:2)

这很简单:将配置文件放入mod中,该配置文件指定mod的“main”类。

你的沙箱只需要获取信息,为mod的类路径创建一个类加载器,加载该主类并调用它的启动方法(你定义它需要实现的签名/或接口)。