2017-03-07 7 views
0

私は自分自身の3Dゲームエンジンを作成し、ゲームの作成を始めました。私はOBJ-Modelsを使用しています。TurboSquid Royalty Free LicenseJavaクラスの保存と暗号化

基本的に私はOBJファイルを使用できますが、ユーザが自分のプログラムからOBJファイルを抽出しないようにする必要があります。 私は、OBJファイルから情報を抽出し、いくつかの浮動小数点/整数配列[頂点、頂点、法線、接線...、インデックス]を作成するコンバータを作成しました。

これらの配列は、 VAO/VBO。そこで私の考えは、これらの配列を含むOBJModelDataというJavaクラスを作成することでした。 OBJModelDataSerializableを実装しています。私の試みは、クラスをファイルに保存し、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と呼ばれ、次のようになります:私の試みは、このようになります

enter image description here

明らかエンジニアリングが私の配列を作成し直す行わなければならない逆。私はちょうどその書かれた方法が嫌いです。たとえば、シリアライズされたクラスは、最初の行に書き込まれます。誰かが何らかの形で私のエンジンのソースファイルを手に入れたら、簡単にファイルを読むことができるというリバースエンジニアリングを行います。

私のメソッドはobjファイルを再作成しないように保存していますが、この方法を使用してライセンス条件を満たすことができますか?通常は他の方法で使用できますか?

+2

"OBJファイルを抽出するのを避ける"以上のものがあります。それだけでは不可能だからです。十分な時間と献身を与えられれば、常にそれをリバースエンジニアリングすることが可能になります。だから、ライセンスよりもさらに多くのことが必要でしょうか? – Vallentin

+0

役立つ場合は、このリンクをクリックしてくださいhttp://codereview.stackexchange.com/questions/66889/encrypt-and-decrypt-a-serializable-object – mhasan

+1

"実際の3D製品ファイルを含むものを再配布する場合は、TurboSquid一般的に、エンドユーザがTurboSquid製品を入手できないようにするには、次のようにしなければなりません:UnrealやUnrealなどのほとんどのゲームエンジンは、これを自動的に処理します。リバースエンジニアリングなしで抽出、エクスポート、または逆コンパイルできない独自のフォーマットを使用してください。公式の声明です。しかし、私のコードがこれらの条件を満たすかどうかはわかりません。私は何らかのリバースエンジニアリングを行う必要があります。 – Luecx

答えて

0

引用符の末尾に「リバースエンジニアリングなし」と表示されているため、リバースエンジニアリングを行う必要はありません。 OBJから作成した別の形式に変換するだけで済みます。