1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

DXライブラリでゲームを作るぞ!【1.準備編】

Posted at

0.はじめに

そうだ、C++でゲームを作ろう。どうせなら勉強になりそうだし、3Dゲームを作ろう。
そう思い立ち、アウトプットをしながら進めるとモチベーションにもなるかと考え、記事を執筆する。

1.動作環境

  • Windows11
  • Visual Studio Community 2022 17.12.4
  • DXライブラリ Windows版 VisualStudio( C++ )用(最新暫定版)

2.VisualStudioのインストール

3.DXライブラリのインストール

  • DXライブラリのダウンロードページにて「DXライブラリ Windows版 VisualStudio( C++ )用」をダウンロード。
  • ダウンロードしたzipを展開し、展開して作成された「DxLib_VC」を任意の場所に移動(私はCドライブ直下に配置)

※注意※
Visual Studio Community 2022 17.12.3Ver以上だと、DXライブラリをインクルードするとIntelliSenceが動作しないという不具合があるらしい。その場合は暫定最新版を使用する。以下のリンクから取得可能。
https://dxlib.xsrv.jp/cgi/patiobbs/patio.cgi?mode=view&no=5726

4.プロジェクトの作成

  • Visual Studioを起動
  • 「新しいプロジェクトの作成」押下
  • 「空のプロジェクト」押下後、「次へ」を押下
  • 任意の「プロジェクト名」、「場所」、「ソリューション名」を記入し、「作成」を押下

5.プロジェクトの設定

  • 「ソリューションエクスプローラー」の「ソースファイル」を右クリックし、[追加][新しい項目]を選択し開くスクリーンショット 2025-02-09 014952.png
    Main.cppを作成する
    スクリーンショット 2025-02-09 015030.png
  • [構成プロパティ][C/C++][全般]の「追加のインクルードディレクトリ」に、DXライブラリのインクルードディレクトリパスを追加
    ※Cドライブ直下に展開した場合、C:\DxLib_VC\プロジェクトに追加すべきファイル_VC用
    スクリーンショット 2025-02-09 015223.png
  • [構成プロパティ][リンカー][全般]の「追加のライブラリディレクトリ」に、先ほどと同じDXライブラリのライブラリディレクトリパスを追加
    スクリーンショット 2025-02-09 015306.png
  • [構成プロパティ][リンカー][システム]の「サブシステム」を、Windows(/SUBSYSTEM:WINDOWS)に変更
    スクリーンショット 2025-02-09 015337.png

6.動作確認

 まずは設定用モジュールとして、ProjConf.hを作成する。
「ソリューションエクスプローラー」の「ヘッダーファイル」を右クリックし、[追加][新しい項目]を選択し、追加する。
スクリーンショット 2025-02-09 015410.png
スクリーンショット 2025-02-09 015438.png

 ProjConf.hではウィンドウ設定の定数を定義。

ProjConf.h
#pragma once

/*** ウィンドウ設定 ***/
#define WIN_MAX_X 660			// ウィンドウの横幅
#define WIN_MAX_Y 450			// ウィンドウの縦幅
#define WIN_POS_X 0				// ウィンドウの初期位置X
#define WIN_POS_Y 0				// ウィンドウの初期位置Y

 次に、メインモジュールとしてMain.cppを作成する。
スクリーンショット 2025-02-09 014952.png
スクリーンショット 2025-02-09 015030.png

Main.cppは、

  • メイン関数(wWinMain)
    • ウィンドウの初期化
    • メインループ処理(今は何もしない)

を実装する。

Main.cpp
/*** Header File ***/
#include "DxLib.h"
#include "ProjConf.h"

int APIENTRY wWinMain(
    _In_ HINSTANCE hInstance,
    _In_opt_ HINSTANCE hPrevInstance,
    _In_ LPWSTR ipCmdLine,
    _In_ int nCmdShow) 
{

	ChangeWindowMode(TRUE);							// ウィンドウモードで起動
	if (DxLib_Init() == -1)							// DXライブラリ初期化処理
	{
		return -1;	// エラーが起きたら直ちに終了
	}

	/*** Window Init ***/
	SetWindowText(L"TEST GAME");					// ウィンドウのタイトル
	SetWindowInitPosition(WIN_POS_X, WIN_POS_Y);	// ウィンドウの位置
	SetGraphMode(WIN_MAX_X, WIN_MAX_Y, 32);			// ウィンドウのサイズ
	SetBackgroundColor(255, 255, 255);				// ウィンドウの背景色
	SetDrawScreen(DX_SCREEN_BACK);					// 描画先画面を裏画面にする
	SetAlwaysRunFlag(TRUE);							// ウインドウ非アクティブ状態でも処理を続行する

	/*** ループ処理 ***/
	while (ScreenFlip() == 0 &&		// 裏画面の内容を表画面に反映
		ClearDrawScreen() == 0 &&	// 画面を初期化
		ProcessMessage() == 0)		// ウインドウのメッセージを処理
	{

		/* 本処理 */

	}

    WaitKey();

	DxLib_End();					// DXライブラリ使用の終了処理

	return 0;						// ソフトの終了 
}

 F5キーでビルドをして、ウィンドウが無事起動すればDXライブラリの導入に成功している。
スクリーンショット 2025-02-09 020853.png

7.さいごに

 今回の記事では、とりあえずDXライブラリを導入してみた。次回から、本格的にゲーム制作に入っていきたい。

余談
 WinAPIのエントリーポイントとしてWinMainとwWinMainが使用できるが、この二つの違いは文字列の扱いにある。前者はANSI文字列が、後者はUnicode文字列が引数として渡されるらしい。
 Windowsが標準でUnicodeを使用するようになった現在ではwWinMainが推奨されているため、この記事ではwWinMainを使用した。
 でもぶっちゃけどちらを使ってもあまり変わらないと思う(WinMainを使っている記事の方が多く見受けられるし)

8.参考にさせていただいた記事

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?