파일 용 사용자 정의 컨텐츠 패키지


13

내 게임 프로토 타이핑을 위해 웹 사이트에서 상당히 많은 모델 팩을 구매하려고합니다. 계약서에는 대중이 접근 할 수 없도록 보호해야한다고 명시되어 있습니다.

밸브 게임 작업을 기억하며 기본적으로 각 게임의 모든 내용을 보관 한 .gcf (게임 내용 파일)를 사용했습니다. 그들은 소리 / 자료 / 모델 /지도 등으로 포장되었습니다. 나는 이것과 비슷한 것을 개발하는 것이 나쁜 생각이 아니라고 생각하고 파일을 추가 / 제거 할 수있는 작은 도구를 작성합니다.

문제는 실제로 이런 일을 시작하는 방법을 모른다는 것입니다. 나는 구글을 시도했지만 무엇을 검색 해야할지조차 몰랐다. 누구든지 아이디어, 사용 가능한 링크 또는 다른 것을 가지고 있다면 크게 감사하겠습니다.

답변:


9

7-Zip 과 같이 약간 모호한 아카이브 형식으로 데이터를 저장하십시오 .

일반 사용자가 zip 프로그램으로 쉽게 열 수 없도록 다른 파일 확장자를 지정하십시오.

physfs 를 사용 하여 해당 파일을 읽고 액세스하십시오. 또한 로컬 디렉토리의 파일로도 작업 할 수 있으므로 패키지를 다시 작성하지 않고도 새로운 리소스를 쉽게 테스트 할 수 있습니다. 추천.

예를 들어 컨텐츠에 대한 아주 간단한 암호화를 고려하십시오. XOR 암호화 . 작은 배치 파일 또는 스크립트를 작성하여 패키지를 작성하고 들어간 데이터를 암호화하고 동일한 기능을 사용하여 게임의 데이터를 해독하십시오.

이것은 결정된 사용자를 유지하지 않습니다. 그러나 모델 팩의 요구 사항을 충족시키기에 충분할 것입니다.


누군가 다른 날 밤에 physfs를 추천했습니다. 좋은 작은 도서관.
greyfade

8

프로토 타이핑 만하는 경우 자산을 GCF / ZIP / PAK 파일로 포장하는 것에 대해 걱정하지 않아도됩니다. 대중은 프로토 타입을 보지 못할 것입니다!

또한 Valve의 GCF는 ZIP 파일처럼 컨텐츠를 보호합니다. 즉 0입니다. 파일이 암호화되지 않았습니다. GCFScape를 다운로드하여 내용을 찾아보고 추출 할 수 있습니다.

당신이 특정 요구하지 않는 한 그것은 자신의 팩 파일 시스템을 만들기에 노력을 가하고 가치가 없어 지금 ZIP 파일이나 OS의 자신의 파일 액세스 메커니즘에 의해 충족되지 않는 것을; 사실, 내가 생각할 수있는 유일한 이유는 다음과 같습니다.

  • 콘텐츠 난독 화 (파일을 땜질하지 않도록 유지하는 데는 그 용도가 있지만 현재의 요구에 대해서는 여전히 과도한 것을 제안합니다),
  • 게임 별 방식으로 추가 파일 당 메타 데이터 저장
  • 수천 개의 작은 파일에 빠르게 액세스하거나 연속적인 데이터 액세스를 보장하는 등 OS의 파일 시스템 제한 사항 해결 콘솔에서 작업 할 때는 사실상 필요합니다.

나는 완전히 동의합니다. 문제는, 어떤 형태의 보호도없이 데모를 공개 할 수 없다는 것입니다. ZIP은 너무 잘 알려져 있으며 PAK는 거의 같습니다. 맞춤 형식의 Atleast (밸브에는 GCF 파일에 액세스하기 위해 게임 엔진에 하드 코드 된 CTX 키가 필요함) 평균 joe는 추출 도구를 실행하여 들어갈 수있는 것은 아닙니다.
Aidan Knight

웁스, 엔터가 줄을 긋지 않을 것이라는 것을 몰랐다. 어쨌든,이 nemesis.thewavelength.net/index.php?p=35 는 Valve 게임과 독립적으로 GCF 기능을 제공하는 오픈 소스 Lib 인 것처럼 보입니다. 여기서 볼 수있는 문제는 너무 강력하다는 것입니다. 나중에 확장 할 기본 버전을 만드는 것보다 조금 더 간단한 것을 찾고있었습니다. (솔직히 말하면, 그가 코딩하는 방식으로 머리가 아프다)
Aidan Knight

4
궁금한 점이 있다면 ,이 계약서에는 귀하가 콘텐츠를 어떻게 보호 해야하는지 언급 되어 있습니까?
Blair Holloway

2
그게 요점입니다! 당신 실제로 그것을 보호 할 수 없기 때문에, 당신이 (멍청하지 않다면) 당신이 무능한 사람들이 당신이 무엇을 원하는지 정확히 아는 것이 필수적입니다. 그렇지 않으면 당신이 무엇이든, 그것이 작동하지 않기 때문에, 당신은 책임을 질 수 있습니다 (처음에는 할 수 없었던 일을하지 않음).
o0 '.

3

이 요구 사항은 헛소리입니다.

게임이 데이터에 액세스 할 수 있고 사용자가 게임에 액세스 할 수 있기 때문에, 숙련되고 충분하다고 판단되면 데이터를 저장하는 데 사용한 형식을 리버스 엔지니어링하고 바보 일 경우 최종 키를 가져옵니다. 그것을 암호화합니다.

보안을 추가 할 수 없습니다. 반복합니다. 보안을 추가수 없습니다 . 내가 말했듯이 충분한 기술과 결단력을 가진 사용자는 그것을 깨뜨릴 수 있기 때문에 모호함을 추가 할 수 있으며 모호함은 전혀 의미가 없습니다.

할 수없는 것을 요구하는 어떤 것도 서명하지 마십시오.


1
대부분의 사용자는 "충분한 기술과 결단력"을 가지고 있지 않기 때문에 모호함은 의미가 없습니다. 당신의 집을 보호하는 것도 마찬가지입니다. 정말로 들어가기를 원하는 사람은 그렇게 할 수 있지만, 여전히 그들을 귀찮게 만드는 것은 가치있는 것으로 간주됩니다.
Kylotan

반론 : 집에 침입하는 것과 달리 누군가가 게임에 침입하면 다른 사람이 그렇게하기가 쉽지 않기 때문에 모호함은 의미가 없습니다. (반면, Brett는 모델이 필요하기 때문에 모호함은 무의미하지 않다. 나는 유추가 잘

누군가가 집에서 금 조각을 훔치면 금 조각이 있습니다. 누군가 데이터 파일에서 귀중한 모델을 가져 오면 원하는만큼 사본을 만들 수 있습니다. 따라서,이 예는 효과가 없습니다. 여기서 많은 사람들이 당신의 무가치 한 보호를 통해 얼마나 많은 사람들이 문제를 일으키 든 상관 없습니다. 하나는 충분합니다.
o0 '.

하나는 충분합니다. 다른 사람들이 로컬 파일을보고 중지하고 온라인으로 보려고 충분히 신경을 쓰고 다른 사람이 온라인으로 물건을 게시하거나 (로컬 사본을 보는 것은 불법 임) 게시하는 데 노력했다는 가정하에 충분합니다. 지시 사항을 숙지해야합니다. 모든 작은 도움.
Kylotan

1
모든 작은 도움 이 무엇 입니까? 사용자가 데이터를 보지 못하고 그것에 대해 아무 것도하지 않는 것은 전혀 무의미하므로 나를 슬프게 만듭니다. 이 바보 요구 사항은 가장 확실하게 다른 사람을 방지하기 위해 존재 다시 사용 만 결정 사람들을 걱정해야하므로, 그 데이터를 것이다 열심히 노력과 성공 (내가 말했듯이, 때문에 그들이 단지 안목으로 보면, 수없는 실패) .
o0 '.

1

사용자 정의 컨텐츠 패키지는 다른 확장자를 가진 .zip 또는 .rar 아카이브 인 경향이 있습니다. 물론, 웹 사이트에서 일종의 사용자 지정 암호화를 원하는 경우에는 좋지 않습니다.


예, Ogre는 이미 zip 파일을 통한 리소스로드를 지원합니다. 채팅방에서 zip 파일을 암호로 지정했지만 누군가 도구를 크랙하기 위해 언급 한 것은 실제로 내 첫 번째 선택이 아닙니다. Valve가 사용하는 .gcf 파일과 비슷한 것을하고 싶지만 시작하기까지 무엇을 검색 해야할지조차 알지 못합니다.
Aidan Knight

누군가가 zip 파일을 해독하면 어떻게 문제가 발생합니까? 정말. 그들은 당신이 그들에게 던질 수있는 모든 것을 부술 수 있습니다. 당신은 시도. 이 라이센스 제공자가 귀하에게 책임을 물을 수있는 부분을 어디에서 그리십니까?
Neverender

1

몇 가지 아이디어 :

1] 표준 모델 형식 (예 : .obj 또는 .x)을 사용했거나 게임에 직접로드 할 때 사용자 지정 모델 형식을 사용합니까? 사용자 정의 형식이 있고 유용한 형식으로 변환하기 위해 모델 형식을 리버스 엔지니어링해야하는 경우 이미 기회 자산 리퍼에 대해 어느 정도의 보호 수준이 있습니다.

2] XOR 암호화에 대한 Kylotan의 요점은 암호화 문자열을 보여주는 소스 데이터에서 긴 0 시퀀스를 피하기 위해 의사 난수 생성 시퀀스 (파일 이름에 해시로 시드 될 수 있음)를 사용하여 암호화 할 수 있다는 점을 제외하고는 우수합니다. 물론 파일을로드 한 후 즉시 내부에서 암호를 해독해야하지만, 암호화 된 파일을 다시 시작 가능한 블록으로 나누면 실제로로드 시간에 부담이된다면 여러 스레드에서 전체 암호 해독을 시작할 수 있습니다. . 그러나 나는이 수준의 "보호"가 필요하다는 것을 심각하게 의심한다. 특히, 다른 사람들이 말했듯이, 결정된 리퍼는 그 주위를 돌아 다닐 것이다. 예. DLL 우회 라이브러리를 사용하여 그리기 호출을 가로 채고 정점 버퍼 / 인덱스 버퍼를 직접 다시 읽습니다.

3] 원래 자산 제공 업체에 보호 요구 사항에 대해 문의해야하지만, 프로그램 시작 화면 및 / 또는 EULA에 자산 저작권에 대한 설명을 추가하는 것이 문제 일 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.