게임테크 2014 후기
DESCRIPTION
겡미테크 후기TRANSCRIPT
NHN NEXT손채원
1. Wwise : A Complete Game Audio Pipeline Solu-tion
2. 영웅의 군단 개발일지
3. Inside Node.js
4. 게임 서버 보안을 위한 라이센스 서버 및 패커 - Sen-tinel LDK, Envelope
5. 모바일 게임 전 BaaS/PaaS 의 구현사례 와 디자인 트레이드 오프
순서
1. WwiseGame Audio Engine
Fmod 와 같은 사운드 엔진
강연자가 가장 많이 했던 말
‘wWise 와 함께라면’
게임과 실시간 동기화 사운드 믹싱 가능
이벤트 발생에 따른 사운드 제어 가능
Reduced Programmer Independency
언리얼 엔진과 유니티에 통합 플러그인 제공
ㅋㅋ
결론은 홍보더라 !
그런데 툴은 정말로 짱짱맨이었습니다
사운드 트랙 200 개 이하의 소규모 프로젝트에 free 지원
https://www.audiokinetic.com/licensing/free-limited-commercial/
2. 영웅의 군단그들은 4 년간 뭘 하고 있었는가
그들의 의도
1. PC MMORPG, 모바일에서 즐길 순 없을까 ? - 그래서 다 옮겼다 ( 경매장 , pk 약탈 , 만렙컨텐츠 , pvp, 강화 )
2. 모바일이라서 줄 수 있는 재미를 살리자 ! - SNS 연동 , TCG 스타일의 영웅 시스템 , 아기자기한 UI
3. 엔도어즈만의 개성을 살리자 ! - 120 명 이상의 영웅 , 캐릭터들간의 분노 공유 , 재미있는 세계관
알고보니 없는 게 없는 게임이었다 .. 그리고 떠오른 것 ..
!?우 .. 우걀걀 ..
그들의 삽질
1. 게임 엔진을 바꿨다 - 겜브리오에서 유니티로
2. 플랫폼을 바꿨다
- PC 에서 모바일로 ;
PC MMORPG 로는 평범해 보이지만 모바일로는 신선하다 !?
3. 내려놓았다
- 실시간 전투
농장 타이쿤과 같은 영지 시스템
제작과 채집 : 완제품을 드랍하기로 .. 훌쩍
모바일 , 선입견에 시달리다
모바일 게임은 돈이 많이 들면 안돼 ,하루 빨리 출시해야해 ,
하나 둘 씩 퇴사
쉬운 게 하나 없었다 !
모바일 , 도약하다
직관적 UI
노 튜토리얼
페이스북과 연동
미니미니 귀욤귀욤
마케팅 , 본질만 보여주자 !
3. Node.jsFor Game Server on Web Game
Node.Js 란 ?
2009~ 자바스크립트 백엔드 플랫폼
구글의 크롬 V8 자바스크립트 엔진을 기반
이벤트 드리븐 논블럭 IO
Single Thread 기반의 Event Loop 를 기반
오 . 픈 . 소 . 스 .
대규모 요청 처리 가능 !!!
-> 최근 웹게임과 모바일 게임을 위한 서버 플랫폼으로 각광받는 중 !
Node.Js 개발 철학
1. 프론트 엔드 언어로 백 엔드도 구현하자 !
2. 퍼포먼스는 소중한 것
3. 이벤트 드리븐 논블럭 IO 로 대규모 요청을 처리하자
4. 성능이 필요할땐 C/C++ 느님의 힘을 빌리자
-> 온라인 게임 개발 철학과 묘하게 닮았다 !! 던데
게임 서버에는 어떻게 적용할 수 있나 ?
대규모 IO 바운드 요청에 완전 짱짱 적합해요 !
- 소셜 웹 게임 , 모바일 게임에 효율적
( 모든 요청은 3초 내에 . 실시간이 아니어도 됨 . 전세계에 제공됨 )
대신 실시간 MMORPG 같은 복잡한 CPU 바운드 요청이 잦으면
적합하지 않아요 . CPU 부하를 분할하지 못해요
- 우리에겐 Easy Server 가 있어요
소켓 IO 모듈에는 ..
- string base job 에 최적화되어가는 에코시스템 !
packet base job 에는 퍼포먼스가 떨어져요 ㅠ
C++ 과 바인딩이 쉬워요 ~
- 성능이 필요할 때는 언제든지
개발환경
3 년 전까지만 해도 VI 로 코딩할 정도로 열악했으나 ,
Webstorm 이 정식으로 지원해주기 시작했다 !
Visual Studio 에 애드온이 생겼다 !
오픈 소스라 에코시스템 짱짱맨 . 없는 게 없다능 .
결론 : 모바일 게임 , 웹 게임 서버 개발시 node.js 를 떠올려 보자
4. 라이선스 서버와 패커
For Game Server
라이선스 서버가 모지모지 ?
한국에 하드웨어 형태의 라이선스 서버를 두고 실제 서비스하는 서버를 일정 주기마다 갱신하는 형태
패커는 멀까염 ?
DLL 인젝션 , 리버스 엔지니어링과 같은 공격이 우려될 때 실행파일과 서버를 예쁘게 보호해주는 역할을 한다 !
열심히 들었는데 .. 이런거 비싸서 잘 안쓴대요 .. 구교수님이 ..
80% 가 홍보였다 !!
5. BaaS/PaaS && Design Tradeoff for Mobile Game
서비스와 설계
Baas/Paas 란 ?
Backend As A Serviece백엔드를 제공한다 ! 기존 서버에 드는 시간과 노력을 단축할 수 있어요
Ex ) Baas.io
Platform As A Serviece플랫폼을 제공한다 ! 데이터나 어플리케이션 사용 가능 . API 를 제공
Ex ) Windows Azure, 구글 앱 엔진 , 아이튠즈 , Force.com
서비스 설계와 Tradeoffs
서비스 특성에 맞는 설계를 하자 . 그리고 그에 따른 Tradeoffs 가 있다 ! 확장성 , 개발 시간 , 안정성 , 운영 비용 등 고려 !
1. Transport Layer
2. Stateless Server vs Stateful Server
3. Write/ Cache Policy
4. Consistency/ Isolation
등등 .
Transport Layer
HTTP
많은 수의 모바일 게임이 요기에 해당 . json xml protobuf 등 함께 사용
잘 정의된 프로토콜인 만큼 안정성이 짱짱맨 . 프레임웍과 라이브러리가 많다 !
서버 수의 확장이 쉽지만 양방향 통신이 안되고 프로토콜 자체의 오버헤드가
있다 .
리버스 엔지니어링이 쉽다 .
Custom
특정 게임에 특화시킬 수 있고 , C C# Node.js 등을 이용해 개발한다 .
커스텀 메시지 , json, protopuf, thrift 등의 메시지 전송을 한다 .
실시간 양방향 통신이 가능하다 .
리버스 엔지니어링이 비교적 어렵다 .
복잡하고 생산성이 떨어지며 , 서버 확장이 쉽지 않다
Server Logic
Stateless대부분의 웹 어플리케이션 서버 .
게임메시지를 처리하기 위해 데이터 저장소 계층에 접근해야함 .
데이터 베이스 계층이 복잡해진다 .
게임 서버 크래시에 안전하고 서버의 수평적 확장이 쉽다 .
Statefulpc 온라인 게임 서버처럼 서버에 유저 상태를 유지한다
데이터 베이스 제어가 비교적 간단하다
게임 서버간 동기화하는 프로토콜이 들어간다 .
실시간 이벤트나 서버생성 이벤트가 쉽다
서버 크래시 발생 시 해결이 복잡하고 서버 확장이 어렵다
Database
게임 특징에 따른 데이터베이스 설계를 한다 !
게임 서버는 쓰기 위주이므로 , 서버 분산과 데이터 포맷에 관한 정책을 잘 세운다 .
Case Study1. 아마존 웹 서비스
- 일반적 웹서비스 구성에 필요한 요소가 모두 있다
게임적인 요소는 모두 개발자 손 .
백엔드로 이용한다면 , 여러 빌딩 블록을 제공한다 .
Write-intensive 한 처리를 dynamo-db 에 넘겨서 좋다 .
2. Google app engine
- 구글 게임 플랫폼과 연동 . 강력한 analytic 도구 .
웹 서비스 기반 게임서버 장시간 비동기 작업 가능
언어가 파이썬 , 자바 , 고 , php 로 제한
프로그래밍 모델 (응답 방식 , 라이브러리 , 응답 시간 ) 제한
3. 구글 플레이 게임 서비스
- realtime 기반의 방에 기반한 게임 지원 . 턴 방식 게임 지원 .
메시지 기반 , 소켓 인터페이스는 안드로이드 기반 .
끝