인프런 커뮤니티 질문&답변

작성자 없음

작성자 정보가 삭제된 글입니다.

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진

Scene Manager #2

Scene 전환시 데이터 유지와 설계 질문

작성

·

1.7K

0

안녕하세요 ㅎㅎ

강의를 들으며 토이프로젝트로 조그마한 게임을 하나 만들고 있습니다. 몇 가지 궁금한 점이 생겨 질문드립니다.

Q1.1) 아래 사진은 루카노르 백작 이라는 게임입니다.

캐릭터가 위의 문을 열고 들어가면 빌런인 염소가 존재합니다. 문제는 이 방을 나갔다 새로 들어와도 염소의 자리는 그대로 방을 나갈 당시 위치에 있습니다. 

게임을 해본 추억을 되짚어 보니 두 가지로 나뉘더군요

1) 방을 나갔다 다시 들어오면 몹이 초기 젠 자리로 가있는 경우 

2) 방을 나갔다 들어와도 아래와 같이 몹이 그자리 그대로 있는경우

1)번의 경우 모든걸 초기화하고 새로 만들면 될 것 같은데

2)번의 경우 기존의 정보를 어떤 방식으로 관리하는지 궁금합니다. 만약 던전의 방도 Scene으로 관리한다면 본 강의의 예제에서는 Scene간의 전환시 Manager를 통해 clear하는데 어떤식으로 코드를 수정해야할지 여쭙고싶습니다.

횡설수설하지만 정리해서 말씀드리면.. Scene전환시 이전 Scene으로 돌아갈때 이전 Scene의 상태를 그대로 유지한상태로 돌아가는 방법은 무엇인가요?

Q2) 또 한가지 의문은, 리니지나 디아블로의 경우 던전의 한 층 자체를 Scene으로 관리할 것 같은데 

아래와 같이 던전 내에 여러개의 문이 있고, 문에 입장하면 장면이 전환되는 경우 던전 내의 방들은 Scene으로 관리하나요? 

설계는 개발자 마음대로라지만 Rookiss님이 게임을 만드신다면 어떻게 설계하실지 궁금합니다.

답변 3

1

Rookiss님의 프로필 이미지
Rookiss
지식공유자

사실 디아블로2는 온라인 게임이라 비교대상이 아닙니다.
온라인 게임에서는 서버에서 클라한테 주변 데이터를 전송하고
그것을 토대로 그려주는 것입니다.
(다른 플레이어가 아이템을 줍거나, 몬스터를 잡았을 수도 있겠죠)

게임에서 구현 방법은 무궁무진하니
가장 합리적이라 판단되는 방법으로 진행해보시기 바랍니다.


0

답변 감사합니다.

디아블로2를 예시로 들어 질문드리고 싶습니다.

디아블로2도 한 던전에 들어갔다 나와도 바닥에 떨어진 아이템, 적 유닛의 위치 모두 던전에서 나오기 직전의 상태와 같습니다. 말씀하신대로 Scene의 이동이 아닌 맵만 바꿔치기 했다는게 더 합리적인 추측이라고 생각합니다!

그렇다면 바꿔치기할 map gameobject에 setActive(false) setActive(true) 함수를 사용하는 것으로 상태를 잠시 pause하고 resume하는 효과를 가져올 수 있을까요?

0

Rookiss님의 프로필 이미지
Rookiss
지식공유자

Scene 관리는 절대적인 것은 없습니다.
디아블로를 예로 들면 동일한 Act에서,
즉 사용하는 리소스 풍 (사막, 숲 등)이 비슷할 경우
별도의 긴 로딩 없이 이동하는 것으로 보아 동일한 Scene에서
맵만 바꿔치기 해주는 것으로 보입니다.
Act를 넘어가면 리소스를 날리고 다시 로드를 하고요.

아무튼 몬스터 위치가 유지되어야 한다면,
Scene 로드해도 날라가지 않는 데이터를 만들어서 관리하고,
몬스터 위치를 입장할때 조정하는게 편할 것 같네요.
사양에 따라 다르겠지만, Managers에서 유지 되어야 하는 몬스터 정보를 관리해도 되고
아니면 세이브 파일로 관리한다거나,
하는 방식이 있을 것으로 보입니다.
(서버가 붙는 게임이라면 어차피 서버에서 알고 있겠죠..)


작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기