【发布时间】:2017-03-07 16:48:23
【问题描述】:
我已经编写了自己的 3D 游戏引擎并开始编写游戏。我正在使用使用 TurboSquid Royalty Free License 的 OBJ 模型
基本上,它说我可以使用他们的 OBJ 文件,但必须实现一些东西,以避免用户从我的程序中提取 OBJ 文件。 我编写了一个转换器,它从 OBJ 文件中提取信息并创建几个浮点/整数数组 [顶点、顶点坐标、法线、切线...、索引]
这些数组稍后将用于创建 VAO / VBO。所以我的想法是创建一个名为OBJModelData 的Java 类,其中包含这些数组。 OBJModelData实现Serializable。我的尝试是将类保存到文件中并使用它们而不是 OBJ 文件,以便用户无法查看和使用内容。
我的尝试如下所示:
public void writeToFile(String file){
File f = new File(OBJLoader.RES_LOC+ file +".dat");
try {
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(f));
out.writeObject(this);
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
这会生成一个名为 modelName.dat 的文件,如下所示:
显然必须进行逆向工程以重新创建我的数组。我只是不喜欢它的写作方式。例如已经序列化的类写在第一行。如果有人通过对其进行一些逆向工程以某种方式管理获取我的引擎的源文件,他可以轻松读取该文件。
我的方法是否足够节省以避免重新创建 obj 文件,我是否仍可以使用此方法来满足许可条件,或者是否有任何其他通常使用的方法(例如在其他游戏/引擎中)?
【问题讨论】:
-
除了“避免用户提取 OBJ 文件”之外,还有更多,因为仅此一项是不可能的。只要有足够的时间和奉献精神,总有可能对其进行逆向工程。那么许可证肯定不止这些吗?
-
通过这个链接,如果它有帮助codereview.stackexchange.com/questions/66889/…
-
"如果您要重新分发包含实际 3D 产品文件的内容,则 TurboSquid 文件必须是更大创作的一部分,而不是其他可以下载的开放格式。大多数游戏引擎,例如 Unity和 Unreal,自动处理。一般来说,为了防止您的最终用户获得 TurboSquid 产品,您应该使用无法在没有逆向工程的情况下提取、导出或反编译的专有格式。是官方的说法。但我不确定我的代码是否满足这些条件。我是某种逆向工程必须要做的......
-
我投票结束这个问题,因为这是一个合法的许可问题,最好与许可所有者澄清。
-
查看licensing 的标签信息“请勿使用此标签来寻求有关许可的法律建议 - 可以在opensource.stackexchange.com 提出此类问题。此标签应用于有关软件的问题提供许可服务,例如许可服务器或客户端。”
标签: java serialization licensing wavefront