<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>初心者向け | ゲームに囲まれたい生活</title>
	<atom:link href="https://gamekineki.com/tag/%E5%88%9D%E5%BF%83%E8%80%85%E5%90%91%E3%81%91/feed/" rel="self" type="application/rss+xml" />
	<link>https://gamekineki.com</link>
	<description>ゲームを含めた自分の趣味を語ってゆくブログ</description>
	<lastBuildDate>Tue, 18 Feb 2025 03:56:06 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1</generator>

<image>
	<url>https://gamekineki.com/wp-content/uploads/2024/02/cropped-58c0d6b17f7ea6322ea76689afd67af0-32x32.jpg</url>
	<title>初心者向け | ゲームに囲まれたい生活</title>
	<link>https://gamekineki.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>【C++】ゲームをコードで書くフレームワーク・ライブラリ三選</title>
		<link>https://gamekineki.com/post-424/</link>
		
		<dc:creator><![CDATA[キネキ]]></dc:creator>
		<pubDate>Tue, 18 Feb 2025 03:56:06 +0000</pubDate>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[初心者向け]]></category>
		<guid isPermaLink="false">https://gamekineki.com/?p=424</guid>

					<description><![CDATA[　皆様、お疲れ様です。今回はゲームプログラミング初心者向けの記事になります。題してゲームを（ほぼ）コードだけで成立させられるフレームワーク・ライブラリについてです。基本的にはゲーム開発初心者がコードで作る最初のゲームの範 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">　皆様、お疲れ様です。<br>今回はゲームプログラミング初心者向けの記事になります。<br>題してゲームを（ほぼ）コードだけで成立させられるフレームワーク・ライブラリについてです。<br>基本的にはゲーム開発初心者がコードで作る最初のゲームの範囲として2Ｄまでがひとまずの目安であることを想定しています。そのため、2Ｄゲームをつくるのに十分であり日本語の解説が比較的充実していて、かつ後に3Ｄまで踏み込んだ時にそれを使い続けることもできるということを条件にして今回選ばせていただきました。<br><br>また前提としてVisualStudioで使うことを前提に書いていることをご了承ください。</p>



<p class="wp-block-paragraph">　昨今はUnrealEngineやUnityなどのゲームエンジンで比較的学習コストを低くして、ゲーム制作に取り組むことが出来て個人開発者にとっても非常にいい環境が整いつつあります。しかしながら各エンジン備え付けのコンポーネントなどの処理だけでは自分のやりたいことを実現できない・・・、なんてことも起こりえます。ゲーム開発の基礎（どのようなことが書かれているのか・どのような順序で処理されているのか等）を学ぶためにも一度コードに触れることは絶対損にはなりません！！<br>なのでよりフレキシブルに開発できるように、コードを書くことに馴染みを覚えてほしいなあと思い今回の記事を書きました。<sup data-fn="67cf400a-be0d-462b-83da-09256e73d90f" class="fn"><a href="#67cf400a-be0d-462b-83da-09256e73d90f" id="67cf400a-be0d-462b-83da-09256e73d90f-link">1</a></sup></p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">各フレームワーク・ライブラリの紹介</a><ol><li><a href="#toc2" tabindex="0">そもそもフレームワーク・ライブラリって何ぞ？違いって？</a></li><li><a href="#toc3" tabindex="0">DXライブラリ</a></li><li><a href="#toc4" tabindex="0">Siv3D</a></li><li><a href="#toc5" tabindex="0">SDL</a></li><li><a href="#toc6" tabindex="0">最後に</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">各フレームワーク・ライブラリの紹介</span></h2>



<h3 class="wp-block-heading"><span id="toc2">そもそもフレームワーク・ライブラリって何ぞ？違いって？</span></h3>



<p class="wp-block-paragraph">　とまあ送り出したのですが、恐らくですが早速引っかかると思います。聞いたことはあるけど詳しい違いや内容が分からないですよね。本題とずれてしまうのでネットの海を調べていただくか下記の記事を参照して下さい。</p>




<a rel="noopener" target="_blank" href="https://zenn.dev/nameless_sn/articles/framework_and_library" title="【解説】フレームワークとライブラリの違い" class="blogcard-wrap external-blogcard-wrap a-wrap cf"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img fetchpriority="high" decoding="async" src="https://gamekineki.com/wp-content/uploads/cocoon-resources/blog-card-cache/fcb377fe4ba8d0213053e7f083f5568c.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">【解説】フレームワークとライブラリの違い</div><div class="blogcard-snippet external-blogcard-snippet"></div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img decoding="async" src="https://www.google.com/s2/favicons?domain=https://zenn.dev/nameless_sn/articles/framework_and_library" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">zenn.dev</div></div></div></div></a>



<p class="wp-block-paragraph">　簡単に言いますと<br>・フレームワーク：プログラムの基礎の構成が既にあり、それ単体でも実行できる。この上に自身の書いたプログラムを載せて拡張するといったイメージ。<br>・ライブラリ：便利な関数（プログラム）の集まり。上記と比べて自身の書いたプログラムに必要に応じて取り入れるといった感覚をイメージしてもらえるといいと思います。<br>と頭の片隅においてもらえたらと思います。</p>



<h3 class="wp-block-heading"><span id="toc3">DXライブラリ</span></h3>



<p class="wp-block-paragraph">ホームページ<br><a rel="noopener" target="_blank" href="https://dxlib.xsrv.jp/">https://dxlib.xsrv.jp/</a>（”ダウンロードはこちら”のところから自分の環境に合わせてダウンロード）<br>リファレンス<br><a rel="noopener" target="_blank" href="https://dxlib.xsrv.jp/dxfunc.html#R1N1">https://dxlib.xsrv.jp/dxfunc.html#R1N1</a></p>



<p class="is-style-bottom-margin-0em has-bottom-margin wp-block-paragraph"><strong>・特徴</strong><br>導入の方法が今回紹介する中で最も容易。<br>ー方法に関しては今回は説明しないので、他のサイトを参照してもらえればと。<br>関数ごとに用例やどういった処理をしているかの解説がリファレンスに乗っているので、初心者でも扱いやすいと思われる。<br>基本的には現在掲載しているリファレンスのページの関数のみでゲームの制作を行うことが出来る。<br>ー3D関係やLive2Dにも対応しており別ページに存在するが、それらは無理に使わずともよい（使ってもよい）。<br>・<strong>留意点</strong><br>初期化と終了処理が必須となる。<br>ーゲーム系のライブラリにはつきものだが、それぞれ一行で終わる為、容易。<br>リファレンスには掲載されていない隠し関数が存在する。<br>ー参照する際は実際のソースコードで。<br><br>以下に基本となるゲームループのコード</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-cpp" data-file="WinMain.cpp" data-lang="C++"><code>#include &quot;DXLib.h&quot;

//
// WinMain(). プログラム起動関数
//
int WINAPI WinMain(
	HINSTANCE hInstance,
	HINSTANCE hPrevInstance,
	LPSTR lpCmdLine,
	int nCmdShow
) {

    // ＤＸライブラリ初期化処理:DXライブラリの関数
    if( DxLib_Init() == -1 )
    {
         return -1;        // エラーが起きたら直ちに終了
    }

    Initialize(); // ゲーム全体の初期化処理

	// 1フレームループを組む ----------------------------------------------------------
	while (ProcessMessage() == 0)		// プログラムが終了するまでループ:DXライブラリの関数
	{
		Input(); // キーボードやパッドの入力処理
		Process(); // ゲームの計算処理（キャラがどれぐらい動いたなど）

		ClearDrawScreen();		// 画面を初期化する:DXライブラリの関数
		Render(); // 画面にキャラクターを描画
		ScreenFlip();			// 裏画面の内容を表画面に反映させる:DXライブラリの関数
	}

    // ＤＸライブラリ使用の終了処理:DXライブラリの関数
    DxLib_End() ;

	return 0;
}</code></pre></div>



<h3 class="wp-block-heading"><span id="toc4">Siv3D</span></h3>



<p class="wp-block-paragraph">ホームページ兼リファレンス<br><a rel="noopener" target="_blank" href="https://siv3d.github.io/ja-jp/">https://siv3d.github.io/ja-jp/</a></p>



<p class="is-style-bottom-margin-0em has-bottom-margin wp-block-paragraph">・<strong>特徴</strong><br>よく使われる図形構造体（Rectなど）や標準ライブラリ（STL）のラッパークラスが存在し、それらを活用しやすいように整えられているフレームワーク。<br>導入した時点で初期化や終了処理を必要とせず、ファイルがインクルードされていれば各種クラス・関数を利用することが出来る。<br>現在でも開発者がSiv3Dに関する講演等を行っており、体験会なども開催されているので最寄りで開催されていた場合、参加するという手段もとれる。<br>・<strong>留意点</strong><br>既に自身で作ったプロジェクトが存在している場合、新たにSiv3Dテンプレートのプロジェクトを作り直して移植する必要がある？（自分は中途で導入するのを断念して作り直しました・・・。）<br>汎用的な命名が多いため、自身で作った関数等と命名がかぶることが往々にして発生する。<br>ーその場合はSiv3D側のネームスペース（s3d::○○）を明確に記述することで解決できる。<br>ラッパークラスも多いので本来の標準ライブラリに触れるところまでコードの内容を確かめて理解してみてほしい。<br>ー他のライブラリでは基本的にここまでラッパークラスが整備・活用されていることは多くないので、標準ライブラリを扱えるようにした方がいい気がする・・・。<br>リファレンスもまだ記述されていない項目が存在するので内部のコードをみて開発することも必要。<br><br>以下に基本となるゲームループのコード（公式サイトの例）</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-cpp" data-file="main.cpp" data-lang="C++" data-show-lang="1"><code># include &lt;Siv3D.hpp&gt;

void Main()
{
	// 背景色を水色に設定する
	Scene::SetBackground(ColorF{ 0.8, 0.9, 1.0 });

	// 絵文字からテクスチャを作成する
	const Texture texture{ U&quot;&#x1f425;&quot;_emoji };

	// テクスチャを描く位置
	Vec2 pos{ 400, 300 };

	// メインループ
	while (System::Update())
	{
		// もし左クリックされたら
		if (MouseL.down())
		{
			// 描く位置を現時点でのマウスカーソルの位置に変更する
			pos = Cursor::Pos();
		}

		// テクスチャを描く
		texture.drawAt(pos);
　　　　
	}
}</code></pre></div>



<h3 class="wp-block-heading"><span id="toc5">SDL</span></h3>



<p class="wp-block-paragraph">ダウンロードページ（GitHub）<br><a rel="noopener" target="_blank" href="https://github.com/libsdl-org/SDL">https://github.com/libsdl-org/SDL</a><br>日本語リファレンス<br><a rel="noopener" target="_blank" href="https://maruhiro-ver0.github.io/sdl2manual-ja/">https://maruhiro-ver0.github.io/sdl2manual-ja/</a></p>



<p class="is-style-bottom-margin-0em has-bottom-margin wp-block-paragraph">・<strong>特徴</strong><br>クロスプラットフォームライブラリ<br>ー違うプラットフォーム（OS）でも動作する<br>海外で作成されたライブラリのため、ゲームの開発実績も相応に多い<br>ーそのため英語版のリファレンスが日本語より充実していると思われる<br>参考書籍も存在するのでその本に沿って学習すると吸収しやすいかも？<br>ー本項目の最後にAmazonのリンクを掲載<br>・<strong>留意点</strong><br>DXライブラリと同様に初期化と終了処理が必要となる<br>リファレンスの項目分けは初心者にとっては少し見づらいかもしれないです。<br>ー必要としている関数がどこにあるかわかりにくい<br><br>以下に基本となるゲームループのコード</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-cpp" data-file="main.cpp" data-lang="C++" data-show-lang="1"><code>void main()
{
 SDL_Window* gWindow; // ゲームのウィンドウ 
 bool gIsRunning = true; // ゲームを起動し続けてよいか

/////必須の初期化作業（初期化内容は必要に応じて）//
 if(SDL_Init(SDL_INIT_VIDEO) != 0){
   gIsRunning = false;
 }

 gWindow = SDL_CreateWindow(
  &quot;Game_test&quot;,　// ウィンドウのタイトル
  0,            // ウィンドウ左上隅のx座標
  0,            // ウィンドウ左上隅のy座標
  1920,         // ウィンドウの幅（Width）
  1080,         // ウィンドウの高さ（height）
  0             // フラグ（設定しない時は0） 
 );

 if(!gWindow){// もしウィンドウが作成されなかったら
   gIsRunning = false; 
 }
//////////////////////////////////////////////

 while(gIsRunning){
 // これまでと同様の入力、処理、描画のゲームループ 
   Input();
   Process();
   Render();
 }

/////必須の終了処理/////////////////////////////
 SDL_DestroyWindow(gWindow);
 SDL_Quit();
//////////////////////////////////////////////
}</code></pre></div>



<p class="is-style-bottom-margin-0em has-bottom-margin wp-block-paragraph">参考書籍</p>



<figure class="wp-block-embed is-type-rich is-provider-amazon wp-block-embed-amazon"><div class="wp-block-embed__wrapper">
<iframe title="ゲームプログラミングC++" type="text/html" width="1256" height="550" frameborder="0" allowfullscreen style="max-width:100%" src="https://read.amazon.com.au/kp/card?preview=inline&#038;linkCode=kpd&#038;ref_=k4w_oembed_keQcJIcYE1j1mM&#038;asin=4798157619&#038;tag=kpembed-20"></iframe>
</div></figure>



<h3 class="wp-block-heading"><span id="toc6">最後に</span></h3>



<p class="wp-block-paragraph">　ここまで紹介してきましたが、上記のいずれかを”<strong>絶対にマスターしろというわけではない</strong>”ということは言っておきますね。最初にも言いましたが、昨今は便利なゲームエンジンの台頭もあり、そちらの方が慣れれば開発効率は上だと思います。ただ内側を知っているか、自分で書けるか、で作れるものの幅は大きく変わると思います。上記を使ってゲームをつくる中で色々調べることが多くあると思います。それらを調べて自分の内に貯めていくことで、つくるゲームの世界がより広がるんじゃないかなと思います。<br>これを使った方がいいというゲームの作り方の定石はあるかもしれませんが、どの道具・方法を使えというのは決まっていません。上記でも十分、ゲームの発想とコードを書く力次第で面白いゲームは作れますので、めげずに頑張りましょう！（僕も頑張ります・・・。面白いゲームつくったら共有してね・・・。）</p>



<p class="wp-block-paragraph">最後に今回の話題とは無関係ですが、推しの作家さんの本を載せておきますね。（キャラの造形とか作者さんが書くキャラが好き・・・。）</p>



<p class="has-text-align-center wp-block-paragraph"><a rel="sponsored noopener" target="_blank" href="https://dlaf.jp/comic/dlaf/=/t/i/link/work/aid/kineki01/id/BJ183060.html"><img decoding="async" itemprop="image" src="//img.dlsite.jp/modpub/images2/work/books/BJ184000/BJ183060_img_main.jpg" alt="" border="0" class="target_type" /></a></p>


<ol class="wp-block-footnotes"><li id="67cf400a-be0d-462b-83da-09256e73d90f">初心者向けだったら、導入方法とかもっと懇切丁寧に解説したほうが良いよなぁと思いつつ・・・わからないところがあったらSNSなどでここ分からなかったを言ってください。頑張れれば答えたり記事にします・・・ごめんなさい <a href="#67cf400a-be0d-462b-83da-09256e73d90f-link" aria-label="脚注参照1にジャンプ">↩︎</a></li></ol>]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
