C ++로 작성된 몇 가지 게임을 알고 있지만 예외는 사용하지 않습니다. C ++에서 메모리 할당 실패 처리는 일반적으로 std::bad_alloc예외를 중심으로하기 때문에 이러한 게임은 이러한 실패를 어떻게 처리합니까? 그들은 단순히 충돌합니까, 아니면 메모리 부족 오류를 처리하고 복구하는 다른 방법이 있습니까?
Java의 취미 게임 엔진의 경우 단순하지만 유연한 자산 / 자원 관리자를 코딩하고 싶습니다. 자산은 사운드, 이미지, 애니메이션, 모델, 텍스처 등입니다. 몇 시간 동안 탐색하고 일부 코드 실험을 한 후에도이 디자인 방법을 잘 모르겠습니다. 특히 특정 자산 유형이로드되는 방법과 자산이로드되는 위치를 추상화하는 방식으로 관리자를 설계하는 방법을 찾고 있습니다. 나머지 프로그램에 대해 …
다음과 같은 상충되는 의견이 있습니다. "전용 관리자 클래스는 결코 올바른 엔지니어링 툴이 아닙니다" "전담 관리자 수업은 (현재) 수천 개의 자원이있는 대규모 프로젝트에서 살아남는 가장 좋은 방법입니다." 다음 기능을 가진 클래식 ResourceManager 클래스를 보자. 에셋 (텍스처, 오디오, 3D 모델 등)로드 캐시를 유지하여 자산이 한 번만로드되도록 보장 참조는 자산을 할당 해제 할 …
휴무 . 이 질문은 더 집중되어야 합니다. 현재 답변을받지 않습니다. 이 질문을 개선하고 싶습니까? 이 게시물 을 편집 하여 한 가지 문제에만 집중할 수 있도록 질문을 업데이트하십시오 . 휴일 2 년 전 . 지연된 음영 처리가 가능한 유연한 Ubershader 시스템을 구현하고 싶습니다. 내 현재 아이디어는 FlatTexture, BumpTexture, Displacement Mapping 등과 …
취미 게임 엔진을위한 중앙 ResourceManager / ResourceCache 클래스를 작성하기로 결정했지만 캐싱 구성표를 설계하는 데 문제가 있습니다. 아이디어는 ResourceManager에 모든 게임 리소스가 사용하는 총 메모리에 대한 소프트 대상이 있다는 것입니다. 다른 클래스는 언로드 된 상태의 자원 객체를 만들어 ResourceManager에 전달합니다. 그런 다음 ResourceManager는 소프트 리미트를 염두에두고 주어진 자원을로드 / 언로드 할시기를 …
게임에 특정 자산이로드 될 것으로 예상하지만 찾을 수 없습니다. 상황을 어떻게 처리해야합니까? 예를 들면 다음과 같습니다. Texture* grassTexture = LoadTexture("Grass.png"); // returns NULL; texture not found Mesh* car = LoadMesh("Car.obj"); // returns NULL; 3D mesh not found 사용자가 실수로 삭제했거나 개발 중에 손상되었거나 철자가 틀렸을 수 있습니다. 몇 가지 잠재적 …
게임 프로그래밍, 특히 3D 오픈 월드 게임과 관련된 거의 모든 리소스는 디스크, 시스템 메모리 및 비디오 메모리에서 자산을 지속적으로 언로드하고 다시로드하는 방법에 대해 설명합니다. 콘솔에서이를 이해할 수 있습니다. 오버플로를 처리 할 수없는 매우 간단한 메모리 관리 체계가 있기 때문입니다. 그러나 PC에서는 상황이 매우 다릅니다. 시스템 메모리를 위해 OS에서 제공하는 가상 …
본질적으로 내 프리 팹 시스템을 만들고 있습니다. 게임 개체는 사람이 읽을 수있는 데이터 파일로 정의됩니다. 빈 GameObject를 만들고 데이터 파일에 정의 된 구성 요소와 함께로드하고 준비 대기하고 Instantiate()전화를 기다리고 싶습니다 . 그러나 GameObject go = new GameObject()새로운 게임 오브젝트를 사용할 때마다 장면에 추가됩니다. 프리 팹에 내장 된 Unity를 사용하여 프리 …