네트워크 (NetWork)


네트워크 게임 정의

네트워크 게임이란 물리적으로 떨어져 있는 다른 사용자와 통신망(LAN, 인터넷)을 이용해 서로 게임하는 것을 말한다.


네트워크 게임을 개발하려면 TCP/IP, UDP 같은 통신 프로토콜의 개념과 소켓 프로그래밍에 관한 지식뿐 아니라 서버와 네트워크에 관한 지식도 필요하다.

물론 단시간 내에 이런 지식과 경험을 쌓을 수 없을 정도로 방대하고 다양한 경우의 수가 있는 것이 바로 네트워크 게임 개발이다. 따라서 네트워크 게임을 개발해본 경험이 없는 대부분의 개발자가 쉽사리 접그하긴 어렵다.


이처럼 난이도가 높고 개발 실력이 있어야 하는 네트워크 게임을 유니티는 쉽게 개발할 수 있도록 고수준 API(High Level API)를 제공한다. 물론 쉽게 개발할 수 있다는 것이지 네트워크의 이론적 배경을 전혀 몰라도 된다는 것은 아니다.



네트워크 게임의 물리적 구조.

네트워크 게임의 물리적 구조에 따라 크게 두 가지로 나눌 수 있다.


1. P2P(Peer to Peer) 방식

2. 클라이언트 / 서버 방식


첫 번째 방식은 개인과 개인이 별도의 서버 없이 연결해 데이터를 송수신하는 구조를 말한다.

주로 메신저나 파일 공유 프로그램에서 사용하는 방식이다. 네트워크 상에 사용자가 직접 접속해 게임을 하며,

비교적 접속자 수가 적은 게임에 적용할 수 있다.




두 번째 방식은 별도의 게임 서버를 두고 여러 클라이언트(사용자)가 접속한 후 서로의 데이터를 게임 서버를 이용해 송수신하는 방식이다. 게임 서버의 역할은 접속한 사용자 간의 데이터를 릴레이 하고 게임 데이터를 데이터베이스에 저장하는 것이다.

대부분의 온라인 게임은 클라이언트/서버 방식으로 구현돼 있다.




네트워크 통신 프로토콜

프로토콜은 네트워크 상에서 데이터 통신을 하기 위한 일종의 규약이다.

다양한 프로토콜이 있지만, 게임에서 주로 TCP/IP, UDP 프로토콜을 사용한다.

정해진 프로토콜로 송수신하는 데이터의 단위를 패킷(Packet)이라 한다.

TCP/IP, UDP 프로토콜은 패킷 전송 방식과 관련해서 다음과 같은 차이점이 있다.


- TCP/IP

데이터의 유실 없이 100개를 보내면 상대편에서 100개를 받을 수 있게 정합성을 최우선으로 하는 통신 규약.

중간에 패킷이 유실됐을 때 다시 재전송 한다. 또한 패킷을 보내는 순서도 정확히 지켜 전송한다.

다만 속도가 UDP 프로토콜에 비해 상대적으로 느리다.


- UDP

TCP/IP와 달리 상대편이 받을 준비가 돼 있는지 확인하는 절차 없이 무조건 보내는 프로토콜.

매우 빠른 전송 속도를 보장한다. 또한 네트워크 상황에 따라 중간에 패킷이 유실된다.

패킷을 보내는 중간이 유실된다고 해도 재전송 절차가 없다. 또한 패킷의 순서도 보장할 수 없다.

중간에 패킷이 하나씩 유실돼도 크게 관계없는 환경에 주로 사용되며, FPS 게임처럼 액션의 비중이 크고 속도감 있는 게임에서는 주로 UDP 프로토콜을 사용한다.


'Unity3D > NetWork' 카테고리의 다른 글

서드파티 네트워크 게임 엔진.  (0) 2017.05.09

잡담

옛 날에 만들었던 포트폴리오가 2개 있는데,

지금 보니까 엄청 허접하네.


다시 만들면 잘 만들수 있는데, 중요한건


귀찮다.



코딩이 재미 없냐고? 아니 재밌다.

그럼 기술적으로 안되는 부분이 있어서 그런거냐고? 아니.

솔직히 기술적으로는 아주 허접하지만, 모르는 기술에 대해서는 찾아가면서 배우는 즐거움이 있지.


그럼 왜?


1. 기획

2. 리소스.

.

이거 2가지.

기획 한 번 짜보려니까 머리 빠개질거 같고 재미도 없거든.

그렇다고 그냥 막 만들자니 위의 2개의 망작이 나온 선례가 있어서 섣부르게 시작도 못하겠고.


리소스는 뭐..

내가 원하는 리소스 찾는데 어마어마한 시간도 들고.

돈도 많이 들고.

무엇보다 여기저기서 갖다 붙이니까 통일성이 없어서 게임이 위화감이 쩔어.

그게 재미의 반감도 되는거고.



작년에 게임 학원을 갔다왔었는데, 초반 2개월을 빼고 나머지는 커리큘럼이 형편없었어.

알려주는거라곤 인터넷에서 혼자 공부했던거고, 그것조차 자세히 알려주지도 않았어.

거기서 배운거로 게임? 비슷한? 형체 같은거? 는 만들수 있었지만, 다른 사람한테 보여줄만한 수준도 아니었고.

최적화 관련으로 가르쳐 준게 거의 없어서 모바일로는 꿈도 못꿨지.

만약 그 사람이 이 글을 본다면 "난 알려줬는데 무슨소리냐?"라고 할지도 모르겠지만

"아, 그거요? FSM으로 만드세요. FSM이요? 인터넷에서 찾아보세요."

이런식으로 말하는게 가르쳐주는 거라면 돈 받고 하는 학원강사 때려쳐야 되는거 아니야?

이것 외에도 저런식으로 대답한게 아주 많았어.


수업시간이 총 3시간 이라면 30분 정도만 수업하고 나머지 시간은 거의 자습 비슷한걸 했는데,

가끔 우리가 하는걸 보면서 말 몇마디 툭툭 던지는게 다였어.

예를 들면 "그걸 왜 그렇게 짜요?" 그러는데, 이게 어디가 잘못됐고 왜 좋지 않은지 설명 해준적이 없어.

그렇다고 그 사람이 실력이 부족한것도 아니었지.

그냥 게으른 사람이었어 이런 사람이 일 한답시고 돈받고 앉아 있는것도 솔직히 이해도 안됐지

아니, 진짜로 이런사람을 왜 돈을주고 고용한거야?


아무튼 몇달에 한 번 주기로 자신이 만든 프로젝트를 발표하는 날이 있었는데,

만들어진 프로젝트들을 살펴보면 딱 2가지로 나뉘었어.


- 어디서 배우고 와서 만든사람.

- 그냥 학원에서 처음 배웠던 사람.


퀄리티는 뭐 말 안해도 알거야

첫 번째 경우는 그냥 혼자 만들어서 팔아도 괜찮을 정도의 퀄리티고

두 번째 경우는 게임이라고 말하기도 민망한 게임이 많았어.


첫 번째 경우는 그렇다 치고 두 번째에 경우만 봐도 이 학원이 가르치는데 얼마나 소질이 없는지 알 수 있는 대목이었지.

솔직히 두 번째경우의 사람들도 그렇게 까지 실력이 나쁜건 아니었어

그런데 게임 퀄리티가 왜 그런거냐면


첫 번째는 기획.

두 번째는 리소스.

이거 2개 때문이었어.


게임을 만들 기간이 한달이 주어지면

코딩 기간은 1주 반도 안됐을 거야.


웃기는거는 그 학원에서 운영하는 반이 프로그래밍반 말고도 기획반이 있었는데,

어째 프로그래밍 반과 기획반을 팀으로 짜서 프로젝트를 시킬 생각이 없더라고

물어봤더니 둘이 합쳐놓으면 싸운다고 안된데, 그런데 웃긴건 회사 나가면 왠만한데는 다 팀으로 할거아냐?

싸우기도 하겠지. 다 알고있어


다 아니까 그냥 그렇게 시키라고 싸움나서 프로젝트 완성 못시키면 그건 그놈들 책임이지


뭐어 아무튼 그 학원의 커리큠럼은 개떡같았지만, 배운건 많았어.

학원 선생한테 말고 같은 학생들한테 배운게 많은거 같아.

거의 한 달에 50정도 씩 들었는데, 그건 그냥 도서실 대여받은 느낌이랄까

그냥 돈 내고 공부장소 제공받은거 였지 뭐.


아무튼 잡담은 여기까지 하고


누가 기획써줘

리소스도 만들어줘


제발 코딩만 해보자 좀



'잡담' 카테고리의 다른 글

컴활 1급 실기 합격.  (0) 2017.05.05
취직하고 싶다.  (2) 2017.04.24

컴활 1급 실기 합격.


혹시나 해서 2번 넣었던 시험이

2개다 합격했다.



'잡담' 카테고리의 다른 글

잡담  (0) 2017.05.05
취직하고 싶다.  (2) 2017.04.24
prev 1 2 3 4 5 6 7 ··· 29 next