SlideShare a Scribd company logo
1 of 71
Download to read offline
넥슨지티 컨텐츠R&D1팀
오영욱
게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
언리얼엔진4 디버깅 101
발표자 소개
오영욱
2006~2008 C++
2008~2009 C++
2009~2011 Flash ActionScript, Java
2011~2013 LUA, Java, Obj-C
2013 Unity, C#
2014~2015 Obj-C, Javascript
2016 Unreal Engine 4, C++
목차
1. 이 세션에서 다루는 내용
2. 개인적인 개발 스타일
3. 버그와 만났을 때
4. 버그 탐색 전략
5. 블루프린트 디버깅 트릭
6. Visual C++ 와 함께 하는 C++ 디버깅 트릭
7. UE4의 엔진코드를 살펴보는 방법
8. 기타 팁들
9. 그 외
10.정리
1. 이 세션에서 다루지 않는 것들
1. 유닛테스트와 테스트 주도 개발
2. 아주 복잡한 버그에 관한 해결책 (멀티쓰레드등의 발생 시점을 특정하지
못하는 버그들)
3. 어셈블리 디버깅 - “NDC2014의 사례로 배우는 디스어셈블리디버깅”
4. 페어프로그래밍을 통한 버그 탐색
5. 모바일 환경에서 디버깅
6. 버그를 만들지 않는 방법
7. 버그가 실제 제품에 딸려가지 않게 하는 방법
8. 곰돌이 인형 디버깅
1. 이 세션에서 다루는 것들
1. 개발하다 막혔을 때 해결 방법
2. 기초적인 UE4의 디버깅 툴들 사용방법
3. UE4에서 제공하고 있는 로깅 방법
4. Visual Studio로 코드에 브레이크포인트를 걸어 데이터를 살펴보기
5. 소소한 디버깅 트릭
이 슬라이드는 2017년 4월에 만들어졌으며,
4.15 버전 기준입니다.
2. (개인적인) 프로그래머의 개발 플로우
시작
종료
개발할것을
정함
구현
원하는대로
구현되었는가
No
Yes
구현한다.
동작하는가.
No
설계를 바꿔본다..
1. 컴파일이 되지 않는다.
2. 실행하면 죽는다.
3. 뭔가 의도한대로 동작하지 않는다.
4. 왜 안 되는지 모르겠다.
5. 하라는 대로 했는데 되지 않는다.
6. 왜 돌아가는지 모르겠다.
7. 어디서부터 봐야 할지 모르겠다.
8. 되던 것이 갑자기 안되기 시작했다.
이러한 걸 해결하는 것들을 다룹니다.
3. 버그와 만났을 때
우선 당장 떠오르는 방법을 실행해봅니다.
떠오르지 않는다면 즉시 키보드에서 손을 뗍니다.
옆에서 끙끙대고 있으면 키보드에서 손을 떼도록 도와주세요.
4. 버그 탐색 전략
1. 키보드에서 손을 떼세요.
2. 에러메시지를 검색한다. (선택)
3. 현재 상황을 검색한다. (Google에서 영어로)
4. 주변에 도움을 청한다.
5. 직접 해결한다.
에러메시지가 제대로 나오는 경우
컴파일이 되지 않거나.
게임 중간에 오류가 나던가.
침착하게 에러메시지를 읽습니다.
대부분은 읽는 것만으로 해결됩니다.
가급적 컴파일 혹은 게임 실행시 나오는 경고-Warning 들은 바로바로
해결하세요.
에러메시지만으로 문제를 특정하지 못하는 경우
종종 발생합니다.
UE4는 에러메시지는 그래도 친절한 편.
에러코드와 에러메시지를 통째로 구글에 넣습니다.
에러코드에는 따옴표를 붙여서 검색어에서 생략되지 않도록 합니다.
우리의 친구 스택오버플로우
에러가 나지 않는 상황에서 코드를 한줄한줄 넣어보면서
어떤 줄에서 에러가 나는지 탐색하는 것도 방법입니다.
(들여쓰기 에러 같은 것은 이렇게라도 잡아야..)
괄호나 세미콜론을 빼먹은 관련된 에러의 경우 엉뚱한 곳을 문제라고 가리킵니다.
• 에러메시지가 나오는 경우를 재현할 방법을 만들어야 합니다.
• 디버깅을 할 때는 문제가 있는 상황에
빠르고 쉽게 접근할 수 있도록 합니다.
에러메세지는 없고
왜 돌아가는 않는지는 모르겠다.
해당 상황에 대해 검색을 합니다.
(지구상의 누군가가 이미 같은 문제를 겪었을 확률이 높습니다.)
자신이 겪는 문제를 가능하면 영어로 만들어서 검색하세요.
처음엔 키워드 만으로 충분합니다. 많이 해봐야 늡니다.
문법이 맞지 않아도 구글이 알아서 고쳐서 검색해줍니다.
EX) 브레이크포인트가 동작을 하지 않아요. – breakpoint not working
해결책을 찾지 못했다면 직접 찾아야 합니다.
디버깅의 80%는 문제를 정확하게 찾아내는 것
1. 가설을 세운다.
2. 로그를 찍거나 브레이크포인트로 문제를 확인한다.
3. 문제가 일어나는 원인을 특정한다.
4. 문제가 일어나는 원인이 정확하게 탐색되었다면 해결 방법을 찾는다.
5. 문제가 일어나는 원인이 밝혀지지 않았다면 1번으로 돌아간다.
언리얼 엔진 디버깅 특징
1. 강력한 블루프린트
2. 친절하게 한국어로 번역된 공식 문서들
3. 오픈 소스라 엔진 소스에 직접 접근 가능
4. 엔진에서 제공하는 강력한 기능들
5. 친절한 소스코드와 로그 메시지들
언리얼 엔진 디버깅 특징
1. 되는 것만 됨. 안되는 것은 되지 않는다.
2. 업데이트 되고 있지 않는 문서들
3. 엔진 코드에서 문제가 생기면 해결하기 어려움
4. 어디 있는지 알려주지는 않는 강력한 기능들
5. 블루프린트 디버깅 트릭
블루프린트 에서 로그 찍기
Print 함수에서 제공하는 추가기능
• 컬러는 눈에 띄게
• Default 2초는 좀 짧으니 길게
늘리는게 좋습니다.
Append를 적극 활용
• Append로 여러 변수를 한번에
출력하는 편이 가독성이 좋습니다.
(tick 등에서 활용)
• 핀 추가로 적극적으로 문장을
만듭니다. (핀변경은 지원안함)
Print Text와 Format Text
{} 로 인자를 만들수 있음
쓸만한 출력 로그 윈도우 (창->개발자툴->출력 로그)
• 중요한건 알아서 노란색으로
표시해줍니다.
• 필터로 필요한것만 볼수 있습니다.
• 로그에 키워드를 넣어 필요한것만
검색할수 있습니다.
블루 프린트 중단점 걸기
블루 프린트 중단점 걸기
블루 프린트 값 보기
• 감시를 해야만 값 확인 가능
블루 프린트 값 보기
디버깅 창은 매우 강력하니
여는걸 잊지 맙시다.
(창->디버그)
사용하지 않는 값은
디버그 데이터에 뜨지 않음.
에디터에서 플레이 할 때 실시간으로 블루프린트 그래프 보기
6. UE4 Visual C++ 디버깅 트릭
Visual Studio 에서 중단점 걸기
Visual Studio 에서 실행중인 어플리케이션에 연결하기
디버그 ->
프로세스에 연결 (Ctrl + Alt + P)
줄 번호 표시는
옵션->텍스트편집기->언어별(C/C++)에서 줄번호 활성화
강력한 덤프를 활용하기
/Saved/Logs 에 가면 지난 로그와 덤프파일들이 모여있습니다.
dmp 파일을 더블클릭해서 visual studio에 연결한 후 visual studio로 실행하면!
강력한 덤프를 활용하기
코드 위치
크래시 당시 메모리 확인 가능
강력한 덤프를 활용하기
다른 컴퓨터에서 크래시가 발생했다면 dmp 파일 확보.
해당 빌드의 pdb 파일 확보. – BinariesWin64 폴더.
pdb 파일 위치 지정은 도구->옵션->디버깅->기호(symbol)
(덤프파일 여는 창에서도 지정할수 있음)
강력한 덤프를 활용하기
NDC 2012 - 덤프 파일을 통한 사후 디버깅 실용 테크닉
심화과정
Cpp 에서 로그 찍기
AddOnScreenDebugMessage 함수 사용
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Yellow, TEXT("BlahBlahBlah"));
#include "Engine.h" 잊지 마세요.
7. 엔진코드를 살펴보기
• 내려받는 법이 따로 있음.
• 깃헙 계정과 언리얼 계정이 둘다 필요하며 연동해야만 합니다.
• 연동 후엔 받아서 직접 빌드 할 수 있습니다.
• 빌드엔 시간이 상당히 걸리며 기존 엔진 버전과는 호환이 되지 않음.
에디터를 실행하고, 자신의 프로젝트 폴더에 있는 .uproject 파일을 우클릭하면
엔진 버전 교체 가능
8. 기타 팁들
에디터에서는 테스트하기 힘든 문제들의 테스트 환경 구축
• 플레이에서 독립형 게임으로 실행함
• 고급세팅 – 에디터 개인설정의 레벨에디터 – 플레이에서는 독립형게임(stand alone play)
에서 추가 파라미터를 넣을수 있음. –log 를 넣어 로그 창을 여는 것을 권함.
• Batch 파일(.bat)을 만들어서 에디터에서 바로 맵을 실행할수 있음.
• 게임과 마찬가지로 서버, 리슨서버, 클라이언트, 시작 map 파일 설정을 할수 있음.
• "_ue4_folder_UE4Editor.exe " _projectname_.uproject" _map_.umap -log
다른 사람들이 만든 코드들을 검색할 때
• 특히 로그 나오는 것 어디서 찍는지 볼 때
종종 겪는 문제들
블루프린트 무한루프
블루프린트 무한루프
블루프린트 무한루프
1000000 정도 루프가 되면 알아서 멈추긴 함
알아서 멈추면 메시지 로그에서 위치를 표시해줌
출력로그에서 죽었다고도 알려줌
부모 함수 호출 생략
상속받은 클래스일 경우 필요
우클릭해서 추가할수 있음
If 문에서 괄호 없이 작업하다 기능추가할 때
9. 그 외
1. 소스코드를 업데이트 할 때는 에디터는 꼭 꺼라.
2. 파일을 못 쓰겠다고 한다면 일단 게임, 에디터부터 끄자.
3. 가끔 Visual Studio의 컴파일 결과가 엔진에 반영 안될 때도 있다.
4. 소스 꼬였을 때는 침착하게 Git 커맨드라인으로..
1. 귀찮다는 생각이 들었다면 가급적 바로 해결
2. 항상 측정하고 결과를 확인하는 습관을 들일 것.
3. 빠르게 반복할 수 있는 환경을 만들 것.
4. 동료들을 믿어라.
NDC의 디버깅 관련 세션들
NDC2016 마이크로토크-안드로이드 게임 해킹 실제 사례와 실전 디버깅
NDC2014 사례로 배우는 디스어셈블리 디버깅
NDC2012 덤프 파일을 통한 사후 디버깅 실용 테크닉
NDC2010 온라인 게임에서 사례로 살펴보는 디버깅
10. 정리
1. 에러메세지를 읽자
2. 검색을 잘 하자
3. 로그를 잘 남기자
4. 테스트에 친화적인 환경을 구축하자
1.반복하는 시간을 단축하기 위해 배치파일등을 활용
2.디버그에 사용할 키 이벤트 등을 준비해서 재현을 바로바로 할 수 있도록 함
5. 혼자 붙들고 죽지 말자
이현승님의 NDC 2016 –
프로그래머를 괴롭히는 Unreal Engine 4의 함정들을 같이 보세요.
http://ndcreplay.nexon.com/NDC2016/sessions/NDC2016_0069.html
사용된 이미지들
알라딘 굿즈 마션 첫문장 머그컵
Don’t Panic Outer Space The Hitchhikers Guide To The Galaxy
https://www.walldevil.com/9334-don39t-panic-outer-space-the-hitchhikers-guide-to-galaxy.html
언리얼 엔진 4의 디버깅 관련 공식 문서
블루프린트 디버깅 : https://docs.unrealengine.com/latest/KOR/Engine/Blueprints/UserGuide/Debugging/index.html
PPT 작성에 도움을 주신 김주석님과 황선하님께 감사드립니다.
감사합니다.

More Related Content

What's hot

윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019devCAT Studio, NEXON
 
리플렉션과 가비지 컬렉션
리플렉션과 가비지 컬렉션리플렉션과 가비지 컬렉션
리플렉션과 가비지 컬렉션QooJuice
 
UI드자이너의 짧은 언리얼 UMG 사용기
UI드자이너의 짧은 언리얼 UMG 사용기UI드자이너의 짧은 언리얼 UMG 사용기
UI드자이너의 짧은 언리얼 UMG 사용기Hong-Gi Joe
 
Unreal python
Unreal pythonUnreal python
Unreal pythonTonyCms
 
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012devCAT Studio, NEXON
 
[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법
[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법
[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법강 민우
 
전형규, 프로젝트DH의 절차적 애니메이션 시스템, NDC2017
전형규, 프로젝트DH의 절차적 애니메이션 시스템, NDC2017전형규, 프로젝트DH의 절차적 애니메이션 시스템, NDC2017
전형규, 프로젝트DH의 절차적 애니메이션 시스템, NDC2017devCAT Studio, NEXON
 
나만의 엔진 개발하기
나만의 엔진 개발하기나만의 엔진 개발하기
나만의 엔진 개발하기YEONG-CHEON YOU
 
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들MinGeun Park
 
[2019] 언리얼 엔진을 통해 살펴보는 리플렉션과 가비지 컬렉션
[2019] 언리얼 엔진을 통해 살펴보는 리플렉션과 가비지 컬렉션[2019] 언리얼 엔진을 통해 살펴보는 리플렉션과 가비지 컬렉션
[2019] 언리얼 엔진을 통해 살펴보는 리플렉션과 가비지 컬렉션NHN FORWARD
 
멀티스레드 렌더링 (Multithreaded rendering)
멀티스레드 렌더링 (Multithreaded rendering)멀티스레드 렌더링 (Multithreaded rendering)
멀티스레드 렌더링 (Multithreaded rendering)Bongseok Cho
 
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기현철 조
 
[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들
[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들
[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들강 민우
 
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기Jaeseung Ha
 
MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현YEONG-CHEON YOU
 
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019devCAT Studio, NEXON
 
임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012devCAT Studio, NEXON
 
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018devCAT Studio, NEXON
 
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019devCAT Studio, NEXON
 

What's hot (20)

윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
 
리플렉션과 가비지 컬렉션
리플렉션과 가비지 컬렉션리플렉션과 가비지 컬렉션
리플렉션과 가비지 컬렉션
 
UI드자이너의 짧은 언리얼 UMG 사용기
UI드자이너의 짧은 언리얼 UMG 사용기UI드자이너의 짧은 언리얼 UMG 사용기
UI드자이너의 짧은 언리얼 UMG 사용기
 
Unreal python
Unreal pythonUnreal python
Unreal python
 
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
 
[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법
[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법
[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법
 
전형규, 프로젝트DH의 절차적 애니메이션 시스템, NDC2017
전형규, 프로젝트DH의 절차적 애니메이션 시스템, NDC2017전형규, 프로젝트DH의 절차적 애니메이션 시스템, NDC2017
전형규, 프로젝트DH의 절차적 애니메이션 시스템, NDC2017
 
나만의 엔진 개발하기
나만의 엔진 개발하기나만의 엔진 개발하기
나만의 엔진 개발하기
 
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들
 
[2019] 언리얼 엔진을 통해 살펴보는 리플렉션과 가비지 컬렉션
[2019] 언리얼 엔진을 통해 살펴보는 리플렉션과 가비지 컬렉션[2019] 언리얼 엔진을 통해 살펴보는 리플렉션과 가비지 컬렉션
[2019] 언리얼 엔진을 통해 살펴보는 리플렉션과 가비지 컬렉션
 
멀티스레드 렌더링 (Multithreaded rendering)
멀티스레드 렌더링 (Multithreaded rendering)멀티스레드 렌더링 (Multithreaded rendering)
멀티스레드 렌더링 (Multithreaded rendering)
 
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
 
[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들
[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들
[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들
 
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
 
MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현
 
UE4のモバイル開発におけるコンテンツアップデートの話 - Chunk IDとの激闘編 -
UE4のモバイル開発におけるコンテンツアップデートの話 - Chunk IDとの激闘編 -UE4のモバイル開発におけるコンテンツアップデートの話 - Chunk IDとの激闘編 -
UE4のモバイル開発におけるコンテンツアップデートの話 - Chunk IDとの激闘編 -
 
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
 
임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012
 
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018
 
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
 

Viewers also liked

[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트Chanwoong Kim
 
NDC 2017 마이크로토크 - 프로그래머가 뉴스 읽는 법
NDC 2017 마이크로토크 - 프로그래머가 뉴스 읽는 법NDC 2017 마이크로토크 - 프로그래머가 뉴스 읽는 법
NDC 2017 마이크로토크 - 프로그래머가 뉴스 읽는 법Sumin Byeon
 
[NDC2017] 딥러닝으로 게임 콘텐츠 제작하기 - VAE를 이용한 콘텐츠 생성 기법 연구 사례
[NDC2017] 딥러닝으로 게임 콘텐츠 제작하기 - VAE를 이용한 콘텐츠 생성 기법 연구 사례[NDC2017] 딥러닝으로 게임 콘텐츠 제작하기 - VAE를 이용한 콘텐츠 생성 기법 연구 사례
[NDC2017] 딥러닝으로 게임 콘텐츠 제작하기 - VAE를 이용한 콘텐츠 생성 기법 연구 사례Hwanhee Kim
 
[NDC2017 정서연] 몬스터 슈퍼리그 리텐션 15% 개선 리포트 - 숫자보다 매력적인 감성 테라피
[NDC2017 정서연] 몬스터 슈퍼리그 리텐션 15% 개선 리포트 - 숫자보다 매력적인 감성 테라피[NDC2017 정서연] 몬스터 슈퍼리그 리텐션 15% 개선 리포트 - 숫자보다 매력적인 감성 테라피
[NDC2017 정서연] 몬스터 슈퍼리그 리텐션 15% 개선 리포트 - 숫자보다 매력적인 감성 테라피Jeong Seoyeon
 
NDC17 게임 디자이너 커리어 포스트모템: 8년, 3개의 회사, 4개의 게임
NDC17 게임 디자이너 커리어 포스트모템: 8년, 3개의 회사, 4개의 게임NDC17 게임 디자이너 커리어 포스트모템: 8년, 3개의 회사, 4개의 게임
NDC17 게임 디자이너 커리어 포스트모템: 8년, 3개의 회사, 4개의 게임Imseong Kang
 
이무림, 워크샵 게임 만들기: 부족전쟁, NDC2017
이무림, 워크샵 게임 만들기: 부족전쟁, NDC2017이무림, 워크샵 게임 만들기: 부족전쟁, NDC2017
이무림, 워크샵 게임 만들기: 부족전쟁, NDC2017devCAT Studio, NEXON
 
이승재, 일정대로 출시하기 왜 & 어떻게: 개발자를 위한 제작진행개론, NDC2017
이승재, 일정대로 출시하기 왜 & 어떻게: 개발자를 위한 제작진행개론, NDC2017이승재, 일정대로 출시하기 왜 & 어떻게: 개발자를 위한 제작진행개론, NDC2017
이승재, 일정대로 출시하기 왜 & 어떻게: 개발자를 위한 제작진행개론, NDC2017devCAT Studio, NEXON
 
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017devCAT Studio, NEXON
 
ndc 2017 어쩌다 신입 - 초보 게임 개발자 2년 간의 포스트모템
ndc 2017 어쩌다 신입 - 초보 게임 개발자 2년 간의 포스트모템ndc 2017 어쩌다 신입 - 초보 게임 개발자 2년 간의 포스트모템
ndc 2017 어쩌다 신입 - 초보 게임 개발자 2년 간의 포스트모템Chaeone Son
 
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017devCAT Studio, NEXON
 
노기태, 김대우, 모바일 게임 데이터에 입각한 머신러닝 예측 분석 도입 및 삽질 후기, NDC2017
노기태, 김대우, 모바일 게임 데이터에 입각한 머신러닝 예측 분석 도입 및 삽질 후기, NDC2017노기태, 김대우, 모바일 게임 데이터에 입각한 머신러닝 예측 분석 도입 및 삽질 후기, NDC2017
노기태, 김대우, 모바일 게임 데이터에 입각한 머신러닝 예측 분석 도입 및 삽질 후기, NDC2017devCAT Studio, NEXON
 
이희영, 온라인 게임에서 모바일 게임으로 이어지는 메타플레이 트렌드, NDC2017
이희영, 온라인 게임에서 모바일 게임으로 이어지는 메타플레이 트렌드, NDC2017이희영, 온라인 게임에서 모바일 게임으로 이어지는 메타플레이 트렌드, NDC2017
이희영, 온라인 게임에서 모바일 게임으로 이어지는 메타플레이 트렌드, NDC2017devCAT Studio, NEXON
 
원격근무 개발자의 자기관리 - 우리는 모두 원격근무자다!
원격근무 개발자의 자기관리 - 우리는 모두 원격근무자다!원격근무 개발자의 자기관리 - 우리는 모두 원격근무자다!
원격근무 개발자의 자기관리 - 우리는 모두 원격근무자다!Minwoo Park
 
NDC 2017 마이크로토크 - Spacemacs: 최고의 에디터는 Emacs도 Vim도 아니다. Emacs와 Vim이다!
NDC 2017 마이크로토크 - Spacemacs: 최고의 에디터는 Emacs도 Vim도 아니다. Emacs와 Vim이다!NDC 2017 마이크로토크 - Spacemacs: 최고의 에디터는 Emacs도 Vim도 아니다. Emacs와 Vim이다!
NDC 2017 마이크로토크 - Spacemacs: 최고의 에디터는 Emacs도 Vim도 아니다. Emacs와 Vim이다!영호 김
 
NDC 2017 키노트: 이은석 - 다가오는 4차 산업혁명 시대의 게임개발
NDC 2017 키노트: 이은석 - 다가오는 4차 산업혁명 시대의 게임개발NDC 2017 키노트: 이은석 - 다가오는 4차 산업혁명 시대의 게임개발
NDC 2017 키노트: 이은석 - 다가오는 4차 산업혁명 시대의 게임개발Eunseok Yi
 
[NDC2017 : 박준철] Python 게임 서버 안녕하십니까 - 몬스터 슈퍼리그 게임 서버
[NDC2017 : 박준철] Python 게임 서버 안녕하십니까 - 몬스터 슈퍼리그 게임 서버[NDC2017 : 박준철] Python 게임 서버 안녕하십니까 - 몬스터 슈퍼리그 게임 서버
[NDC2017 : 박준철] Python 게임 서버 안녕하십니까 - 몬스터 슈퍼리그 게임 서버준철 박
 
홍성우, 내가 만든 언어로 게임 만들기, NDC2017
홍성우, 내가 만든 언어로 게임 만들기, NDC2017홍성우, 내가 만든 언어로 게임 만들기, NDC2017
홍성우, 내가 만든 언어로 게임 만들기, NDC2017devCAT Studio, NEXON
 
'오래 오래 건강하게' - 2013년 정관장 추석선물 카탈로그
'오래 오래 건강하게' - 2013년 정관장 추석선물 카탈로그'오래 오래 건강하게' - 2013년 정관장 추석선물 카탈로그
'오래 오래 건강하게' - 2013년 정관장 추석선물 카탈로그samsamstory
 
Kgc인삼공사 '심' 2013 spring
Kgc인삼공사 '심' 2013 springKgc인삼공사 '심' 2013 spring
Kgc인삼공사 '심' 2013 springsamsamstory
 
Daum 음성인식 API (김한샘)
Daum 음성인식 API (김한샘)Daum 음성인식 API (김한샘)
Daum 음성인식 API (김한샘)Daum DNA
 

Viewers also liked (20)

[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트
 
NDC 2017 마이크로토크 - 프로그래머가 뉴스 읽는 법
NDC 2017 마이크로토크 - 프로그래머가 뉴스 읽는 법NDC 2017 마이크로토크 - 프로그래머가 뉴스 읽는 법
NDC 2017 마이크로토크 - 프로그래머가 뉴스 읽는 법
 
[NDC2017] 딥러닝으로 게임 콘텐츠 제작하기 - VAE를 이용한 콘텐츠 생성 기법 연구 사례
[NDC2017] 딥러닝으로 게임 콘텐츠 제작하기 - VAE를 이용한 콘텐츠 생성 기법 연구 사례[NDC2017] 딥러닝으로 게임 콘텐츠 제작하기 - VAE를 이용한 콘텐츠 생성 기법 연구 사례
[NDC2017] 딥러닝으로 게임 콘텐츠 제작하기 - VAE를 이용한 콘텐츠 생성 기법 연구 사례
 
[NDC2017 정서연] 몬스터 슈퍼리그 리텐션 15% 개선 리포트 - 숫자보다 매력적인 감성 테라피
[NDC2017 정서연] 몬스터 슈퍼리그 리텐션 15% 개선 리포트 - 숫자보다 매력적인 감성 테라피[NDC2017 정서연] 몬스터 슈퍼리그 리텐션 15% 개선 리포트 - 숫자보다 매력적인 감성 테라피
[NDC2017 정서연] 몬스터 슈퍼리그 리텐션 15% 개선 리포트 - 숫자보다 매력적인 감성 테라피
 
NDC17 게임 디자이너 커리어 포스트모템: 8년, 3개의 회사, 4개의 게임
NDC17 게임 디자이너 커리어 포스트모템: 8년, 3개의 회사, 4개의 게임NDC17 게임 디자이너 커리어 포스트모템: 8년, 3개의 회사, 4개의 게임
NDC17 게임 디자이너 커리어 포스트모템: 8년, 3개의 회사, 4개의 게임
 
이무림, 워크샵 게임 만들기: 부족전쟁, NDC2017
이무림, 워크샵 게임 만들기: 부족전쟁, NDC2017이무림, 워크샵 게임 만들기: 부족전쟁, NDC2017
이무림, 워크샵 게임 만들기: 부족전쟁, NDC2017
 
이승재, 일정대로 출시하기 왜 & 어떻게: 개발자를 위한 제작진행개론, NDC2017
이승재, 일정대로 출시하기 왜 & 어떻게: 개발자를 위한 제작진행개론, NDC2017이승재, 일정대로 출시하기 왜 & 어떻게: 개발자를 위한 제작진행개론, NDC2017
이승재, 일정대로 출시하기 왜 & 어떻게: 개발자를 위한 제작진행개론, NDC2017
 
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
 
ndc 2017 어쩌다 신입 - 초보 게임 개발자 2년 간의 포스트모템
ndc 2017 어쩌다 신입 - 초보 게임 개발자 2년 간의 포스트모템ndc 2017 어쩌다 신입 - 초보 게임 개발자 2년 간의 포스트모템
ndc 2017 어쩌다 신입 - 초보 게임 개발자 2년 간의 포스트모템
 
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017
 
노기태, 김대우, 모바일 게임 데이터에 입각한 머신러닝 예측 분석 도입 및 삽질 후기, NDC2017
노기태, 김대우, 모바일 게임 데이터에 입각한 머신러닝 예측 분석 도입 및 삽질 후기, NDC2017노기태, 김대우, 모바일 게임 데이터에 입각한 머신러닝 예측 분석 도입 및 삽질 후기, NDC2017
노기태, 김대우, 모바일 게임 데이터에 입각한 머신러닝 예측 분석 도입 및 삽질 후기, NDC2017
 
이희영, 온라인 게임에서 모바일 게임으로 이어지는 메타플레이 트렌드, NDC2017
이희영, 온라인 게임에서 모바일 게임으로 이어지는 메타플레이 트렌드, NDC2017이희영, 온라인 게임에서 모바일 게임으로 이어지는 메타플레이 트렌드, NDC2017
이희영, 온라인 게임에서 모바일 게임으로 이어지는 메타플레이 트렌드, NDC2017
 
원격근무 개발자의 자기관리 - 우리는 모두 원격근무자다!
원격근무 개발자의 자기관리 - 우리는 모두 원격근무자다!원격근무 개발자의 자기관리 - 우리는 모두 원격근무자다!
원격근무 개발자의 자기관리 - 우리는 모두 원격근무자다!
 
NDC 2017 마이크로토크 - Spacemacs: 최고의 에디터는 Emacs도 Vim도 아니다. Emacs와 Vim이다!
NDC 2017 마이크로토크 - Spacemacs: 최고의 에디터는 Emacs도 Vim도 아니다. Emacs와 Vim이다!NDC 2017 마이크로토크 - Spacemacs: 최고의 에디터는 Emacs도 Vim도 아니다. Emacs와 Vim이다!
NDC 2017 마이크로토크 - Spacemacs: 최고의 에디터는 Emacs도 Vim도 아니다. Emacs와 Vim이다!
 
NDC 2017 키노트: 이은석 - 다가오는 4차 산업혁명 시대의 게임개발
NDC 2017 키노트: 이은석 - 다가오는 4차 산업혁명 시대의 게임개발NDC 2017 키노트: 이은석 - 다가오는 4차 산업혁명 시대의 게임개발
NDC 2017 키노트: 이은석 - 다가오는 4차 산업혁명 시대의 게임개발
 
[NDC2017 : 박준철] Python 게임 서버 안녕하십니까 - 몬스터 슈퍼리그 게임 서버
[NDC2017 : 박준철] Python 게임 서버 안녕하십니까 - 몬스터 슈퍼리그 게임 서버[NDC2017 : 박준철] Python 게임 서버 안녕하십니까 - 몬스터 슈퍼리그 게임 서버
[NDC2017 : 박준철] Python 게임 서버 안녕하십니까 - 몬스터 슈퍼리그 게임 서버
 
홍성우, 내가 만든 언어로 게임 만들기, NDC2017
홍성우, 내가 만든 언어로 게임 만들기, NDC2017홍성우, 내가 만든 언어로 게임 만들기, NDC2017
홍성우, 내가 만든 언어로 게임 만들기, NDC2017
 
'오래 오래 건강하게' - 2013년 정관장 추석선물 카탈로그
'오래 오래 건강하게' - 2013년 정관장 추석선물 카탈로그'오래 오래 건강하게' - 2013년 정관장 추석선물 카탈로그
'오래 오래 건강하게' - 2013년 정관장 추석선물 카탈로그
 
Kgc인삼공사 '심' 2013 spring
Kgc인삼공사 '심' 2013 springKgc인삼공사 '심' 2013 spring
Kgc인삼공사 '심' 2013 spring
 
Daum 음성인식 API (김한샘)
Daum 음성인식 API (김한샘)Daum 음성인식 API (김한샘)
Daum 음성인식 API (김한샘)
 

Similar to NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들

김성훈 - 뛰어난 디버거가 되는 방법
김성훈 - 뛰어난 디버거가 되는 방법김성훈 - 뛰어난 디버거가 되는 방법
김성훈 - 뛰어난 디버거가 되는 방법성훈 김
 
당신의 디버깅에 니코니코니
당신의 디버깅에 니코니코니당신의 디버깅에 니코니코니
당신의 디버깅에 니코니코니Lusain Kim
 
온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기Seungjae Lee
 
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발동현 김
 
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)NAVER D2
 
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법복연 이
 
포스트모템디버깅과 프로세스 덤프 실전
포스트모템디버깅과 프로세스 덤프 실전포스트모템디버깅과 프로세스 덤프 실전
포스트모템디버깅과 프로세스 덤프 실전주항 박
 
Debugging with Visual Studio
Debugging with Visual StudioDebugging with Visual Studio
Debugging with Visual StudioLusain Kim
 
2015.08.01 회사원쪼꼬두유
2015.08.01 회사원쪼꼬두유2015.08.01 회사원쪼꼬두유
2015.08.01 회사원쪼꼬두유은아 정
 
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍NDOORS
 
[Osxdev]4.swift
[Osxdev]4.swift[Osxdev]4.swift
[Osxdev]4.swiftNAVER D2
 
임태현, 서버점검 제로에의 도전, NDC2011
임태현, 서버점검 제로에의 도전, NDC2011임태현, 서버점검 제로에의 도전, NDC2011
임태현, 서버점검 제로에의 도전, NDC2011devCAT Studio, NEXON
 
깨끗한 코드 (클린 코드, Clean Code)
깨끗한 코드 (클린 코드, Clean Code)깨끗한 코드 (클린 코드, Clean Code)
깨끗한 코드 (클린 코드, Clean Code)Jay Park
 
애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In Th...
애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In Th...애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In Th...
애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In Th...Kay Kim
 
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010Ryan Park
 
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10Ryan Park
 
프로그램은 왜 실패하는가 1장
프로그램은 왜 실패하는가 1장프로그램은 왜 실패하는가 1장
프로그램은 왜 실패하는가 1장Ryan Park
 
청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기Chris Ohk
 
학교에서 배우지 않는 C
학교에서 배우지 않는 C학교에서 배우지 않는 C
학교에서 배우지 않는 CHeesuk Kang
 

Similar to NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들 (20)

김성훈 - 뛰어난 디버거가 되는 방법
김성훈 - 뛰어난 디버거가 되는 방법김성훈 - 뛰어난 디버거가 되는 방법
김성훈 - 뛰어난 디버거가 되는 방법
 
당신의 디버깅에 니코니코니
당신의 디버깅에 니코니코니당신의 디버깅에 니코니코니
당신의 디버깅에 니코니코니
 
온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기
 
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
 
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)
 
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
 
포스트모템디버깅과 프로세스 덤프 실전
포스트모템디버깅과 프로세스 덤프 실전포스트모템디버깅과 프로세스 덤프 실전
포스트모템디버깅과 프로세스 덤프 실전
 
Debugging with Visual Studio
Debugging with Visual StudioDebugging with Visual Studio
Debugging with Visual Studio
 
2015.08.01 회사원쪼꼬두유
2015.08.01 회사원쪼꼬두유2015.08.01 회사원쪼꼬두유
2015.08.01 회사원쪼꼬두유
 
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
 
[Osxdev]4.swift
[Osxdev]4.swift[Osxdev]4.swift
[Osxdev]4.swift
 
임태현, 서버점검 제로에의 도전, NDC2011
임태현, 서버점검 제로에의 도전, NDC2011임태현, 서버점검 제로에의 도전, NDC2011
임태현, 서버점검 제로에의 도전, NDC2011
 
깨끗한 코드 (클린 코드, Clean Code)
깨끗한 코드 (클린 코드, Clean Code)깨끗한 코드 (클린 코드, Clean Code)
깨끗한 코드 (클린 코드, Clean Code)
 
애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In Th...
애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In Th...애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In Th...
애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In Th...
 
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
 
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
 
프로그램은 왜 실패하는가 1장
프로그램은 왜 실패하는가 1장프로그램은 왜 실패하는가 1장
프로그램은 왜 실패하는가 1장
 
DebugIt/chapter5~8
DebugIt/chapter5~8DebugIt/chapter5~8
DebugIt/chapter5~8
 
청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기
 
학교에서 배우지 않는 C
학교에서 배우지 않는 C학교에서 배우지 않는 C
학교에서 배우지 않는 C
 

More from 영욱 오

NDC2019 발굴되지 않은 한국 게임의 역사
NDC2019 발굴되지 않은 한국 게임의 역사NDC2019 발굴되지 않은 한국 게임의 역사
NDC2019 발굴되지 않은 한국 게임의 역사영욱 오
 
국내게임아카이빙_청계천기술문화연구회발표_20181130
국내게임아카이빙_청계천기술문화연구회발표_20181130국내게임아카이빙_청계천기술문화연구회발표_20181130
국내게임아카이빙_청계천기술문화연구회발표_20181130영욱 오
 
게임개발자 직업체험의날 배포용
게임개발자 직업체험의날 배포용게임개발자 직업체험의날 배포용
게임개발자 직업체험의날 배포용영욱 오
 
게임 작가주의가 가능할까?
게임 작가주의가 가능할까?게임 작가주의가 가능할까?
게임 작가주의가 가능할까?영욱 오
 
KGC2015 - 이 게임을 만든 사람들은 누구인가요
KGC2015 - 이 게임을 만든 사람들은 누구인가요KGC2015 - 이 게임을 만든 사람들은 누구인가요
KGC2015 - 이 게임을 만든 사람들은 누구인가요영욱 오
 
플레이스테이션 클래스 10주차 - 게임개발 - 강점을 활용하기
플레이스테이션 클래스 10주차 - 게임개발 - 강점을 활용하기플레이스테이션 클래스 10주차 - 게임개발 - 강점을 활용하기
플레이스테이션 클래스 10주차 - 게임개발 - 강점을 활용하기영욱 오
 
[KGC2014] 과거 한국의 게임에서 우리가 가르침을 얻기 위해 해야할 일
[KGC2014] 과거 한국의 게임에서 우리가 가르침을 얻기 위해 해야할 일[KGC2014] 과거 한국의 게임에서 우리가 가르침을 얻기 위해 해야할 일
[KGC2014] 과거 한국의 게임에서 우리가 가르침을 얻기 위해 해야할 일영욱 오
 
게임이 다양한 문화기반을 가지기 위하여
게임이 다양한 문화기반을 가지기 위하여게임이 다양한 문화기반을 가지기 위하여
게임이 다양한 문화기반을 가지기 위하여영욱 오
 
푸른역사아카데미 문화비평 오덕인문학 5. 게임의 역사를 이끌었던 오타쿠들 이야기.
푸른역사아카데미 문화비평 오덕인문학 5. 게임의 역사를 이끌었던 오타쿠들 이야기.푸른역사아카데미 문화비평 오덕인문학 5. 게임의 역사를 이끌었던 오타쿠들 이야기.
푸른역사아카데미 문화비평 오덕인문학 5. 게임의 역사를 이끌었던 오타쿠들 이야기.영욱 오
 
게임 프로그래머로 살아남기 at 지스타 컨퍼런스 2013
게임 프로그래머로 살아남기 at 지스타 컨퍼런스 2013게임 프로그래머로 살아남기 at 지스타 컨퍼런스 2013
게임 프로그래머로 살아남기 at 지스타 컨퍼런스 2013영욱 오
 
게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013
게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013
게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013영욱 오
 
한국 게임의 역사 NDC 2013
한국 게임의 역사 NDC 2013한국 게임의 역사 NDC 2013
한국 게임의 역사 NDC 2013영욱 오
 
한국게임의역사
한국게임의역사한국게임의역사
한국게임의역사영욱 오
 
Social Game Party on Mar. 2010 - Webgame Apocalyps Postmortem
Social Game Party on Mar. 2010 - Webgame Apocalyps PostmortemSocial Game Party on Mar. 2010 - Webgame Apocalyps Postmortem
Social Game Party on Mar. 2010 - Webgame Apocalyps Postmortem영욱 오
 

More from 영욱 오 (14)

NDC2019 발굴되지 않은 한국 게임의 역사
NDC2019 발굴되지 않은 한국 게임의 역사NDC2019 발굴되지 않은 한국 게임의 역사
NDC2019 발굴되지 않은 한국 게임의 역사
 
국내게임아카이빙_청계천기술문화연구회발표_20181130
국내게임아카이빙_청계천기술문화연구회발표_20181130국내게임아카이빙_청계천기술문화연구회발표_20181130
국내게임아카이빙_청계천기술문화연구회발표_20181130
 
게임개발자 직업체험의날 배포용
게임개발자 직업체험의날 배포용게임개발자 직업체험의날 배포용
게임개발자 직업체험의날 배포용
 
게임 작가주의가 가능할까?
게임 작가주의가 가능할까?게임 작가주의가 가능할까?
게임 작가주의가 가능할까?
 
KGC2015 - 이 게임을 만든 사람들은 누구인가요
KGC2015 - 이 게임을 만든 사람들은 누구인가요KGC2015 - 이 게임을 만든 사람들은 누구인가요
KGC2015 - 이 게임을 만든 사람들은 누구인가요
 
플레이스테이션 클래스 10주차 - 게임개발 - 강점을 활용하기
플레이스테이션 클래스 10주차 - 게임개발 - 강점을 활용하기플레이스테이션 클래스 10주차 - 게임개발 - 강점을 활용하기
플레이스테이션 클래스 10주차 - 게임개발 - 강점을 활용하기
 
[KGC2014] 과거 한국의 게임에서 우리가 가르침을 얻기 위해 해야할 일
[KGC2014] 과거 한국의 게임에서 우리가 가르침을 얻기 위해 해야할 일[KGC2014] 과거 한국의 게임에서 우리가 가르침을 얻기 위해 해야할 일
[KGC2014] 과거 한국의 게임에서 우리가 가르침을 얻기 위해 해야할 일
 
게임이 다양한 문화기반을 가지기 위하여
게임이 다양한 문화기반을 가지기 위하여게임이 다양한 문화기반을 가지기 위하여
게임이 다양한 문화기반을 가지기 위하여
 
푸른역사아카데미 문화비평 오덕인문학 5. 게임의 역사를 이끌었던 오타쿠들 이야기.
푸른역사아카데미 문화비평 오덕인문학 5. 게임의 역사를 이끌었던 오타쿠들 이야기.푸른역사아카데미 문화비평 오덕인문학 5. 게임의 역사를 이끌었던 오타쿠들 이야기.
푸른역사아카데미 문화비평 오덕인문학 5. 게임의 역사를 이끌었던 오타쿠들 이야기.
 
게임 프로그래머로 살아남기 at 지스타 컨퍼런스 2013
게임 프로그래머로 살아남기 at 지스타 컨퍼런스 2013게임 프로그래머로 살아남기 at 지스타 컨퍼런스 2013
게임 프로그래머로 살아남기 at 지스타 컨퍼런스 2013
 
게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013
게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013
게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013
 
한국 게임의 역사 NDC 2013
한국 게임의 역사 NDC 2013한국 게임의 역사 NDC 2013
한국 게임의 역사 NDC 2013
 
한국게임의역사
한국게임의역사한국게임의역사
한국게임의역사
 
Social Game Party on Mar. 2010 - Webgame Apocalyps Postmortem
Social Game Party on Mar. 2010 - Webgame Apocalyps PostmortemSocial Game Party on Mar. 2010 - Webgame Apocalyps Postmortem
Social Game Party on Mar. 2010 - Webgame Apocalyps Postmortem
 

NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들

  • 1. 넥슨지티 컨텐츠R&D1팀 오영욱 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들 언리얼엔진4 디버깅 101
  • 2. 발표자 소개 오영욱 2006~2008 C++ 2008~2009 C++ 2009~2011 Flash ActionScript, Java 2011~2013 LUA, Java, Obj-C 2013 Unity, C# 2014~2015 Obj-C, Javascript 2016 Unreal Engine 4, C++
  • 3. 목차 1. 이 세션에서 다루는 내용 2. 개인적인 개발 스타일 3. 버그와 만났을 때 4. 버그 탐색 전략 5. 블루프린트 디버깅 트릭 6. Visual C++ 와 함께 하는 C++ 디버깅 트릭 7. UE4의 엔진코드를 살펴보는 방법 8. 기타 팁들 9. 그 외 10.정리
  • 4. 1. 이 세션에서 다루지 않는 것들 1. 유닛테스트와 테스트 주도 개발 2. 아주 복잡한 버그에 관한 해결책 (멀티쓰레드등의 발생 시점을 특정하지 못하는 버그들) 3. 어셈블리 디버깅 - “NDC2014의 사례로 배우는 디스어셈블리디버깅” 4. 페어프로그래밍을 통한 버그 탐색 5. 모바일 환경에서 디버깅 6. 버그를 만들지 않는 방법 7. 버그가 실제 제품에 딸려가지 않게 하는 방법 8. 곰돌이 인형 디버깅
  • 5. 1. 이 세션에서 다루는 것들 1. 개발하다 막혔을 때 해결 방법 2. 기초적인 UE4의 디버깅 툴들 사용방법 3. UE4에서 제공하고 있는 로깅 방법 4. Visual Studio로 코드에 브레이크포인트를 걸어 데이터를 살펴보기 5. 소소한 디버깅 트릭
  • 6. 이 슬라이드는 2017년 4월에 만들어졌으며, 4.15 버전 기준입니다.
  • 10.
  • 11. 1. 컴파일이 되지 않는다. 2. 실행하면 죽는다. 3. 뭔가 의도한대로 동작하지 않는다. 4. 왜 안 되는지 모르겠다. 5. 하라는 대로 했는데 되지 않는다. 6. 왜 돌아가는지 모르겠다. 7. 어디서부터 봐야 할지 모르겠다. 8. 되던 것이 갑자기 안되기 시작했다. 이러한 걸 해결하는 것들을 다룹니다.
  • 13.
  • 14. 우선 당장 떠오르는 방법을 실행해봅니다. 떠오르지 않는다면 즉시 키보드에서 손을 뗍니다. 옆에서 끙끙대고 있으면 키보드에서 손을 떼도록 도와주세요.
  • 16. 1. 키보드에서 손을 떼세요. 2. 에러메시지를 검색한다. (선택) 3. 현재 상황을 검색한다. (Google에서 영어로) 4. 주변에 도움을 청한다. 5. 직접 해결한다.
  • 17. 에러메시지가 제대로 나오는 경우 컴파일이 되지 않거나. 게임 중간에 오류가 나던가.
  • 18. 침착하게 에러메시지를 읽습니다. 대부분은 읽는 것만으로 해결됩니다. 가급적 컴파일 혹은 게임 실행시 나오는 경고-Warning 들은 바로바로 해결하세요.
  • 19. 에러메시지만으로 문제를 특정하지 못하는 경우 종종 발생합니다. UE4는 에러메시지는 그래도 친절한 편.
  • 20. 에러코드와 에러메시지를 통째로 구글에 넣습니다. 에러코드에는 따옴표를 붙여서 검색어에서 생략되지 않도록 합니다. 우리의 친구 스택오버플로우
  • 21. 에러가 나지 않는 상황에서 코드를 한줄한줄 넣어보면서 어떤 줄에서 에러가 나는지 탐색하는 것도 방법입니다. (들여쓰기 에러 같은 것은 이렇게라도 잡아야..) 괄호나 세미콜론을 빼먹은 관련된 에러의 경우 엉뚱한 곳을 문제라고 가리킵니다.
  • 22. • 에러메시지가 나오는 경우를 재현할 방법을 만들어야 합니다. • 디버깅을 할 때는 문제가 있는 상황에 빠르고 쉽게 접근할 수 있도록 합니다.
  • 23. 에러메세지는 없고 왜 돌아가는 않는지는 모르겠다.
  • 24. 해당 상황에 대해 검색을 합니다. (지구상의 누군가가 이미 같은 문제를 겪었을 확률이 높습니다.) 자신이 겪는 문제를 가능하면 영어로 만들어서 검색하세요. 처음엔 키워드 만으로 충분합니다. 많이 해봐야 늡니다. 문법이 맞지 않아도 구글이 알아서 고쳐서 검색해줍니다. EX) 브레이크포인트가 동작을 하지 않아요. – breakpoint not working
  • 25. 해결책을 찾지 못했다면 직접 찾아야 합니다.
  • 26. 디버깅의 80%는 문제를 정확하게 찾아내는 것
  • 27. 1. 가설을 세운다. 2. 로그를 찍거나 브레이크포인트로 문제를 확인한다. 3. 문제가 일어나는 원인을 특정한다. 4. 문제가 일어나는 원인이 정확하게 탐색되었다면 해결 방법을 찾는다. 5. 문제가 일어나는 원인이 밝혀지지 않았다면 1번으로 돌아간다.
  • 28. 언리얼 엔진 디버깅 특징 1. 강력한 블루프린트 2. 친절하게 한국어로 번역된 공식 문서들 3. 오픈 소스라 엔진 소스에 직접 접근 가능 4. 엔진에서 제공하는 강력한 기능들 5. 친절한 소스코드와 로그 메시지들
  • 29. 언리얼 엔진 디버깅 특징 1. 되는 것만 됨. 안되는 것은 되지 않는다. 2. 업데이트 되고 있지 않는 문서들 3. 엔진 코드에서 문제가 생기면 해결하기 어려움 4. 어디 있는지 알려주지는 않는 강력한 기능들
  • 32. Print 함수에서 제공하는 추가기능 • 컬러는 눈에 띄게 • Default 2초는 좀 짧으니 길게 늘리는게 좋습니다.
  • 33. Append를 적극 활용 • Append로 여러 변수를 한번에 출력하는 편이 가독성이 좋습니다. (tick 등에서 활용) • 핀 추가로 적극적으로 문장을 만듭니다. (핀변경은 지원안함)
  • 34. Print Text와 Format Text {} 로 인자를 만들수 있음
  • 35. 쓸만한 출력 로그 윈도우 (창->개발자툴->출력 로그) • 중요한건 알아서 노란색으로 표시해줍니다. • 필터로 필요한것만 볼수 있습니다. • 로그에 키워드를 넣어 필요한것만 검색할수 있습니다.
  • 38. 블루 프린트 값 보기 • 감시를 해야만 값 확인 가능
  • 39. 블루 프린트 값 보기 디버깅 창은 매우 강력하니 여는걸 잊지 맙시다. (창->디버그) 사용하지 않는 값은 디버그 데이터에 뜨지 않음.
  • 40. 에디터에서 플레이 할 때 실시간으로 블루프린트 그래프 보기
  • 41. 6. UE4 Visual C++ 디버깅 트릭
  • 42. Visual Studio 에서 중단점 걸기
  • 43. Visual Studio 에서 실행중인 어플리케이션에 연결하기 디버그 -> 프로세스에 연결 (Ctrl + Alt + P)
  • 45.
  • 46. 강력한 덤프를 활용하기 /Saved/Logs 에 가면 지난 로그와 덤프파일들이 모여있습니다. dmp 파일을 더블클릭해서 visual studio에 연결한 후 visual studio로 실행하면!
  • 47. 강력한 덤프를 활용하기 코드 위치 크래시 당시 메모리 확인 가능
  • 48. 강력한 덤프를 활용하기 다른 컴퓨터에서 크래시가 발생했다면 dmp 파일 확보. 해당 빌드의 pdb 파일 확보. – BinariesWin64 폴더. pdb 파일 위치 지정은 도구->옵션->디버깅->기호(symbol) (덤프파일 여는 창에서도 지정할수 있음)
  • 49. 강력한 덤프를 활용하기 NDC 2012 - 덤프 파일을 통한 사후 디버깅 실용 테크닉 심화과정
  • 50. Cpp 에서 로그 찍기 AddOnScreenDebugMessage 함수 사용 GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Yellow, TEXT("BlahBlahBlah")); #include "Engine.h" 잊지 마세요.
  • 52.
  • 53. • 내려받는 법이 따로 있음. • 깃헙 계정과 언리얼 계정이 둘다 필요하며 연동해야만 합니다. • 연동 후엔 받아서 직접 빌드 할 수 있습니다. • 빌드엔 시간이 상당히 걸리며 기존 엔진 버전과는 호환이 되지 않음.
  • 54. 에디터를 실행하고, 자신의 프로젝트 폴더에 있는 .uproject 파일을 우클릭하면 엔진 버전 교체 가능
  • 56. 에디터에서는 테스트하기 힘든 문제들의 테스트 환경 구축 • 플레이에서 독립형 게임으로 실행함 • 고급세팅 – 에디터 개인설정의 레벨에디터 – 플레이에서는 독립형게임(stand alone play) 에서 추가 파라미터를 넣을수 있음. –log 를 넣어 로그 창을 여는 것을 권함. • Batch 파일(.bat)을 만들어서 에디터에서 바로 맵을 실행할수 있음. • 게임과 마찬가지로 서버, 리슨서버, 클라이언트, 시작 map 파일 설정을 할수 있음. • "_ue4_folder_UE4Editor.exe " _projectname_.uproject" _map_.umap -log
  • 57. 다른 사람들이 만든 코드들을 검색할 때 • 특히 로그 나오는 것 어디서 찍는지 볼 때
  • 61. 블루프린트 무한루프 1000000 정도 루프가 되면 알아서 멈추긴 함 알아서 멈추면 메시지 로그에서 위치를 표시해줌 출력로그에서 죽었다고도 알려줌
  • 62. 부모 함수 호출 생략 상속받은 클래스일 경우 필요 우클릭해서 추가할수 있음
  • 63. If 문에서 괄호 없이 작업하다 기능추가할 때
  • 65. 1. 소스코드를 업데이트 할 때는 에디터는 꼭 꺼라. 2. 파일을 못 쓰겠다고 한다면 일단 게임, 에디터부터 끄자. 3. 가끔 Visual Studio의 컴파일 결과가 엔진에 반영 안될 때도 있다. 4. 소스 꼬였을 때는 침착하게 Git 커맨드라인으로..
  • 66. 1. 귀찮다는 생각이 들었다면 가급적 바로 해결 2. 항상 측정하고 결과를 확인하는 습관을 들일 것. 3. 빠르게 반복할 수 있는 환경을 만들 것. 4. 동료들을 믿어라.
  • 67. NDC의 디버깅 관련 세션들 NDC2016 마이크로토크-안드로이드 게임 해킹 실제 사례와 실전 디버깅 NDC2014 사례로 배우는 디스어셈블리 디버깅 NDC2012 덤프 파일을 통한 사후 디버깅 실용 테크닉 NDC2010 온라인 게임에서 사례로 살펴보는 디버깅
  • 69. 1. 에러메세지를 읽자 2. 검색을 잘 하자 3. 로그를 잘 남기자 4. 테스트에 친화적인 환경을 구축하자 1.반복하는 시간을 단축하기 위해 배치파일등을 활용 2.디버그에 사용할 키 이벤트 등을 준비해서 재현을 바로바로 할 수 있도록 함 5. 혼자 붙들고 죽지 말자 이현승님의 NDC 2016 – 프로그래머를 괴롭히는 Unreal Engine 4의 함정들을 같이 보세요. http://ndcreplay.nexon.com/NDC2016/sessions/NDC2016_0069.html
  • 70. 사용된 이미지들 알라딘 굿즈 마션 첫문장 머그컵 Don’t Panic Outer Space The Hitchhikers Guide To The Galaxy https://www.walldevil.com/9334-don39t-panic-outer-space-the-hitchhikers-guide-to-galaxy.html 언리얼 엔진 4의 디버깅 관련 공식 문서 블루프린트 디버깅 : https://docs.unrealengine.com/latest/KOR/Engine/Blueprints/UserGuide/Debugging/index.html PPT 작성에 도움을 주신 김주석님과 황선하님께 감사드립니다.