OS/Windows API

#5 Windows API 게임의 기본 구조

VallistA2014. 8. 26. 10:11

첨부 파일 : (API 라이브러리)


APILibrary.zip



위 첨부 파일은 우리가 API로 만들 기초 틀 입니다. (나중에 또 바뀌겠지만)


Windows API든, Direct 3D든 게임을 만들거나 다른 어플리케이션등을 만들때 쓰이는 구조는 정말 명확하게 나뉘어져 있습니다.


표로 나누어 보자면.



 Initialize 

 초기화 

 Update

 업데이트 (실시간으로 모든 정보를 업데이트 합니다.) 

 Render

 렌더링    (실시간으로 모든 그림을 렌더 합니다.) 

 Destroy

 삭제       (모든 작업이 끝나면 삭제합니다.)

<표 1> 어플리케이션의 각 과정들


위에서 보면 초기화, 업데이트, 렌더링, 삭제의 과정을 거칩니다.

이 것들은 무엇이냐 하면 각각의 하는 역할을 나누어 함수로 사용 한다는 것 입니다.



Initialize는 초기화 하는 부분입니다.

프로그램에서는 Init 이라고 줄여서 부르기도 합니다.

여기에서는 모든 선언 변수의 초기화와 값의 대입등을 처리합니다.


Update는 실시간으로 값을 체크합니다.

예를들어, 언제 입력받을지 모르는 키보드같은 것들에 대해 상태를 처리합니다.


키보드의 '왼쪽' 방향이 눌려졌을 때의 상태일 시 왼쪽으로 간다던가 등의 처리를 이 부분에서 해줍니다.


Render는 그림을 계속해서 그려주는 부분입니다.

모든 그림은 계속해서 화면에 뿌려주고, 사라집니다.

그런 과정을 계속해서 반복하게 되고 그러한 역할을 하는 부분입니다.


최근 엔진에서는 Render를 따로 처리하지 않습니다.

Render을 없애고 함수로 그릴지 안그릴지 관리를 하여 좀 더 편리하도록 바꾸는게 최근의 엔진 동향입니다.


Destroy는 삭제하는 함수 입니다.

우리가 작업이 끝나거나 어플리케이션이 종료되었을때 사용하는 함수 입니다.

작업이 끝날때 현재 사용하고 있는 메모리들을 삭제를 해주어야 됩니다.

그렇기 때문에 쓰는 함수입니다.


이 구조가 게임내부에서 어디에 들어가냐? 하면

모든 클래스 및 내부로 다 들어가게 됩니다

예를 들자면 게임내에서 Hero가 있으면 그 Hero의 내부에는 Init, Update, Render, Destroy가 존재할 것이며 기본적으로 모두다 이 4가지는 존재하게 된다는 것 입니다.


그리고 Hero를 선언한 후, Main Loop 의 Init에서


Hero->Init을 해주면 되겠습니다.

각각에 맞는 상황에 써주시면 더욱 좋습니다.


한번 예제 파일을 보시면 되겠습니다.


다음 강좌는 API의 Update에 대해서 공부하겠습니다.


댓글

댓글쓰기 폼

VallistA

병특이 끝나서 게임에서 웹으로 스위칭한 프로그래머.
프로그래밍 정보등을 공유합니다.

자고 싶습니다. ㅠㅠ

페이스북    :: 링크
카카오톡    :: kingbye1
Github      :: 링크

궁금한점 문의 주시면 답변드리도록 하겠습니다

VISITED

Today : 87

Total : 400,850

SNS

  • 페이스북아이콘
  • 카카오톡아이콘
  • 트위터아이콘