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