SlideShare a Scribd company logo
1 of 30
취미로 엔진 만들기 최지호 카사공개 세미나 2011.06.12
최지호 현 SK C&C 재직 엔씨소프트미국 오스틴 지사: 엔진팀 엔씨소프트: 알터라이프(MMO), L3(MMO) 참여 트리거소프트: 로즈온라인(MMORPG) 엔진 개발 2 카사 공개 세미나
게임 엔진이란? 여러 게임 개발에 공통적으로 사용할 수 있는 소스 코드, 툴, 문서 게임에 중요한 역할 게임의 성능 게임의 퀄리티 개발 생산성 3 카사 공개 세미나
“취미로”의 의미? 남이 시켜서가 아닌 자발적으로 생산적이든 아니든 간에 여가 시간에 꾸준히 즐긴다 4 카사 공개 세미나
웬 엔진 개발? 좋고 싼 상용/공개 엔진 많은데? 하고 싶은 걸 하려면 뜯어 고칠 게 많음 뜯어 고치다 보면 시간이 많이 소요 그 시간에 차라리 만들걸… 내 맘대로 쉽게 이것 저것 해보고 싶다 이직할 때마다 엔진 새로 배우기 싫다 엔진 공부  상용엔진을 쓰더라도 도움됨 쉽지 않아 도전의식 생김 COOL해 보임! 5 카사 공개 세미나
왜 하필 취미로 엔진 개발? 원래 목적은 게임 개발이었음 엔진부터 시작하다가 엔진 개발 자체가 즐거움 도전할 거리가 많고 다양한 경험을 할 수 있고 남들 다 하는 건 아니고 별다른 취미가 따로 없어서 6 카사 공개 세미나
목표 가볍고, 쉽고, 빠른 경량급 엔진 직관적인 설계 쉬운 인터페이스 꼭 필요한 기능만 구체적이고 정량적인 목표 언제까지완성? 팔게 된다면 목표 매출액? 성능목표? 퀄리티 목표? 주요 장르는? 미정!!! 7 카사 공개 세미나
참여 인원 아직까지는 1인 개발 단, 리소스는 지인들의 도움 다른 사람의 간섭이 없음 마음대로 엎을 수 있음 나중에는 함께 개발할 예정 8 카사 공개 세미나
개발 시간 매일 꾸준히(희망사항) 출근 전 1 시간 퇴근 후 2 시간 (칼퇴근하면3~4시간) 밤중 개발 (애 깨면 재운 뒤) 주말 시간 활용 토요일/일요일 오전 4시간 (늦잠 자던 시간 활용) 낮잠 주의! 9 카사 공개 세미나
개발 장소 회사 내에서는 작업금지! 취미가 아닌 게 되어 버림 눈치 보임 회사에 뺏길 수 있음 회사에서는 회사일에만 충실! 10 카사 공개 세미나
개발 장소. 집에서 혼자 사는 경우 주위의 방해가 거의 없음 대신, 잠도 잘 옴 신혼/애기 있는 경우 매우 힘듦. 모두 잠든 밤에나 가능 배우자의 허락을 득해도 눈치 보임 집에서는 화목하고 편안한 가정생활에 충실하고, 집 밖에서 개발 권장! 11 카사 공개 세미나
개발 장소.. 모임 전문 공간 토즈(www.toz.co.kr) 추천 1인 두 시간에 5천원 인터넷, 음료수 공짜 단, 모든 지역에 있는 건 아님 커피숍 매우 시끄러움(헤드폰 필참) 화장실 갈 땐, 노트북 주의 전원 콘센트 없는 곳 많음(항시 충전 100%) 그 외 도서관, 독서실 : 키보드 타이핑 어려움 PC 방 : 담배연기 12 카사 공개 세미나
도구 개발 장비 노트북 : 자가용 출근 아니라면, 가볍고 성능 좋은 걸로 (단, 비쌈) 개발 도구 소스 컨트롤 혼자서라지만 백업/히스토리 유지 Perforce : 2인까지 공짜 SVN, Mercurial 등 오픈소스툴 Bitbucket.org 등 공짜/비공개 서버 활용 비주얼 스튜디오 익스프레스 공짜, 상용 어플 개발 가능 플러그인/MFC 빼면 그닥 불편한 거 없음 13 카사 공개 세미나
엔진의 구성 CoreEngine Core : 기본 모듈 Engine : 그래픽 및 씬그래프 Gui : GUI Games SandBox : 샘플 게임 Tools Batcher : 각종 커맨드라인 툴 Viewer : 모델/씬 뷰어 Tester : 단위 테스팅 Exporter : Collada파일 변환 Documents 각종 개발 관련 문서들 14 카사 공개 세미나
엔진의 구성(Core) 기본 컨테이너 클래스(Array, List, Stack, HashMap, Blob, Iterator등) Math 라이브러리 Memory Pool 관련 String, Name, Guid등 파일 I/O, 패키징 시스템, Serialization 등 리소스 관리 OS 관련(Thread, CriticalSection, Timer, DateTime등) 15 카사 공개 세미나
STL 안 쓴 이유? 콘솔에서는 STL 이 완전치 않아서 아직 직접 경험해 보지는 못했음 NDS 쪽에는 버그가 많다? 직접 만들면 더 빠르고 메모리 덜 쓸 것 같아서 속도는 별 차이 없었음 메모리 사용량은 차이가 좀 남 컴파일 타임 꽤 차이 남 컨테이너를 내 맘대로 할 수 있어서 좋음 컨테이너에 Serialization 등 추가 용이 EA도 만들어 쓰지 않던가? EASTL 16 카사 공개 세미나
GUID 모든 리소스들은 GUID를 가짐 컴파일 옵션에 따라 32bit 작은 GUID 사용 : 3F-25-04-E0 16바이트 표준 GUID 사용 3F2504E0-4F89-11D3-9A0C-0305E82C3301 리소스 Serialization 시에 포인터 대신 GUID 저장 17 카사 공개 세미나
18 카사 공개 세미나
엔진의 구성(Engine) 카메라/뷰 애니메이션/스키닝 메시/폰트/라인/구/박스 등 렌더링 애플리케이션 프레임웍 메시/머티리얼/모델 셰이더/셰이더이펙트/셰이더파라미터 버텍스/인덱스버퍼/텍스쳐 등 리소스 19 카사 공개 세미나
20 카사 공개 세미나
Shader Effect 시스템 DirectX 의 .FX 와 유사 멀티 플랫폼 염두 JSON 포맷 사용 XML 에 비해 사이즈 작음 파싱 속도 빠름 파싱 코드 단순 .FX나 .CGFX에 비해 자체 속성 추가 용이 덜 지저분함 21 카사 공개 세미나
Gui 텍스트렌더링(FreeType) 버튼, 이미지, 레이블, 윈도우 (설명할 만한 게 아직 별로 없음) 22 카사 공개 세미나
Batcher 각종 커맨드 라인 프로그램들 단일 프로그램. 옵션에 따라 여러 다른 JOB 수행  예) 셰이더 컴파일 패키징 파일 압축/해제 기본 리소스 생성 23 카사 공개 세미나
Tester 빌드 후 자동으로 수행되는 테스트 Googletest와 유사 이미지 비교 테스트도 있음 픽셀 단위 비교 렌더링된 이미지의 결과 확인용 이미지 라이브러리는 사용 안함.RAW 눈으로 확인 시 ImageMagick활용 혼자 개발할 때 자동 테스트는 필수 아무도 버그를 알려 주지 않음 24 카사 공개 세미나
Exporter COLLADA 포맷 사용 바이너리 포맷이 변경되어도 다시 원본으로부터 포맷 재변환 용이 스키닝 및 재질 관련 속성 지원 DCC툴 의존적이지 않음(오픈포맷) XML 파싱 자체 개발 비추(버전 달라질 때 귀찮았음) XML이라 파일 크기가 큼 25 카사 공개 세미나
리소스 조달 프로그래머가 만든 아트리소스는 안 이쁨 지인 활용 잘하는 아티스트와는 평소 인간관계를 돈독히 공개 리소스 활용 대부분 별로임… Sketchup 3D Warehouse 텍스쳐만 빼면 좋은 모델 더러 있음 http://sketchup.google.com/3dwarehouse/ 26 카사 공개 세미나
리소스 조달. 리소스 구입 http://www.daz3d.com/ http://turbosquid.com/ http://www.gamesource.co.kr http://www.garagegames.com/products/browse/artpacks 27 카사 공개 세미나
엔진 스샷 28 카사 공개 세미나
결론 회사/가정생활 충실하면서 여가 시간을 잘 활용하자 엔진 개발은 재미있다 발표나 블로깅은 개발 촉진제 29 카사 공개 세미나
질문/답변 연락처: zho@korea.com http://zho.pe.kr 카사 공개 세미나 30

More Related Content

What's hot

게임 분산 서버 구조
게임 분산 서버 구조게임 분산 서버 구조
게임 분산 서버 구조Hyunjik Bae
 
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들MinGeun Park
 
임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013devCAT Studio, NEXON
 
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019devCAT Studio, NEXON
 
08_게임 물리 프로그래밍 가이드
08_게임 물리 프로그래밍 가이드08_게임 물리 프로그래밍 가이드
08_게임 물리 프로그래밍 가이드noerror
 
코드 생성을 사용해 개발 속도 높이기 NDC2011
코드 생성을 사용해 개발 속도 높이기 NDC2011코드 생성을 사용해 개발 속도 높이기 NDC2011
코드 생성을 사용해 개발 속도 높이기 NDC2011Esun Kim
 
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019devCAT Studio, NEXON
 
나만의 엔진 개발하기
나만의 엔진 개발하기나만의 엔진 개발하기
나만의 엔진 개발하기YEONG-CHEON YOU
 
NDC 2015 삼시세끼 빌드만들기
NDC 2015 삼시세끼 빌드만들기NDC 2015 삼시세끼 빌드만들기
NDC 2015 삼시세끼 빌드만들기Hyunsuk Ahn
 
[NDC 2009] 행동 트리로 구현하는 인공지능
[NDC 2009] 행동 트리로 구현하는 인공지능[NDC 2009] 행동 트리로 구현하는 인공지능
[NDC 2009] 행동 트리로 구현하는 인공지능Yongha Kim
 
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018devCAT Studio, NEXON
 
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019devCAT Studio, NEXON
 
송창규, unity build로 빌드타임 반토막내기, NDC2010
송창규, unity build로 빌드타임 반토막내기, NDC2010송창규, unity build로 빌드타임 반토막내기, NDC2010
송창규, unity build로 빌드타임 반토막내기, NDC2010devCAT Studio, NEXON
 
NDC2019 - 게임플레이 프로그래머의 역할
NDC2019 - 게임플레이 프로그래머의 역할NDC2019 - 게임플레이 프로그래머의 역할
NDC2019 - 게임플레이 프로그래머의 역할Hoyoung Choi
 
[NDC 2018] 신입 개발자가 알아야 할 윈도우 메모리릭 디버깅
[NDC 2018] 신입 개발자가 알아야 할 윈도우 메모리릭 디버깅[NDC 2018] 신입 개발자가 알아야 할 윈도우 메모리릭 디버깅
[NDC 2018] 신입 개발자가 알아야 할 윈도우 메모리릭 디버깅DongMin Choi
 
NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현noerror
 
What is Game Server ?
What is Game Server ?What is Game Server ?
What is Game Server ?흥배 최
 
이승재, 사례로 배우는 디스어셈블리 디버깅, NDC2014
이승재, 사례로 배우는 디스어셈블리 디버깅, NDC2014이승재, 사례로 배우는 디스어셈블리 디버깅, NDC2014
이승재, 사례로 배우는 디스어셈블리 디버깅, NDC2014devCAT Studio, NEXON
 
[2019] 언리얼 엔진을 통해 살펴보는 리플렉션과 가비지 컬렉션
[2019] 언리얼 엔진을 통해 살펴보는 리플렉션과 가비지 컬렉션[2019] 언리얼 엔진을 통해 살펴보는 리플렉션과 가비지 컬렉션
[2019] 언리얼 엔진을 통해 살펴보는 리플렉션과 가비지 컬렉션NHN FORWARD
 
게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법Chris Ohk
 

What's hot (20)

게임 분산 서버 구조
게임 분산 서버 구조게임 분산 서버 구조
게임 분산 서버 구조
 
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들
 
임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013
 
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
 
08_게임 물리 프로그래밍 가이드
08_게임 물리 프로그래밍 가이드08_게임 물리 프로그래밍 가이드
08_게임 물리 프로그래밍 가이드
 
코드 생성을 사용해 개발 속도 높이기 NDC2011
코드 생성을 사용해 개발 속도 높이기 NDC2011코드 생성을 사용해 개발 속도 높이기 NDC2011
코드 생성을 사용해 개발 속도 높이기 NDC2011
 
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
 
나만의 엔진 개발하기
나만의 엔진 개발하기나만의 엔진 개발하기
나만의 엔진 개발하기
 
NDC 2015 삼시세끼 빌드만들기
NDC 2015 삼시세끼 빌드만들기NDC 2015 삼시세끼 빌드만들기
NDC 2015 삼시세끼 빌드만들기
 
[NDC 2009] 행동 트리로 구현하는 인공지능
[NDC 2009] 행동 트리로 구현하는 인공지능[NDC 2009] 행동 트리로 구현하는 인공지능
[NDC 2009] 행동 트리로 구현하는 인공지능
 
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
 
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
 
송창규, unity build로 빌드타임 반토막내기, NDC2010
송창규, unity build로 빌드타임 반토막내기, NDC2010송창규, unity build로 빌드타임 반토막내기, NDC2010
송창규, unity build로 빌드타임 반토막내기, NDC2010
 
NDC2019 - 게임플레이 프로그래머의 역할
NDC2019 - 게임플레이 프로그래머의 역할NDC2019 - 게임플레이 프로그래머의 역할
NDC2019 - 게임플레이 프로그래머의 역할
 
[NDC 2018] 신입 개발자가 알아야 할 윈도우 메모리릭 디버깅
[NDC 2018] 신입 개발자가 알아야 할 윈도우 메모리릭 디버깅[NDC 2018] 신입 개발자가 알아야 할 윈도우 메모리릭 디버깅
[NDC 2018] 신입 개발자가 알아야 할 윈도우 메모리릭 디버깅
 
NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현
 
What is Game Server ?
What is Game Server ?What is Game Server ?
What is Game Server ?
 
이승재, 사례로 배우는 디스어셈블리 디버깅, NDC2014
이승재, 사례로 배우는 디스어셈블리 디버깅, NDC2014이승재, 사례로 배우는 디스어셈블리 디버깅, NDC2014
이승재, 사례로 배우는 디스어셈블리 디버깅, NDC2014
 
[2019] 언리얼 엔진을 통해 살펴보는 리플렉션과 가비지 컬렉션
[2019] 언리얼 엔진을 통해 살펴보는 리플렉션과 가비지 컬렉션[2019] 언리얼 엔진을 통해 살펴보는 리플렉션과 가비지 컬렉션
[2019] 언리얼 엔진을 통해 살펴보는 리플렉션과 가비지 컬렉션
 
게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법
 

Similar to 취미로 엔진 만들기

[NDC17] Protocol:hyperspace Diver 개발 포스트모템
[NDC17] Protocol:hyperspace Diver 개발 포스트모템[NDC17] Protocol:hyperspace Diver 개발 포스트모템
[NDC17] Protocol:hyperspace Diver 개발 포스트모템Young Soo Kim
 
레가시 프로젝트의 빌드 자동화
레가시 프로젝트의 빌드 자동화레가시 프로젝트의 빌드 자동화
레가시 프로젝트의 빌드 자동화Jaehoon Choi
 
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍NDOORS
 
20140514 team blender_v01 (Korean)
20140514 team blender_v01 (Korean)20140514 team blender_v01 (Korean)
20140514 team blender_v01 (Korean)Dongho Kim
 
Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기KwangSeob Jeong
 
Devrookie Study / TA20110730
Devrookie Study / TA20110730Devrookie Study / TA20110730
Devrookie Study / TA20110730Yong-nam Kim
 
온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기Seungjae Lee
 
최민호 - 국내 포털에서의 우분투 (2012Y03M31D)
최민호 - 국내 포털에서의 우분투 (2012Y03M31D)최민호 - 국내 포털에서의 우분투 (2012Y03M31D)
최민호 - 국내 포털에서의 우분투 (2012Y03M31D)Ubuntu Korea Community
 
모두가 함께하는ROS 워크숍
모두가 함께하는ROS 워크숍모두가 함께하는ROS 워크숍
모두가 함께하는ROS 워크숍Suhan Park
 
Framer js a/s talk
Framer js a/s talkFramer js a/s talk
Framer js a/s talkSewon Ann
 
[2B2]기계 친화성을 중심으로 접근한 최적화 기법
[2B2]기계 친화성을 중심으로 접근한 최적화 기법[2B2]기계 친화성을 중심으로 접근한 최적화 기법
[2B2]기계 친화성을 중심으로 접근한 최적화 기법NAVER D2
 
131 deview 2013 yobi-채수원
131 deview 2013 yobi-채수원131 deview 2013 yobi-채수원
131 deview 2013 yobi-채수원NAVER D2
 
[KASA] Game Engine???
[KASA] Game Engine???[KASA] Game Engine???
[KASA] Game Engine???changehee lee
 
Ndc2013 정리(upload버전)
Ndc2013 정리(upload버전)Ndc2013 정리(upload버전)
Ndc2013 정리(upload버전)Minsu Park
 
게임프로그래머에게 배우는 C#1권(버전1)
게임프로그래머에게 배우는 C#1권(버전1)게임프로그래머에게 배우는 C#1권(버전1)
게임프로그래머에게 배우는 C#1권(버전1)Kiyoung Moon
 
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템Young Soo Kim
 
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들영욱 오
 

Similar to 취미로 엔진 만들기 (20)

[NDC17] Protocol:hyperspace Diver 개발 포스트모템
[NDC17] Protocol:hyperspace Diver 개발 포스트모템[NDC17] Protocol:hyperspace Diver 개발 포스트모템
[NDC17] Protocol:hyperspace Diver 개발 포스트모템
 
레가시 프로젝트의 빌드 자동화
레가시 프로젝트의 빌드 자동화레가시 프로젝트의 빌드 자동화
레가시 프로젝트의 빌드 자동화
 
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
 
20140514 team blender_v01 (Korean)
20140514 team blender_v01 (Korean)20140514 team blender_v01 (Korean)
20140514 team blender_v01 (Korean)
 
Native A/V
Native A/VNative A/V
Native A/V
 
Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기
 
Devrookie Study / TA20110730
Devrookie Study / TA20110730Devrookie Study / TA20110730
Devrookie Study / TA20110730
 
온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기
 
최민호 - 국내 포털에서의 우분투 (2012Y03M31D)
최민호 - 국내 포털에서의 우분투 (2012Y03M31D)최민호 - 국내 포털에서의 우분투 (2012Y03M31D)
최민호 - 국내 포털에서의 우분투 (2012Y03M31D)
 
피니엔진
피니엔진피니엔진
피니엔진
 
모두가 함께하는ROS 워크숍
모두가 함께하는ROS 워크숍모두가 함께하는ROS 워크숍
모두가 함께하는ROS 워크숍
 
In c
In cIn c
In c
 
Framer js a/s talk
Framer js a/s talkFramer js a/s talk
Framer js a/s talk
 
[2B2]기계 친화성을 중심으로 접근한 최적화 기법
[2B2]기계 친화성을 중심으로 접근한 최적화 기법[2B2]기계 친화성을 중심으로 접근한 최적화 기법
[2B2]기계 친화성을 중심으로 접근한 최적화 기법
 
131 deview 2013 yobi-채수원
131 deview 2013 yobi-채수원131 deview 2013 yobi-채수원
131 deview 2013 yobi-채수원
 
[KASA] Game Engine???
[KASA] Game Engine???[KASA] Game Engine???
[KASA] Game Engine???
 
Ndc2013 정리(upload버전)
Ndc2013 정리(upload버전)Ndc2013 정리(upload버전)
Ndc2013 정리(upload버전)
 
게임프로그래머에게 배우는 C#1권(버전1)
게임프로그래머에게 배우는 C#1권(버전1)게임프로그래머에게 배우는 C#1권(버전1)
게임프로그래머에게 배우는 C#1권(버전1)
 
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
 
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
 

Recently uploaded

Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)Wonjun Hwang
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Kim Daeun
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionKim Daeun
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)Tae Young Lee
 
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'Hyundai Motor Group
 
[Terra] Terra Money: Stability and Adoption
[Terra] Terra Money: Stability and Adoption[Terra] Terra Money: Stability and Adoption
[Terra] Terra Money: Stability and AdoptionSeung-chan Baeg
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스
 

Recently uploaded (7)

Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)
 
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
 
[Terra] Terra Money: Stability and Adoption
[Terra] Terra Money: Stability and Adoption[Terra] Terra Money: Stability and Adoption
[Terra] Terra Money: Stability and Adoption
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차
 

취미로 엔진 만들기

  • 1. 취미로 엔진 만들기 최지호 카사공개 세미나 2011.06.12
  • 2. 최지호 현 SK C&C 재직 엔씨소프트미국 오스틴 지사: 엔진팀 엔씨소프트: 알터라이프(MMO), L3(MMO) 참여 트리거소프트: 로즈온라인(MMORPG) 엔진 개발 2 카사 공개 세미나
  • 3. 게임 엔진이란? 여러 게임 개발에 공통적으로 사용할 수 있는 소스 코드, 툴, 문서 게임에 중요한 역할 게임의 성능 게임의 퀄리티 개발 생산성 3 카사 공개 세미나
  • 4. “취미로”의 의미? 남이 시켜서가 아닌 자발적으로 생산적이든 아니든 간에 여가 시간에 꾸준히 즐긴다 4 카사 공개 세미나
  • 5. 웬 엔진 개발? 좋고 싼 상용/공개 엔진 많은데? 하고 싶은 걸 하려면 뜯어 고칠 게 많음 뜯어 고치다 보면 시간이 많이 소요 그 시간에 차라리 만들걸… 내 맘대로 쉽게 이것 저것 해보고 싶다 이직할 때마다 엔진 새로 배우기 싫다 엔진 공부  상용엔진을 쓰더라도 도움됨 쉽지 않아 도전의식 생김 COOL해 보임! 5 카사 공개 세미나
  • 6. 왜 하필 취미로 엔진 개발? 원래 목적은 게임 개발이었음 엔진부터 시작하다가 엔진 개발 자체가 즐거움 도전할 거리가 많고 다양한 경험을 할 수 있고 남들 다 하는 건 아니고 별다른 취미가 따로 없어서 6 카사 공개 세미나
  • 7. 목표 가볍고, 쉽고, 빠른 경량급 엔진 직관적인 설계 쉬운 인터페이스 꼭 필요한 기능만 구체적이고 정량적인 목표 언제까지완성? 팔게 된다면 목표 매출액? 성능목표? 퀄리티 목표? 주요 장르는? 미정!!! 7 카사 공개 세미나
  • 8. 참여 인원 아직까지는 1인 개발 단, 리소스는 지인들의 도움 다른 사람의 간섭이 없음 마음대로 엎을 수 있음 나중에는 함께 개발할 예정 8 카사 공개 세미나
  • 9. 개발 시간 매일 꾸준히(희망사항) 출근 전 1 시간 퇴근 후 2 시간 (칼퇴근하면3~4시간) 밤중 개발 (애 깨면 재운 뒤) 주말 시간 활용 토요일/일요일 오전 4시간 (늦잠 자던 시간 활용) 낮잠 주의! 9 카사 공개 세미나
  • 10. 개발 장소 회사 내에서는 작업금지! 취미가 아닌 게 되어 버림 눈치 보임 회사에 뺏길 수 있음 회사에서는 회사일에만 충실! 10 카사 공개 세미나
  • 11. 개발 장소. 집에서 혼자 사는 경우 주위의 방해가 거의 없음 대신, 잠도 잘 옴 신혼/애기 있는 경우 매우 힘듦. 모두 잠든 밤에나 가능 배우자의 허락을 득해도 눈치 보임 집에서는 화목하고 편안한 가정생활에 충실하고, 집 밖에서 개발 권장! 11 카사 공개 세미나
  • 12. 개발 장소.. 모임 전문 공간 토즈(www.toz.co.kr) 추천 1인 두 시간에 5천원 인터넷, 음료수 공짜 단, 모든 지역에 있는 건 아님 커피숍 매우 시끄러움(헤드폰 필참) 화장실 갈 땐, 노트북 주의 전원 콘센트 없는 곳 많음(항시 충전 100%) 그 외 도서관, 독서실 : 키보드 타이핑 어려움 PC 방 : 담배연기 12 카사 공개 세미나
  • 13. 도구 개발 장비 노트북 : 자가용 출근 아니라면, 가볍고 성능 좋은 걸로 (단, 비쌈) 개발 도구 소스 컨트롤 혼자서라지만 백업/히스토리 유지 Perforce : 2인까지 공짜 SVN, Mercurial 등 오픈소스툴 Bitbucket.org 등 공짜/비공개 서버 활용 비주얼 스튜디오 익스프레스 공짜, 상용 어플 개발 가능 플러그인/MFC 빼면 그닥 불편한 거 없음 13 카사 공개 세미나
  • 14. 엔진의 구성 CoreEngine Core : 기본 모듈 Engine : 그래픽 및 씬그래프 Gui : GUI Games SandBox : 샘플 게임 Tools Batcher : 각종 커맨드라인 툴 Viewer : 모델/씬 뷰어 Tester : 단위 테스팅 Exporter : Collada파일 변환 Documents 각종 개발 관련 문서들 14 카사 공개 세미나
  • 15. 엔진의 구성(Core) 기본 컨테이너 클래스(Array, List, Stack, HashMap, Blob, Iterator등) Math 라이브러리 Memory Pool 관련 String, Name, Guid등 파일 I/O, 패키징 시스템, Serialization 등 리소스 관리 OS 관련(Thread, CriticalSection, Timer, DateTime등) 15 카사 공개 세미나
  • 16. STL 안 쓴 이유? 콘솔에서는 STL 이 완전치 않아서 아직 직접 경험해 보지는 못했음 NDS 쪽에는 버그가 많다? 직접 만들면 더 빠르고 메모리 덜 쓸 것 같아서 속도는 별 차이 없었음 메모리 사용량은 차이가 좀 남 컴파일 타임 꽤 차이 남 컨테이너를 내 맘대로 할 수 있어서 좋음 컨테이너에 Serialization 등 추가 용이 EA도 만들어 쓰지 않던가? EASTL 16 카사 공개 세미나
  • 17. GUID 모든 리소스들은 GUID를 가짐 컴파일 옵션에 따라 32bit 작은 GUID 사용 : 3F-25-04-E0 16바이트 표준 GUID 사용 3F2504E0-4F89-11D3-9A0C-0305E82C3301 리소스 Serialization 시에 포인터 대신 GUID 저장 17 카사 공개 세미나
  • 18. 18 카사 공개 세미나
  • 19. 엔진의 구성(Engine) 카메라/뷰 애니메이션/스키닝 메시/폰트/라인/구/박스 등 렌더링 애플리케이션 프레임웍 메시/머티리얼/모델 셰이더/셰이더이펙트/셰이더파라미터 버텍스/인덱스버퍼/텍스쳐 등 리소스 19 카사 공개 세미나
  • 20. 20 카사 공개 세미나
  • 21. Shader Effect 시스템 DirectX 의 .FX 와 유사 멀티 플랫폼 염두 JSON 포맷 사용 XML 에 비해 사이즈 작음 파싱 속도 빠름 파싱 코드 단순 .FX나 .CGFX에 비해 자체 속성 추가 용이 덜 지저분함 21 카사 공개 세미나
  • 22. Gui 텍스트렌더링(FreeType) 버튼, 이미지, 레이블, 윈도우 (설명할 만한 게 아직 별로 없음) 22 카사 공개 세미나
  • 23. Batcher 각종 커맨드 라인 프로그램들 단일 프로그램. 옵션에 따라 여러 다른 JOB 수행 예) 셰이더 컴파일 패키징 파일 압축/해제 기본 리소스 생성 23 카사 공개 세미나
  • 24. Tester 빌드 후 자동으로 수행되는 테스트 Googletest와 유사 이미지 비교 테스트도 있음 픽셀 단위 비교 렌더링된 이미지의 결과 확인용 이미지 라이브러리는 사용 안함.RAW 눈으로 확인 시 ImageMagick활용 혼자 개발할 때 자동 테스트는 필수 아무도 버그를 알려 주지 않음 24 카사 공개 세미나
  • 25. Exporter COLLADA 포맷 사용 바이너리 포맷이 변경되어도 다시 원본으로부터 포맷 재변환 용이 스키닝 및 재질 관련 속성 지원 DCC툴 의존적이지 않음(오픈포맷) XML 파싱 자체 개발 비추(버전 달라질 때 귀찮았음) XML이라 파일 크기가 큼 25 카사 공개 세미나
  • 26. 리소스 조달 프로그래머가 만든 아트리소스는 안 이쁨 지인 활용 잘하는 아티스트와는 평소 인간관계를 돈독히 공개 리소스 활용 대부분 별로임… Sketchup 3D Warehouse 텍스쳐만 빼면 좋은 모델 더러 있음 http://sketchup.google.com/3dwarehouse/ 26 카사 공개 세미나
  • 27. 리소스 조달. 리소스 구입 http://www.daz3d.com/ http://turbosquid.com/ http://www.gamesource.co.kr http://www.garagegames.com/products/browse/artpacks 27 카사 공개 세미나
  • 28. 엔진 스샷 28 카사 공개 세미나
  • 29. 결론 회사/가정생활 충실하면서 여가 시간을 잘 활용하자 엔진 개발은 재미있다 발표나 블로깅은 개발 촉진제 29 카사 공개 세미나
  • 30. 질문/답변 연락처: zho@korea.com http://zho.pe.kr 카사 공개 세미나 30