Top Banner
취취취 취취 취취취 취취취 취취 취취 취취취 2011.06.12
30

취미로 엔진 만들기

Dec 20, 2014

Download

Technology

Jiho Choi

취미로 엔진을 만들기.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 취미로 엔진 만들기

취미로 엔진 만들기

최지호카사 공개 세미나

2011.06.12

Page 2: 취미로 엔진 만들기

카사 공개 세미나 2

최지호

• 현 SK C&C 재직• 엔씨소프트 미국 오스틴 지사 : 엔진팀• 엔씨소프트 : 알터라이프 (MMO),

L3(MMO) 참여• 트리거소프트 : 로즈온라인 (MMORPG)

엔진 개발

Page 3: 취미로 엔진 만들기

카사 공개 세미나 3

게임 엔진이란 ?

• 여러 게임 개발에 공통적으로 사용할 수 있는 소스 코드 , 툴 , 문서

• 게임에 중요한 역할–게임의 성능–게임의 퀄리티–개발 생산성

Page 4: 취미로 엔진 만들기

카사 공개 세미나 4

“ 취미로”의 의미 ?

• 남이 시켜서가 아닌 자발적으로• 생산적이든 아니든 간에• 여가 시간에• 꾸준히• 즐긴다

Page 5: 취미로 엔진 만들기

카사 공개 세미나 5

웬 엔진 개발 ?

• 좋고 싼 상용 / 공개 엔진 많은데 ?• 하고 싶은 걸 하려면 뜯어 고칠 게 많음– 뜯어 고치다 보면 시간이 많이 소요– 그 시간에 차라리 만들걸…

• 내 맘대로 쉽게 이것 저것 해보고 싶다• 이직할 때마다 엔진 새로 배우기 싫다• 엔진 공부 상용엔진을 쓰더라도 도움됨• 쉽지 않아 도전의식 생김• COOL 해 보임 !

Page 6: 취미로 엔진 만들기

카사 공개 세미나 6

왜 하필 취미로 엔진 개발 ?

• 원래 목적은 게임 개발이었음• 엔진부터 시작하다가• 엔진 개발 자체가 즐거움–도전할 거리가 많고–다양한 경험을 할 수 있고–남들 다 하는 건 아니고

• 별다른 취미가 따로 없어서

Page 7: 취미로 엔진 만들기

카사 공개 세미나 7

목표

• 가볍고 , 쉽고 , 빠른 경량급 엔진–직관적인 설계–쉬운 인터페이스–꼭 필요한 기능만

• 구체적이고 정량적인 목표–언제까지 완성 ?–팔게 된다면 목표 매출액 ?–성능목표 ? 퀄리티 목표 ? 주요 장르는 ?

–미정 !!!

Page 8: 취미로 엔진 만들기

카사 공개 세미나 8

참여 인원

• 아직까지는 1 인 개발–단 , 리소스는 지인들의 도움

• 다른 사람의 간섭이 없음• 마음대로 엎을 수 있음• 나중에는 함께 개발할 예정

Page 9: 취미로 엔진 만들기

카사 공개 세미나 9

개발 시간

• 매일 꾸준히 ( 희망사항 )–출근 전 1 시간–퇴근 후 2 시간 ( 칼퇴근하면 3~4 시간 )–밤중 개발 ( 애 깨면 재운 뒤 )

• 주말 시간 활용–토요일 / 일요일 오전 4 시간• ( 늦잠 자던 시간 활용 )

–낮잠 주의 !

Page 10: 취미로 엔진 만들기

카사 공개 세미나 10

개발 장소

• 회사 내에서는 작업금지 !–취미가 아닌 게 되어 버림–눈치 보임–회사에 뺏길 수 있음–회사에서는 회사일에만 충실 !

Page 11: 취미로 엔진 만들기

카사 공개 세미나 11

개발 장소 .

• 집에서–혼자 사는 경우• 주위의 방해가 거의 없음• 대신 , 잠도 잘 옴

–신혼 / 애기 있는 경우• 매우 힘듦 . 모두 잠든 밤에나 가능• 배우자의 허락을 득해도 눈치 보임

–집에서는 화목하고 편안한 가정생활에 충실하고 , 집 밖에서 개발 권장 !

Page 12: 취미로 엔진 만들기

카사 공개 세미나 12

개발 장소 ..

• 모임 전문 공간– 토즈 (www.toz.co.kr) 추천– 1 인 두 시간에 5 천원– 인터넷 , 음료수 공짜– 단 , 모든 지역에 있는 건 아님

• 커피숍– 매우 시끄러움 ( 헤드폰 필참 )– 화장실 갈 땐 , 노트북 주의– 전원 콘센트 없는 곳 많음 ( 항시 충전 100%)

• 그 외– 도서관 , 독서실 : 키보드 타이핑 어려움– PC 방 : 담배연기

Page 13: 취미로 엔진 만들기

카사 공개 세미나 13

도구

• 개발 장비– 노트북 : 자가용 출근 아니라면 , 가볍고 성능 좋은 걸로

( 단 , 비쌈 )

• 개발 도구– 소스 컨트롤

• 혼자서라지만 백업 / 히스토리 유지• Perforce : 2 인까지 공짜• SVN, Mercurial 등 오픈소스툴• Bitbucket.org 등 공짜 /비공개 서버 활용

– 비주얼 스튜디오 익스프레스• 공짜 , 상용 어플 개발 가능• 플러그인 /MFC 빼면 그닥 불편한 거 없음

Page 14: 취미로 엔진 만들기

카사 공개 세미나 14

엔진의 구성• CoreEngine

– Core : 기본 모듈– Engine : 그래픽 및 씬그래프– Gui : GUI

• Games– SandBox : 샘플 게임

• Tools– Batcher : 각종 커맨드라인 툴– Viewer : 모델 /씬 뷰어– Tester : 단위 테스팅– Exporter : Collada 파일 변환

• Documents– 각종 개발 관련 문서들

Page 15: 취미로 엔진 만들기

카사 공개 세미나 15

엔진의 구성 (Core)

• 기본 컨테이너 클래스 (Array, List, Stack, HashMap, Blob, Iterator등 )

• Math 라이브러리• Memory Pool 관련• String, Name, Guid 등• 파일 I/O, 패키징 시스템 , Serialization 등• 리소스 관리• OS 관련 (Thread, CriticalSection, Timer,

DateTime 등 )

Page 16: 취미로 엔진 만들기

카사 공개 세미나 16

STL 안 쓴 이유 ?

• 콘솔에서는 STL 이 완전치 않아서– 아직 직접 경험해 보지는 못했음– NDS 쪽에는 버그가 많다 ?

• 직접 만들면 더 빠르고 메모리 덜 쓸 것 같아서– 속도는 별 차이 없었음– 메모리 사용량은 차이가 좀 남

• 컴파일 타임 꽤 차이 남• 컨테이너를 내 맘대로 할 수 있어서 좋음– 컨테이너에 Serialization 등 추가 용이

• EA 도 만들어 쓰지 않던가 ? EASTL

Page 17: 취미로 엔진 만들기

카사 공개 세미나 17

GUID

• 모든 리소스들은 GUID를 가짐• 컴파일 옵션에 따라– 32bit 작은 GUID 사용 : 3F-25-04-E0– 16바이트 표준 GUID 사용• 3F2504E0-4F89-11D3-9A0C-0305E82C3301

• 리소스 Serialization 시에 포인터 대신 GUID 저장

Page 18: 취미로 엔진 만들기

카사 공개 세미나 18

Page 19: 취미로 엔진 만들기

카사 공개 세미나 19

엔진의 구성 (Engine)

• 카메라 /뷰• 애니메이션 / 스키닝• 메시 / 폰트 / 라인 / 구 /박스 등 렌더링• 애플리케이션 프레임웍• 메시 /머티리얼 / 모델• 셰이더 /셰이더이펙트 /셰이더파라미터• 버텍스 / 인덱스버퍼 /텍스쳐 등 리소스

Page 20: 취미로 엔진 만들기

카사 공개 세미나 20

Page 21: 취미로 엔진 만들기

카사 공개 세미나 21

Shader Effect 시스템

• DirectX 의 .FX 와 유사– 멀티 플랫폼 염두

• JSON 포맷 사용– XML 에 비해 사이즈 작음– 파싱 속도 빠름– 파싱 코드 단순

• .FX 나 .CGFX 에 비해 자체 속성 추가 용이– 덜 지저분함

Page 22: 취미로 엔진 만들기

카사 공개 세미나 22

Gui

• 텍스트 렌더링 (FreeType)• 버튼 , 이미지 , 레이블 , 윈도우• ( 설명할 만한 게 아직 별로 없음 )

Page 23: 취미로 엔진 만들기

카사 공개 세미나 23

Batcher

• 각종 커맨드 라인 프로그램들• 단일 프로그램 . 옵션에 따라 여러

다른 JOB 수행 • 예 )– 셰이더 컴파일– 패키징 파일 압축 / 해제– 기본 리소스 생성

Page 24: 취미로 엔진 만들기

카사 공개 세미나 24

Tester

• 빌드 후 자동으로 수행되는 테스트• Googletest 와 유사• 이미지 비교 테스트도 있음

– 픽셀 단위 비교– 렌더링된 이미지의 결과 확인용– 이미지 라이브러리는 사용 안함 .RAW– 눈으로 확인 시 ImageMagick 활용

• 혼자 개발할 때 자동 테스트는 필수– 아무도 버그를 알려 주지 않음

Page 25: 취미로 엔진 만들기

카사 공개 세미나 25

Exporter

• COLLADA 포맷 사용• 바이너리 포맷이 변경되어도 다시

원본으로부터 포맷 재변환 용이• 스키닝 및 재질 관련 속성 지원• DCC 툴 의존적이지 않음 ( 오픈포맷 )

• XML 파싱 자체 개발 비추 ( 버전 달라질 때 귀찮았음 )

• XML 이라 파일 크기가 큼

Page 26: 취미로 엔진 만들기

카사 공개 세미나 26

리소스 조달

• 프로그래머가 만든 아트리소스는 안 이쁨• 지인 활용–잘하는 아티스트와는 평소 인간관계를 돈독히

• 공개 리소스 활용–대부분 별로임…– Sketchup 3D Warehouse• 텍스쳐만 빼면 좋은 모델 더러 있음• http://sketchup.google.com/3dwarehouse/

Page 27: 취미로 엔진 만들기

카사 공개 세미나 27

리소스 조달 .

• 리소스 구입– http://www.daz3d.com/– http://turbosquid.com/– http://www.gamesource.co.kr– http://www.garagegames.com/products/

browse/artpacks

Page 28: 취미로 엔진 만들기

카사 공개 세미나 28

엔진 스샷

Page 29: 취미로 엔진 만들기

카사 공개 세미나 29

결론

• 회사 / 가정생활 충실하면서 여가 시간을 잘 활용하자

• 엔진 개발은 재미있다• 발표나 블로깅은 개발 촉진제

Page 30: 취미로 엔진 만들기

카사 공개 세미나 30

질문 /답변

• 연락처 :– [email protected]– http://zho.pe.kr