8
실실실실 실실 실실 실실 실실 실실실실실 실실 실실 , 실실 , 실 (Quality) 실실 실실 실실 실 실실실 실실실 실실 실실실 실실실 실실실 실실실 . 실실실 실실 실실실실 실실 실실 실실 : 실실 실실실실 실실실 실실실 실 : 실실 실실실 실 실실실 실실실 실 : 실실 실실실 실실실 실실 실실 실실 : 실실실실 실실 실실실 실실 0 1

게임 개발 프로세스의 균형

Embed Size (px)

DESCRIPTION

시간 , 자본 , 질 (Quality) 어떤 것에 집중 할 것인가 하나의 게임 제목과 유사한 모토를 정한다 . 중요한 일과 중요하지 않은 일을 구분 : 다른 파트와의 병목이 생기는 일 : 게임 진행에 큰 영향을 끼치는 일 : 질을 높이고 최적화 하는 일은 나중 : 간과하기 쉬운 스케줄 관리. 01. 게임 개발 프로세스의 균형. - PowerPoint PPT Presentation

Citation preview

Page 1: 게임 개발 프로세스의 균형

실용주의 게임 개발

게임 개발 프로세스의 균형

• 시간 , 자본 , 질 (Quality) • 어떤 것에 집중 할 것인가• 하나의 게임 제목과 유사한 모토를 정한다 .• 중요한 일과 중요하지 않은 일을 구분

: 다른 파트와의 병목이 생기는 일: 게임 진행에 큰 영향을 끼치는 일: 질을 높이고 최적화 하는 일은 나중: 간과하기 쉬운 스케줄 관리

01

Page 2: 게임 개발 프로세스의 균형

실용주의 게임 개발

퀄러티 높은 게임을 위하여

• 원화의 중요성: 참고 자료가 아닌 실제적인 소스로 활용해야 한다 .: 원화와 모델링 / 매핑의 결과는 거의 동일해야 한다 .

: 그 자체로 유저들이 사고 싶은 것이 되어야 한다 . • 장인 정신

: 고치고 또 고친다 .• 원활한 커뮤니케이션

: 누구라도 그래픽 , 기획 , 프로그램에 대해 이야기

02

Page 3: 게임 개발 프로세스의 균형

실용주의 게임 개발

수동을 능동으로

• 불평 , 불만이 있는 팀원의 해결 • 빠른 프로토타입의 제작• 적당한 압박과 관리• 미리 형성된 커뮤니티• 개발 홈페이지• 많은 리소스가 소모되는 부분의 빠른 진행• 확실하게 ‘티’ 내기

03

Page 4: 게임 개발 프로세스의 균형

실용주의 게임 개발

프로그래머 !?

• Gather, Read, Think …and Code• 끝까지 책임을 가지고 완수하려는 책임감• 유명한 알고리즘 , 패턴 왜 쓰는지 알고 쓸 것• Data driven: 외부에서 수정 가능• 남이 보기 쉬운 코드 (Naming, 일관성 )• 인터페이스의 활용

04

Page 5: 게임 개발 프로세스의 균형

실용주의 게임 개발

Task 단위의 작업

• 인터페이스 클래스의 활용: 모듈은 변하더라도 외부 인터페이스는 수정될 필요가 없다 .: 공통된 인터페이스를 쓰므로 통일감 있는 설계가 가능하고 가독성이 좋아지게 된다 .

• C 언어로 개발 할 때는 함수 포인터를 활용 • ITaskBase 인터페이스를 상속 받아서 실제 CTaskIntro, CTaskLogin, CTaskCharSelect 를 구현• ITaskBase 에는 Init, Update, Render 등의 순수 가상 함수가 선언되어 있다 .

: virtual BOOL Init() = 0;: virtual BOOL Update(FLOAT fDeltaTime) = 0;: virtual BOOL Render() = 0;: virtual VOID SetEnable(BOOL bEnable) = 0;

• ITaskMgr 에서 ITaskBase 를 리스트로 관리 . Enable 플래그가 켜져 있는 경우에 Update 와 Render 를 해주게 된다 . : virtual BOOL Update(FLOAT fDeltaTime) = 0;: virtual BOOL Render() = 0;: virtual BOOL AttachTaskPost(IDKTask* pWork, CONST CHAR* szName) = 0;: virtual BOOL RemoveTaskPost(CONST CHAR* szName) = 0;

05

로그인동영상 / 인트로 로비케릭터 선택 게임필드

Page 6: 게임 개발 프로세스의 균형

실용주의 게임 개발

Node 단위의 장면 Tree 06

• 특정 물체에 카메라를 붙인다든가 , 칼에 파티클 을 붙인다든가 , 움직이는 손에 라이트 를 붙이는 등의 작업이 자유롭다 .

• 특정 부모의 Node 를 전체적으로 움직이거나 숨기는 것이 쉬우며 관리가 편하다 .

Page 7: 게임 개발 프로세스의 균형

실용주의 게임 개발

Tips and Tricks• 헤더 파일에 다른 헤더파일을 포함시키는 것을 최소화 시키자 .

: class 를 미리 선언한다 . class CCharacter; • XML 의 활용

- 버젼업이 자유롭다 . 어디라도 <>tag 가 들어갈 수 있고 자신이 해석하지 못하는 <>tag 에 대해서는 그냥 넘어가기 때문 . - 익스플로어만 실행시켜도 <>tag 에 대한 에러를 확인 할 수 있어 문법 검사가 쉬움 . - 세계 공통적인 파일 포맷으로 여러가지 뷰어가 존재한다 . (XMLSpy, XMLNotepad) - 계층 구조로 작업 하기가 편리하다 . - 특별한 바이너리화 작업이 필요없다 .

• 간단한 설정은 ini 파일로• PNT Vertex 32 바이트

: 알파 조정은 SetRenderState( D3DRS_DIFFUSEMATERIALSOURCE , D3DMCS_MATERIAL ); • 텍스쳐 별 소트

: std::map<ITexture*, std::vector<RENDER_ELEMENT> > m_TexSortList• : 통합된 VB/IB 로 RenderState 의 횟수를 줄여준다 .• 쉐이더 없이 그림자에 블러 주기

: SetSamplerState( 0, DKSAMP_MIPMAPLODBIAS , *((DWORD*)&fBias));• 쉐이더 없이 스펙큘러 흉내내기

: 스피어 맵을 이용: SetTextureStageState( 1, D3DTSS_TEXCOORDINDEX, D3DTSS_TCI_CAMERASPACENORMAL );: SetTextureStageState( 1, D3DTSS_COLOROP, D3DTOP_MODULATEALPHA_ADDCOLOR );: SetTextureStageState( 1, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_COUNT2 );: matScaleBias._11 = 0.5 matScaleBias._22 = -0.5 matScaleBias._41 = 0.5 matScaleBias._42 = 0.5 : SetTransform( (D3DTS_TEXTURE0+1), &matScaleBias ); // -1.0~1.0 => 0.0~1.0

• 충돌 처리 슬라이딩 효과: 구와 삼각형의 충돌 ( 평면을 가지고 슬라이딩 되어질 위치를 찾는다 ): 안으로 들어가 버리는 경우의 처리 ( 델타 시간을 제한하거나 시간을 쪼개서 여러 번 계산한다 ): 슬라이딩 하려는 면에 장애물이 있을 시 ( 현재의 위치를 고수해준다 )

07

Page 8: 게임 개발 프로세스의 균형

실용주의 게임 개발

[email protected]

추천 도서 : 게임 프로그래머를 위한 C++ 추천 사이트 : gamedev.net, gpgstudy.com

감사 합니다