SlideShare une entreprise Scribd logo
1  sur  61
Télécharger pour lire hors ligne
게임 프로그래밍
기초 공부법
옥찬호
강연자 소개
• 옥찬호
• 히어로 코리아 수석 엔지니어
• KAIST 전산학과 석사과정 재학
• 경북대학교 컴퓨터학부 졸업
• 페이스북 그룹 C++ Korea 대표
• 에이콘출판사 Translator
• 게임샐러드로 코드 한 줄 없이 게임 만들기 (2013)
• 유니티 Shader와 Effect 제작 (2014)
• 2D 게임 프로그래밍 (2014)
• 인디게임 제작팀 Xpecial / Mine Scroll 팀장
목차
• 학력이 낮으면 게임 회사에 들어갈 수 없을까?
• 게임 프로그래머는 수학을 배워야 할까?
• 게임 프로그래머는 어떤 일을 할까?
• 게임 프로그래머가 되려면 무엇을 공부해야 할까?
• 게임은 혼자 만드는 것이 아니다.
• 정리
학력이 낮으면 게임 회사에 들어갈 수 없을까?
네니오
그렇기도 하고, 아니기도 합니다.
• 1990년대 말에서 2000년대 초반에는, 학력이 그다지 중요하지 않았음
• 그 뒤로, 게임산업이 급속도로 발전하면서 거대 게임기업들이 등장
자연스레 게임회사에 입사하려는 지원자들이 엄청나게 늘어남
• 필터링하는 과정에서 ‘학력’이라는 요소가 나타날 수밖에 없었음
• 몇 년 전부터 학력을 보지 않는 기업들이 늘어나기 시작함
• 하지만, 학력은 무시할 수 없는 항목!
그렇기도 하고, 아니기도 합니다.
그렇기도 하고, 아니기도 합니다.
그렇기도 하고, 아니기도 합니다.
그렇기도 하고, 아니기도 합니다.
먼저, 게임 개발을 할 수 있는 능력을 만들 것
(독학, 아카데미, 게임 전문 대학원 등)
그러고 나서, 포트폴리오를 만들 것!
(실무에서 바로 활용할 수 있는 능력을 보여줄 것)
게임 프로그래머는 수학을 배워야 할까?
네!
걸을 수 있는 지역
걸을 수
없는 지역
= 0
= 1
bool CollisionCheck()
{
int color = GetColor(playerX, playerY);
if (color == 1)
{
return true;
}
return false;
}
수학을 쓰는 이유?
많은 문제의 정답을 구하는 방법이 이미 존재하기 때문!
평면의 뒤쪽에 광원이 있고 우리가 평면의 앞쪽에서
평면을 바라볼 때, 평면은 검정색으로 보인다.
텍스처 컬러만 렌더링했을 때 라이팅 계산을 포함한
여러 이펙트가 적용된 최종 결과
게임 프로그래머는 어떤 일을 할까?
클라이언트 프로그래머 (서버 프로그래머는 생략)
• 물리 프로그래머
• 사운드 프로그래머
• 렌더링 프로그래머
• 툴 프로그래머
• AI(인공지능) 프로그래머
• 애니메이션 프로그래머
물리 프로그래머
• 현실 세계와 같은 물리 현상을 게임 플레이에 접목
• 강체(Rigidbody)를 주로 다루고,
충돌 검출(Collision Detection), 랙돌(Ragdoll) 효과 등
다양한 시뮬레이션을 담당하는 프로그래머
• 필요에 따라 유체역학(Fluid Mechanics)을 적용해
물, 연기, 눈 등을 표현함
• 물리 현상을 구현하기 쉽게 하기 위한 물리 엔진
ODE(Open Dynamic Engine), BulletEngine, Box2D,
PhysX를 개발하며, 게임에 따라서 튜닝 작업을 함
사운드 프로그래머
• 사운드를 출력하기 위한 사운드 엔진을 작성하거나,
(개발팀에 따라) 게임에서 특정 이벤트의 조건이
충족됐을 때 사운드를 플레이하는 로직을 작성
• 게임에서 사용되는 배경음이나 사운드 처리를 담당,
3D 포지셔널 사운드와 같은 고급 기술들을 사용해
오디오 프로그래밍을 함
• 기획한 컨셉에 따라 효과음 사용법, 음의 무게,
음량의 대소를 결정하고 적절한 위치에 효과음이
나오도록 하는 작업을 담당함
렌더링 프로그래머
• 화면에 나오는 모든 업무를 담당
• DirectX와 OpenGL을 이용해 그래픽 디자이너가 만든
모델링 데이터를 화면에 그려주는 작업,
텍스처, 라이팅 계산 처리 등을 담당
• 게임 엔진의 그래픽에 관련된 기능들을 구현하고,
구현된 그래픽 기능들이 게임에서 잘 돌아갈 수 있도록
최적화 작업을 진행
• 정확히 말하면 “그래픽스 엔진 프로그래머”,
그래픽스 렌더러를 개발하고 수정하는 프로그래머
(테크니컬 아티스트(TA)와는 역할이 조금 다름)
툴 프로그래머
• 텍스처와 모델을 만들기 위해 포토샵, 맥스, 마야 등
콘텐츠 제작툴을 사용하는데, 이러한 툴로 만든
데이터를 게임에서 바로 사용할 수 없음
• 따라서 게임회사마다 게임에 맞게 맵 툴,
애니메이션 툴 등을 이용해서 게임의 콘텐츠를 개발
• 그래픽 디자이너, 프로그래머, 프로듀서와
밀접하게 관련해서 일하며 이들이 게임을 완성하는 데
필요한 도구들을 제작
AI(인공지능) 프로그래머
• 지능적인 캐릭터를 만드는 데 필요한 모든 것들을 담당
• 게임에서 사용하는 AI 모듈로는 길찾기(A*),
룰 베이스 시스템, FSM, 신경망, 유전 알고리즘 등이 있음
• 이 중에서도 FSM(Finite State Machine)은
게임에서 굉장히 많이 사용됨
• 인공지능 뿐만 아니라 애니메이션 시스템에서도 많이 사용함
• 언리얼 엔진의 경우 블루프린트(Blueprint)를 이용해
게임 전체를 코드 없이 구현할 수 있음
애니메이션 프로그래머
• 애니메이터가 캐릭터의 동작을 만들고 이를 게임에서
사용하기 위해 애니메이션 프로그래머가 로직을 작성
• 예를 들어, 애니메이터가 캐릭터의 걷는 동작과
뛰는 동작을 만들었다고 가정
• 게이머가 조작하는 조이스틱의 방향에 따라
캐릭터가 걷거나 뛰는 동작을 취함
• 이 때, 애니메이션 블렌딩(Blending)을 하면,
걷기와 뛰기의 중간 형태의 결과를 얻을 수 있음
게임 프로그래머가 되려면 무엇을 공부해야 할까?
프로그래밍 언어
• 본인이 생각하고 있는 것을 로직으로 작성할 수 있고,
그 결과를 알아볼 수 있기만 하면 프로그래밍 언어는 무엇이든 상관 없음
• 어떤 언어를 선택했다면 3년 이상은 써보는 게 중요!
• 게임 개발의 주류 언어인 C++, C#, Java 등을 추천
• 주의할 점은 C++을 어렵게 사용해서는 안됨
• 현업에서 C++을 어렵게 사용하는 사람은 매우 드물고,
보편화된 문법이나 패턴들을 사용함
컴퓨터 구조
• 프로그래머 = 컴퓨터 소프트웨어를 만드는 사람
• 컴퓨터라는 물건이 어떻게 동작하는지 내부적으로 알아야 함
• 내부적으로 어떻게 컴퓨터가 동작하는지 몰라도 작성하는데 무리가 없지만,
동작 원리를 알고 나면 컴퓨터 소프트웨어를 작성하는 데 많은 도움이 됨
• 특히 콘솔 게임 개발자라면 해당 게임기(PS4, Xbox One 등)의
최고 성능을 끌어내기 위해 하드웨어에 대한 이해가 필수
수학
• 고등학교 수학 수준으로는
게임 개발에 한계가 있음
• 대수학, 삼각함수, 미적분,
선형 대수학, 확률과 통계 등
• 수학자가 될 정도의 지식은 필요없으며,
수학이라는 도구를 언제 어떻게
써먹는지 정도만 알아도 충분
자료구조, 알고리즘
• 데이터를 어떻게 표현하는가에 따라 프로그램의 성능이 좌우되는 경우가 많음
int values[100][20];
int sum = 0;
for (int y = 0; y < 100; ++y) {
for (int x = 0; x < 20; ++x) {
sum += values[y][x];
}
}
int sum = 0;
for (int x = 0; x < 20; ++x) {
for (int y = 0; y < 100; ++y) {
sum += values[y][x];
}
}
BA
라이브러리, API
• Win32API란 윈도우 운영체제에서 프로그램을 개발하기 위해
Microsoft에서 제공하는 함수들의 모임
• 게임이 동작할 머신의 종류에 따라 제공되는 API도 다르고
사용할 수 있는 라이브러리도 다름
• PC, Xbox용 게임을 개발하기 위해서는 DirectX 사용
• Mac이나 PS4는 OpenGL 사용
• PC에서 일반 응용 프로그램을 개발하기 위해 Win32, MFC
사용법을 배우고 Mac에서는 Cocoa를 배움
컴퓨터 그래픽스
• 게임은 모니터에 무언가를 그려야 하므로
DirectX, OpenGL 둘 중에 하나는 알아야 함
• 라이브러리를 사용하는 것뿐만 아니라 원리를
알기 위해서는 컴퓨터 그래픽스를 공부해야 함
• 내부 원리를 알고 라이브러리를 사용하는 것과
모른 채로 사용하는 것은 많은 차이가 있음
게임은 혼자 만드는 것이 아니다.
예전에는, 혼자 만들었다.
카라테카(Karateka) 신검의 전설
지금은…
아티스트
프로그래머기획자
아티스트가 프로그래머와 대화할 때
• 구체적인 수치와 예시로 대화할 것
• 프로그래머는 C언어와 수학으로 단련되었기 때문에 확실한 결과를 추구하는 사람들
• “조금 더 예쁘게, 조금 더 크게 해주세요”가 아니라 “20% 정도 크게 해주세요”
• 오타에 불같이 화내는 프로그래머를 이해할 것
• 작은 문제에 민감하게 반응하는 프로그래머가 난감하겠지만,
오타 하나에 버그나 났을까 2시간 동안 코딩을 체크하는 프로그래머는 더 난감함
프로그래머가 아티스트와 대화할 때
• 친절하게 설명할 것
• 아티스트가 요구하는 기능이 구현이 안된다면 왜 안되는지 차근히 설명해 줄 것
• 아티스트는 프로그래머가 아니기 때문에 잘 모름
• 아티스트가 한 픽셀에 집착해도 이해해줄 것
• 프로그래머가 오타에 민감하듯이, 아티스트들도 한 픽셀이 그림을 다르게 만든다고 생각함
• 숫자와 전문용어보다는 보편적인 언어로 대화할 것
• 매일 스크립트와 숫자를 접하는 프로그래머들은 익숙하지만,
대부분의 아티스트들은 HTML 태그도 모름
• 아티스트가 구체적인 수치로 이야기한다면,
프로그래머들은 ‘이 그림 조금 더 밝게 만들어 주세요’라고 말할 것
아티스트가 기획자와 대화할 때
• 작업하기 전에 기획문서 꼼꼼히 읽을 것
• 게임의 자세한 설정은 기획자가 하나하나 글로 구현함
• 작업에 착수하기 전에 기획서를 읽고 게임에 대해 확실히 숙지하고 있어야 잔업이 줄어듬
• 피드백을 받았을 때, 구체적으로 질문할 것
• 기획자들도 종종 추상적인 요구를 함. ‘빨간색으로 바꿔주세요’하면,
‘왜 빨간색으로 바꾸고 싶으세요’라고 되물어 기획자의 의도를 파악할 것.
가끔 기획자가 원하는 건 검은색일 때가 있음
• 기획자의 생각을 믿을 것
• 기획자의 머리 속에는 작업하는 게임에 대한 전반적인 정보가 다 들어 있음
• 무조건 의지하면 안 되지만, 대체로 기획자를 믿고 작업하면 됨
기획자가 아티스트와 대화할 때
• 아티스트에게 기획을 설명해 줄 것
• 아티스트는 게임의 전체적인 기획을 모르는 경우가 많음
• 수시로 게임의 비전과 컨셉에 대해 설명
• 아티스트를 적당히 방임할 것
• 너무 틀에 맞추면 잘 나올 그림도 안나옴. 여러가지 업무를 주고,
아티스트가 스스로 업무 순서를 짜서 작업할 수 있도록 배려
• 원하는 이미지의 느낌을 정확하게 설명할 것
• ‘까만 머리에 양복을 입은 남자’라고 한정짓기보다는
‘눈빛이 은근하고 싸늘한 분위기가 흐르는 남자’처럼 구체적인 분위기를 전달할 것
• 아티스트는 그쪽 분야의 전문가이기 때문에 생각보다 더 좋은 결과가 나올 수 있음
중요한 건
커뮤니케이션!
슬랙(SLACK)을 이용한 그룹 채팅
트렐로(TRELLO)를 이용한 작업 관리
GITHUB를 이용한 프로젝트 버전 관리
“힘의 균형은 유지되어야 한다!”
정리
게임 프로그래머가 하고 싶나요?
왜요?
이 말에 대답할 수 있나요?
대답할 수 있다면,
기본적인 것부터 시작하세요
THANK YOU!
QUESTION?
UTILFOREVER@GMAIL.COM
UTILFOREVER@KAIST.AC.KR
HTTP://WWW.FACEBOOK.COM/UTILFOREVER
출처
• 디스이즈게임, 문기영, 게임 프로그래머의 길
http://www.thisisgame.com/webzine/series/nboard/212/?series=99
• TOPCIT, NC소프트 서정훈 차장, 게임 개발자의 구조와 역할
http://blog.naver.com/PostView.nhn?blogId=2011topcit&logNo=220174150285&parentCategory
No=&categoryNo=17&viewDate=&isShowPopularPosts=false&from=postView
• 게임잡, [LOST ARK] 인재 모집
http://www.gamejob.co.kr/List_GI/GIB_Read.asp?GI_No=94113
• 머니투데이, [NDC 13] 아티스트-기획자-프로그래머, 소통 노하우
http://m.mt.co.kr/renew/view.html?no=2013042521108191949
• 위키페디아, 게임코디
http://www.wikipedia.org, http://www.gamecodi.com
• ExtremeTech, DirectX 11 and the Heaven Benchmark
http://www.extremetech.com/computing/84556-directx-11-and-the-heaven-benchmark/8

Contenu connexe

Tendances

NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀승명 양
 
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019devCAT Studio, NEXON
 
고대특강 게임 프로그래머의 소양
고대특강   게임 프로그래머의 소양고대특강   게임 프로그래머의 소양
고대특강 게임 프로그래머의 소양Jubok Kim
 
Multiplayer Game Sync Techniques through CAP theorem
Multiplayer Game Sync Techniques through CAP theoremMultiplayer Game Sync Techniques through CAP theorem
Multiplayer Game Sync Techniques through CAP theoremSeungmo Koo
 
[IGC 2017] 넥슨코리아 오현근 - 평생 게임 기획자 하기
[IGC 2017] 넥슨코리아 오현근 - 평생 게임 기획자 하기[IGC 2017] 넥슨코리아 오현근 - 평생 게임 기획자 하기
[IGC 2017] 넥슨코리아 오현근 - 평생 게임 기획자 하기강 민우
 
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들MinGeun Park
 
NDC2011 - 절차적 지형과 트렌드의 추적자들
NDC2011 - 절차적 지형과 트렌드의 추적자들NDC2011 - 절차적 지형과 트렌드의 추적자들
NDC2011 - 절차적 지형과 트렌드의 추적자들Jubok Kim
 
마비노기듀얼 이야기-넥슨 김동건
마비노기듀얼 이야기-넥슨 김동건마비노기듀얼 이야기-넥슨 김동건
마비노기듀얼 이야기-넥슨 김동건강 민우
 
위대한 게임개발팀의 공통점
위대한 게임개발팀의 공통점위대한 게임개발팀의 공통점
위대한 게임개발팀의 공통점Ryan Park
 
쩌는게임기획서 이렇게 쓴다
쩌는게임기획서 이렇게 쓴다쩌는게임기획서 이렇게 쓴다
쩌는게임기획서 이렇게 쓴다Jinho Jung
 
[IGC 2017] 넥슨코리아 심재근 - 시스템 기획자에 대한 기본 지식과 준비과정
[IGC 2017] 넥슨코리아 심재근 - 시스템 기획자에 대한 기본 지식과 준비과정[IGC 2017] 넥슨코리아 심재근 - 시스템 기획자에 대한 기본 지식과 준비과정
[IGC 2017] 넥슨코리아 심재근 - 시스템 기획자에 대한 기본 지식과 준비과정강 민우
 
이원, 온라인 게임 프로젝트 개발 결산 - 마비노기 개발 완수 보고서, NDC2011
이원, 온라인 게임 프로젝트 개발 결산 - 마비노기 개발 완수 보고서, NDC2011이원, 온라인 게임 프로젝트 개발 결산 - 마비노기 개발 완수 보고서, NDC2011
이원, 온라인 게임 프로젝트 개발 결산 - 마비노기 개발 완수 보고서, NDC2011devCAT Studio, NEXON
 
게임 기획자의 생존 전략
게임 기획자의 생존 전략게임 기획자의 생존 전략
게임 기획자의 생존 전략태성 이
 
게임 디자이너와 게임 서버
게임 디자이너와 게임 서버게임 디자이너와 게임 서버
게임 디자이너와 게임 서버ByungChun2
 
신입 개발자 생활백서 [개정판]
신입 개발자 생활백서 [개정판]신입 개발자 생활백서 [개정판]
신입 개발자 생활백서 [개정판]Yurim Jin
 
[IGC2015] 엔씨소프트 김주용-내가 사랑한 MMO들
[IGC2015] 엔씨소프트 김주용-내가 사랑한 MMO들[IGC2015] 엔씨소프트 김주용-내가 사랑한 MMO들
[IGC2015] 엔씨소프트 김주용-내가 사랑한 MMO들강 민우
 
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceKGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceXionglong Jin
 
NDC2019 - 게임플레이 프로그래머의 역할
NDC2019 - 게임플레이 프로그래머의 역할NDC2019 - 게임플레이 프로그래머의 역할
NDC2019 - 게임플레이 프로그래머의 역할Hoyoung Choi
 
[1216 박민근] 게임회사취업및이직에관한조언
[1216 박민근] 게임회사취업및이직에관한조언[1216 박민근] 게임회사취업및이직에관한조언
[1216 박민근] 게임회사취업및이직에관한조언MinGeun Park
 

Tendances (20)

NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀
 
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
 
[PandoraCube] 게임 디자인 원리
[PandoraCube] 게임 디자인 원리[PandoraCube] 게임 디자인 원리
[PandoraCube] 게임 디자인 원리
 
고대특강 게임 프로그래머의 소양
고대특강   게임 프로그래머의 소양고대특강   게임 프로그래머의 소양
고대특강 게임 프로그래머의 소양
 
Multiplayer Game Sync Techniques through CAP theorem
Multiplayer Game Sync Techniques through CAP theoremMultiplayer Game Sync Techniques through CAP theorem
Multiplayer Game Sync Techniques through CAP theorem
 
[IGC 2017] 넥슨코리아 오현근 - 평생 게임 기획자 하기
[IGC 2017] 넥슨코리아 오현근 - 평생 게임 기획자 하기[IGC 2017] 넥슨코리아 오현근 - 평생 게임 기획자 하기
[IGC 2017] 넥슨코리아 오현근 - 평생 게임 기획자 하기
 
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들
 
NDC2011 - 절차적 지형과 트렌드의 추적자들
NDC2011 - 절차적 지형과 트렌드의 추적자들NDC2011 - 절차적 지형과 트렌드의 추적자들
NDC2011 - 절차적 지형과 트렌드의 추적자들
 
마비노기듀얼 이야기-넥슨 김동건
마비노기듀얼 이야기-넥슨 김동건마비노기듀얼 이야기-넥슨 김동건
마비노기듀얼 이야기-넥슨 김동건
 
위대한 게임개발팀의 공통점
위대한 게임개발팀의 공통점위대한 게임개발팀의 공통점
위대한 게임개발팀의 공통점
 
쩌는게임기획서 이렇게 쓴다
쩌는게임기획서 이렇게 쓴다쩌는게임기획서 이렇게 쓴다
쩌는게임기획서 이렇게 쓴다
 
[IGC 2017] 넥슨코리아 심재근 - 시스템 기획자에 대한 기본 지식과 준비과정
[IGC 2017] 넥슨코리아 심재근 - 시스템 기획자에 대한 기본 지식과 준비과정[IGC 2017] 넥슨코리아 심재근 - 시스템 기획자에 대한 기본 지식과 준비과정
[IGC 2017] 넥슨코리아 심재근 - 시스템 기획자에 대한 기본 지식과 준비과정
 
이원, 온라인 게임 프로젝트 개발 결산 - 마비노기 개발 완수 보고서, NDC2011
이원, 온라인 게임 프로젝트 개발 결산 - 마비노기 개발 완수 보고서, NDC2011이원, 온라인 게임 프로젝트 개발 결산 - 마비노기 개발 완수 보고서, NDC2011
이원, 온라인 게임 프로젝트 개발 결산 - 마비노기 개발 완수 보고서, NDC2011
 
게임 기획자의 생존 전략
게임 기획자의 생존 전략게임 기획자의 생존 전략
게임 기획자의 생존 전략
 
게임 디자이너와 게임 서버
게임 디자이너와 게임 서버게임 디자이너와 게임 서버
게임 디자이너와 게임 서버
 
신입 개발자 생활백서 [개정판]
신입 개발자 생활백서 [개정판]신입 개발자 생활백서 [개정판]
신입 개발자 생활백서 [개정판]
 
[IGC2015] 엔씨소프트 김주용-내가 사랑한 MMO들
[IGC2015] 엔씨소프트 김주용-내가 사랑한 MMO들[IGC2015] 엔씨소프트 김주용-내가 사랑한 MMO들
[IGC2015] 엔씨소프트 김주용-내가 사랑한 MMO들
 
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceKGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
 
NDC2019 - 게임플레이 프로그래머의 역할
NDC2019 - 게임플레이 프로그래머의 역할NDC2019 - 게임플레이 프로그래머의 역할
NDC2019 - 게임플레이 프로그래머의 역할
 
[1216 박민근] 게임회사취업및이직에관한조언
[1216 박민근] 게임회사취업및이직에관한조언[1216 박민근] 게임회사취업및이직에관한조언
[1216 박민근] 게임회사취업및이직에관한조언
 

Similaire à 게임 프로그래밍 기초 공부법

게임업계에서 내가 하고 싶은 일 찾는 방법
게임업계에서 내가 하고 싶은 일 찾는 방법게임업계에서 내가 하고 싶은 일 찾는 방법
게임업계에서 내가 하고 싶은 일 찾는 방법Donghun Lee
 
Unite 2015 Seoul : 인디에게 어디가 한계인지는 해봐야 알잖아?
Unite 2015 Seoul : 인디에게 어디가 한계인지는 해봐야 알잖아?Unite 2015 Seoul : 인디에게 어디가 한계인지는 해봐야 알잖아?
Unite 2015 Seoul : 인디에게 어디가 한계인지는 해봐야 알잖아?KwangSam Kim
 
게임 프로그래머로 살아남기 at 지스타 컨퍼런스 2013
게임 프로그래머로 살아남기 at 지스타 컨퍼런스 2013게임 프로그래머로 살아남기 at 지스타 컨퍼런스 2013
게임 프로그래머로 살아남기 at 지스타 컨퍼런스 2013영욱 오
 
[GDC] Perry_POCBasedDesign_KOR
[GDC] Perry_POCBasedDesign_KOR[GDC] Perry_POCBasedDesign_KOR
[GDC] Perry_POCBasedDesign_KORJisang Yoon
 
[IGC 2016] 컴투스 김동준 - 기획 지망생은 무엇을 준비하나요?
[IGC 2016] 컴투스 김동준 - 기획 지망생은 무엇을 준비하나요?[IGC 2016] 컴투스 김동준 - 기획 지망생은 무엇을 준비하나요?
[IGC 2016] 컴투스 김동준 - 기획 지망생은 무엇을 준비하나요?강 민우
 
Igc2016 Technical Artist가 뭐하는 사람이에요?
Igc2016 Technical Artist가 뭐하는 사람이에요?Igc2016 Technical Artist가 뭐하는 사람이에요?
Igc2016 Technical Artist가 뭐하는 사람이에요?SangYun Yi
 
[RAPA/C++] 1. 수업 내용 및 진행 방법
[RAPA/C++] 1. 수업 내용 및 진행 방법[RAPA/C++] 1. 수업 내용 및 진행 방법
[RAPA/C++] 1. 수업 내용 및 진행 방법MinGeun Park
 
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템강 민우
 
NDC2013 - 인디게임 프로젝트 중도에 포기하지 않는 방법
NDC2013 - 인디게임 프로젝트 중도에 포기하지 않는 방법NDC2013 - 인디게임 프로젝트 중도에 포기하지 않는 방법
NDC2013 - 인디게임 프로젝트 중도에 포기하지 않는 방법ChangHyun Won
 
[GAMENEXT] 10년을 혈십자와 보내고.. (별바람 스튜디오)
[GAMENEXT] 10년을 혈십자와 보내고.. (별바람 스튜디오)[GAMENEXT] 10년을 혈십자와 보내고.. (별바람 스튜디오)
[GAMENEXT] 10년을 혈십자와 보내고.. (별바람 스튜디오)GAMENEXT Works
 
Rhea smart product130316
Rhea smart product130316Rhea smart product130316
Rhea smart product130316Rhea Strike
 
에어헌터 for kakao 포스트모템(공개용)
에어헌터 for kakao 포스트모템(공개용)에어헌터 for kakao 포스트모템(공개용)
에어헌터 for kakao 포스트모템(공개용)Woo Yeong Choi
 
게임개발자 직업체험의날 배포용
게임개발자 직업체험의날 배포용게임개발자 직업체험의날 배포용
게임개발자 직업체험의날 배포용영욱 오
 
NHN NEXT 2014년도 게임트랙 소개
NHN NEXT 2014년도 게임트랙 소개 NHN NEXT 2014년도 게임트랙 소개
NHN NEXT 2014년도 게임트랙 소개 Seungmo Koo
 
게임 디자이너는 왜 게임을 해야 할까요?
게임 디자이너는 왜 게임을 해야 할까요?게임 디자이너는 왜 게임을 해야 할까요?
게임 디자이너는 왜 게임을 해야 할까요?Seohyun Han
 
Playground 소개
Playground 소개Playground 소개
Playground 소개승우 백
 
[NDC14] A Mass of Dead 스팀 입성 성공기
[NDC14] A Mass of Dead 스팀 입성 성공기[NDC14] A Mass of Dead 스팀 입성 성공기
[NDC14] A Mass of Dead 스팀 입성 성공기Mingu Heo
 

Similaire à 게임 프로그래밍 기초 공부법 (20)

게임업계에서 내가 하고 싶은 일 찾는 방법
게임업계에서 내가 하고 싶은 일 찾는 방법게임업계에서 내가 하고 싶은 일 찾는 방법
게임업계에서 내가 하고 싶은 일 찾는 방법
 
[PandoraCube] '게임메이커'에 대해 알아보자
[PandoraCube] '게임메이커'에 대해 알아보자[PandoraCube] '게임메이커'에 대해 알아보자
[PandoraCube] '게임메이커'에 대해 알아보자
 
Unite 2015 Seoul : 인디에게 어디가 한계인지는 해봐야 알잖아?
Unite 2015 Seoul : 인디에게 어디가 한계인지는 해봐야 알잖아?Unite 2015 Seoul : 인디에게 어디가 한계인지는 해봐야 알잖아?
Unite 2015 Seoul : 인디에게 어디가 한계인지는 해봐야 알잖아?
 
게임 프로그래머로 살아남기 at 지스타 컨퍼런스 2013
게임 프로그래머로 살아남기 at 지스타 컨퍼런스 2013게임 프로그래머로 살아남기 at 지스타 컨퍼런스 2013
게임 프로그래머로 살아남기 at 지스타 컨퍼런스 2013
 
[GDC] Perry_POCBasedDesign_KOR
[GDC] Perry_POCBasedDesign_KOR[GDC] Perry_POCBasedDesign_KOR
[GDC] Perry_POCBasedDesign_KOR
 
[IGC 2016] 컴투스 김동준 - 기획 지망생은 무엇을 준비하나요?
[IGC 2016] 컴투스 김동준 - 기획 지망생은 무엇을 준비하나요?[IGC 2016] 컴투스 김동준 - 기획 지망생은 무엇을 준비하나요?
[IGC 2016] 컴투스 김동준 - 기획 지망생은 무엇을 준비하나요?
 
[PandoraCube] 게임 개발자 직종
[PandoraCube] 게임 개발자 직종[PandoraCube] 게임 개발자 직종
[PandoraCube] 게임 개발자 직종
 
Igc2016 Technical Artist가 뭐하는 사람이에요?
Igc2016 Technical Artist가 뭐하는 사람이에요?Igc2016 Technical Artist가 뭐하는 사람이에요?
Igc2016 Technical Artist가 뭐하는 사람이에요?
 
[PandoraCube] 게임 프로그래머로 성장하기
[PandoraCube] 게임 프로그래머로 성장하기[PandoraCube] 게임 프로그래머로 성장하기
[PandoraCube] 게임 프로그래머로 성장하기
 
[RAPA/C++] 1. 수업 내용 및 진행 방법
[RAPA/C++] 1. 수업 내용 및 진행 방법[RAPA/C++] 1. 수업 내용 및 진행 방법
[RAPA/C++] 1. 수업 내용 및 진행 방법
 
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
 
NDC2013 - 인디게임 프로젝트 중도에 포기하지 않는 방법
NDC2013 - 인디게임 프로젝트 중도에 포기하지 않는 방법NDC2013 - 인디게임 프로젝트 중도에 포기하지 않는 방법
NDC2013 - 인디게임 프로젝트 중도에 포기하지 않는 방법
 
[GAMENEXT] 10년을 혈십자와 보내고.. (별바람 스튜디오)
[GAMENEXT] 10년을 혈십자와 보내고.. (별바람 스튜디오)[GAMENEXT] 10년을 혈십자와 보내고.. (별바람 스튜디오)
[GAMENEXT] 10년을 혈십자와 보내고.. (별바람 스튜디오)
 
Rhea smart product130316
Rhea smart product130316Rhea smart product130316
Rhea smart product130316
 
에어헌터 for kakao 포스트모템(공개용)
에어헌터 for kakao 포스트모템(공개용)에어헌터 for kakao 포스트모템(공개용)
에어헌터 for kakao 포스트모템(공개용)
 
게임개발자 직업체험의날 배포용
게임개발자 직업체험의날 배포용게임개발자 직업체험의날 배포용
게임개발자 직업체험의날 배포용
 
NHN NEXT 2014년도 게임트랙 소개
NHN NEXT 2014년도 게임트랙 소개 NHN NEXT 2014년도 게임트랙 소개
NHN NEXT 2014년도 게임트랙 소개
 
게임 디자이너는 왜 게임을 해야 할까요?
게임 디자이너는 왜 게임을 해야 할까요?게임 디자이너는 왜 게임을 해야 할까요?
게임 디자이너는 왜 게임을 해야 할까요?
 
Playground 소개
Playground 소개Playground 소개
Playground 소개
 
[NDC14] A Mass of Dead 스팀 입성 성공기
[NDC14] A Mass of Dead 스팀 입성 성공기[NDC14] A Mass of Dead 스팀 입성 성공기
[NDC14] A Mass of Dead 스팀 입성 성공기
 

Plus de Chris Ohk

인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍Chris Ohk
 
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들Chris Ohk
 
Momenti Seminar - 5 Years of RosettaStone
Momenti Seminar - 5 Years of RosettaStoneMomenti Seminar - 5 Years of RosettaStone
Momenti Seminar - 5 Years of RosettaStoneChris Ohk
 
선린인터넷고등학교 2021 알고리즘 컨퍼런스 - Rust로 알고리즘 문제 풀어보기
선린인터넷고등학교 2021 알고리즘 컨퍼런스 - Rust로 알고리즘 문제 풀어보기선린인터넷고등학교 2021 알고리즘 컨퍼런스 - Rust로 알고리즘 문제 풀어보기
선린인터넷고등학교 2021 알고리즘 컨퍼런스 - Rust로 알고리즘 문제 풀어보기Chris Ohk
 
Momenti Seminar - A Tour of Rust, Part 2
Momenti Seminar - A Tour of Rust, Part 2Momenti Seminar - A Tour of Rust, Part 2
Momenti Seminar - A Tour of Rust, Part 2Chris Ohk
 
Momenti Seminar - A Tour of Rust, Part 1
Momenti Seminar - A Tour of Rust, Part 1Momenti Seminar - A Tour of Rust, Part 1
Momenti Seminar - A Tour of Rust, Part 1Chris Ohk
 
Evolving Reinforcement Learning Algorithms, JD. Co-Reyes et al, 2021
Evolving Reinforcement Learning Algorithms, JD. Co-Reyes et al, 2021Evolving Reinforcement Learning Algorithms, JD. Co-Reyes et al, 2021
Evolving Reinforcement Learning Algorithms, JD. Co-Reyes et al, 2021Chris Ohk
 
Adversarially Guided Actor-Critic, Y. Flet-Berliac et al, 2021
Adversarially Guided Actor-Critic, Y. Flet-Berliac et al, 2021Adversarially Guided Actor-Critic, Y. Flet-Berliac et al, 2021
Adversarially Guided Actor-Critic, Y. Flet-Berliac et al, 2021Chris Ohk
 
Agent57: Outperforming the Atari Human Benchmark, Badia, A. P. et al, 2020
Agent57: Outperforming the Atari Human Benchmark, Badia, A. P. et al, 2020Agent57: Outperforming the Atari Human Benchmark, Badia, A. P. et al, 2020
Agent57: Outperforming the Atari Human Benchmark, Badia, A. P. et al, 2020Chris Ohk
 
Proximal Policy Optimization Algorithms, Schulman et al, 2017
Proximal Policy Optimization Algorithms, Schulman et al, 2017Proximal Policy Optimization Algorithms, Schulman et al, 2017
Proximal Policy Optimization Algorithms, Schulman et al, 2017Chris Ohk
 
Trust Region Policy Optimization, Schulman et al, 2015
Trust Region Policy Optimization, Schulman et al, 2015Trust Region Policy Optimization, Schulman et al, 2015
Trust Region Policy Optimization, Schulman et al, 2015Chris Ohk
 
Continuous Control with Deep Reinforcement Learning, lillicrap et al, 2015
Continuous Control with Deep Reinforcement Learning, lillicrap et al, 2015Continuous Control with Deep Reinforcement Learning, lillicrap et al, 2015
Continuous Control with Deep Reinforcement Learning, lillicrap et al, 2015Chris Ohk
 
GDG Gwangju DevFest 2019 - <하스스톤> 강화학습 환경 개발기
GDG Gwangju DevFest 2019 - <하스스톤> 강화학습 환경 개발기GDG Gwangju DevFest 2019 - <하스스톤> 강화학습 환경 개발기
GDG Gwangju DevFest 2019 - <하스스톤> 강화학습 환경 개발기Chris Ohk
 
[RLKorea] <하스스톤> 강화학습 환경 개발기
[RLKorea] <하스스톤> 강화학습 환경 개발기[RLKorea] <하스스톤> 강화학습 환경 개발기
[RLKorea] <하스스톤> 강화학습 환경 개발기Chris Ohk
 
[NDC 2019] 하스스톤 강화학습 환경 개발기
[NDC 2019] 하스스톤 강화학습 환경 개발기[NDC 2019] 하스스톤 강화학습 환경 개발기
[NDC 2019] 하스스톤 강화학습 환경 개발기Chris Ohk
 
C++20 Key Features Summary
C++20 Key Features SummaryC++20 Key Features Summary
C++20 Key Features SummaryChris Ohk
 
[델리만주] 대학원 캐슬 - 석사에서 게임 프로그래머까지
[델리만주] 대학원 캐슬 - 석사에서 게임 프로그래머까지[델리만주] 대학원 캐슬 - 석사에서 게임 프로그래머까지
[델리만주] 대학원 캐슬 - 석사에서 게임 프로그래머까지Chris Ohk
 
디미고 특강 - 개발을 시작하려는 여러분에게
디미고 특강 - 개발을 시작하려는 여러분에게디미고 특강 - 개발을 시작하려는 여러분에게
디미고 특강 - 개발을 시작하려는 여러분에게Chris Ohk
 
청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기Chris Ohk
 
[NDC 2018] 유체역학 엔진 개발기
[NDC 2018] 유체역학 엔진 개발기[NDC 2018] 유체역학 엔진 개발기
[NDC 2018] 유체역학 엔진 개발기Chris Ohk
 

Plus de Chris Ohk (20)

인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
 
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들
 
Momenti Seminar - 5 Years of RosettaStone
Momenti Seminar - 5 Years of RosettaStoneMomenti Seminar - 5 Years of RosettaStone
Momenti Seminar - 5 Years of RosettaStone
 
선린인터넷고등학교 2021 알고리즘 컨퍼런스 - Rust로 알고리즘 문제 풀어보기
선린인터넷고등학교 2021 알고리즘 컨퍼런스 - Rust로 알고리즘 문제 풀어보기선린인터넷고등학교 2021 알고리즘 컨퍼런스 - Rust로 알고리즘 문제 풀어보기
선린인터넷고등학교 2021 알고리즘 컨퍼런스 - Rust로 알고리즘 문제 풀어보기
 
Momenti Seminar - A Tour of Rust, Part 2
Momenti Seminar - A Tour of Rust, Part 2Momenti Seminar - A Tour of Rust, Part 2
Momenti Seminar - A Tour of Rust, Part 2
 
Momenti Seminar - A Tour of Rust, Part 1
Momenti Seminar - A Tour of Rust, Part 1Momenti Seminar - A Tour of Rust, Part 1
Momenti Seminar - A Tour of Rust, Part 1
 
Evolving Reinforcement Learning Algorithms, JD. Co-Reyes et al, 2021
Evolving Reinforcement Learning Algorithms, JD. Co-Reyes et al, 2021Evolving Reinforcement Learning Algorithms, JD. Co-Reyes et al, 2021
Evolving Reinforcement Learning Algorithms, JD. Co-Reyes et al, 2021
 
Adversarially Guided Actor-Critic, Y. Flet-Berliac et al, 2021
Adversarially Guided Actor-Critic, Y. Flet-Berliac et al, 2021Adversarially Guided Actor-Critic, Y. Flet-Berliac et al, 2021
Adversarially Guided Actor-Critic, Y. Flet-Berliac et al, 2021
 
Agent57: Outperforming the Atari Human Benchmark, Badia, A. P. et al, 2020
Agent57: Outperforming the Atari Human Benchmark, Badia, A. P. et al, 2020Agent57: Outperforming the Atari Human Benchmark, Badia, A. P. et al, 2020
Agent57: Outperforming the Atari Human Benchmark, Badia, A. P. et al, 2020
 
Proximal Policy Optimization Algorithms, Schulman et al, 2017
Proximal Policy Optimization Algorithms, Schulman et al, 2017Proximal Policy Optimization Algorithms, Schulman et al, 2017
Proximal Policy Optimization Algorithms, Schulman et al, 2017
 
Trust Region Policy Optimization, Schulman et al, 2015
Trust Region Policy Optimization, Schulman et al, 2015Trust Region Policy Optimization, Schulman et al, 2015
Trust Region Policy Optimization, Schulman et al, 2015
 
Continuous Control with Deep Reinforcement Learning, lillicrap et al, 2015
Continuous Control with Deep Reinforcement Learning, lillicrap et al, 2015Continuous Control with Deep Reinforcement Learning, lillicrap et al, 2015
Continuous Control with Deep Reinforcement Learning, lillicrap et al, 2015
 
GDG Gwangju DevFest 2019 - <하스스톤> 강화학습 환경 개발기
GDG Gwangju DevFest 2019 - <하스스톤> 강화학습 환경 개발기GDG Gwangju DevFest 2019 - <하스스톤> 강화학습 환경 개발기
GDG Gwangju DevFest 2019 - <하스스톤> 강화학습 환경 개발기
 
[RLKorea] <하스스톤> 강화학습 환경 개발기
[RLKorea] <하스스톤> 강화학습 환경 개발기[RLKorea] <하스스톤> 강화학습 환경 개발기
[RLKorea] <하스스톤> 강화학습 환경 개발기
 
[NDC 2019] 하스스톤 강화학습 환경 개발기
[NDC 2019] 하스스톤 강화학습 환경 개발기[NDC 2019] 하스스톤 강화학습 환경 개발기
[NDC 2019] 하스스톤 강화학습 환경 개발기
 
C++20 Key Features Summary
C++20 Key Features SummaryC++20 Key Features Summary
C++20 Key Features Summary
 
[델리만주] 대학원 캐슬 - 석사에서 게임 프로그래머까지
[델리만주] 대학원 캐슬 - 석사에서 게임 프로그래머까지[델리만주] 대학원 캐슬 - 석사에서 게임 프로그래머까지
[델리만주] 대학원 캐슬 - 석사에서 게임 프로그래머까지
 
디미고 특강 - 개발을 시작하려는 여러분에게
디미고 특강 - 개발을 시작하려는 여러분에게디미고 특강 - 개발을 시작하려는 여러분에게
디미고 특강 - 개발을 시작하려는 여러분에게
 
청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기
 
[NDC 2018] 유체역학 엔진 개발기
[NDC 2018] 유체역학 엔진 개발기[NDC 2018] 유체역학 엔진 개발기
[NDC 2018] 유체역학 엔진 개발기
 

게임 프로그래밍 기초 공부법

  • 2. 강연자 소개 • 옥찬호 • 히어로 코리아 수석 엔지니어 • KAIST 전산학과 석사과정 재학 • 경북대학교 컴퓨터학부 졸업 • 페이스북 그룹 C++ Korea 대표 • 에이콘출판사 Translator • 게임샐러드로 코드 한 줄 없이 게임 만들기 (2013) • 유니티 Shader와 Effect 제작 (2014) • 2D 게임 프로그래밍 (2014) • 인디게임 제작팀 Xpecial / Mine Scroll 팀장
  • 3.
  • 4.
  • 5.
  • 6. 목차 • 학력이 낮으면 게임 회사에 들어갈 수 없을까? • 게임 프로그래머는 수학을 배워야 할까? • 게임 프로그래머는 어떤 일을 할까? • 게임 프로그래머가 되려면 무엇을 공부해야 할까? • 게임은 혼자 만드는 것이 아니다. • 정리
  • 7. 학력이 낮으면 게임 회사에 들어갈 수 없을까?
  • 9.
  • 10. 그렇기도 하고, 아니기도 합니다. • 1990년대 말에서 2000년대 초반에는, 학력이 그다지 중요하지 않았음 • 그 뒤로, 게임산업이 급속도로 발전하면서 거대 게임기업들이 등장 자연스레 게임회사에 입사하려는 지원자들이 엄청나게 늘어남 • 필터링하는 과정에서 ‘학력’이라는 요소가 나타날 수밖에 없었음 • 몇 년 전부터 학력을 보지 않는 기업들이 늘어나기 시작함 • 하지만, 학력은 무시할 수 없는 항목!
  • 15. 먼저, 게임 개발을 할 수 있는 능력을 만들 것 (독학, 아카데미, 게임 전문 대학원 등)
  • 16. 그러고 나서, 포트폴리오를 만들 것! (실무에서 바로 활용할 수 있는 능력을 보여줄 것)
  • 18. 네!
  • 19.
  • 20.
  • 21. 걸을 수 있는 지역 걸을 수 없는 지역 = 0 = 1
  • 22. bool CollisionCheck() { int color = GetColor(playerX, playerY); if (color == 1) { return true; } return false; }
  • 23. 수학을 쓰는 이유? 많은 문제의 정답을 구하는 방법이 이미 존재하기 때문!
  • 24.
  • 25. 평면의 뒤쪽에 광원이 있고 우리가 평면의 앞쪽에서 평면을 바라볼 때, 평면은 검정색으로 보인다.
  • 26.
  • 27. 텍스처 컬러만 렌더링했을 때 라이팅 계산을 포함한 여러 이펙트가 적용된 최종 결과
  • 29. 클라이언트 프로그래머 (서버 프로그래머는 생략) • 물리 프로그래머 • 사운드 프로그래머 • 렌더링 프로그래머 • 툴 프로그래머 • AI(인공지능) 프로그래머 • 애니메이션 프로그래머
  • 30. 물리 프로그래머 • 현실 세계와 같은 물리 현상을 게임 플레이에 접목 • 강체(Rigidbody)를 주로 다루고, 충돌 검출(Collision Detection), 랙돌(Ragdoll) 효과 등 다양한 시뮬레이션을 담당하는 프로그래머 • 필요에 따라 유체역학(Fluid Mechanics)을 적용해 물, 연기, 눈 등을 표현함 • 물리 현상을 구현하기 쉽게 하기 위한 물리 엔진 ODE(Open Dynamic Engine), BulletEngine, Box2D, PhysX를 개발하며, 게임에 따라서 튜닝 작업을 함
  • 31. 사운드 프로그래머 • 사운드를 출력하기 위한 사운드 엔진을 작성하거나, (개발팀에 따라) 게임에서 특정 이벤트의 조건이 충족됐을 때 사운드를 플레이하는 로직을 작성 • 게임에서 사용되는 배경음이나 사운드 처리를 담당, 3D 포지셔널 사운드와 같은 고급 기술들을 사용해 오디오 프로그래밍을 함 • 기획한 컨셉에 따라 효과음 사용법, 음의 무게, 음량의 대소를 결정하고 적절한 위치에 효과음이 나오도록 하는 작업을 담당함
  • 32. 렌더링 프로그래머 • 화면에 나오는 모든 업무를 담당 • DirectX와 OpenGL을 이용해 그래픽 디자이너가 만든 모델링 데이터를 화면에 그려주는 작업, 텍스처, 라이팅 계산 처리 등을 담당 • 게임 엔진의 그래픽에 관련된 기능들을 구현하고, 구현된 그래픽 기능들이 게임에서 잘 돌아갈 수 있도록 최적화 작업을 진행 • 정확히 말하면 “그래픽스 엔진 프로그래머”, 그래픽스 렌더러를 개발하고 수정하는 프로그래머 (테크니컬 아티스트(TA)와는 역할이 조금 다름)
  • 33. 툴 프로그래머 • 텍스처와 모델을 만들기 위해 포토샵, 맥스, 마야 등 콘텐츠 제작툴을 사용하는데, 이러한 툴로 만든 데이터를 게임에서 바로 사용할 수 없음 • 따라서 게임회사마다 게임에 맞게 맵 툴, 애니메이션 툴 등을 이용해서 게임의 콘텐츠를 개발 • 그래픽 디자이너, 프로그래머, 프로듀서와 밀접하게 관련해서 일하며 이들이 게임을 완성하는 데 필요한 도구들을 제작
  • 34. AI(인공지능) 프로그래머 • 지능적인 캐릭터를 만드는 데 필요한 모든 것들을 담당 • 게임에서 사용하는 AI 모듈로는 길찾기(A*), 룰 베이스 시스템, FSM, 신경망, 유전 알고리즘 등이 있음 • 이 중에서도 FSM(Finite State Machine)은 게임에서 굉장히 많이 사용됨 • 인공지능 뿐만 아니라 애니메이션 시스템에서도 많이 사용함 • 언리얼 엔진의 경우 블루프린트(Blueprint)를 이용해 게임 전체를 코드 없이 구현할 수 있음
  • 35. 애니메이션 프로그래머 • 애니메이터가 캐릭터의 동작을 만들고 이를 게임에서 사용하기 위해 애니메이션 프로그래머가 로직을 작성 • 예를 들어, 애니메이터가 캐릭터의 걷는 동작과 뛰는 동작을 만들었다고 가정 • 게이머가 조작하는 조이스틱의 방향에 따라 캐릭터가 걷거나 뛰는 동작을 취함 • 이 때, 애니메이션 블렌딩(Blending)을 하면, 걷기와 뛰기의 중간 형태의 결과를 얻을 수 있음
  • 36. 게임 프로그래머가 되려면 무엇을 공부해야 할까?
  • 37. 프로그래밍 언어 • 본인이 생각하고 있는 것을 로직으로 작성할 수 있고, 그 결과를 알아볼 수 있기만 하면 프로그래밍 언어는 무엇이든 상관 없음 • 어떤 언어를 선택했다면 3년 이상은 써보는 게 중요! • 게임 개발의 주류 언어인 C++, C#, Java 등을 추천 • 주의할 점은 C++을 어렵게 사용해서는 안됨 • 현업에서 C++을 어렵게 사용하는 사람은 매우 드물고, 보편화된 문법이나 패턴들을 사용함
  • 38. 컴퓨터 구조 • 프로그래머 = 컴퓨터 소프트웨어를 만드는 사람 • 컴퓨터라는 물건이 어떻게 동작하는지 내부적으로 알아야 함 • 내부적으로 어떻게 컴퓨터가 동작하는지 몰라도 작성하는데 무리가 없지만, 동작 원리를 알고 나면 컴퓨터 소프트웨어를 작성하는 데 많은 도움이 됨 • 특히 콘솔 게임 개발자라면 해당 게임기(PS4, Xbox One 등)의 최고 성능을 끌어내기 위해 하드웨어에 대한 이해가 필수
  • 39. 수학 • 고등학교 수학 수준으로는 게임 개발에 한계가 있음 • 대수학, 삼각함수, 미적분, 선형 대수학, 확률과 통계 등 • 수학자가 될 정도의 지식은 필요없으며, 수학이라는 도구를 언제 어떻게 써먹는지 정도만 알아도 충분
  • 40. 자료구조, 알고리즘 • 데이터를 어떻게 표현하는가에 따라 프로그램의 성능이 좌우되는 경우가 많음 int values[100][20]; int sum = 0; for (int y = 0; y < 100; ++y) { for (int x = 0; x < 20; ++x) { sum += values[y][x]; } } int sum = 0; for (int x = 0; x < 20; ++x) { for (int y = 0; y < 100; ++y) { sum += values[y][x]; } } BA
  • 41. 라이브러리, API • Win32API란 윈도우 운영체제에서 프로그램을 개발하기 위해 Microsoft에서 제공하는 함수들의 모임 • 게임이 동작할 머신의 종류에 따라 제공되는 API도 다르고 사용할 수 있는 라이브러리도 다름 • PC, Xbox용 게임을 개발하기 위해서는 DirectX 사용 • Mac이나 PS4는 OpenGL 사용 • PC에서 일반 응용 프로그램을 개발하기 위해 Win32, MFC 사용법을 배우고 Mac에서는 Cocoa를 배움
  • 42. 컴퓨터 그래픽스 • 게임은 모니터에 무언가를 그려야 하므로 DirectX, OpenGL 둘 중에 하나는 알아야 함 • 라이브러리를 사용하는 것뿐만 아니라 원리를 알기 위해서는 컴퓨터 그래픽스를 공부해야 함 • 내부 원리를 알고 라이브러리를 사용하는 것과 모른 채로 사용하는 것은 많은 차이가 있음
  • 43. 게임은 혼자 만드는 것이 아니다.
  • 47. 아티스트가 프로그래머와 대화할 때 • 구체적인 수치와 예시로 대화할 것 • 프로그래머는 C언어와 수학으로 단련되었기 때문에 확실한 결과를 추구하는 사람들 • “조금 더 예쁘게, 조금 더 크게 해주세요”가 아니라 “20% 정도 크게 해주세요” • 오타에 불같이 화내는 프로그래머를 이해할 것 • 작은 문제에 민감하게 반응하는 프로그래머가 난감하겠지만, 오타 하나에 버그나 났을까 2시간 동안 코딩을 체크하는 프로그래머는 더 난감함
  • 48. 프로그래머가 아티스트와 대화할 때 • 친절하게 설명할 것 • 아티스트가 요구하는 기능이 구현이 안된다면 왜 안되는지 차근히 설명해 줄 것 • 아티스트는 프로그래머가 아니기 때문에 잘 모름 • 아티스트가 한 픽셀에 집착해도 이해해줄 것 • 프로그래머가 오타에 민감하듯이, 아티스트들도 한 픽셀이 그림을 다르게 만든다고 생각함 • 숫자와 전문용어보다는 보편적인 언어로 대화할 것 • 매일 스크립트와 숫자를 접하는 프로그래머들은 익숙하지만, 대부분의 아티스트들은 HTML 태그도 모름 • 아티스트가 구체적인 수치로 이야기한다면, 프로그래머들은 ‘이 그림 조금 더 밝게 만들어 주세요’라고 말할 것
  • 49. 아티스트가 기획자와 대화할 때 • 작업하기 전에 기획문서 꼼꼼히 읽을 것 • 게임의 자세한 설정은 기획자가 하나하나 글로 구현함 • 작업에 착수하기 전에 기획서를 읽고 게임에 대해 확실히 숙지하고 있어야 잔업이 줄어듬 • 피드백을 받았을 때, 구체적으로 질문할 것 • 기획자들도 종종 추상적인 요구를 함. ‘빨간색으로 바꿔주세요’하면, ‘왜 빨간색으로 바꾸고 싶으세요’라고 되물어 기획자의 의도를 파악할 것. 가끔 기획자가 원하는 건 검은색일 때가 있음 • 기획자의 생각을 믿을 것 • 기획자의 머리 속에는 작업하는 게임에 대한 전반적인 정보가 다 들어 있음 • 무조건 의지하면 안 되지만, 대체로 기획자를 믿고 작업하면 됨
  • 50. 기획자가 아티스트와 대화할 때 • 아티스트에게 기획을 설명해 줄 것 • 아티스트는 게임의 전체적인 기획을 모르는 경우가 많음 • 수시로 게임의 비전과 컨셉에 대해 설명 • 아티스트를 적당히 방임할 것 • 너무 틀에 맞추면 잘 나올 그림도 안나옴. 여러가지 업무를 주고, 아티스트가 스스로 업무 순서를 짜서 작업할 수 있도록 배려 • 원하는 이미지의 느낌을 정확하게 설명할 것 • ‘까만 머리에 양복을 입은 남자’라고 한정짓기보다는 ‘눈빛이 은근하고 싸늘한 분위기가 흐르는 남자’처럼 구체적인 분위기를 전달할 것 • 아티스트는 그쪽 분야의 전문가이기 때문에 생각보다 더 좋은 결과가 나올 수 있음
  • 59. 대답할 수 있다면, 기본적인 것부터 시작하세요
  • 61. 출처 • 디스이즈게임, 문기영, 게임 프로그래머의 길 http://www.thisisgame.com/webzine/series/nboard/212/?series=99 • TOPCIT, NC소프트 서정훈 차장, 게임 개발자의 구조와 역할 http://blog.naver.com/PostView.nhn?blogId=2011topcit&logNo=220174150285&parentCategory No=&categoryNo=17&viewDate=&isShowPopularPosts=false&from=postView • 게임잡, [LOST ARK] 인재 모집 http://www.gamejob.co.kr/List_GI/GIB_Read.asp?GI_No=94113 • 머니투데이, [NDC 13] 아티스트-기획자-프로그래머, 소통 노하우 http://m.mt.co.kr/renew/view.html?no=2013042521108191949 • 위키페디아, 게임코디 http://www.wikipedia.org, http://www.gamecodi.com • ExtremeTech, DirectX 11 and the Heaven Benchmark http://www.extremetech.com/computing/84556-directx-11-and-the-heaven-benchmark/8