9. 게임 개발
• 게임 개발? 프로그래밍?
• 게임 개발
• 기획 + 사운드 + 그래픽 + 시네마 + 프로그래밍 등
• 프로그래밍 = 여러분이 생각하는 그것
9/37
10. 게임 개발
• 그래도 프로그래머가 게임 개발을 많이 한다.
• 촬영기기만 다룰 줄 알면 어떻게든 영화는 나온다.
• 그러나, 어벤져스는 못 만든다.
10/37
11. 게임 프로그래밍
• 게임 서버
• Windows 리눅스 + Windows
• Visual C++ 오픈소스(Java 등) + Visual C++
• SQL Server, Oracle NoSQL + 오픈소스DB
• 게임 클라이언트
• Windows
• 게임엔진: Unity, Unreal, CryENGINE, …
• 모바일 게임
• Native 로 개발 Unity, Unreal
• Stateless 접속 Stateful 접속
11/37
12. 게임 프로그래밍
• 만드는 것
• World 서버, Lobby 서버, 클라이언트, 게임 빌더 등
• 알아야 될 것
• 수학, 물리, 자료구조, 알고리즘, 네트워크,
• 인공지능, 사운드, 그래픽 등등등
• C/C++, Java, C#, JavaScript, Bash Script
• DB, NoSQL, 오픈소스
12/37
13. 게임 프로그래밍
• 맡은 분야만 잘 알고, 나머지는 대충 알아도 됩니다.
• 근데, 이건 모든 분야가 그래요.
13/37
14. 게임 외 프로그래밍
• 백오피스 : 로그 수집/분석, 빅데이터, 리포트
• 플랫폼 : 계정, 인증, 결재
• 웹 : CMS, Shop , 커뮤니티
• 시스템 관제 : 모니터링, 클라우드
• 보안과 모바일은 기본
• 글로벌과 클라우드는 기본 옵션
• 유료 프로그램에서 오픈소스로 바뀌는 추세
14/37
16. 빅데이터란?
빅 데이터란 기존 데이터베이스 관리도구로 데이
터를 수집, 저장, 관리, 분석할 수 있는 역량을 넘어
서는 대량의 정형 또는 비정형 데이터 집합 및 이
러한 데이터로부터 가치를 추출하고 결과를 분석
하는 기술을 의미한다. (wikipedia)
… 뭐래?
16/37
17. 개발자 입장에서 빅데이터
• Hadoop와 Spark. 그리고 각각의 Echo System
• Echo System (생태계) : 메인 프로그램를 풍족하게 해
주는 확장 프로그램 (이라지만 사실은 빌붙)
• 대부분 Java, Scalar로 구현
• 프로그래밍과 통계 사이 R
• 통계 프로그래밍을 위한 프리 소프트웨어
• Hadoop에서 정제된 데이터 기반으로 분석/모델링
• 빅데이터로 보기에는 …
17/37
18. 어떻게 대용량을 처리하나
• Divide-and-Conquer
• Merge Sort, Quick Sort 같은 방식
• 큰 일(Job)을 작은 일(Task) 여러 개로 나누어서 처리
• 문제의 단순화
• Google 논문
• Google File System(GFS) : 분산 파일 시스템
• Google MapReduce(GMR) : 분산 처리 시스템
• 논문 필독!
• Hadoop : GFS, GMR 클론
18/37
19. 분산 파일 시스템(DFS)
• 하나의 성능 좋은 큰 통합 HDD가 필요했음
• 여러 대의 컴퓨터에 나누어 저장하니 됨
• 장애 문제가 있어 복제 지원
• HDFS(Hadoop Distributed File System)가 있음
• GFS는 비공개
19/37
20. 분산 처리 시스템(MR)
• 분산 저장하고 보니, 분산 처리가 가능해 보임
• 각 컴퓨터가 자신에게 저장된 파일을 처리 (Map)
• 결과를 Merge(Sort) 하면 됨 (Reduce)
• HMR(Hadoop MapReduce)이 있음
• GMR은 비공개
아까 그 놈들
20/37
21. Hadoop 구성
• 분산 파일 시스템
• NameNode – 파일 목록/블록 관리. Write/Read 스케줄링
• DataNode – 데이터 블록 저장
• 분산 처리 시스템
• JobTracker - Job 목록. Task로 분할. Task 스케줄링
• TaskTracker - Task 실행
• HDD 속도보다 네트워크 속도가 문제
• 기억 안해도 되고, 기억도 안될테니 넘어갑니다.
21/37
22. 무엇을 하는가?
“대용량 비정형 데이터에서 유의미한 데이터 도출”(헉!)
• 데이터 분석/정제
• 직접 할 수도 있으나 효율성이 떨어짐
• 정제하여 R이나 Excel에서 사용
• DB 처럼 사용 : SQL을 MR로 자동 변환
• Transaction 안됨
• 보고서 생성
• 데이터 백업
• 단기~중기 데이터 보관
• 초단기(Real-time)는 메모리DB
• 장기 보관은 DAT(Tape)
22/37
23. 그럼 개발자는 무엇을?
• Hadoop 기반의 시스템 설계/개발/구축
• HMR 프로그래밍
• Hadoop 일부 구조 개선 (회사 상황에 맞게)
• Hadoop 응용 프로그램
• 그리고, 아름다운 디버깅 …
• 분산 처리 환경
• 오픈소스
23/37
24. 예제
• Word Count
• 1단어가 10TB이고, 읽는데 1분 걸린다고 합시다.
word count
jacobs 5
by 3
marc 6
for 2
in 1
collaboration 1
with 1
19분
24/37
25. 예제
word count
jacobs 2
by 1
marc 1
for 1
word count
marc 2
by 1
jacobs 1
in 1
collaboration 1
with 1
word count
marc 3
jacobs 2
for 1
by 1
word count
jacobs 5
by 3
marc 6
for 2
in 1
collaboration 1
with 1
5분
7분
7분
+@
25/37
26. NC는 이걸로 뭘 하지?
• 게임(리니지,아이온,B&S 등) 데이터 저장 및 분석
• 약 3PB = 3,072 TB = 3,145,728 GB
• Write : 수십~수백억 레코드, TB 단위
• 위험 탐지 : 버그 탐지, 오토 잡기, 작업장 감지
• 고객 응대 : “템이 사라졌어요. 복구해주세요.”
• 보고서 : 직책 높은 분들은 보고서만 봄
26/37
27. 현업 예제 #1
• 버그 탐지
• 평상시와 “많이” 다른 패턴
• 돈/템 복사
• 레어몹 무한 사냥
27/37
33. 어떻게 하는가?
• Java로 MapReduce 프로그램 작성
• 최근에는 스크립트 언어(hive, pig 등)로 작성
• MR로 정제된 데이터를 R로 분석/모델링
• 회귀분석, 자기 상관 분석, 네트워크 분석, 그래프 클러스
터링, …
• 도메인(게임)과 데이터에 대한 깊은 이해 필요
MRBigData
정제된
데이터
R or Excel
자주
가끔
33/37
34. 아까 잠시 언급한 Spark은?
• Hadoop은 Disk 기반의 분산 처리
• Spark은 Memory 기반의 분산 처리
• RAM을 ROM 처럼 사용!
• 최근 대세 타고 있음
34/37