인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

따뜻한눈빛님의 프로필 이미지
따뜻한눈빛

작성한 질문수

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

Session #4

일부러 섹션 마지막에 글에 질문 남깁니다.

작성

·

248

5

정말 네트워크를 배우면서 어려운것 투성이 입니다. 진짜 쓰레드라는 개념은 단순하지만 여럿이 모이면 정말 무서울정도로 어려워 지더군요. 덩달아 네트워크 랑 연동해서 데드락, 쓰레드끼리 충돌하지 못하도록 신경도 써야하고, 패킷을 보낼때 받을때도 주의 해야합니다. 그냥 간단하게 결론만 얘기 하겠습니다. 여기서 배우는 내용을 달달 외우는것 보단 프레임워크를 스스로 개조해가면서 본인만에 서버를 만들면서 익숙해지는 방법밖에 없는건가요?

답변 2

6

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

내용을 외우는 것은 의미가 없고 원리를 '이해'를 하셔야 합니다.
새로 개조를 하면서 만들어보는 것은 좋지만,
충분히 이해가 가지 않은 상태에서는 무엇을 어떻게 고칠지 알기 힘드니
처음에는 모방을 하면서 반복학습을 하는 것이 좋습니다.

참고로 전 처음에 서버 독학을 할 때
http://www.yes24.com/Product/Goods/362774
이 책을 5번 이상 반복 학습한 다음,
TextRPG나 간단한 로그라이크2D 게임에 연동을 해보면서 공부했는데
그 과정에서 많은 깨우침을 얻을 수 있었습니다.
물론 알 수 없는 크래시가 나는 경우가 비일비재 했는데
그런 멀티쓰레드 이슈를 해결하면서 또 레벨업 할 수 있었던 것 같네요.

3

덕분에 이해를 하기위해 최대한 노력 하였고 게임 시스템에 있을법한 KickAll 시스템을 만들어 보았습니다.

몰론 시스템 구조적으로는 좋지 못하지만

크래시가 뜨지 않도록 최대한 멀티쓰레드 환경에서 작동할수 있도록 개발을 했습니다. (어차피 Thread.Sleep(50);)으로 while(mySocketList.Count < 0) { 킥이벤트..} 를 통해서 만든거지만. 

계속 공부해보면서 게임서버를 반드시 만들겠습니다.

커맨드 입력방식으로 했습니다.

커맨드 리스트 구조체 안에 델리게이트 를 사용했습니다.

따뜻한눈빛님의 프로필 이미지
따뜻한눈빛

작성한 질문수

질문하기