취미로 엔진 만들기

16,901 views

Published on

취미로 엔진을 만들기.

Published in: Technology, Education
0 Comments
25 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
16,901
On SlideShare
0
From Embeds
0
Number of Embeds
4,079
Actions
Shares
0
Downloads
79
Comments
0
Likes
25
Embeds 0
No embeds

No notes for slide

취미로 엔진 만들기

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

×