0

I've written my own 3D Game Engine and started writing a game. I am using OBJ-Models that use the TurboSquid Royalty Free License

Basically, it says that I can use their OBJ-Files but have to implement something that avoids the users to extract the OBJ-Files out of my program. I've written a converter that extracts the information out of the OBJ-File and creates several float/integer arrays [vertices, vertexCoords, normals, tangents..., indices]

These arrays will be used later for creating the VAOs / VBOs. So my idea was to create a Java class called OBJModelData that contains these arrays. OBJModelDataimplements Serializable. My attempt was to save the class into a file and use them instead of the OBJ-File so that the user cannot see and use the content.

My attempt looks like this:

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();
    }
}

This results in a file called modelName.dat and looks like this: enter image description here

Obviously reverse engineering must be done the recreate my arrays. I just do not like the way its written. For example the class that has been serialized is written in the first line. If someone somehow manages the get the source files of my engine by doing some reverse engineering on that he could easily read the file.

Is my method save enough to avoid recreating the obj files and can I still use this method to fulfill the license conditions or is there any other way that is normally used (e.g. in other games/engines) ?

BDL
  • 21,052
  • 22
  • 49
  • 55
Luecx
  • 160
  • 1
  • 12
  • 2
    There most be more than "that avoids the users to extract the OBJ-Files", because that alone is impossible. Given enough time and dedication it would always be possible to reverse engineer it. So there must be more to the license than that? – vallentin Mar 07 '17 at 16:51
  • Go through this link, if it helps http://codereview.stackexchange.com/questions/66889/encrypt-and-decrypt-a-serializable-object – mhasan Mar 07 '17 at 16:55
  • 1
    "If you are redistributing something that includes actual 3D product files, the TurboSquid files must be part of a larger creation and not in an open format that others can be downloaded. Most game engines, such as Unity and Unreal, handle this automatically. In general, to prevent your end-users from obtaining TurboSquid products, you should use proprietary formats that cannot be extracted, exported, or decompiled without reverse engineering." Is the official statement. But I am not sure if my code fulfills these conditions. I am some kind of reverse engineering has to be done... – Luecx Mar 07 '17 at 16:55
  • I'm voting to close this question as off-topic because it's a legal licensing matter which would be best clarified with the licence owner. – weston Mar 07 '17 at 18:19
  • See the tag info for [licensing](http://stackoverflow.com/tags/licensing/info) "DO NOT USE THIS TAG to ask for legal advice about licensing - such questions can be asked at [opensource.stackexchange.com](http://opensource.stackexchange.com). This tag should be used for questions about software that *provides* licensing services, such as a licensing server or client." – weston Mar 07 '17 at 18:22

1 Answers1

0

The end of your quote says: "without reverse engineering", so you do not need carry about reverse engineering. You need only "translate" from OBJ to another format of your creation, like you do.