2012-08-07 2 views
2

현재 Windows에서 C++ 및 SFML을 사용하는 RPG 게임을 개발 중입니다. 현재 잘 작동하고 있지만, 아이템, 재고품, 생물, 전투 카드, NPC, 상점 등의 모든 데이터가 텍스트 파일에 저장되어 있기 때문에 모든 텍스트를 조작하는 것이 매우 간단하므로 모든 것을 점검했을 때 확인했습니다. 편집자.C++ RPG 게임에서 저장된 데이터 보호

나는이 데이터가 아주 쉽게 조작되는 것을 막고 싶다. 분명히 데이터가 릴리스와 함께 저장 될 때마다 누군가가 통과하여 편집 할 수 있습니다.

지도 편집자, 항목 편집기, NPC 편집자 등과 같이 미래에 구축 될 도구로 편집하는 기능을 유지하면서이 데이터를 보호하는 가장 좋은 방법이 무엇인지 궁금합니다. 잘 엔진 자체로.

나는 언어를 더 잘 배우기 위해 주로 이것을 사용하고 있기 때문에 자신의 글쓰기를 아주 좋아하고 이것을 달성하는 데 가장 좋은 방법에 대한 아이디어를 얻고 싶습니다. 아무도 이것이 어리 석다라고 진정으로 믿는다면 나에게 알려주기 바란다. 그래서 나는 옵션 라이브러리를 사용할 것이라고 생각할지도 모른다.

나중에 도움을 주시면 좋은 분께 추천 해 주시면 감사하겠습니다.

+0

우선, gamedev.stackexchange.com이 당신을 도울 자격이 될 것입니다. 둘째로, 파일을 저장하는 방법에 관계없이 사용자가 직접 말했듯이 사용자는 결국 파일을 수정할 수있게됩니다. 따라서 게임이 단일 플레이어 인 경우 (그렇지 않은 경우 어쨌든 그러한 일을 시행 할 서버가 있음) 걱정하지 않아도됩니다. 파일을 게임 설치의 하위 폴더에 저장하고 실제 게임을하지 않으려는 사람들이 원하는대로 수정할 수있게하십시오. 아무에게도 아무런 상처를주지 않는다 :) –

+0

좋은 지적이지만, 이것은 주로 연습을위한 것이고 아마도 친구 외에 누구에게도 배포되지 않을 것이라고 말했다. 가능한 한 많은 분야를 연습하고 모두 함께 노력하고 있습니다. – Kethaias

+0

그게 큰 차이가 있습니다 :) 그 경우에, Heisenbug는 아마도 그의 대답에 그것을 박 았어! –

답변

6

내가 최적의 경로는이 데이터를 보호 가야할지 궁금 여전히지도 편집기, 아이템 에디터, NPC로 미래에 건설 될 예정 도구 로 편집 할 수있는 기능을 유지하면서 것 편집자 등, 엔진 자체.

나는 최선의 해결책이 있다고 생각하지 않습니다. 가장 간단한 방법은 파일을 암호화하여 게임 내에서 키를 하드 코딩하여 암호 해독 할 수 있습니다. 이렇게해도 바이너리의 리버스 엔지니어링이 키를 복구하지 못합니다.

+0

+1, 좋은 출발점입니다. 비대칭 암호화 알고리즘 (예 : 공개 키 및 개인 키 쌍)을 사용하면 약점 (역 엔지니어링)을 피할 수 있습니다. 사용할 수있는 많은 무료 구현이 있습니다. –

+2

비대칭 암호화가이 문제를 해결할 수 있다고 생각하지 않습니다. 실제로 바이너리의 하드 코딩 된 개인 키가 여전히 발견됩니다. – Heisenbug

+0

주셔서 감사합니다. 나는 이것과 같은 것을 고려하고 있었지만 당신이 그것을 저장할 수있는 어떤 종류의 파일이있을 것이라고 생각하고있었습니다. 꿈, 나는 알고 있습니다. XD – Kethaias

2

게임 엔진에 파일을 텍스트 형식과 바이너리 형식으로 모두 읽게하십시오. 바이너리 형식은 파일 디렉토리에서 zip 압축을 사용하는 것만 큼 간단 할 수 있습니다. 그런 다음 이진 파일에 체크섬을 구현할 수 있습니다.

개발에는 텍스트 버전을 사용하지만 라이브 게임에서는 이진 형식의 읽기만 허용하고 체크섬에 실패한 파일은 거부합니다.

누군가가 체크섬을 리버스 엔지니어링하므로 매우 안전하지 않습니다. 하지만 임시 사용자가 게임 데이터를 편집하지 못하게합니다. 게임 클라이언트가 서버의 알려진 양호한 체크섬에 대해 게임 데이터 체크섬의 유효성을 검사하도록하여 보안을 강화할 수 있습니다.