2017-03-07 9 views
0

나는 내 자신의 3D 게임 엔진을 썼고 게임을 쓰기 시작했다. OBJ-Models를 사용하고 있습니다. TurboSquid Royalty Free License자바 클래스 저장 및 암호화

기본적으로 OBJ 파일을 사용할 수는 있지만 사용자가 프로그램에서 OBJ 파일을 추출하지 못하게해야합니다. OBJ 파일에서 정보를 추출하고 여러 개의 float/integer 배열 [vertices, vertexCoords, normals, tangents ..., indices]을 생성하는 변환기를 작성했습니다.

이러한 배열은 나중에 VAOs/VBOs. 그래서 내 생각은 이러한 배열을 포함하는 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 파일은 다른 포맷을 다운로드 할 수없는 오픈 포맷이 아닌 더 큰 파일이어야합니다 Unity와 Unreal 같은 대부분의 게임 엔진은 이것을 자동으로 처리합니다. 일반적으로 최종 사용자가 TurboSquid 제품을 얻지 못하게하려면 리버스 엔지니어링 없이는 추출, 익스포트 또는 디 컴파일이 불가능한 독점 형식을 사용하십시오. " 공식 성명서입니다. 하지만 내 코드가 이러한 조건을 충족하는지 확신 할 수 없습니다. 나는 어떤 종류의 리버스 엔지니어링이 완료 되어야만한다. – Luecx

답변

0

"리버스 엔지니어링이 필요하지 않습니다."라고 말하면 따옴표 끝에 리버스 엔지니어링을 수행 할 필요가 없습니다. 당신은 당신처럼 OBJ에서 창조물의 다른 형식으로 "번역"할 필요가 있습니다.