2012-09-07 3 views
0

나는 거의 완전히 문서화되지 않은 내가 좋아하는 게임 중 하나에서 레벨 형식을 배우려고 노력하고있다. 기본적으로 레벨 형식을 설명하는 유일한 문서는 First 12 bytes: header
4 following bytes: number of materials
x next bytes: array of materials,
등과 같은 것을 말하는 것입니다.코드의 흐름에 따라

저는 16 진수로 매우 경험이 없으며 그들이 말하는 것을 완전히 이해하지 못합니다. 그러나 레벨 편집기가 있으며 원본은 Google 코드에서 무료로 사용할 수 있습니다. 이것을 Visual Studio에 추가하고 레벨 편집기가 파일을 여는 방법을 읽음으로써 레벨 형식을 배우려고합니다.

그러나 또 다른 문제는, 나는 C++을 모른다 (나는 파이썬을 안다). 이것은 아마 코드의 어느 부분이 바이트와 그 외의 것들을 읽는지를 알 수 없을 것이라는 것을 의미합니다.

내가 찾고있는 코드는 실행 과정에서 코드의 흐름을 따라갈 수있는 무언가입니다. 본질적으로 모든 라인에 브레이크 포인트를 설정하는 것과 비슷한 역할을하는 것으로, 파일 내용을 읽을 때 코드의 특정 부분이 어떤 부분을 실행하는지 보여줍니다. 그러나 분명히 모든 줄마다 중단 점을 설정하는 것은 매우 지저분하고 느립니다. 나는 편집기에서 파일을 열 때 어떤 코드가 실행되고 있는지 간단히 알려주는 무언가를 찾고있다.

내가 할 수있는 일을 아는 사람이 있습니까? 감사.

+2

한 문장에서 다음 문장으로 넘어갈 수있는 기능을 찾으십니까? 내가 아는 모든 디버거에는 그러한 기능이 있습니다. 당신은 약간의 중단 점에서 깨져야 만합니다. 거기에서 시작하면 코드를 단계별로 실행할 수 있습니다. 따라서 읽기 시작 위치에 중단 점을 설정하고 거기에서 계속하십시오. 예 : Visual C++ 2010에서 키 F10은 한 단계 만 수행합니다. F11을 사용하여 다음 문장 (예 : 메소드 호출)에 "들어갈 수 있습니다. – codeling

답변

3

한 문장에서 다음 문장으로 넘어갈 수있는 기능을 찾고 있습니다. 내가 아는 모든 디버거에는 그러한 기능이 있습니다. 먼저 흥미로운 영역의 시작 부분에 단일 중단 점을 설정하고 거기에서 시작하여 코드를 "단계별로"시작합니다.

예. Visual C++ 2010에서 키 F10은 한 단계 만 수행합니다. F11을 사용하여 다음 문장 (예 : 메소드 호출)에 "들어갈 수 있습니다.

경우에 따라 레벨 파일 읽기가 시작되는 위치에 중단 점을 설정하고 거기에서 계속하십시오. 파일이 읽히는 장소를 찾으려면 코드의 명확성에 따라 어려운 문제가 될 수 있습니다. 하지만 코드가 잘 작성 되었다면, 이름이나 "load"또는 "something"에 "read"가 포함 된 메소드가 있어야합니다.

어떤 일이 생길 수 있으려면 최소한 기본 C++ 구문을 알아야 할 수도 있습니다.

디버깅 방법 (예 : this one)을 읽는 것이 좋습니다.

+0

고마워, 나는 당신이 질문에 잘 대답 할 때 최선의 대답으로 당신을 선택했는데, 적어도 기본적인 C++ (또는 관련 언어)를 알아야 할 것입니다. – Anteara

1

너무 모호한 문서는 레벨 형식 사양이며, 대부분의 경우 사양 만 있으면됩니다. 파일 읽기에 약간의 추가 경험이 필요합니다.

파일을 읽을 때 몇 가지 사항에 대해 걱정해야합니다.

1) 바이트 단위로 읽을 때 (8 비트) 순서는 변경되지 않습니다.

2) 한 번에 32 비트를 읽을 때 바이트 순서는 컴퓨터의 엔디안에 따라 바뀔 수 있습니다.

(예 : 0x12345678에 대한된다 0x78563412 때 엔디 언 변경)

파일 작업을 시작하는 나에게 도움이 3D 모델로드 당신을 도울 수있는 아주 오래된 튜토리얼이 있었다

:

http://www.spacesimulator.net/wiki/index.php?title=Tutorials:3ds_Loader

이 (원래의 문서에서와 같이) 스펙의 일부를 가지고 있고 스펙에서 시작하는 로더를 작성하는 방법을 보여주기 때문에 유용합니다. 그게 당신이 필요한 전부입니다. 그것은 C이지만이 경우 C++과 큰 차이가 없습니다.

http://www.khronos.org/opengles/sdk/tools/KTX/file_format_spec/

내가 기억하는 경우 올바르게도있다 : 당신이 당신에게 명확하게 물건을 만들기위한 관련 파일 로더와 다른 간단한 파일 형식 사양이 필요한 경우, 당신은 또한 libktx와 KTX 사양에

볼 수 비공식 C++ KTX 로더를 사용하면 C가 아닌 C++ 코드를 작성해야합니다.

+0

나는 다른 대답을 우수 답변으로 선택했으나이 게시물에서 제공 한 모든 정보에 감사드립니다. 그걸로 나를 도와 줘야 해. 나는 아직 볼 시간이 없었다. 하지만 3DS 로더는 다른 모델 형식 사양을 사용하여 본질적으로 작동 할 수 있어야합니다. – Anteara

관련 문제