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

댕진형님의 프로필 이미지
댕진형

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)

JobQueue

public 을 지워서 찾으신 후 Push()를 하신 부분에 대하여

작성

·

267

0

jobQueue의 09분 20초 부분 EnterGame() 을 Push()로 변화하는 과정에서 질문이 있습니다.

EnterGame() 의 경우 public 을 없애셔서 찾으시다보니 발견을 못하신것 같은데..

EnterGame()를 사용 하는 부분이 2군데 더 있더라구요.

GameRoom.cs 부분에서

EnterGame(monster);

EnterGame(arrow);

가 있습니다.

확인해보니 이 두개는 결국 GameRoom 안의 함수들안에 있는 것이라 Push가 될테니 문제는 없을 것같은데..

본래는 이 GameRoom 안에 있는 함수의 안에 있는 EnterGame()이더라도 Push를 하는게 맞는 것인지 궁금합니다. 애초에 같은 스크립트 안에 있는거면 처리를 안해줘도 되서 일부러 public을 찾으신건지 궁금하네요...

두서없이 그냥 쓴것 같아 죄송하지만... 답변 부탁드립니다!

답변 2

1

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

네 동일한 JobSerializer 내부에서라면 사실 크게 상관 없긴 합니다.

당장 이어서 실행되어야 하는 일이라면 바로 실행해야 하겠지만,
그게 아니라 큰 연관성이 없어서 다음 Tick에 실행되어도 괜찮은 경우
Push로 밀어주면 일감을 적당히 끊어서
다른 애들한테 호출될 기회를 줄 수 있는 장점도 생기게 됩니다.

그리고 나중에 Actor 단위로 JobSerializer를 두게 되면,
대부분의 경우 동일한 Actor 내부에서 쭉 실행하기 보단
다른 쪽에 넘어가는 경우가 거의 대부분이긴 합니다.

0

댕진형님의 프로필 이미지
댕진형
질문자

" 이미 Serializer에 의해 관리/실행되고 있는 함수 내부에서는
Push를 해서 새로운 Job으로 밀어넣어도 되고,
아니면 그냥 일반 함수처럼 호출해도 됩니다.
다만 이는 동일한 Serializer에서 실행하는 경우에만 그렇습니다.

지금은 간단한 규모/구조로 개발하고 있기 때문에
사실상 GameRoom 안에 1개의 Serializer가 있지만,
나중에 가면 하나의 GameRoom을 더 세부적인 영역으로 쪼개고
하나의 영역마다 Serializer를 배치하는 경우도 있고.
더 극단적으로는 하나의 객체(Player, Monster, NPC ...)마다
Serializer를 놓는 방식도 있습니다.

그런 경우에서 다른 Serializer로 일감을 넣고 싶으면
그냥 호출하면 안되고 무조건 Push를 해줘야겠죠.

그래서 일반적으로 실수의 여지를 줄이기 위해 그냥
Push를 하는 것이 더 좋다고 생각하지만,
이런 간단한 구조에서는 뭐로 해도 크게 상관 없습니다. "

===================================

이전에 다른분들도 질문을 하셨엇고 답변도 주셧엇네요.. 감사합니다.

무엇이 되었든 무조건 같은 GameRoom 안에 있는 함수의 안에 있더라도 Push를 하는게 좋다는 말씀이시네요 맞을까용..?

댕진형님의 프로필 이미지
댕진형

작성한 질문수

질문하기