[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버Heungsub Lee
NDC14에서 발표한 "[야생의 땅: 듀랑고] 서버 아키텍처" 세션의 슬라이드입니다.
슬라이드에 설명이 많지 않은데, 디스이즈게임에서 발표 내용을 잘 정리해주었습니다. 기사도 함께 보시면 좋을 것 같습니다.
http://www.thisisgame.com/webzine/news/nboard/4/?n=54955
멀티플레이어 게임을 서비스하는 데 필요한 게임 장르별 백엔드 아키텍처에 대한 설명해 드립니다. 기본적인 게임의 상태 동기화 개념과 서버 구성에 관한 이야기, 게임 클라이언트 엔진(Unity, Lumberyard, Unreal Engine 등)에서 제공하는 복제 프레임워크를 통하여 손쉽게 게임 서버를 만드는 방법에 대한 내용을 다룹니다. 또한, 이렇게 만들어진 게임 서버를 Amazon GameLift라는 클라우드 서비스를 통해 DevOps형태의 비용 효율적으로 서비스하는 방법에 대해 소개합니다.
이 발표는 [야생의 땅: 듀랑고]의 지형 배포 시스템과 생태계 시뮬레이션 자동화 시스템에 대한 이야기를 다룹니다. 듀랑고의 각 섬은 크기와 지형, 기후 조건이 다양하고 섬의 개수가 많아서 수동으로 관리하는 것은 사실상 불가능합니다. 몇번의 사내 테스트와 베타 테스트를 거치면서 이러한 문제를 해결해주는 자동화된 도구의 필요성이 절실해졌고, 작년에 NDC에서 발표했던 생태계 시뮬레이터와 Docker, 그리고 아마존 웹서비스(AWS)를 이용하여 수많은 섬들을 자동으로 생성하고 관리하는 자동화 시스템을 구축하게 되었습니다. 그 과정에서 했던 고민들, 기존의 애플리케이션을 "Dockerizing" 했던 경험, AWS의 각 서비스들을 적절히 활용했던 이야기, AWS의 각 지역별 요금이 상이하다는 점을 이용해서 비용을 절감한 사례, 그리고 자동화 시스템의 문제점과 앞으로의 방향에 대해서 이야기 할 계획입니다.
넥슨코리아 사내 발표자료로 왓 스튜디오에서 파이썬으로 《야생의 땅: 듀랑고》 서버를 비롯한 여러가지 도구를 만든 경험을 공유합니다.
- 게임서버와 각종 툴, 테스트/빌드/배포 시스템을 만들 때 사용한 재료
- 파이썬 코드 품질 개선, 디버깅, 프로파일링, 최적화
- 파이썬 오픈소스 생태계와 왓 스튜디오가 하는 오픈소스 활동
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버Heungsub Lee
NDC14에서 발표한 "[야생의 땅: 듀랑고] 서버 아키텍처" 세션의 슬라이드입니다.
슬라이드에 설명이 많지 않은데, 디스이즈게임에서 발표 내용을 잘 정리해주었습니다. 기사도 함께 보시면 좋을 것 같습니다.
http://www.thisisgame.com/webzine/news/nboard/4/?n=54955
멀티플레이어 게임을 서비스하는 데 필요한 게임 장르별 백엔드 아키텍처에 대한 설명해 드립니다. 기본적인 게임의 상태 동기화 개념과 서버 구성에 관한 이야기, 게임 클라이언트 엔진(Unity, Lumberyard, Unreal Engine 등)에서 제공하는 복제 프레임워크를 통하여 손쉽게 게임 서버를 만드는 방법에 대한 내용을 다룹니다. 또한, 이렇게 만들어진 게임 서버를 Amazon GameLift라는 클라우드 서비스를 통해 DevOps형태의 비용 효율적으로 서비스하는 방법에 대해 소개합니다.
이 발표는 [야생의 땅: 듀랑고]의 지형 배포 시스템과 생태계 시뮬레이션 자동화 시스템에 대한 이야기를 다룹니다. 듀랑고의 각 섬은 크기와 지형, 기후 조건이 다양하고 섬의 개수가 많아서 수동으로 관리하는 것은 사실상 불가능합니다. 몇번의 사내 테스트와 베타 테스트를 거치면서 이러한 문제를 해결해주는 자동화된 도구의 필요성이 절실해졌고, 작년에 NDC에서 발표했던 생태계 시뮬레이터와 Docker, 그리고 아마존 웹서비스(AWS)를 이용하여 수많은 섬들을 자동으로 생성하고 관리하는 자동화 시스템을 구축하게 되었습니다. 그 과정에서 했던 고민들, 기존의 애플리케이션을 "Dockerizing" 했던 경험, AWS의 각 서비스들을 적절히 활용했던 이야기, AWS의 각 지역별 요금이 상이하다는 점을 이용해서 비용을 절감한 사례, 그리고 자동화 시스템의 문제점과 앞으로의 방향에 대해서 이야기 할 계획입니다.
넥슨코리아 사내 발표자료로 왓 스튜디오에서 파이썬으로 《야생의 땅: 듀랑고》 서버를 비롯한 여러가지 도구를 만든 경험을 공유합니다.
- 게임서버와 각종 툴, 테스트/빌드/배포 시스템을 만들 때 사용한 재료
- 파이썬 코드 품질 개선, 디버깅, 프로파일링, 최적화
- 파이썬 오픈소스 생태계와 왓 스튜디오가 하는 오픈소스 활동
플루토미디어 주최 "UX 월드 2017" 강연자료.
1. 프로토타이핑을 하는 이유
- 인터랙션 디자인
- Lean UX 프로세스
- 프로토타이핑 프로세스와 기대효과
2. 프로토타입 툴의 트랜드
- 프로토타입 툴의 종류
- 프로토타입 툴의 선택 기준
- 프로토타입 제작 원칙
3. 카카오 UX팀의 프로토타입 제작 사례
- Piccoma : 카카오재팬. 신규 서비스 프로토타입.
- ZERO+ : 인터랙션 라이브러리(인하우스용).
- IX Watch : 아이디어 발산을 위한 컨셉 스마트워치.
3. 메타버스 서비스에 Android 개발자가 할 일이 있나요?
발표 내용
• ZEPETO를 개발하는 모바일 개발자가 받는 오해
• ZEPETO Android 구성
• SAA와 Jetpack Navigation Component
• 우리가 업무하는 방식
• 오픈소스 Antonio
4.
5.
6. 모바일 개발자가 할 일이
많지 않지 않아?
ZEPETO를 개발하는
모바일 개발자가 받는 오해
24. Navigation Graph 사용
Fragment 간의 목적지를 코드가 아닌 Tool
에서 간단히 생성하고 편집
Fragment 간의 경로를 쉽게 파악할 수 있는
장점
Deeplink를 손쉽게 구현할 수 있고, 화면과
매칭가능
Animation 전환에도 용이
구글 Guide에서는..
27. Navigation Graph 사용
계속 불어나는 Graph를 보면서,,
코드 없이 Tool을 통한 Action의 연결 쉽지 않다.
Direction이 너무 많아져서 Flow 관계가 전혀 눈에 들어오지 않는다.
UI 상에서 찾기란 거의 불가능
Unity나 외부 스킴을 통해 일부 화면으로 바로 이동하는 것이 필요하다.
navArg 생성을 위해선 빌드가 필요했다.(Android Studio 특정버전 이하)
28. Navigation Graph 사용
현재 사용하는 방식
Navigation Graph의 기능을 사용하지 않고, Activity 정의하는 Manifest와 같이 정의하
는 용도로만 사용
Action, Global Action 사용X
Animation 정의X
Argument 정의는 포함하기
29. Navigation Graph 사용
현재 사용하는 방식
Fragment간 이동은 NavController에서 바로 Destination Id를 통해 이동하는
navigate() 사용
데이터는 Bundle로 포함
전환 애니메이션이 필요한 경우, navOptions 추가
30. Dialog 남는 이슈
일반 Activity 구조의 경우, 화면 전환시 해당
Activity와 함께 Dialog가 함께 종료
Single Activity의 Dialog는 내부 Fragment 전
환시에도 유지
45. Zepeto에서의 Scheme 처리
Navigation Component에서의
명시/암시적 deeplink 수행
앱이 종료된 상태에서 Scheme을 받아 스
플레시화면에서 인증과정을 거치고,
Scheme에 정의된 페이지로 랜딩
특정 화면에서는 스킴처리가 무시되어야 함
Scheme에 따라 복수개의 Fragment를
스텍에 쌓는 구성 필요
Scheme 실행 전 유저상태 체크 필요 (제
재 사용자 등)
Navigation Deeplink
사용불가
46. 앱이 종료된 상태에서 Scheme을 받아 스플레이에서
인증과정을 거치고, Scheme에 정의된 페이지로 랜딩
-> 스킴 해석 이후 lazy하게 navigation 진행
특정 화면에서는 스킴처리가 무시되어야 함
-> 스킴 해석단계에서 현재의 화면 파악
Scheme에 따라 여러개의 Fragment를 스텍에 쌓
는 구성 필요
-> 스킴 해석후 여러번의 navigate 호출
Scheme 실행 전 유저상태 체크 필요 (제재 사용자 등)
-> 스킴 해석단계에서 유저 상태 체크 필요
47. Global Service 에피소드
• Hwawei, Xiaomi, Vivo, Oppo, Realme, ZTE, Coolpad, Amazon, ChromeBook
• Google Play Service를 사용하지 못하는 나라에 서비스 하는 방법
• 공신폰의 비밀 (Samsung J2 Pro)
• 급한 기기는 용산에서 퀵서비스로
48. View State 추가 처리
커스텀뷰 구현시 onSaveInstanceState, onRestoreInstanceState 고려 해서 작업
뷰모델을 통한 뷰 상태 유지