2011. 10. 1. 19:51ㆍIT, Smart Life
XNA 4.0 기본 함수 6가지
XNA 프레임워크의 기본 구조를 한번 알아봅시다.
XNA로 게임을 만들 때, 코딩을 완료하고 디버깅(F5)을 시작하면 XNA 내부에서 어떻게 처리를 할까요?
프로젝트를 생성할 때 기본적으로 생성되는 소스코드를 보면, 기본적인 동작원리를 알 수 있다고 합니다.
자동 생성되는 소스를 분석하면 기본 함수가 6가지가 있고, 이 함수들은 아래와 같이 동작합니다.
(인용:톡톡튀는 XNA를 이용한 단계별 슈팅게임 만들기 p.28)
Game1()
- GraphicDeviceManager 생성
- 초당 프레임 60 으로 지정
Initialize()
- 프로젝트 초기화 작업 수행
- 서비스 요청 및 그래픽을 제외한 나머지 Asset 로딩
LoadContent()
- Content Pipeline에 추가시킨 에셋 불러오는 작업
Update()
- 사용자 입력, 캐릭터 이동, 애니메이션 등 게임 기능의 대부분을 처리하는 함수
Draw()
- 주기적으로 반복 처리해야 하는 그래픽 관련 코드 입력
UnloadContent()
- Initialize(), LoadContent() 에서 로드했던 각종 에셋 해제
위 그림에서 알 수 있듯이, 게임 실행 및 게임에서 사용할 각종 Resource에 대한 초기화와 로딩이 끝나고 나면, [ Update() - Draw() ]를 반복하면서 게임에서 일어나는 각종 이벤트를 처리합니다. Update() 에서는 입력, 게임 상태 처리 등을 하고 Draw() 함수에서 그리기 동작을 수행한다고 합니다.
설명을 읽다보면 '에셋(asset)'이라는 말이 나오는데, 이 에셋은 편하게 생각해서 'Resource'라고 생각하시면 됩니다. 기본 함수에 포함되지는 않지만, 프로젝트에 필요한 모든 이미지, 사운드, 폰트, 3D 모델 등을 말합니다. 에셋은 'Content'라는 이름의 프로젝트 하위에 위치하게 되는데, 이렇게 말하면 와닿지 않으니 프로젝트 기본화면 및 폴더 구성을 한번 보면서 이야기 해봅시다.
프로젝트 기본 화면 및 폴더 구성
XNA 프로젝트의 개발 기본화면은 위 그림과 같습니다.
기본화면의 오른쪽을 보면 'Solution Explorer'라는 프로젝트 탐색 창이 나오는데, 하나의 솔루션(Solution)안에 두개의 프로젝트(Project)가 생성되어 있습니다. XNA에는 새 프로젝트를 생성하면 기본적으로 하나의 솔루션과 그 솔루션을 구성하는 두개의 프로젝트를 자동 생성합니다. 하나는 프로젝트 생성할 때, 설정했던 이름으로 된 프로젝트 폴더이고, 하나는 '프로젝트이름+Content'라는 이름이 붙은 프로젝트 폴더 입니다.
아래 그림에서 'Proto0' 하위에는 프로그램 Main 클래스와 주요 클래스들이 위치하며, 'Proto0Content'하위에는 게임상에서 불러서 쓰게 될 이미지와 각종 리소스들이 위치하게 되는데, 이들이 바로 에셋(asset)입니다. 제가 예시로 올린 그림에는 'XNA Logo.jpg'라는 파일이 에셋으로서 등록이 되어 있군요.(안드로이드 개발과는 달리, 리소스 파일명 작성시 space bar를 이용한 띄어쓰기를 허용합니다.)
그럼, 프로젝트 탐색창이 이런 모습일 때, 실제 하드디스크 안의 폴더들은 어떻게 되어 있는지 한번 확인해 봅시다.
저는 XNA 개발 기본 폴더를 D드라이브(D:\)에 'XNA Project'폴더로 지정했습니다. 그래서 XNA Project를 생성하면 이 폴더 안에 자동으로 Project 폴더들이 생성되게 됩니다. 아래 그림의 왼쪽의 트리 구조를 참고하세요!
Solution 파일과 폴더, 그리고 그 폴더 내부의 프로젝트 폴더들
기본 함수와 동작 원리, 그리고 기본적인 XNA 개발 창에 대해서 이해를 했으니, 이제 본격적으로 개발을 해 볼 차례입니다. 다음 번에는 화면에 이미지를 출력해보겠습니다.
/ Reference /
톡톡튀는 XNA를 이용한 단계별 슈팅게임 만들기
"추천한다고 아무도 뭐라 안합니다이~
'IT, Smart Life' 카테고리의 다른 글
[DB] DBMS, Database Management System (DB의 종류) (0) | 2011.10.04 |
---|---|
[Android] 위치 제공자 : 상황별 '최적 위치 제공자(Best Location Provider)' 선정 테스트 (1) | 2011.10.02 |
[Kinect] 최고의 모션인식 센서, Kinect Sensor (How I Met the XBOX360 & Kinect Sensor) (4) | 2011.09.16 |
[XNA] Wanna Make a Game? : XNA 4.0 소개, 그리고 설치 (10) | 2011.09.15 |