게임 리소스를 눈에 띄지 않는 것이 전문가가 아닌가?


43

복잡한 API를 거치고 기본적으로 두뇌를 소모하는 zip 파일을 압축 한 후에도 여전히 리소스를 압축하는 데 문제가 있습니다. 사람의 눈에 보이는 리소스를 간단한 폴더에 게임으로 압축 할 수도 있다고 생각했습니다.

전문가가 아닌가? 개인적으로, 나는 게임을하는 것을 본 적이 없었습니다. 기본적으로 플레이어는 map1.txt로 이동하여 벽을 만들거나 플레이어 스프라이트를 변경하는 등 X를 추가하는 등 게임에서 원하는 것을 편집 할 수 있음을 의미합니다. MS PAINT의 조랑말에게.


30
그것을 모딩 커뮤니티로 생각하십시오 :)
Orin MacGregor

1
예산이있는 전문 게임 개발자입니까? 이 게임으로 많은 돈을 벌지 않을 계획이라면 괜찮을 것 같습니다. 그래도 몇 가지 팁이 있습니다. 당신이 더 나은 느낌, 내가 X-COM / UFO 방위의 파일 저장 편집에 사용
wolfdawn

6
@ArthurWulfWhite : 돈을 버는 것보다는 쪼개는 점은 조정 된 자원이 게임에 미치는 영향이라고 생각합니다. MMORPG의 경우, 수정 된 리소스 / 클라이언트는 특정 플레이어에게 불공정 한 이점을 제공 할 수 있으므로 최대한 방지해야합니다. 다른 많은 게임의 경우, 모딩 친화적 인 클라이언트는 모딩 커뮤니티가 게임 주위에서 개발하는 것이 매력적이며 일반적으로 좋은 것으로 간주됩니다.
Lie Ryan

1
Quake (1)의 모딩 측면은 모델과 bsp 파일을 일반 게이머에게 노출시키지 않고 잘 처리되었습니다. 나는 여전히 쉽게 접근 할 수있게하면서 물건을 숨기는 것이 나쁘지 않다고 생각합니다. X-COM에서 저장 파일을 편집 할 수 있다는 사실이 마음에 들었습니다. 그러나 money.txt라는 텍스트 파일이 있으면 샌드 박스와 게임 사이의 경계가 흐려지기 때문에 시작하려는 현금의 양을 입력 할 수 있으면 어리 석습니다.
wolfdawn

2
Introversion 방식이 마음에 듭니다sound.dat . 예를 들어 이름이 바뀐 zip 파일에 파일을 넣습니다 . 수백 개의 파일과 함께 압축되지 않은 폴더를 사용하면 (de) 설치가 상당히 성 가실 수 있습니다.
Tobias Kienzler

답변:


44

아닙니다. 게임 데이터를 변경하는 것을 모딩 (modding)이라고합니다. 이는 일반적인 관행이며 종종 긍정적 인 효과로 간주됩니다. 실제로 게임 데이터를 최대한 투명하게 유지하고 번거롭지 않게 편집하는 것이 좋습니다. 더 많은 "고급"플레이어를 대상 고객으로 선택하는 경우 더욱 그렇습니다.

데이터에 일반 폴더 구조를 사용하는 많은 AAA 게임을 찾지 못하는 이유는 사용자 정의 최적화 된 아카이브 형식을 사용하여 로딩 시간을 향상시키기 때문입니다. 단점은 투명성이 감소하고 툴체인에 필요한 추가 도구가 있다는 것입니다. 그러나 소규모 또는 2D 게임의 경우이 두 가지가 일반적으로 향상된 로딩 시간보다 더 가치가 있습니다.

사람들이 보는 것이 큰 혼란이 아닌지 확인하십시오 :) 파일을 적절한 폴더 구조에 넣으십시오.


(밀어 경우 비록 궁극적으로 효과) 상황이 또한 훔치는 억지력의 한 형태로 포장
CobaltHex

15

다른 답변 외에도 고려해야 할 두 가지 중요한 사항은 다음과 같습니다.

깜짝 놀라게
하기 게임 중반 쯤에 "비디오"폴더를 발견 했다고 가정 해 봅시다. 호기심, 나는 하나를 클릭하고 게임의 마지막 컷씬을 보게됩니다.

도전 실패
동일한 시나리오이지만 저장된 게임 형식에 "골드"값이 있다는 것을 알았습니다. 250에서 999999999로 변경하여 작동합니다. 갑자기 게임의 재미를 극대화하는 정교하게 제작 된 난이도 곡선이 사라졌습니다.

둘 다 누군가가 게임에 대한 관심을 잃게 만들 수 있습니다. 이것은 게임이 얼마나 좋은지에 대한 전반적인 인상이 낮아질 수 있습니다 (불공평하지만 사실).

목표 청중의 관점에서 이것에 대해 생각하십시오. 특히 젊은 선수는 이것이 자신이하는 일을 실제로 이해하지 않고 자신의 재미를 망치기 쉽습니다.

모딩을 장려하더라도 "우연히"게임에 대한 자신의 경험을 망치지 않도록 사용자를 보호 할 수 있습니다.


4
정확히 맞습니다. 게임을 수정하기 전에 몇 가지 장애물을 겪어야하더라도 아프지 않습니다. 비디오 시나리오의 경우 +1
wolfdawn

14

아마도 비전문가는 잘못된 단어 일 것입니다. 파일을 노출 상태로 두는 것이 나쁜 일인지 아닌지는 게임에 달려 있습니다.

간단한 싱글 플레이어 게임의 경우 플레이어와 모더가 당신을 사랑합니다. 당신은 그들에게 쉽게 게임을 바꾸고 그들이 원하는 것을 할 수있는 능력을 줄 것입니다. 그리고 게임 크기에 상관없이 항상 게임을위한 모더 가있을 것 입니다. 많은 게이머는 모딩이 어려워지면 약간의 느낌을 줄 것입니다. 결국 게임을 구입하면 원하는대로 할 수 있습니다.

반면, 게임 자산을 쉽게 편집하는 것은 부정 행위로 간주되므로 멀티 플레이어 게임에는 좋지 않습니다. 악의적 인 플레이어는 콘텐츠를 대체하여 적의 눈에 띄거나 벽을 투명하게 만들 수 있습니다. 게임 코드는 실제로 자산이 변경되지 않았 음을 강제해야하지만 "자산 패키지"접근 방식은 이러한 활동을 막는 데 도움이됩니다 (보안 어둠).


1
체크섬 테스트를 우회하기에 충분하다면 패키지 자산도 망칠 수 있습니다. 포장이 더 안전하다고 생각하지 않습니다.
mmyers

11

쉽게 고칠 수 있습니다. 명령 프롬프트에서 다음과 같은 방법으로 확장명을 일괄 적으로 이름을 바꿀 수 있습니다.

rename *.txt *.map

그런 다음 \ map 폴더에 넣으십시오.

cmd를 실행하는 창에서 명령 프롬프트에 액세스 할 수 있습니다

이렇게하면 게임을 수정하고 싶어하는 모더를 막을 수 없으며 모든 콘텐츠를 그대로 두지 않고 게임을하고 싶은 사람들에게 덜 느긋한 인상을 남길 수 있습니다.

그렇습니다. 여전히 편집 가능합니다. 사람들은 눈치 채지 못할 것입니다.

Eric Robertson의 의견에 대답하기 위해

플레이어에서 게임의 내용을 제대로 숨기려면 해당 텍스트 파일에 RSA 암호화를 사용하여 텍스트 파일을 하나의 텍스트 파일로 병합 할 수 있습니다. 나는 그것을 과도하게 넘어서고 있다고 생각하지만 너무 많은 문제가되지 않아야합니다.


1
-1 이것은 실제로 "수정"이 아닙니다. 리소스는 여전히 눈에 있습니다.
Erick Robertson

6
@Eric Robertson 글쎄, Quake (1) 스타일을 포장하는 것에 대해서도 말할 수 있습니다. 자산을 완전히 숨기는 마술 솔루션은 없습니다. 이것은 단지 캐주얼 플레이어에서 그들을 숨기고 그가 언급 한 문제를 다소 우회하기위한 것입니다. 폴더 구조 또는 자산 패키지에 배치한다고해서 암호화를 사용하지 않는 한 자산이 존재하지 않는다는 의미는 아닙니다.
wolfdawn

Linux에서는 파일 확장자가 중요하지 않다는 것을 알고 있지만 이것이 Windows에서 작동한다고 확신합니까?
jcora

1
@Bane 파일 이름은 마침표가 아니므로 .txt 파일의 이름을 .zip, .bmp 또는 .xyz로 바꾸고 메모장으로 다시여십시오. 파일 이름은 PC에서 파일을 탐색 할 때만 중요합니다. 예를 들어 .xyz에는 특정 아이콘이 연결되어 있습니다. xsoftware로 파일을 열려면 기본적으로 * .x 파일 만 표시되고 메모장이 표시됩니다. txt 파일, mspaint는 gif, jpegs, bmps, pngs, tiffs, icos 등을 표시합니다. 파일 이름은 편리한 규칙입니다. 따라서 파일 내부의 데이터를 조사하고 분석 할 필요가 없습니다. 내용
Wolfdawn

1
설명해 주셔서 감사합니다! 그런 다음 윈도우 도메인에 리눅스보다 더 크게 다르지을하지 않는 것
jcora

3

비전문가라면 더 이상 아닐 수도 있습니다. 초기 게임에서는 주로 지적 재산 (IP)을 보존하기 위해 자체 패키지 형식을 사용했습니다.

모든 자원을 단일 아카이브로 압축하여 기본 원시 파일 시스템의 조각화불필요한 함수 호출 과 같은 일부 제한 사항을 극복 할 수 있습니다 . 이렇게하면 클라이언트 PC에 패키지를 배포 할 때 조각화 이벤트가 발생할 가능성이 줄어 듭니다.
최악의 시나리오에서는 하드 디스크 섹터 주위에 작은 개별 파일 리소스가 흩어질 수 있습니다. (SSD의 도착으로이 시점은 종종 무질서하게됩니다)

그러나 이러한 모든 혜택은 무료 (Unix) 오래된 .tar아카이브 형식으로 도 제공 될 수 있습니다 .

또한 자체 패키지 형식을 사용하면 버전 관리 부족, 파일 해시, 인코딩 및 파일 내의 포인터 / 링크 부족과 같은 제한 사항을 극복 할 수 있습니다.

결론적으로 , IP를 명시 적으로 보호 할 필요가없는 한, 인디 개발의 투명성을 주장합니다.


에 의해 제기 위대한 점에 관해서는 MGOwen: 도난을 방지 망치고은 놀라움 은, 파일 확장자 변경 파일 속성, 드문 미디어 형식을 사용하여 이름을 바꿀 미디어 헤더를 절제하고 다른 곳에 저장, 등 ... 방지하기 위해 수 도전 패배 사용을 바이너리 직렬화 필자는 필요한 경우 추가 암호화 및 미끼 변수와 함께 게임 상태를 저장합니다.

면책 조항 : 저는 게임 개발자가 아닙니다. 이 게시물 만 출발점으로 생각하십시오 ...


1
"도전을 잃지 않으려면 바이너리 직렬화 작성기를 사용하여 게임 상태를 저장하고 필요한 경우 추가 암호화 및 미끼 변수를 저장하십시오." 사람들이 부정 행위를하고 싶다면 부정 행위를합니다. 인 메모리 디버거를 사용하면 메모리의 4 바이트가 골드와 어떤 관련이 있는지, 필요한 경우 변경 사항을 추적합니다.
Random832

1
@ Random832 아멘.
Lorenz Lo Sauer

당신의 대답은 틀 렸습니다. 6000 개의 작은 파일의 내용에 액세스하는 것은 내 경험상 1 개의 파일에서 동일한 내용에 액세스하는 것보다 5 배에서 10 배 이상 느립니다. SSD에서로드하는 데 5 초가 걸리는 경우 일반 하드 드라이브에서 15 초 동안 동일한 데이터를 편집 가능한 파일로 나누고로드 (HDD 및 SSD)에서 30 초 이상으로 점프합니다. 따라서 어떤 이유로 HDD보다 SSD에서 증가가 더 두드러집니다. (두 경우 모두 RAID 없음)
Coyote

@Coyote 나는 게시물에서 같은 요점을 주장했다는 인상을 받았다 ...? 단편화 (즉, 하드웨어 컨트롤러 제한, 플래터 ...의 물리적 한계) (종종 래퍼를 통해) + 많은 파일 시스템 API 호출은 느린 =
로렌 소호 사우어

이 특정한 문장은 틀렸다 : "SSD의 도착으로이 점이 무너진다"
Coyote

1

수정 및 검색 색인 작성은 피날레 동영상 등을 쉽게 찾을 수 있습니다.

데이터 파일 : xor로 플립 비트

   realByte_cpp = readByte_cpp ^ 0x44; // xor

GREP에서 "Gold : 250"을 숨기려면

동일한 (임의의) xor 값으로 인코딩하십시오.

일반 사용자로부터 장면을 멀리하려면 다음을 시도하십시오. Machinarium은 파일 이름을 변환하여 \ videos가 \ 0101이되었고 모든 파일에 8 진 숫자 ID와 .101이있어 파일 연결을 중지했습니다.

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