안녕 동료 프로그래머, SDL2의 로딩 화면을 달성하기 위해 노력하고 몇 시간을 소비 한 후SDL2 로딩 화면/스레드
, 우리는 그렇게하지 못했습니다. 우리는 다른 엔티티 (토끼, 나무, 바위 등)에 대해 많은 타일셋/스프라이트를로드해야하는 간단한 2D 개방형 생존 게임을 만듭니다 (토끼, 나무, 바위 등)
처음에는 우리는 한 tileset, 나무 및 배경 타일을 포함합니다. 그러나 이제지도가 '샘플'50x50 타일지도에서 1500x1500 타일지도로 확장되었습니다. 결과 : 게임이 정지 된 것 같았지만 대신 타일/이미지가로드되었습니다.
Google 솔루션 : 현재로드중인 항목의 진행 상태를 표시 할 수있는로드 화면을 만듭니다. 우리 게임은 gamestates (또는 다소 좋아하는) 용 상태 패턴을 사용하기 때문에 PlayState와 LoadingState가 있습니다.
일반 std :: thread를 사용하여 필요한 모든 데이터를로드하고 텍스처로 변환하기로 결정했습니다.
- 우리의지도
- 프로세스에 대한 검색 데이터를 데이터를 포함하는 JSON 파일을 읽고 그것을
- 로드 이미지에서 타일 세트를 만들고 텍스처
모두 스레드없이 작동합니다 (위의 모든 내용을로드하는 '고정'제외).하지만 스레드의 경우 성공/실패와 관련하여 60 %/40 %와 같습니다. 수 시간 동안 검색 한 후에 이유를 찾았습니다 : SDL2 cannot call SDL_CreateTexture가 메인 스레드가 아닌 다른 스레드에서옵니다.
로딩 화면을 표시하는 방법, 위의 모든 작업을 수행하는 방법, 다른 작업을 실행하지 않고 이러한 작업을 수행하는 방법에 대해서는 잘 모르기 때문에 우린 단서가 없습니다. 그러므로 우리의 질문 : 위에서 설명한대로 로딩 화면을 얻을 수있는 방법이 있습니까? 사전에
감사합니다!
논쟁은 아니지만 ... 스플래시 화면을 만들려고 몇 시간을 보냈는데 실패했다면 2D 오픈 월드 생존 게임을 만들 계획입니다. 몇 가지 자습서를 다시 읽었습니다. –
https://bugzilla.libsdl.org/show_bug.cgi?id=1995 – 2501
@MarcoA. 나는 약간 과장되었을 지 모르지만 게임 자체가 작동합니다 (게임 실행). 엔티티의 처리를 처리하기 위해 청크 등을 생성했습니다. 멍청한 점은 간단한 스플래시 화면을 만들고로드 된 비율이 그보다 더 어렵다는 것을 보여주는 것입니다. 다른 말로하면 : 우리 게임이 시작되고 실행 중입니다. 로딩 화면이 아닙니다. –