맞춤형 게임 엔진의 경우 핵심 데이터가 잘못되었거나 누락 된 경우 어떻게해야합니까?


27

게임용 커스텀 엔진을 작성 중입니다. 대신 미들웨어를 사용해야하는 이유를 이해하기 전에이 게임을 시작했는데 다시 작성하기에는 너무 멀었습니다.

내 데이터의 대부분은 외부 파일에서 가져온 것이므로 자산 만 언급하는 것이 아닙니다. .JSON을 통해 모든 게임 오브젝트를 정의합니다. 그러나 아아, 나는 인간이다. 때때로 내 데이터 파일이 유효하지 않거나 형식을 변경했지만 파일을 업데이트하는 것을 잊어 버렸거나 로더 자체가 플랫 버그입니다.

어떤 이유로 든 사용자 정의 엔진에 어떤 형태의 자산을로드하려는 시도가 실패하면 어떤 옵션이 있습니까?

누락 된 리소스를 어떻게 처리해야합니까? 와 중복되지 않습니다 . 그 질문은 모델이나 텍스처와 같은 사용자 대면 애셋에 관한 것입니다. 잘못된 질감은 바둑판으로, 나쁜 소리는 침묵으로, 나쁜 텍스트는 "ERROR"로 바꿀 수 있습니다. 내 문제는 레벨, 게임 오브젝트 정의 및 GUI 레이아웃과 같은 게임 실행에 중요한 데이터에 있습니다.


7
내 게임에도 비슷한 방법을 사용합니다. 실제로 사람의 실수를 피하기 위해 게임 데이터 파일을 생성하는 작은 유틸리티 응용 프로그램을 만들었습니다.이 방법으로 수동으로 10 만 줄의 JSON을 작성하지 않고도 파일을 수정할 수 있습니다.
JDSweetBeat

데이터를 로드하기 전에 유효성 검사기 를 통해 데이터를 실행할 수도 있습니다 .
JDSweetBeat

내 JSON은 자동으로 생성 할 수 없을만큼 작습니다. 또한 JSON이 없거나 유효성을 검사 해야하는 버그가 있으면 유효성 검사기가 도움이되지 않습니다. 그래도 감사합니다.
JesseTG

답변:


44

오류를 기록하고 정상적으로 종료하십시오.

이상적으로는 화면에 사람이 읽을 수있는 오류를 표시하십시오. 이러한 데이터 파일없이 작동하는 하드 코딩 된 기능의 핵심 파이프 라인이 있어야합니다. 처음에는 데이터 파일을로드하는 것과 동일한 파이프 라인입니다. 이러한 코어 데이터 파일이 손상되었거나 결함이있는 경우를 감지하여 응용 프로그램을 종료 할 수 있어야합니다. 사용자가 이러한 파일을 수정하려는 경우 수행 할 수있는 작업이 많지 않습니다. 그렇지 않으면 이러한 종류의 손상이 발생하지 않도록 테스트 전략을 구현해야합니다. 그런 다음 유효한 데이터 파일 만 공개하도록 할 수 있습니다.


12

Byte56은 하나의 옵션을 언급했습니다. 최소한 하나 이상이 있습니다.

기본값을 가정하고 경고를 표시하십시오.

데이터의 특성에 따라 일부 기본값을 가정하고 사용자에게 "파일 xxx가로드되지 않았으므로 일반 yyy 객체를 사용하고있다"고 경고하는 것이 완벽하게 허용 될 수 있습니다.


6

개발 또는 릴리스 중에 발생하는지 여부에 따라 다릅니다.

개발 중에는 항상 모든 종류의 누락, 오류 및 엉망이 발생하며, 필요할 때 자산을 "핫"하거나 게임이 실행되는 동안 자산을 ​​교체 할 수도 있습니다. AI 성능을 테스트하기 위해 게임을 실행하면서 스크립트를 편집하는 등의 작업을 수행 할 수 있습니다.

프로그램에 오류 대화 상자가 표시되고 매번 종료되는 것이 가장 성가 시며 2-3 분이 걸리면 다시 시작해야합니다. 개발의 목표는 당신을 (가장 귀중한 자산 인) 당신에게 가능한 한 적게 실속시키는 것입니다.
예를 들어, 텍스처가 누락 된 경우, 빨간색 흰색 바둑판과 같은 것을보고 싶을 것입니다. 어쩌면 "missing"이라는 단어가 대체 텍스처로 표시되어있어 이상하다는 것이 명백합니다. . 그러나 게임이 정상적으로 종료되거나 중단되는 것을 원하지 않습니다. 로그 파일에없는 것에 대한 자세한 정보는 대단히 유용합니다.

반면에 릴리스에서는 전체 자산 파일 세트가 자동 자산 파이프 라인을 통과 한 것이 이상적입니다 [1] . 이것은 모든 JSON에서 읽은 다음 모든 모듈 자체가 일관성이 있는지 교차 확인하고 참조하는 모든 자산이 실제로 있는지 확인한 다음 전체 파일을 압축하는 간단한 파서 일 필요는 없습니다. 엔진이 읽기 쉬운 일부 알려진 (그러나 반드시 표준은 아님) 방식으로 선택적으로 몇 개의 체크섬을 추가합니다.

파이프 라인에서 최종 사용자에게 패키지를 릴리스하기 전에 모든 것이 있는지 확인했기 때문에 실패가 없다는 것을 알고 있습니다. 따라서 오류가 발생하면 전송 오류가 발생했거나 사용자가 부정 행위를 시도했을 가능성이 높습니다. 두 경우 모두, 프로그램은 자산 파일이 손상되었다는 메시지를 표시하고 종료해야합니다.

또는 인터넷에서 자산의 사본을 다운로드 할 수있는 옵션을 제공 할 수도 있습니다 (다운로드 서버가있는 경우). 그러나 고객 지원 악몽을 피하려면 기가 바이트의 데이터를 다운로드하기 전에 문의 하십시오 .


[1] 현실이 다르게 보일 수도 있고 제작자가 "알아야 할"AAA 타이틀에서 누락 된 자산을 발견 할 수도 있지만 일반적으로 비현실적인 마감일과 큰 변화하는 팀이 있습니다. 배송하는 모든 것이 자동화 된 파이프 라인을 통과 한 것이 이상적입니다.

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