[IGC 2016] 아이펀팩토리 문대경 CEO 강연 현장 공개!

안녕하세요, 아이펀팩토리 사업팀입니다^^

지난 10월 6일 진행된 제 2회 IGC(INVEN Game Conference)에 아이펀팩토리 문대경 CEO 강연 현장 공개합니다!!

많은 분들이 관심 갖고 강연장을 채워주셔서 뜨거운 열기를 느낄 수 있었습니다!

감사합니다!

발표자료는 아래 링크를 통해서 보실 수 있습니다.^^

강연제목 : PC와 모바일에서의 P2P 게임 구현에서의 차이점 비교

발표자 : 아이펀팩토리 문대경 CEO

발표자료 보러 가기 : http://www.slideshare.net/iFunFactory/pc-p2p

img_1871_%ec%9a%a9%eb%9f%89%ec%88%98%ec%a0%95
▲ 네오위즈 1층 강연장 가득찬 열기!!!

img_1872_%ec%9a%a9%eb%9f%89%ec%88%98%ec%a0%95
▲ 왕년에 CD/DVD 구워보신 분 손!!

img_1880_%ec%9a%a9%eb%9f%89%ec%88%98%ec%a0%95
▲ 발표중이신 아이펀팩토리 문대경 대표님!

img_1903_%ec%9a%a9%eb%9f%89%ec%88%98%ec%a0%95
▲ 강연 참석자분들의 엄청난 집중력이 느껴지네요

img_1907_%ec%9a%a9%eb%9f%89%ec%88%98%ec%a0%95
▲ 전체 사용자 풀에서 어떻게 통신 대상을 찾아낼까요?

img_1918_%ec%9a%a9%eb%9f%89%ec%88%98%ec%a0%95
▲ 각 망이 가지고 있는 특징 비교!

[IGC 2016] 아이펀팩토리 문대경 CEO 강연을 놓치지 마세요!

안녕하세요, 아이펀팩토리 사업팀입니다!

이번 제 2회 인벤 게임 컨퍼런스에 ‘아이펀팩토리 문대경 CEO’강연이 있습니다!

강연에 오시는 분들에게는 선착순 서프라이즈 기념품이 준비되어 있사오니 많은 참여 부탁 드립니다^^

IGC 대표님 강연 홍보 이미지2.jpg

 

게임 서버 – 클라이언트 안전하게 통신하기

상황 요약

게임 서버와 클라이언트 사이의 통신을 누가 엿보거나 수정할 수 있다면 어떤 일이 생길까? 특히 게임 서버와 클라이언트 중간에 끼어들 수 있다면 여려가지 시도를 해볼 수 있다. 예를 들어,

  • 클라이언트의 로그인 메시지를 가로채서 대신 로그인하거나
  • 클라이언트가 보낸 결제 토큰을 가로챈다거나
  • 해당 유저인척 다른 유저에게 메시지를 보낸다거나 (혹은 보내는 메시지를 엉뚱하게 위조하거나) 같은 일을 할 수도 있다.

어떻게 하면 중간 공격자가 있어도 열어볼 수 없는 메시지를 보낼까? (feat. 국정원)

예를 들어, 엄청난 인기를 끌고 있는 게임에서 딱 하나 존재하는 아이템을 가지고 있는 유저가 있다고 치자. 그리고 국정원 직원 한 명이 이 아이템이 너무 가지고 싶어서 중간에 도청+조작을 해서 뺏어가려는 상황이라고 치자. 국정원에선 통신사 장비를 감청할 수 있으니 중간에 끼어들어서 로그인 메시지를 가로채려는 상황이라고 해보면 어떻게 하면 이 아이템을 지킬 수 있을까?

일반적으로 다음과 같은 처리를 한다:

  1. 서버와 클라이언트 양쪽에서만 알고 있는 공유 비밀 을 만들고
  2. 공유 비밀 에서 암호화 키를 생성하고
  3. 이 암호화 키로 암호화 알고리즘을 적용한다.

중간에 국정원 직원이 듣고 있는 상황에서, 어떻게 하면 이 공유 비밀 을 만들까?

디피 헬만 키 교환

%ec%bb%ac%eb%9f%bc-%ec%9d%b4%eb%af%b8%ec%a7%801

여기서 디피-헬만 키 교환 알고리즘 을 쓴다.

  1. 양쪽에서 미리 공통 염료를 정한다. (여기선 노란색)
  2. 각자 비밀 염료를 한가지씩 고른다. (각각 다홍색과 청록색을 골랐다)
  3. 2에서 고른 염료를 공통 염료와 섞는다.
  4. 3에서 섞은 결과물을 서로 교환한다. (이건 누가 알아도 상관없다)
  5. 전달 받은 상대방의 혼합 염료에 자기가 고른 비밀 염료를 섞는다.
  6. 이제 결과물로 나온 색이 공유 비밀 이 된다.

여기선 색을 섞는 것으로 비유했는데, 실제 알고리즘에서는 “정수의 거듭제곱을 소수로 나눈 나머지” 를 이용한다.

상대방 확인하기

하지만 위 알고리즘엔 문제가 있다. 국정원 직원이 단순히 엿듣기만 하는게 아니라, 주고 받는 염료 통을 가로챈 뒤에 자기가 고른 거랑 바꿔치기하면 어떻게 될까? 그리고 서버에겐 자기가 클라이언트인 척, 클라이언트한텐 서버인 척 속이는게 가능해진다. 어떻게 하면 이런 문제를 피해갈까?

다음과 같은 방법이 가능하다:

  1. 믿을 수 있는 인증서 서비스 (PKI) 를 쓴다. 그리고 이걸 가지고 전자 서명한 공개키(=3에서 섞은 염료)를 보낸다.
  2. 3에서 서버가 보내는 결과물을 항상 미리 알고 있는 값으로 한다.

보통은 1을 쓰겠지만, 국정원에서 한국의 루트 인증서 서비스 제공자인 KISA에 영향력을 행사할 수 있을지 누가 아는가? [^2] 영향력을 행사 못할거라 생각하면 1을, 아니라면 2를 추천한다. 혹은 1의 방법과 유사하지만, 공인 루트 인증서 대신 서명키를 스스로 만든걸 쓰고, 미리 서명키(=공개키)를 클라이언트에 넣어두는 방법도 있다.


메시지 암호화하기

여기까지 진행했다면,

  • 상대방이 내가 연결하려는 서버임이 확실하고 (PKI 혹은 미리 전달한 공개키 이용)
  • 서로 같은 공유 비밀을 가진 상태가 되었다.

이제 공유 비밀에서 비밀키 암호화에서 쓸 비밀키를 만든다. [^3] 여기서부터는 비밀키와 몇 가지 추가 정보 (nonce 등등)으로 보통 말하는 암호화를 수행한다. HTTPS 같은 걸 쓸 때 들어봤을 3DES, RC4, AES, ChaCha20 같은 알고리즘이 여기에 속한다. [^4]

상대가 보낸 메시지가 맞는지 확인하기

국정원처럼 중간에 메시지를 들여다보고, 수정까지 할 수 있는 경우, 실제로 메시지를 수정하거나, 암호화된 메시지인척 추가로 메시지를 보내는 공격도 가능하다. 이런 경우를 어떻게 발견할까?

SSL/TLS 에서는 메시지 인증 코드 (Message Authentication Code; MAC ) 를 쓴다. 보낸 메시지에 대해서 공유 비밀을 이용해서 추가적인 인증 정보를 붙여서 보낸다.

모바일 환경에선 어떻게 해야할까? (feat. 종량제 통신 요금 & 배터리)

유선 인터넷 환경과 달리, 모바일 환경에서는 대부분 종량제 요금을 사용한다. 그래서 암호화 때문에 데이터 요금이 더 나온다면 그걸 좋아할 사람은 별로 없다. 그리고 유선 전원 대신 배터리에서 전원을 얻어와야 하기 때문에, 배터리가 빨리 닳는 것 역시 암호화로 인한 문제가 될 수 있다. 그래서 이 두 가지를 고려하면서 어떤 알고리즘이 좋을지 얘기해보겠다.

키 교환

국가 수준의 돈과 노력을 들이는 상대로부터 안전한 수준으로 권고하는 값이 있다. 대략 AES-128 정도의 보안을 제공하는 수준인데, NIST 권고안에선 다음과 같은 값을 갖는다.

  • 위에서 언급한 디피-헬만 알고리즘의 경우 적어도 3072-bit (384 bytes) 크기의 메시지를 서로 주고 받아야 한다
  • RSA 알고리즘을 이용해서 키를 보내려고 하면 역시 3072-bit 크기의 메시지가 가야한다.
  • 타원곡선 디피-헬만 알고리즘을 쓴다면 이 크기가 256-bit (32 bytes) 로 줄어든다.

그래서 요즘 모바일 환경에서는 타원곡선 디피-헬만 알고리즘 (ECDH)를 많이 쓴다.

비밀키 암호화

현재 널리 쓰이는 알고리즘 몇 가지를 Unity3D + C 라이브러리로 만들어서 테스트 해본 결과가 아래와 같다. 64 bytes 길이의 메시지를 100,000 번 반복 암호화하는데 걸린 시간을 ms 단위로 측정했다.

%ec%bb%ac%eb%9f%bc-%ec%9d%b4%eb%af%b8%ec%a7%802

구글 크롬 모바일 버전이 구글과 통신할 때 괜히 ChaCha20 을 이용하는게 아니다. 각 기기에서 AES-128 보다 ChaCha20 이 10배-30배 정도 빠르다.

메시지 인증 코드

  • 널리 쓰이는 해시 MAC (HMAC) 으로 SHA-256을 쓴다면 32 bytes 만큼 추가 태그를 붙인다.
  • AES128 에서 주로 쓰는 GCM 태그의 경우 16 bytes 만큼 추가 태그가 붙는다.
  • Poly1305 를 이용한다면 역시 16 bytes 추가 태그가 붙는다.

모든 메시지에 대해서 위 만큼 길이가 늘어나야하는 것이니 HMAC 계열은 모두 불가. (최소 32바이트) AES128-GCM 의 경우 하드웨어 가속이 없는 대부분의 모바일 기기에서 느리다. 그러면 현재로써 남은 선택지는 Poly1305 MAC을 쓰는 정도.

그래서 어떻게 해야하는가?

요약하자면,

  • ECDH 로 키를 교환한다
  • ChaCha20 으로 메시지를 암호화한다
  • Poly1305 인증 코드를 사용한다

… 이걸 실제로 만드려면 아래와 같은 기능을 구현해야한다:

  • (암호학적으로)믿을 수 있는 랜덤 함수
  • 타원곡선 연산 함수
  • ChaCha20 암호화 함수
  • Poly1305 인증 코드 계산 함수

를 만들어야 한다.

그런데 만들면서 주의를 기울여야 할 부분도 많다:

타이밍 공격

모든 함수 내에서 메시지 길이 처리와 관련된 부분이 아닌 곳에서 if 문을 쓸 수 없다. 만약 메시지 내용에 따라 if 문으로 처리하게 되면 어떤 값을 다루고 있는지 추측할 수 있게 된다. 2003년 즈음의 OpenSSL에 포함된 RSA 알고리즘이 이런 식으로 구현되어서 RSA 비밀키를 추측할 수 있는 문제가 있었다.

올해 초에도 OpenSSL에 포함된 DSA 알고리즘이 타이밍 정보를 누출해서 키를 추측할 수 있는 문제가 다시 발견되기도 했다.

잘못 만든 랜덤함수

랜덤 함수 출력값이 예측 가능하거나, 일부 랜덤 값을 보고 다음 값을 추측할 수 있는 경우 안전하지 않은 암호화 알고리즘이 많다. Debian linux 포함된 OpenSSL에 들어있는 랜덤 함수를 잘못 수정했다가 수 많은 서버들의 보안 키가 불안전하게 생성된 적이 있다. (대략 2006년 – 2008년 동안)

재사용하면 안되는 값을 재사용

타원 곡선 디지털 서명 알고리즘 (ECDSA) 의 경우 재사용하면 안되는 난수 (nonce) 값을 쓴다. 만약 이 값을 재사용하면 서명키가 어떤 값인지 알 수 있다. 2010년에 Sony가 PS3 전자 서명할 때 같은 nonce 값을 썼다가 전자 서명키 값이 공개되서 망신당했다.

이런 문제를 다 해결하면서 만들 수 있는가? 그렇지 않다.

대안: SSL/TLS를 쓴다

HTTPS 처럼 사용 시나리오가 명확하다면 SSL/TLS 를 쓰고, 위에서 언급한 알고리즘을 지정해서 쓰는 방법이 있다.

대안: libsodium

위에서 언급한 알고리즘 대다수를 좀 더 고수준 API 형태로 제공하는 라이브러리다. 대부분의 모바일 OS와 서버 환경에서 사용할 수 있다. (Windows, linux, macOS, Android, iOS 지원)

  • 랜덤 함수: OS 별로 제공하는 암호학적으로 적당한 랜덤 함수를 래핑해서 제공한다
  • 키교환: 타원 곡선 알고리즘을 제공한다. 이 알고리즘으로 ECDH 를 구현할 수 있다.
  • 암호화 + MAC: AEAD 란 분류로 해당 알고리즘을 제공한다. (AES128-GCM / ChaCha20-Poly1305)

요약

  • 충분한 시간과 악의가 있는 공격자에 대해서도 게임에서 사용하는 메시지를 읽지 못하게 막을 수 있다
  • 모바일 환경에서 쓰기에 적당한 현대적인 알고리즘들이 존재한다 (ECDH, ChaCha20, Poly1305 MAC)
  • 해당 알고리즘을 안전하게 구현한 라이브러리 널리 쓰이는 라이브러리들이 있으니 가져다 쓰자: OpenSSL, libsodium

[^1]: 중간자 공격 (MITM; man-in-the-middle-attack) 이라고 부른다.

[^2]: KISA Root CA 같은 한국의 루트 인증서 제공자가 있다. 국정원 같은 국가 기관이 여기에 영향력을 행사 할 수 있다고 상상하는 사람은 이 곳을 신뢰하지 않는 루트 인증서로 처리하는게 좋을 것이다.

[^3]: Key Derivation Function. 랜덤한 여러 바이트를 가지고 특정 길이의 키, nonce 등을 생성하기 위해 쓴다.

[^4]: 미국 국립 표준기술연구소 (NIST) 에서는 3DES 대신 AES를 사용할 것을 권고하고 있다. TLS에 대한 표준안 갱신판인 RFC 7465에서 RC4 알고리즘 사용을 금지하고 있다.

아이펀팩토리 김진욱 CTO

[인벤기고컬럼 5] 냅스터 부터 P2P까지, PC와 모바일의 클라이언트-서버 모델

P2P vs. 클라이언트-서버 모델 Part 2

지난 칼럼에서는 게임 서비스 구성을 위한 네트워크 방식 중에 서버-클라이언트 방식에 대해 살펴봤다. 이 방식은 중앙 집중식이기 때문에 “중심”에 해당하는 서버와 서버 네트워크에 과부하를 유발할 수 있지만, 구현 방법이 직관적이고 간단하다는 장점 때문에 게임뿐만 아니라 네트워크 프로그래밍에 보편적으로 많이 사용되는 방식이라고 했다. 이번 회에서는 서버-클라이언트 방식과 더불어 많이 사용되는 방식 중 하나인 P2P 방식에 대해서 살펴보도록 하자. 그러기에 앞서 파일 공유에 많이 사용되던 P2P가 어떤 방식으로 동작했으며, 그게 어떻게 해서 게임 서비스 환경에 도입되어 사용되게 되었는지 살펴볼 필요가 있다.

요즘은 음악이나 비디오 같은 멀티미디어가 소유보다 소비의 관점으로 인식되는 것 같다. MP3 나 영화 파일을 내려받아서 소유하기보다는 벅스나 멜론, IPTV 혹은 YouTube 같은 스트리밍 서비스를 이용하는 경우가 더 일반적인 게 되었다. 이는 모바일 디바이스와 모바일 네트워크의 비약적 발전 때문에 파일을 복사하는 것이 귀찮아진 것도 있고, 즉각적인 것을 선호하는 사회 변화의 속도와 스트리밍 방식의 실시간적 편리함 때문이기도 하고, 팀 과제에 참여 안 한 선배 이름을 빼겠다는 음료 광고 및 그 광고의 “그런데 그것이 실제로 일어났습니다” 일화에서 보듯 저작권에 대한 사회 전반적 인식의 성숙 때문이기도 한 것 같다.

그러나 몇 년 전까지만 해도 멀티미디어 파일에 대한 저작권 인식은 지금보다 훨씬 흐릿해서 어둠의 경로를 통한 불법 다운로드는 굉장히 공공연한 일이었다. 심지어 습관적으로 스마트폰을 들여다보는 것처럼 인터넷이나 CD/DVD writer가 놀고 있으면 초조함을 느껴서 열심히 다운로드 받고 구워놓는 사람들도 많았다. (비록 그때 구워 놓은 CD/DVD 중에 대부분은 그 이후로 열어보지도 않았지만….) 그리고 그런 일이 가능했던 것은 수많은 파일 공유 프로그램 덕이었다. 그 중 가장 중요했던 프로그램이 냅스터다.

.

냅스터 (Napster)

파일 공유 프로그램의 역사에서 냅스터를 빼놓고 이야기할 수는 없다. 냅스터는 1999년에 서비스되기 시작되어, 편리한 음악 파일 검색 기능으로 급속도로 확산하였다가, 메탈리카와 닥터 드레 (헤드폰의 그 닥터 드레가 맞다) 그리고 미국 음반 산업 협회 (RIAA) 등이 제기한 저작권법 위반 소송으로 2001년 서비스를 내리게 되었다. (국내에서는 “소리바다” 라는 유사한 음악 공유 프로그램이 2000년도에 큰 인기를 얻었다.)

i12793884000.jpg

인벤기고컬럼 본문 더보기>

[게임스컴 2016] 유럽 최대 규모! 글로벌 게임 전시회 게임스컴 2016 현장공개!

유럽 최대 규모! 글로벌 게임 전시회 게임스컴 2016 현장공개!
세계 3대 게임 전시회 중 하나로 손꼽히는 게임스컴 2016에 아이펀팩토리가 한국공동관 전시부스로 참여하였습니다. 유럽 최대 규모를 자랑하는 글로벌 게임쇼, 게임스컴의 이야기 지금부터 시작합니다.

참여기업 877개 / 방문객 국적 97개국 / 총 방문객 수 345,000명

역대 최고의 기록을 갱신한 게임스컴 2016. 차이나 조이만큼 엄청난 인파로 시작부터 압도된 게임스컴 쾰른메세 행사장의 모습입니다. 입구부터 엄청난 이번 게임스컴은 테러이슈로 인해 보안이 강화되어 모든 방문객들의 짐을 전수 조사를 했습니다. 철저한 조사를 통과하고 바글바글한 인파에 밀려 걷고 싶지 않아도 걸을 수 밖에 없는 입장 대기 줄을 겨우 거쳐 들어간 행사장에는 엄청난 규모의 시연장과 사람들을 볼 수 있었습니다.

1-1
▲ 바글바글 누가 누가 더 많을까요? 대결 게임스컴 vs. 차이나조이

 

먼저 소개할 한국공동관으로 참여한 아이펀팩토리의 전시 부스의 모습입니다. 통역관님이 자료를 보고 계시네요. 이번 게임스컴에서는 ‘기존 싱글플레이게임에 쉽게 멀티플레이를 적용할 수 있는 아이펀 엔진’을 메인으로 부스 포스터를 강조했습니다. 아이펀 엔진을 사용하시면 기존 싱글플레이 게임에 쉽게 멀티 플레이를 추가할 수 있어요!(오오 굿!!) 아이펀 엔진이 더 궁금하신 분들은 아이펀팩토리 홈페이지로 오세요!(아이펀팩토리 홈페이지 가기)
2
▲ 서버개발 아이펀 엔진으로 쉽고 빠르게 개발하세요!

첫 줄부터 아이펀팩토리 홍보를 거하게 했으니 이제 본론으로 들어가겠습니다.

우선 먼저 세계 공동관을 소개하겠습니다. 올해도 게임스컴 2016 에는 다양한 세계 기업의 참가로 여러 나라의 트렌트를 한 눈에 볼 수 있었어요. 아이펀팩토리가 참가한 한국공동관과 더불어 캐나다, 이탈리아, 터키, 프랑스 그리고 사진엔 담지 못했지만 싱가폴, 타이완, 스위스 등 등 다양한 국가의 공동관들이 참여하여 비즈니스 열기가 대단했습니다. (그 중에서도 한국공동관이 가장 빛났다는 건 안 비밀. 우리나라 좋은 나라!)
3
▲ 세계 여러 국가의 참여로 더욱더 열기가 더해진 B2B 비즈니스

 

공동관을 둘러보고 잠시 바람을 쐬러 나온 게임스컴 행사장 밖에서는 반가운 게임. 컴투스의 ‘서머너즈 워’를 볼 수 있었습니다. 국내에서도 엄청난 인기를 끌었던 ‘서머너즈 워’는 국내뿐만 아니라 북미와 미국에서도 큰 인기를 끌어 프랑스, 포르투갈, 벨기에 등 15개 주요 유럽권 국가에서도 매출 1위를 기록했다고 합니다. 장수 게임이라는 칭호답게 그 열기가 글로벌에서도 식을 줄을 모르네요. 다양한 게임이 수 없이 출시되는 치열한 게임 산업에서 2주년을 맞이한 그 인기 비결은 뭘까요? 아무래도 고객과의 끊임없는 커뮤니케이션을 통해 계속해서 업데이트를 하고 캐릭터 밸런스 조절을 잘해서가 아닐까 하는 생각이 드네요. 어쨌든 자랑스러운 한국 모바일 게임입니다! (제 동생도 2년째 손에서 놓지 못하는 게임이에요.)
4
▲ 장수게임의 위엄. 글로벌 애국게임 컴투스 ‘서머너즈 워’

 

[유럽에도 유효한 VR 열풍]
이번 게임스컴 역시 VR 관련 제품들이 강세를 보였는데요, 현재 VR 시장을 주도하고 있는 오큘러스의 부스입니다. 오큘러스에서는 대규모 시연 공간을 마련해 다양한 VR 게임을 즐길 수 있었습니다. 부스 곳곳에는 HTC 바이브(Vive) 등 VR을 활용한 다양한 게임들이 선보여 엄청난 대기 끝에 체험을 해볼 수 있었습니다.
5
▲ 이건 꼭 해봐야 돼! 이곳은 VR의 천국 오큘러스 부스

 

스퀘어 에닉스에서는 대표작 파이널판타지 XV(FF15)를 중심으로 부스를 선보였는데요, 영상만 보여줬을 뿐인데 구름처럼 관객들을 불러온 스퀘어 에닉스 최고 기대작 파이널판타지 XV 영상입니다. 이번 스퀘어 에닉스 부스에서는 유저들을 위해 많은 것을 준비했더라구요. 커다란 시연존과 함께 시연대를 대기줄에서도 볼 수 있게 계단식으로 만들어서 기다리는 동안 지루함을 덜 수 있었고(굉장히 센스있죠?) 포토존에는 멋진 인증샷을 남길 수 있게 검과 왕좌를 배치해놨습니다. 다만 대기시간이 너무 길었어요. 각각 45분이나 시연을 즐길 수 있는 대신 어쩔 수 없는 대기였죠. 게임 컨셉을 그대로 가져온 카페테리아도 눈에 띄었습니다.
6
▲ 이것이야 말로 파이널 판타지!

 

분명 게임박람회이지만 코믹월드가 떠오를 정도로 많은 코스플레이어를 볼 수 있었어요.
7
▲ 안녕? 스크린에서 방금 나온 레고씨와 마리오씨

 

제가 가장 좋아하는 히어로, 배트맨이 주인공인 워너스브라더스사의 ‘배트맨: 아캄시티(Batman: Arkham City)VR’ 입니다. 이번 ‘배트맨 아캄시티’에서는 고담시의 을씨년스러운 분위기를 그대로 재현하며 할리퀸, 캣우먼, 투페이스, 조커, 펭귄맨 등 익숙한 캐릭터들을 한번에 만날 수 있었어요.(완전 종합선물세트) 게임을 하는 동안 이게 게임인지 영화 연출인지 헷갈릴 정도로 엄청난 그래픽 영상을 즐길 수 있었어요. 올해 10월 북미지역에서 출시된다니 당장 미국으로 날라가고 싶네요!
8
▲ 내가 히어로다! 워너스브라더스 부스

 

많은 유저들의 기대를 한 몸에 받고 있는 곧 출시 예정에 귀한 몸, 플레이스테이션VR 부스입니다. VR체험관에 긴 줄을 보니 유럽 게이머들도 VR에 대한 관심이 높다는 걸 한눈에 볼 수 있었어요. 저도 긴 줄을 뚫고 플레이스테이션 VR 체험에 성공했습니다. 플레이스테이션 VR을 머리에 쓰고 양손에 들고 사용할 수 있는 무브 컨트롤러가 있어 더 실감나는 가상현실을 경험할 수 있었어요. 무브와 함께 체험한 VR은 일반 VR만 사용할 때랑은 차원이 다른 리얼리티를 느낄 수 있었습니다. 저는 양손에 들고 있는 무브를 들고 도망가면서 펼치는 범죄게임 ‘더 런던 헤이스트’를 체험했는데요 우와.. 이건 정말 진짜와 구분이 가지 않을 정도로 실감나는 게임을 즐길 수 있었습니다.
9
▲ 이건 꼭 사야 돼!(하지만 비싸다…) 플레이스테이션VR 대형 체험존

 

10. 플레이스테이션
▲ 10월 출시 예정인 플레이스테이션VR과 무브 컨트롤러(출처 : THEGEAR)

 

닌텐도 부스이니만큼 전설의 포켓몬을 만나볼 수 있지 않을까 하는 기대와 함께 방문한 ‘포켓몬 GO!의 열기가 뜨거운 닌텐도 부스입니다. 닌텐도 부스는 부스 크기는 크지 않았지만 포켓몬의 인기를 증명하듯 발 디딜 틈 없이 관람객들로 가득했습니다. 행사장 곳곳에는 당장이라도 포켓볼을 던져서 잡고 싶은 피카츄 등의 포켓몬 코스프레를 한 관람객들을 볼 수 있어 마치 포켓몬스터 세계에 온 듯 했습니다.
11
▲ 전설의 포켓몬은 내꺼야! 포켓몬 GO! 의 열풍을 몰고온 닌텐도 부스

 

유비소프트 부스에서는 포아너, 스팁 등 여러 타이틀을 볼 수 있었습니다. 특히 유비소프트에서 개발한 방귀냄새나는 VR 기술로 만든 사우스파크 더 프랙쳐드 벗 홀 이라는 게임 발표 덕에 방귀 냄새(?)를 맡을 수 있는 특이한 체험을 하기 위해 부스의 줄이 길었습니다. 이번 VR 기기는 방귀냄새를 체험할 수 있도록 만들긴 했지만 나중에는 다른 냄새를 맡을 수 있게 제작하려고 한다니 앞으로의 VR 산업이 기대되네요!
12
▲ 방귀냄새VR이 궁금하다면? 유비소프트 부스로 오세요.

 

[게임스컴은 우리가 점령했다! 블리자드와 EA의 몸집 대결]
압도적인 규모의 스케일을 보여준 블리자드 부스입니다. 블리자드는 올해 최고 인기작 ‘오버워치’, ‘히어로즈오브더스톰’, ‘하스스톤’, ‘월드오브워크래프트’, ‘디아블로3’ 등의 게임을 선보였습니다. 각 게임 별 다양한 분위기의 부스로 볼거리가 가득한 모습이 인상 깊었습니다. 그 중에서도 시연 PC가 많아 게임을 여유롭게 즐길 수 있어서 관람객으로서는 정말 최고였습니다!
13
▲ 엄청난 규모를 자랑하는 블리자드 부스

 

14
▲ 게임 할 준비는 됐는가? 블리자드의 하스스톤과 월드오브 워크래프트관

 

100대도 넘는 시연 PC를 준비하여 많은 유저들을 한번에 수용한 블리자드의 시연존의 모습입니다. 게임을 기대하는 유저들을 배려한 블리자드의 센스가 느껴지네요.
15
▲ 모여라! 다같이 모여 게임 한 바퀴

 

16
▲ PC방을 점령한 블리자드 최신작 오버워치 시연대

 

좋은 건 크게 봅시다! 실제 게임 속에서 바로 나온듯한 오버워치의 주역들입니다. 사진으로 보니 미니어쳐같지만 이것은 초초초대형이라는 것!
17
▲ 피규어같지만 깜짝 놀랄만할 크기의 초대형 오버워치 캐릭터들

 

18
▲ 완전 특특대형 히어로즈오브더스톰의 ‘알라라크’ 캐릭터 동상(이것또한 실물크기)

 

블리자드 막상막하로 엄청 규모로 게임스컴에 참가한 EA부스 입니다. 한 눈에 다 들어오지 않는 규모를 담기 위해 파노라마로 촬영을 해보았습니다. EA는 부스 전체를 원형 경기장 형태로 만들어 관람객석에서 모든 중앙 무대를 바라볼 수 있는 구조로 만들어 더욱 게임 속에 들어온 느낌을 받을 수 있었어요.
19
▲ 압도적인 규모의 스케일을 담기 위해 파노라마 촬영한 EA 부스

 

먼 독일까지 왔으니 그냥 갈 순 없지 하는 생각에 하나라도 더 많은 게임을 하고자 가장 줄이 짧아 보였던 타이탄폴 2에 왔습니다. FPS에 약한 저는 허공에다가 한참 총을 쏘다 제대로 게임을 즐기지 못한 채 쓸쓸히 나와야 했습니다.
20
▲ EA에서 선보인 타이탄폴2 시연대

 

정말 최고다! 라고 말할 수 있는 피파17이 왔습니다. 실감나는 영상이 정말 멋졌어요.
21
▲ EA의 피파17

 

[이건 그냥 게임부스가 아니다. TOP다]
지금 보여드릴 부스들은 게임을 부스안에 그대로 재현한 부스들을 소개합니다. 첫 번째로 밀리터리 게임 ‘크로스아웃’의 부스입니다. 이 곳에서는 특이하게도 게임 속 전투 차량과 캐릭터들을 생생하게 볼 수 이었습니다. 최고의 포토존이죠!
22
▲ 전쟁이 일어난건 아니겠지? 밀리터리 게임 ‘크로스아웃’ 부스

 

두 번째로 소개할 곳은 2K의 마피아3 부스입니다. 오래된 미국의 극장을 연상케 하는 2K의 부스는 이번 게임스컴 최고의 부스로 선정되었습니다. 아무래도 게임 내 분위기를 가장 잘 연출한 부스 덕분이겠지요.
23
▲ 2K의 마피아3 부스

 

[지갑이 위험해!]
마지막으로 우리의 지갑을 가볍게 만드는 굿즈샵입니다. 게이머라면 절대 그냥 지나갈 수 없겠죠? 티셔츠부터 피규어, 머그컵 등 게임속 캐릭터 제품들이 가득해서 잠깐만 정신을 놓으면 지갑이 사라지는 마법을 보여주는 굿즈샵들입니다.
24
▲ 갖고 싶은 게 너무 많았던 스퀘어 에닉스 굿즈샵

 

25
▲ 판교 현대백화점보다 엄청났던 블리자드 굿즈샵

 

 

더 많은 게임스컴의 현장을 공개하려 했으나 굿즈샵에서 많은 시간을 보내는 바람에 사진을 더 찍지 못했네요. 이번 게임스컴도 게임산업의 열기를 느낄 수 있는 열정적인 유럽을 볼 수 있었습니다. 다음 행사를 기약하며 저는 이만 글을 마치겠습니다.

 

아이펀팩토리 사업팀 남자 1호

글로벌 서비스를 위한 시간 정보 관리

몇 년 전만 해도 게임 개발 시 처음부터 해외 서비스를 고려하는 경우는 드물었다. 그만큼 국내 시장이 빨리 성장하기도 했고, 해외 서비스를 위해서는 클라이언트 배포, 서버 설치를 위한 IDC 확보 등의 문제가 있었기 때문이기도 하다. 그러나 COC, 도탑전기 등의 글로벌 서비스를 통해 크게 성공하는 게임들의 등장과, 각종 마켓 및 클라우드 서비스의 활성화, 국내 시장 내의 경쟁 심화 등으로 인해 개발 시작 시점부터 글로벌 서비스를 염두에 두는 게임들이 많아지고 있다.

1
▲ 가장 성공한 글로벌 서비스 게임 중 하나인 COC
(출처 : http://clashofclans.co.kr/)

글로벌 서비스를 위해서는 언어 문제, 현지화 문제 등 고려해야 할 사항들이 많지만, 의외로 간과하는 경우가 많으면서도 대처하기 쉽지 않은 문제가 시차, 정확히 말하면 시간대와 관련된 문제이다. 단순히 클라이언트에서의 시각 표시 정도의 문제부터 각종 게임 내 이벤트의 일정 설정 문제, 운영 위탁 등의 이유로 특정 시간대에 맞춰 시간을 표시해야 하는 경우 등, 게임 내에서 시간 표시가 사용되는 경우는 적지 않다. 본 칼럼에서는 시간대를 다루는 것이 어려운 이유와 개발 시 고려해야 할 사항들을 정리하려 한다.

시간대란, 정치적이나 경제적인 이유 등으로 같은 기준으로 시간을 계산하는 지역을 말한다. 정오라는 단어의 의미를 생각한다면 태양이 가장 높이 떠 있을 때, 즉 낮 12시이겠지만, 한국의 경우 일본에 맞춰진 시간대를 사용하기 때문에 실제로는 일본 – 정확히는 일본 내의 특정 지역 – 에서 태양이 가장 높게 떠 있는 시간이 정오가 된다.

2

▲ 시간대가 다르기 때문입니다. (출처 : 나무위키 )

따라서 시각을 정확히 기록하려면 해당 시각이 어느 시간대를 기준으로 하였는지에 대한 정보가 필요하다. 매일 한 번씩 진행되는 이벤트가 있을 경우 시작 시간을 단순이 오전 9시로만 기록한다면 중국이나 동남아에서 접속하는 사용자들에게 해당 이벤트가 현지 기준으로 몇 시에 시작하는지 표시해 줄 수 없다. 최소한 9시가 한국이 속한 시간대를 기준으로 한 시각이라는 정보라도 있어야 중국 시간대와의 차이를 계산하여 보여줄 수 있다.

그렇다면 시간대에 대한 정보는 어떻게 기록해야 하는가? 우선 생각해 볼 수 있는 방법은 모든 시각 관련 정보를 기록 시, 해당 시각 산정에 사용된 시간대에 대한 정보와 함께 기록하는 것이다. 하지만 이는 한 서비스 내에서 두 개의 시각 정보를 비교 시 반드시 양쪽의 시간대 정보를 확인해야 하기에 운영 중 실수가 발생할 여지가 많고, 저장 공간이나 통신 용량도 더 차지하며 무엇보다도 귀찮다. 어차피 동일 서비스에서 사용할 거라면, 사용할 시간대 정보를 지정해 두고 모든 시각 정보를 해당 시간대 정보에 맞추는 편이 혼선을 줄일 수 있을 것이다.

그렇다면 어느 시간대를 기준으로 삼는 것이 좋을까? 이 칼럼을 읽는 독자분들은 대부분 한국에서 게임 개발을 진행하실 테니 한국 시간대를 사용하는 게 편하리라 생각하시는 분들도 있을 것이다. 하지만 대부분의 환경에서 제공되는 시간대 관련 개발 라이브러리에서는 시간대 별 시차 정보 등을 모두 UTC를 기준으로 하여 계산, 제공한다. 이러한 상황에서 한국 시간대를 사용한다면 필요한 시간대로의 변환을 위해 UTC로 변환하는 과정이 한 번 더 필요할 것이다. 요즘에는 해외 서비스 시 운영이나 이벤트 진행 등을 현지 파트너와 진행하는 경우 등 동일 서비스를 운영하더라도 둘 이상의 시간대 관리가 필요한 경우도 많아지고 있으며, 최소한 클라이언트에서 표시되는 시각은 대부분 변환이 필요한 만큼 보다 변환이 쉬운 UTC 시간대를 이용하는 것을 추천한다.

UTC로 시각을 기록 및 전송한다면, 필요에 따라 특정 시간대에 맞게 변환하는 과정도 필요하다. 그렇다면 시간대는 어떻게 관리하는 것이 좋을 지에 대해서도 알아보자. 시간대를 표시하는 가장 흔한 방법은 영국 표준시를 나타내는 시간대인 GMT 시간대와 몇 시간 차이가 나는지 기술하는 것이다. 예를 들자면 한국이 속한 시간대는 GMT+9, 미국 서부 지역이 속한 시간대는 GMT-7 로 표시한다. 하지만 이러한 시간 차이에 대한 정보만으로는 변환할 수 없는 경우가 있다.

우선 작은 문제부터 살펴보자면, 모든 시간대가 GMT와 시간 단위로 차이가 나지 않는다는 것이다. 예를 들어, 아마 게임을 서비스하려는 분은 없겠지만, 북한이 GMT+8:30 시간대를 사용한다. 이 칼럼을 작성하는 시점에, 이러한(시간 단위로 시차가 딱 떨어지지 않는) 시간대를 사용하는 지역 중 게임 서비스를 고려할 만한 시장은 별로 없기에 큰 문제는 아닐 수 있다. 하지만 시간대는 변할 수 있기 때문이 미리 고려해서 손해 볼 부분은 없을 것이다. 예를 들자면, 최근 높은 스마트폰 보급률로 주목을 받는 이란은 GMT+4:30 시간대를 사용한다.

좀 더 큰 문제는 일광절약 시간제가 적용되는 지역의 경우이다. 일 년 중 특정 기간에만 GMT와의 시차가 바뀌며, 하루 중에도 시차가 바뀐다. 일 년 중 일광절약 시간제가 적용되는 기간도 나라마다 다르다. 같은 국가 내에서 같은 시간대를 사용하더라도 특정 지방에서만 시행하는 경우도 있다. 따라서 단순히 시간 차이만을 기록해서는 정확한 변환은 불가능하다. 일광절약 시간제는 미국이나 유럽 등 글로벌 서비스 시 고려할 만한 주요 지역들에서도 사용되므로 무시하기도 어렵다.

따라서 일광적약 시간제 관련 정보를 포함하는, 별도의 시간대 표시 방식을 사용하는 것이 좋다. 이러한 용도로 널리 사용되는 시간대 표시 방법에는 크게 영문 대문자 3~4글자로 시간대를 표현하는 time zone abbreviation 과 주로 지역/도시 or 국가 형태로 시간대를 표현하는 IANA time zone, 일명 Olson time zone이 있다.

time zone abbreviation 은 다음과 같은 문제점이 있기에 권장하지 않는다. 우선 동일 지역, 동일한 시간대라도 일광절약 시간제의 적용 여부에 따라 별도의 약어가 존재하는 문제가 있다. 예를 들면 호주 중부 시간대의 경우 일광절약 시간제가 적용되는 경우에는 ACDT, 적용되지 않는 경우에는 ACST라 표시하며, 미국 서부의 시간대의 경우에는 적용 여부에 따라 PDT/PST로 표시한다. 그리고, 몇몇 시간대의 경우 분명 다른 시간대임에도 이름이 같은 경우가 있다. CST라는 시간대의 경우, Central Standard Time( 미 중부 시간대 ), CST( China Standard Time )등 4개( 일광절약 시간제를 고려하면 5개! )의 다른 시간대를 나타내는 약어이다.

IANA timezone은 위에서 언급한 대로 일반적으로 지역/도시 형태로 해당 지역에서 사용하는 시간대를 표시한다. 예를 들면 유럽 내 프랑스 파리의 시간대는 Europe/Paris, 아시아 내 싱가포르의 시간대는 Asia/Singapore 로 표시하는 식이다. 따라서 사용하려는 시간대와 일치하는 이름을 찾아서 지정해 줘야 하는 문제가 있지만 위의 abbreviation 과는 달리, 해당 지역의 일광절약 시간제 관련 정보( 연중 적용 기간, 하루 중 적용 시간 등 )를 포함하고 있기 때문에 적용 여부와 관계 없이 동일한 이름을 사용한다. 그 외에 윤초 등 시각 표시에 관련된 많은 정보들을 포함하여 관리되기 때문에 수고를 들일 만한 가치가 있다.

정리하자면 글로벌 서비스를 목표로 하는 게임에서 시간 관련 정보를 다룰 때에는
1. DB나 통신 프로토콜 내에서의 시각 표시는 UTC 를 사용을 권장
2. 변환 등을 위해 시간대를 지정할 경우에는 IANA timezone 사용을 권장
정도로 정리할 수 있겠다.

글로벌 서비스를 고려하지 않더라도 시간과 연관된 개발은 복잡하다. 특히 시각만이 아닌, 날자 요일 등을 같이 고려해야 하는 경우, 시간대가 바뀌면 날자 역시 바뀔 수 있기 때문에 더욱 더 어려운 문제가 된다. 모든 기능이 마찬가지이지만, 시간대 관련 기능은 구현 시작 시부터 고려하지 않으면 변경 비용이 매우 비싸질 수 있다. 당장은 국내 서비스만을 고려하더라도 시간과 관련된 기능 구현 시 시간대와 관련된 내용을 고려한다면 이후의 상황 변화에 좀 더 유연하게 대처할 수 있을 것이다.

아이펀팩토리 아이펀 디플로이 테크니컬 디렉터 민영기

2016 아이펀팩토리 Dev Day 시작합니다!

안녕하세요, 아이펀팩토리 사업팀입니다.

지난해에 이어 두 번째 Dev Day를 준비하였습니다. 올해도 서버 개발 관련 개발자들이 번뇌는 줄여드리고, 해결책을 제시하는 으리파!! 아이펀팩토리의 ‘2016 Dev Day’ 많은 관심과 참여 부탁 드립니다.

 

부제 : 게임 서버 개발 마무으리!!!

– 일시 : 2016년 9월 28일(수) 12:00~14:20

– 장소 : 넥슨 판교 사옥 지하 1층 교육실

– 참가비 : 무료 / 점식 식사 제공 참가자 전원 기념품 드림

– 주최 : 아이펀팩토리

– 후원 : 넥슨

– 참가 신청 : 참가신청하러 가기

– 참가 신청 기간 : 2016년 8월 24일(수)~9월 27일(화)

시간

세션

발표자

11:00~12:00(60)

참가 등록 및 점심 식사

 

12:00~12:05(05)

웰컴 스피치

문대경 대표님

12:05~12:50(’45)

Make “PONG” : 아키텍팅과 동기화 테크닉

박근환 TD

12:50~13:30(’40)

게임 운영에 필요한 로그성 데이터들에 대하여

민영기 TD

13:30~14:10(’40)

Docker 로 Linux 없이 Linux 환경에서 개발하기

김진욱 CTO

14:10~14:20(’10)

경품 추첨 및 폐회식

문대경 대표님