Ask Your Question
0

p2p관련 문의드립니다. (2016-03-03, fatmoon)

asked 2016-11-30 16:59:10 +0900

inkeun.kim gravatar image

안녕하세요 스마트조이 입니다. ifun engine 메뉴얼에서 p2p연결에 대한 부분을 보지 못한듯 하여 문의 드립니다. 클라이언트단의 p2p연결을 지원하지 않는지요?

즐거운 하루 보내세요. 감사합니다.

edit retag flag offensive close merge delete

1 answer

Sort by » oldest newest most voted
0

answered 2016-11-30 16:59:29 +0900

inkeun.kim gravatar image

Answer by DK.Moon · 2016-03-03 AM 10:01

안녕하세요,

아이펀팩토리 문대경입니다. 이렇게 인사드리게 되서 반갑습니다.

저희는 모바일 환경에서 P2P 게임이 현실적으로 큰 메리트가 없어서 현재 P2P 기능은 제공하지 않습니다. (아이펀 엔진이 모바일 게임 뿐만 아니라 다른 게임 영역의 서버들을 다루게 되면 추후에 제공될 수는 있지만, 당장 로드맵에서도 빠져있습니다)

모바일 환경에서 P2P 가 부적합한 이유는 1. 이동통신망에서는 NAT 를 뚫고 두 클라이언트가 직접 통신할 수 있는 "항상 보장되는" 방법이 없습니다. 통신사는 가정용 공유기보다 훨씬 더 복잡하고 고가의 NAT 장비를 사용합니다. 보통은 Symmetric 한 방식을 사용하는데, 그나마도 NAT 구현 방식은 국제 표준이 없기 때문에 제조사마다 다릅니다. 이 때문에 PC 온라인에서처럼 가정용 라우터 몇가지를 테스트하는 것으로는 완전하지 않습니다. 같은 통신사망에서는 서로 P2P 가 되는 것처럼 보일 수도 있지만, 다른 통신사끼리는 서로 P2P 통신이 된다는 보장을 하기 힘듭니다. 이건 게임의 해외 출시의 경우 더욱 문제가 됩니다. KT 에서 된다고 해서 China Telecom 에서 된다는 보장이 없기 때문입니다. 그리고 지금 KT 에서 된다고 해도, KT 가 다른 방식의 NAT 장비로 바꾸게 되면 다시 동작하지 않습니다.

  1. 이 때문에 많은 경우 P2P 게임을 위한 릴레이 서버를 두게 되는데, 이렇게 되면 직접 통신이라는 P2P 의 장점이 사라지며 오히려 상황이 나빠집니다. 서버가 많은 릴레이 트래픽을 감수해야된다는 문제도 있을 뿐더러, 클라 입장에서도 더 큰 딜레이가 생길 수 있습니다. 예를 들어, 클라1, 2가 있고, 클라1의 입력을 받아서 판정을 하고 이를 클라1, 2가 받아보는 경우를 가정해보겠습니다. 1) 클라이언트-서버 구조에서는, 판정 로직이 서버에 있습니다. 따라서 클라1->서버 (판정) -> 클라1, 2 에 결과 전송 이렇게 2 번 왔다갔다하면 끝납니다. 2) 릴레이를 쓰는 P2P 의 경우는, 리슨 서버가 클라2 에 있는 경우, 클라1 -> 릴레이서버 -> 클라2 (판정) -> 릴레이서버 -> 클라1 이렇게 4번 왔다갔다 하는 상황이 발생합니다. 속도 때문에 P2P 를 선택한건데 오히려 더 오래 걸리는 경우가 발생할 수 있는 겁니다.

  2. 모바일 환경에서는 클라가 네트워크에 붙었다가 떨어지는 경우가 많아서 리슨 서버 역할을 맡긴 클라의 안정적인 동작을 보장하기 어렵습니다. 이를 막으려면 리슨 서버 역할의 클라의 스테이트를 복제하는 (replication) 것이 필요한데, 이는 네트워크 안정성이 보장되지 않는 모바일에서는 구현하기 매우힙듭니다. 그 때문에 결국은 리슨 서버 역할을 하던 클라가 빠지게 되면 현실적으로 그 게임은 취소시킬 수 밖에 없습니다.

  3. 리슨 역할을 하는 클라에는 과도한 트래픽이 집중됩니다. 이동통신의 경우 종량제 과금이라서, 사용자가 선택하지도 않았는데 리슨 서버로 선택되게 되면 과도한 요금이 부과될 수 있습니다. 그리고 트래픽을 많이 쓰는 게임이라고 판단되면 사용자들이 꺼리게 됩니다.

  4. 리슨 서버 역할을 하는 클라에서 해킹이 쉽게 됩니다. 판정 로직이 있는 클라가 해커 손에 있기 때문이기도 하지만, 그것보다 훨씬 간단하게 리슨 서버 쪽에서 네트워크를 잠시 끊는 것만으로도 그 게임을 이기는 것이 가능합니다. 모바일 네트워크가 불안정하다보니 패킷이 늦게 오는 상황을 어느 정도 가정할 수 밖에 없는데, 그게 정말 패킷이 늦게 오는 건지, 아니면 리슨 서버가 일부러 패킷을 안 받는 상황으로 만든건지 판단하기 힘듭니다 (예를 들어 집에서 WiFi 로 붙은 클라가 리슨 서버가 되는 경우 공유기의 인터넷 선을 잠시 뽑기만 해도 리슨 서버는 다른 클라들이 모두 멎은 상태에서 혼자 공격을 하고 게임을 이길 수 있습니다)

이런 현실적인 이유 때문에 저희는 모바일 환경에서 P2P 방식으로 게임을 구현하는 것은 비효율적이라고 생각하고, 아이펀 엔진이 모바일 게임용으로 사용되는 동안에는 P2P 를 지원할 계획이 없습니다.

참고로 아이펀 엔진을 사용하여 개발한 게임 중에는 빠른 동기화가 필요한 FPS 게임도 있는데, 이 게임도 클라이언트-서버 방식으로 구현하여 안정적으로 서비스 ... (more)

edit flag offensive delete link more

Comments

Answer by fatmoon · 2016-03-03 AM 10:15

안녕하세요 스마트조이입니다. 빠른답변 감사합니다. 수고하세요

inkeun.kim gravatar imageinkeun.kim ( 2016-11-30 16:59:36 +0900 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 2016-11-30 16:59:10 +0900

Seen: 85 times

Last updated: Nov 30 '16