DirectX11 2D 롤플레잉 게임 만들기 1 개괄

DirectX 2D 기반, 쿼터뷰 환경의 2D 롤플레잉 게임을 만들어보자.

이는 기획안이 없는 개발이기에 어떤 시행착오든 겪을 수 있으며 대신 어떤 식으로든 변할 수 있다.

진행된 소스코드는 오픈톡 “디자임: 인디게임 개발자 모임”을 통해 모임 활동을 하시는 분들에 한해서 공유됩니다

이 포스팅은 명료한 설명을 위해 존댓말을 생략합니다.

시작하는 글

이 포스팅은 게임 개발에 익숙하지 않은 분들이 게임 구조에 대해 이해하는 것을 돕기 위함임

이 개발물은 게임 엔진(유니티, 언리얼)을 사용하지 않음

대신 게임 엔진들이 일반적으로 어떤 역할을 하는지 알 수 있음

게임 엔진

게임 개발에 입문하면 우선 어떤 엔진을 쓸 지에 대한 선택부터 해야 한다.

그 중 유니티와 언리얼이 가장 많이 쓰이며 고도가 새롭게 등장했다.

24년 10월 13일 현재는 언리얼의 사용이 점차 증가하는 추세이다

그중 어떤 엔진이 개발에 적합한지, 사용료가 비싼지, 앞으로 어떤 엔진이 살아남을 건지 등의 논쟁은 끝이 없다.

중요한 건 현대 게임 개발에 있어 엔진이란게 왜 필요하며, 그것이 어떤 역할을 하는지 이해하는 것

그것들을 이해하고 나면, 어떤 엔진을 쓰든 거부감이 없어지며, 엔진에 대한 사용법들을 비교적 빠르게 익힐 수 있다.

DirectX란?

Windows API의 일종이다.

Windows가 게임이나 응용프로그램들에게 사용하라고 만들어준 기반 기능들인 것.

언리얼, 유니티도 PC에서 게임을 만들어 돌릴 때 DirectX에 의지한다.

Windows위에서 게임을 돌리려면 결국 Windows기능을 써야 하는 것.

사실 DirectX등, 일부 Windows API들은 단순한 함수와 클래스들만은 아니지만.

일단은 우리가 코딩할 때 사용할 각종 함수와, 클래스들이라고 보면 된다.

Windows API란?

API (Application Programming Interface)

Windows OS에게 “화면 가운데에다 손바닥만하게 창(window)을 열어줘”라고 부탁을 하는 함수는CreateWindow() 라는 함수이다.

이때 만들려는 창의(window) 위치와 크기 정보를 참고로 넣어주기 위해 사각형을 묘사하는 RECTANGLE(right, left, top, bottom)이라는 자료형이 필요할지 모르겠다. (사실 줄여서 RECT로 쓴다)

CreateWindows()란 함수 안에, RECT형 변수 rect가 들어가는게 보인다. 이런 것들이 API의 일부이다.

만들어진 창 안에 사각형이나 동그라미를 그리려주는 기능의 함수도 있다,

그림 파일의 그림을 불러 해당 window 안에 그려주는 함수도 있다.

이런 것들은 분명 Windows가 모든 응용프로그램들에게 제공해줘야 하는 기반인 것.

참고로 이런 기반 기능들은 어떻게 만들어졌을지 신기해 하거나 궁금할 수 있다. 막상 시스템을 공부하면서 저런 함수 하나하나를 살펴보면 생각보다 별게 없다.

Visual Studio 2022

Visual Studio 2022는 Windows기반 개발 프로젝트를 하는데 가장 범용적으로 쓰이는 개발용 에디터이다.

Windows를 만든데서 Windows API를 사용해 개발할 때 쓰라고 만들어 줬기 때문. (그렇다고 가장 편하진 않다..)

암튼 이것으로 포스팅하겠다. 설치과정은 단순하고 참고 자료가 많으므로 차후 포스팅 함.

Windows API용 기본 코드 형식

우리가 만든 프로그램이 구동할 환경은 Windows라는 GUI 환경이기 때문에 그냥 void main(){ return; } 형식의 코드만으로는 이 Windows 플랫폼과 소통할 수 없다.

이를 위해선 Windows가 요구하는 GUI 프로그램에 대한 일정 기본 형식을 따라줘야 한다. 그래서 이런 기본 형식을 알아보는 것이 WinAPI를 시작하는 첫걸음이다.

설치하고 나면 Visual Studio 2022를 열어서 아래와 같이 프로젝트를 만들자

  •  새 프로젝트 만들기 -> Windows 데스크톱 애플리케이션 항목 -> 프로젝트 이름 입력 -> 만들기

아래와 비슷한 화면이 보인다면. 제대로 만들어진 것이다

당장 눈앞에 보이는 코드가 Windows 플랫폼에서 요구하는 코드에 대한 기본 형태이자 시작 코드이다.

잘 보면 위에서 언급한 CreateWindow() 함수가 보인다.

Leave a Comment