강의

멘토링

커뮤니티

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

유영재님의 프로필 이미지
유영재

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

Listener

안녕하세요 선생님 동기식 비동기식 에 대해서 질문드리고, 서버 코드 공부 방법에 대해서도 질문 드립니다.

작성

·

183

1

수업에서 궁금한 점이 2가지 정도 있어서 질문드립니다.

Q1 ) 제가 동기식 VS 비동기식 제대로 이해하고 있는지

질문드립니다.

게임에서는 무조건 비동기식으로 사용해야 한다.

왜냐하면 언제 클라이언트가 CONNECT 요청 들어 올지

모르는데 Accept 걸어놓고 계속해서 메인 쓰레드는 

다른 일을 하지못하고 connect 신호 올때 까지

기다리고 있기 때문에 성능 저하가 발생을 한다

비동기식으로 사용을 하는데 그냥 이벤트로 콜백 걸어

놓고 OS 한테 야! 연결 신호오면 알려줘 하고 

쓰레드는 다른 일하러 갑니다.

CONNECT 신호가 오면 OS가 

인력사무소(쓰레드 풀)에 알려주고

대기 하고 있는 쓰레드

아무나 가서 해당 일 처리를 한다.

이정도로 이해하면 되는지 여쭤보고

Q2. 서버 공부를 할 때 

이해를 기반으로 시간날때마다 손으로 쳐보면서

익숙해지도록 해두면서 공부하는 것이 좋나요?

나중가서 실무에서 업무를 맡게되면(물론 저는 컨텐츠

플머 지망이지만) 

선생님께서 수업하실 때 하는 것처럼 머리속에서 바로바로

나오게 할려면 외워야 할텐데..

개념은 당연히 남에게 설명할 정도로 숙지를 해야겠지만

직접 짜보라고 하면,, 못할거 같아서요 ㅠ.ㅠ 실무 경험도 없고 

신입 기준 네트워크 프로그래밍 공부 방법 좀 알려주시면

정말 감사하겠습니다.

답변 1

6

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

Q1.
-> 네 잘 이해하셨습니다.

Q2.

이해를 기반으로 시간날때마다 손으로 쳐보면서
익숙해지도록 해두면서 공부하는 것이 좋나요?

-> 아닙니다. 소켓 프로그래밍을 익숙하게 뚝딱 하는 사람은 (아마도) 존재하지 않습니다.
어차피 한 번 만들면 10년 동안 건드릴 일이 없는데 
굳이 그런 부분까지 '익숙해질' 필요까진 없고,
코드를 읽으면서 문맥을 파악하고 큰 흐름을 이해할 수 있으면 됩니다.
나중에 다른 언어/프레임워크에서 비슷한 소켓 프로그래밍을 하더라도
함수 API는 바뀔 수 있지만, 전체적인 틀은 똑같기 때문에
샘플 코드를 보면서 연구를 조금만 하면 금방 만들 수 있게 됩니다.

그리고 이번 Part에서 다루는 내용은 사실상 서버 코어 네트워크 라이브러리에 관한 부분인데,
이 부분은 프로젝트 극 초창기에 만들게 되고
나중에 가면 어차피 윗단(컨텐츠) 쪽에서 놀기 때문에
서버 프로그래머라 하더라도 다들 이런 코어 작업을 할 줄 아는 것은 또 아닙니다.
그리고 회사를 기준으로는 초창기부터 연구해서 만든 라이브러리들을
다른 프로젝트에서도 쭉 계승해서 사용하게 됩니다.
그렇기 때문에 더더욱 이런 코어 부분을 '잘' 다루는 사람은 100명중 1명 될까 말까 합니다.
결과적으로 본인이 서버 코어에 관심이 많거나,
언~젠가 신규 프로젝트 메인을 맡을 야망이 있다면 공부하는거고
그게 아니라면 사실 컨텐츠 작업을 하기 위해서 당장 필요한 것은 또 아닙니다.

공부 방법은 사람마다 다르지만
기본적으로 [소켓 프로그래밍]과 [TCP/IP 프로토콜 이론]에 대해서 꾸준히 공부하면 됩니다.
다만 불행하게도 이쪽 분야는 제대로 된 도서가 많이 없어서
그냥 어떻게든 회사에 들어가서
회사 코드를 보면서 공부하는게 제일 빠르긴 합니다.

유영재님의 프로필 이미지
유영재

작성한 질문수

질문하기