<?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>いちばんやさしいゲームの作り方 &#187; ゲームエンジン</title>
	<atom:link href="http://www.game-create.com/archives/tag/%e3%82%b2%e3%83%bc%e3%83%a0%e3%82%a8%e3%83%b3%e3%82%b8%e3%83%b3/feed" rel="self" type="application/rss+xml" />
	<link>http://www.game-create.com</link>
	<description>文系の人でも、数理学がわからない人でもゲームプログラミングをマスターできるブログ</description>
	<lastBuildDate>Tue, 08 Jun 2010 01:28:47 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>ぷらがぶる２</title>
		<link>http://www.game-create.com/archives/3478</link>
		<comments>http://www.game-create.com/archives/3478#comments</comments>
		<pubDate>Mon, 07 Jun 2010 14:22:30 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[ゲームプログラミング]]></category>
		<category><![CDATA[Emacs]]></category>
		<category><![CDATA[Emacs Lisp]]></category>
		<category><![CDATA[ゲームエンジン]]></category>
		<category><![CDATA[プラグイン]]></category>
		<category><![CDATA[備忘録]]></category>
		<category><![CDATA[書籍]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=3478</guid>
		<description><![CDATA[プラグイン対応するためには、コアだけはもちろん自分の方で作るのですが、付随する基本機能もプラグインで作っていくという方向性が良いのかもしれません。

いつもながら抽象的な表現ですが、 Emacs の elisp みたいな [...]]]></description>
			<content:encoded><![CDATA[<p>プラグイン対応するためには、コアだけはもちろん自分の方で作るのですが、付随する基本機能もプラグインで作っていくという方向性が良いのかもしれません。</p>
<p><span id="more-3478"></span></p>
<p>いつもながら抽象的な表現ですが、 Emacs の elisp みたいなイメージです（一緒についてくる elisp を基本機能というには語弊がありますが）。他ならぬ自分自身がプラグイン仕様のユーザーであるという立場になることで、要件の不足などを発見できるかもしれません。</p>
<p><a href="http://www.amazon.co.jp/%E3%82%B2%E3%83%BC%E3%83%A0%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%B3%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0-GAME-DEVELOPER-%E8%B5%A4%E5%9D%82-%E7%8E%B2%E9%9F%B3/dp/4797331976/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1275960371&amp;sr=8-1" class="external">Amazon.co.jp： ゲームエンジンプログラミング GAME DEVELOPER: 赤坂 玲音: 本</a></p>
<p>この辺、もっかい目を通してみましょうか…</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/3478/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>どうすればゲームにスケーラビリティを実現できるか？</title>
		<link>http://www.game-create.com/archives/962</link>
		<comments>http://www.game-create.com/archives/962#comments</comments>
		<pubDate>Sat, 15 Nov 2008 12:21:44 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[ゲームプログラミング]]></category>
		<category><![CDATA[ゲームエンジン]]></category>
		<category><![CDATA[書籍]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=962</guid>
		<description><![CDATA[そんなことで躓いているのは自分だけかと思ったのですが、面白い書籍が出版されているものです。


このブログではすっかりおなじみの、あのゲームプログラミングシリーズなのですが、ゲームエンジンとして追加モジュールの開発方法に [...]]]></description>
			<content:encoded><![CDATA[<p>そんなことで躓いているのは自分だけかと思ったのですが、面白い書籍が出版されているものです。</p>
<p><span id="more-962"></span></p>
<p><iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=game-create-22&#038;o=9&#038;p=8&#038;l=as1&#038;asins=4797331976&#038;fc1=000000&#038;IS2=1&#038;lt1=_blank&#038;m=amazon&#038;lc1=0000FF&#038;bc1=000000&#038;bg1=FFFFFF&#038;f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0" class="left"></iframe></p>
<p>このブログではすっかりおなじみの、あのゲームプログラミングシリーズなのですが、ゲームエンジンとして追加モジュールの開発方法に言及されている面白い一冊です。ただ、ゲームエンジンという単語にだけ反応して買わない方が良いと思います。必ず中身を確かめてから買ってください。</p>
<p>著者の玲音たん（男性）はいろんなノウハウがあってすごいですね。同い年なんですけど。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/962/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ゲームループのサンプル</title>
		<link>http://www.game-create.com/archives/54</link>
		<comments>http://www.game-create.com/archives/54#comments</comments>
		<pubDate>Tue, 28 Aug 2007 03:38:49 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[ゲームプログラミング]]></category>
		<category><![CDATA[ゲームエンジン]]></category>
		<category><![CDATA[ゲームループ]]></category>
		<category><![CDATA[サンプル]]></category>
		<category><![CDATA[メルマガ]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=54</guid>
		<description><![CDATA[すでにソースは公開したのですが、後の人が参考にできるように掲載しておきます。

ちなみに UpdateGame() はゲームの計算処理。 DrawGame() はゲームの描画処理です。お好みで読み替えてください。
//  [...]]]></description>
			<content:encoded><![CDATA[<p>すでにソースは公開したのですが、後の人が参考にできるように掲載しておきます。</p>
<p><span id="more-54"></span></p>
<p>ちなみに UpdateGame() はゲームの計算処理。 DrawGame() はゲームの描画処理です。お好みで読み替えてください。</p>
<div class="hl-surround" style="height:280px;"><div class="hl-main"><pre><span class="hl-comment">// メッセージループ
</span><span class="hl-identifier">MSG msg</span><span class="hl-default">;
::</span><span class="hl-identifier">ZeroMemory</span><span class="hl-brackets">(</span><span class="hl-code">&amp;</span><span class="hl-identifier">msg</span><span class="hl-code">, </span><span class="hl-reserved">sizeof</span><span class="hl-brackets">(</span><span class="hl-identifier">MSG</span><span class="hl-brackets">))</span><span class="hl-default">;

</span><span class="hl-identifier">FLOAT </span><span class="hl-types">const </span><span class="hl-identifier">frame</span><span class="hl-default"> = </span><span class="hl-number">16.6666</span><span class="hl-identifier">f</span><span class="hl-default">;
</span><span class="hl-identifier">DWORD enterTime</span><span class="hl-default"> = ::</span><span class="hl-identifier">timeGetTime</span><span class="hl-brackets">()</span><span class="hl-default">;
</span><span class="hl-identifier">DWORD previousTime</span><span class="hl-default"> = ::</span><span class="hl-identifier">timeGetTime</span><span class="hl-brackets">()</span><span class="hl-default">;
</span><span class="hl-identifier">DWORD afterGameUpdateTime</span><span class="hl-default"> = ::</span><span class="hl-identifier">timeGetTime</span><span class="hl-brackets">()</span><span class="hl-default">;

</span><span class="hl-reserved">while </span><span class="hl-brackets">(</span><span class="hl-identifier">msg</span><span class="hl-code">.</span><span class="hl-identifier">message</span><span class="hl-code"> != </span><span class="hl-identifier">WM_QUIT</span><span class="hl-brackets">) {

  </span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-code">::</span><span class="hl-identifier">PeekMessage</span><span class="hl-brackets">(</span><span class="hl-code">&amp;</span><span class="hl-identifier">msg</span><span class="hl-code">, </span><span class="hl-number">0</span><span class="hl-code">, </span><span class="hl-number">0</span><span class="hl-code">, </span><span class="hl-number">0</span><span class="hl-code">, </span><span class="hl-identifier">PM_REMOVE</span><span class="hl-brackets">)) {</span><span class="hl-code">

    ::</span><span class="hl-identifier">TranslateMessage</span><span class="hl-brackets">(</span><span class="hl-code">&amp;</span><span class="hl-identifier">msg</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-comment">// メッセージをウィンドウプロシージャに送信</span><span class="hl-code">
    ::</span><span class="hl-identifier">DispatchMessage</span><span class="hl-brackets">(</span><span class="hl-code">&amp;</span><span class="hl-identifier">msg</span><span class="hl-brackets">)</span><span class="hl-code">;

  </span><span class="hl-brackets">} </span><span class="hl-reserved">else </span><span class="hl-brackets">{

    </span><span class="hl-comment">// ゲームシステムのメインループ
    </span><span class="hl-identifier">enterTime</span><span class="hl-code"> = ::</span><span class="hl-identifier">timeGetTime</span><span class="hl-brackets">()</span><span class="hl-code">;
    </span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">frame</span><span class="hl-code"> &lt;</span><span class="hl-brackets">(</span><span class="hl-identifier">enterTime</span><span class="hl-code"> - </span><span class="hl-identifier">previousTime</span><span class="hl-brackets">)) {
      </span><span class="hl-comment">// ゲームの中核処理は必ず実行する</span><span class="hl-code">
      ::</span><span class="hl-identifier">UpdateGame</span><span class="hl-brackets">(</span><span class="hl-identifier">hWnd</span><span class="hl-brackets">)</span><span class="hl-code">;
      </span><span class="hl-identifier">afterGameUpdateTime</span><span class="hl-code"> = ::</span><span class="hl-identifier">timeGetTime</span><span class="hl-brackets">()</span><span class="hl-code">;
      </span><span class="hl-reserved">if </span><span class="hl-brackets">((</span><span class="hl-identifier">afterGameUpdateTime</span><span class="hl-code"> - </span><span class="hl-identifier">enterTime</span><span class="hl-brackets">)</span><span class="hl-code"> &lt;</span><span class="hl-identifier">frame</span><span class="hl-brackets">) {
        </span><span class="hl-comment">// 同じフレーム内に UpdateGame() がすんだ場合は
        // 描画処理を実行する</span><span class="hl-code">
        ::</span><span class="hl-identifier">InvalidateRect</span><span class="hl-brackets">(</span><span class="hl-identifier">hWnd</span><span class="hl-code">, </span><span class="hl-prepro">NULL</span><span class="hl-code">, </span><span class="hl-prepro">TRUE</span><span class="hl-brackets">)</span><span class="hl-code">;
        ::</span><span class="hl-identifier">UpdateWindow</span><span class="hl-brackets">(</span><span class="hl-identifier">hWnd</span><span class="hl-brackets">)</span><span class="hl-code">;
        </span><span class="hl-identifier">previousTime</span><span class="hl-code"> = ::</span><span class="hl-identifier">timeGetTime</span><span class="hl-brackets">()</span><span class="hl-code">;
        ::</span><span class="hl-identifier">Sleep</span><span class="hl-brackets">(</span><span class="hl-number">1</span><span class="hl-brackets">)</span><span class="hl-code">;           </span><span class="hl-comment">// 少し待つ
      </span><span class="hl-brackets">} </span><span class="hl-reserved">else </span><span class="hl-brackets">{
        </span><span class="hl-comment">// 次のフレームに食い込んでしまった場合は
        // 強制的に次フレームの更新を実行する
        </span><span class="hl-identifier">previousTime</span><span class="hl-code"> = </span><span class="hl-identifier">enterTime</span><span class="hl-code"> - </span><span class="hl-brackets">(</span><span class="hl-identifier">DWORD</span><span class="hl-brackets">)</span><span class="hl-identifier">frame</span><span class="hl-code">;
      </span><span class="hl-brackets">}
    }

  }

}</span></pre></div></div>
<p>よく見るとここだけポリシーが違うんですよね。 const で定数を作っていたり。なんというかモダンな書き方に違和感がある私は古い人間なのかもしれません。</p>
<p><a href="http://www.game-create.com/archives/86">こちらにさらに新しい情報があります！</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/54/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>メルマガサンプルプログラミング実況中継～ゲームループが倒せないの巻～</title>
		<link>http://www.game-create.com/archives/42</link>
		<comments>http://www.game-create.com/archives/42#comments</comments>
		<pubDate>Mon, 20 Aug 2007 12:58:38 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[ゲームプログラミング]]></category>
		<category><![CDATA[ゲームエンジン]]></category>
		<category><![CDATA[ゲームループ]]></category>
		<category><![CDATA[サンプル]]></category>
		<category><![CDATA[メルマガ]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=42</guid>
		<description><![CDATA[ゲームループのバグ修正と可読性を向上させました。でも書いている途中に別のバグに気づきました。ソフトウェアの設計って難しいですね…

ちなみにサンプルゲームはブロック崩しに決定しました。
// メッセージループ
MSG  [...]]]></description>
			<content:encoded><![CDATA[<p>ゲームループのバグ修正と可読性を向上させました。でも書いている途中に別のバグに気づきました。ソフトウェアの設計って難しいですね…</p>
<p><span id="more-42"></span></p>
<p>ちなみにサンプルゲームはブロック崩しに決定しました。</p>
<div class="hl-surround" style="height:280px;"><div class="hl-main"><pre><span class="hl-comment">// メッセージループ
</span><span class="hl-identifier">MSG msg</span><span class="hl-default">;
::</span><span class="hl-identifier">ZeroMemory</span><span class="hl-brackets">(</span><span class="hl-code">&amp;</span><span class="hl-identifier">msg</span><span class="hl-code">, </span><span class="hl-reserved">sizeof</span><span class="hl-brackets">(</span><span class="hl-identifier">MSG</span><span class="hl-brackets">))</span><span class="hl-default">;

</span><span class="hl-identifier">FLOAT </span><span class="hl-types">const </span><span class="hl-identifier">frame</span><span class="hl-default"> = </span><span class="hl-number">16.6666</span><span class="hl-identifier">f</span><span class="hl-default">;
</span><span class="hl-identifier">DWORD enterTime</span><span class="hl-default"> = ::</span><span class="hl-identifier">timeGetTime</span><span class="hl-brackets">()</span><span class="hl-default">;
</span><span class="hl-identifier">DWORD previousTime</span><span class="hl-default"> = ::</span><span class="hl-identifier">timeGetTime</span><span class="hl-brackets">()</span><span class="hl-default">;
</span><span class="hl-identifier">DWORD afterGameUpdateTime</span><span class="hl-default"> = ::</span><span class="hl-identifier">timeGetTime</span><span class="hl-brackets">()</span><span class="hl-default">;

</span><span class="hl-reserved">while </span><span class="hl-brackets">(</span><span class="hl-identifier">msg</span><span class="hl-code">.</span><span class="hl-identifier">message</span><span class="hl-code"> != </span><span class="hl-identifier">WM_QUIT</span><span class="hl-brackets">) {

  </span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-code">::</span><span class="hl-identifier">PeekMessage</span><span class="hl-brackets">(</span><span class="hl-code">&amp;</span><span class="hl-identifier">msg</span><span class="hl-code">, </span><span class="hl-number">0</span><span class="hl-code">, </span><span class="hl-number">0</span><span class="hl-code">, </span><span class="hl-number">0</span><span class="hl-code">, </span><span class="hl-identifier">PM_REMOVE</span><span class="hl-brackets">)) {</span><span class="hl-code">

    ::</span><span class="hl-identifier">TranslateMessage</span><span class="hl-brackets">(</span><span class="hl-code">&amp;</span><span class="hl-identifier">msg</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-comment">// メッセージをウィンドウプロシージャに送信</span><span class="hl-code">
    ::</span><span class="hl-identifier">DispatchMessage</span><span class="hl-brackets">(</span><span class="hl-code">&amp;</span><span class="hl-identifier">msg</span><span class="hl-brackets">)</span><span class="hl-code">;

  </span><span class="hl-brackets">} </span><span class="hl-reserved">else </span><span class="hl-brackets">{

    </span><span class="hl-comment">// ゲームシステムのメインループ
    </span><span class="hl-identifier">enterTime</span><span class="hl-code"> = ::</span><span class="hl-identifier">timeGetTime</span><span class="hl-brackets">()</span><span class="hl-code">;
    </span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">frame</span><span class="hl-code"> &lt;</span><span class="hl-brackets">(</span><span class="hl-identifier">enterTime</span><span class="hl-code"> - </span><span class="hl-identifier">previousTime</span><span class="hl-brackets">)) {
      </span><span class="hl-comment">// ゲームの中核処理は必ず実行する</span><span class="hl-code">
      ::</span><span class="hl-identifier">UpdateGame</span><span class="hl-brackets">()</span><span class="hl-code">;
      </span><span class="hl-identifier">afterGameUpdateTime</span><span class="hl-code"> = ::</span><span class="hl-identifier">timeGetTime</span><span class="hl-brackets">()</span><span class="hl-code">;
      </span><span class="hl-reserved">if </span><span class="hl-brackets">((</span><span class="hl-identifier">afterGameUpdateTime</span><span class="hl-code"> - </span><span class="hl-identifier">enterTime</span><span class="hl-brackets">)</span><span class="hl-code"> &lt;</span><span class="hl-identifier">frame</span><span class="hl-brackets">) {
        </span><span class="hl-comment">// 同じフレーム内に UpdateGame() がすんだ場合は
        // 描画処理を実行する</span><span class="hl-code">
        ::</span><span class="hl-identifier">InvalidateRect</span><span class="hl-brackets">(</span><span class="hl-identifier">hWnd</span><span class="hl-code">, </span><span class="hl-prepro">NULL</span><span class="hl-code">, </span><span class="hl-prepro">FALSE</span><span class="hl-brackets">)</span><span class="hl-code">;
        </span><span class="hl-identifier">previousTime</span><span class="hl-code"> = ::</span><span class="hl-identifier">timeGetTime</span><span class="hl-brackets">()</span><span class="hl-code">;
        ::</span><span class="hl-identifier">Sleep</span><span class="hl-brackets">(</span><span class="hl-number">1</span><span class="hl-brackets">)</span><span class="hl-code">;           </span><span class="hl-comment">// 少し待つ
      </span><span class="hl-brackets">} </span><span class="hl-reserved">else </span><span class="hl-brackets">{
        </span><span class="hl-comment">// 次のフレームに食い込んでしまった場合は
        // 強制的に次フレームの更新を実行する
        </span><span class="hl-identifier">previousTime</span><span class="hl-code"> = </span><span class="hl-identifier">enterTime</span><span class="hl-code"> - </span><span class="hl-brackets">(</span><span class="hl-identifier">DWORD</span><span class="hl-brackets">)</span><span class="hl-identifier">frame</span><span class="hl-code">;
      </span><span class="hl-brackets">}
    }

  }

}</span></pre></div></div>
<p>明日もお仕事がんばるぞ！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/42/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>メルマガサンプルプログラミング実況中継～ゲームループ？？？の巻～</title>
		<link>http://www.game-create.com/archives/41</link>
		<comments>http://www.game-create.com/archives/41#comments</comments>
		<pubDate>Sat, 18 Aug 2007 23:48:01 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[ゲームプログラミング]]></category>
		<category><![CDATA[ゲームエンジン]]></category>
		<category><![CDATA[ゲームループ]]></category>
		<category><![CDATA[サンプル]]></category>
		<category><![CDATA[メルマガ]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=41</guid>
		<description><![CDATA[メルマガのサンプルを作っております。

かなり試行錯誤しながらゲームループを作ってみました。
主に 2D の場合のアルゴリズムなのですが、あっているか不安です。
// メッセージループ
MSG msg;
::Zero [...]]]></description>
			<content:encoded><![CDATA[<p>メルマガのサンプルを作っております。</p>
<p><span id="more-41"></span></p>
<p>かなり試行錯誤しながらゲームループを作ってみました。</p>
<p>主に 2D の場合のアルゴリズムなのですが、あっているか不安です。</p>
<div class="hl-surround" style="height:280px;"><div class="hl-main"><pre><span class="hl-comment">// メッセージループ
</span><span class="hl-identifier">MSG msg</span><span class="hl-default">;
::</span><span class="hl-identifier">ZeroMemory</span><span class="hl-brackets">(</span><span class="hl-code">&amp;</span><span class="hl-identifier">msg</span><span class="hl-code">, </span><span class="hl-reserved">sizeof</span><span class="hl-brackets">(</span><span class="hl-identifier">MSG</span><span class="hl-brackets">))</span><span class="hl-default">;

</span><span class="hl-identifier">FLOAT </span><span class="hl-types">const </span><span class="hl-identifier">frame</span><span class="hl-default"> = </span><span class="hl-number">16.6666</span><span class="hl-identifier">f</span><span class="hl-default">;
</span><span class="hl-identifier">DWORD nowTime</span><span class="hl-default"> = ::</span><span class="hl-identifier">timeGetTime</span><span class="hl-brackets">()</span><span class="hl-default">;
</span><span class="hl-identifier">DWORD previousTime</span><span class="hl-default"> = ::</span><span class="hl-identifier">timeGetTime</span><span class="hl-brackets">()</span><span class="hl-default">;

</span><span class="hl-reserved">while </span><span class="hl-brackets">(</span><span class="hl-identifier">msg</span><span class="hl-code">.</span><span class="hl-identifier">message</span><span class="hl-code"> != </span><span class="hl-identifier">WM_QUIT</span><span class="hl-brackets">) {

  </span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-code">::</span><span class="hl-identifier">PeekMessage</span><span class="hl-brackets">(</span><span class="hl-code">&amp;</span><span class="hl-identifier">msg</span><span class="hl-code">, </span><span class="hl-number">0</span><span class="hl-code">, </span><span class="hl-number">0</span><span class="hl-code">, </span><span class="hl-number">0</span><span class="hl-code">, </span><span class="hl-identifier">PM_REMOVE</span><span class="hl-brackets">)) {</span><span class="hl-code">

    ::</span><span class="hl-identifier">TranslateMessage</span><span class="hl-brackets">(</span><span class="hl-code">&amp;</span><span class="hl-identifier">msg</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-comment">// メッセージをウィンドウプロシージャに送信</span><span class="hl-code">
    ::</span><span class="hl-identifier">DispatchMessage</span><span class="hl-brackets">(</span><span class="hl-code">&amp;</span><span class="hl-identifier">msg</span><span class="hl-brackets">)</span><span class="hl-code">;

  </span><span class="hl-brackets">} </span><span class="hl-reserved">else </span><span class="hl-brackets">{

    </span><span class="hl-comment">// ゲームシステムのメインループ
    </span><span class="hl-identifier">nowTime</span><span class="hl-code"> = ::</span><span class="hl-identifier">timeGetTime</span><span class="hl-brackets">()</span><span class="hl-code">;
    </span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">frame</span><span class="hl-code"> &lt;</span><span class="hl-brackets">(</span><span class="hl-identifier">nowTime</span><span class="hl-code"> - </span><span class="hl-identifier">previousTime</span><span class="hl-brackets">)) {
      </span><span class="hl-comment">// ゲームの中核処理は必ず実行する</span><span class="hl-code">
      ::</span><span class="hl-identifier">UpdateGame</span><span class="hl-brackets">()</span><span class="hl-code">;
      </span><span class="hl-reserved">if </span><span class="hl-brackets">((</span><span class="hl-identifier">nowTime</span><span class="hl-code"> - </span><span class="hl-identifier">previousTime</span><span class="hl-brackets">)</span><span class="hl-code"> &lt;</span><span class="hl-brackets">(</span><span class="hl-identifier">frame</span><span class="hl-code"> * </span><span class="hl-number">2</span><span class="hl-brackets">)) {
        </span><span class="hl-comment">// 同じフレーム内に UpdateGame() がすんだ場合は
        // 描画処理を実行する</span><span class="hl-code">
        ::</span><span class="hl-identifier">InvalidateRect</span><span class="hl-brackets">(</span><span class="hl-identifier">hWnd</span><span class="hl-code">, </span><span class="hl-prepro">NULL</span><span class="hl-code">, </span><span class="hl-prepro">FALSE</span><span class="hl-brackets">)</span><span class="hl-code">;
        </span><span class="hl-identifier">previousTime</span><span class="hl-code"> = ::</span><span class="hl-identifier">timeGetTime</span><span class="hl-brackets">()</span><span class="hl-code">;
        ::</span><span class="hl-identifier">Sleep</span><span class="hl-brackets">(</span><span class="hl-number">1</span><span class="hl-brackets">)</span><span class="hl-code">;           </span><span class="hl-comment">// 少し待つ
      </span><span class="hl-brackets">} </span><span class="hl-reserved">else </span><span class="hl-brackets">{
        </span><span class="hl-comment">// 次のフレームに食い込んでしまった場合は
        // 強制的に次フレームの更新を実行する
        </span><span class="hl-identifier">previousTime</span><span class="hl-code"> = </span><span class="hl-identifier">nowTime</span><span class="hl-code"> - </span><span class="hl-identifier">frame</span><span class="hl-code">;
      </span><span class="hl-brackets">}
    }
  }

}</span></pre></div></div>
<p>大丈夫かな？</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/41/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>メルマガサンプルプログラミング実況中継～ゲームループの巻～</title>
		<link>http://www.game-create.com/archives/40</link>
		<comments>http://www.game-create.com/archives/40#comments</comments>
		<pubDate>Sat, 18 Aug 2007 07:07:38 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[ゲームプログラミング]]></category>
		<category><![CDATA[ゲームエンジン]]></category>
		<category><![CDATA[ゲームループ]]></category>
		<category><![CDATA[サンプル]]></category>
		<category><![CDATA[メルマガ]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=40</guid>
		<description><![CDATA[いつもメルマガの執筆がギリギリになってしまうのでサンプルプログラムだけは先に作っておかなければなるまいと記事を書いております。

メールマガジンはこちら
まず、プログラムの土台はこのサイトでも何度か登場している昔のモノを [...]]]></description>
			<content:encoded><![CDATA[<p>いつもメルマガの執筆がギリギリになってしまうのでサンプルプログラムだけは先に作っておかなければなるまいと記事を書いております。</p>
<p><span id="more-40"></span></p>
<p><a href="http://www.game-create.com/menu/mail_magazine">メールマガジンはこちら</a></p>
<p>まず、プログラムの土台はこのサイトでも何度か登場している<a href="http://www.game-create.com/archives/9">昔のモノ</a>を流用します。しかしこのソースにはゲームループが書いてありません。コーディングした当時は Windows のひな形とゲームのひな形は別のモノだ！…と意気込んでおりました。あの頃は若かったのです。</p>
<p>さて、ゲームループとは何でしょうか？</p>
<p>…と、その前にひとつだけプログラムの特性を知っておく必要があります。</p>
<p>実はプログラムというのはソースコードの上から下へ実行されていくのですが、一番最後までたどり着いたらプログラムが終了してしまうのです。</p>
<p>たとえば FF をプレイしようと思って電源を入れる→ PS のロゴが出る→ SQUARE ENIX のロゴが出る→タイトルが出る→ Continue を選択しようと思ってコントローラに手を伸ばす→ゲーム終了。…と、なってしまうのです。１万円近いソフトウェアを買ったのにこのような仕打ちはひどいと思いますよね？</p>
<p>勘の良い読者の方はすでにお気づきでしょう。そうです、ゲームループとはユーザーとのインタラクティビティを実現するために、ゲームを終了させない仕組みのことなのです。</p>
<p>先ほどの FF の例ですと、ゲームループを組み込むことで、タイトル画面では New game を選ぶか Continue を選ぶかをユーザに選択させるために、プログラム内部でぐるぐるとループして待っている必要があったのです。</p>
<p>では、ゲームループの必要性がわかったところでサンプルプログラムの実装に入りたいところですが、記事が長文になってしまったので次回に持ち越しさせていただきます。</p>
<p>それでは！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/40/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>組み込み系で見たタスクシステム</title>
		<link>http://www.game-create.com/archives/37</link>
		<comments>http://www.game-create.com/archives/37#comments</comments>
		<pubDate>Thu, 16 Aug 2007 12:55:34 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[ゲームプログラミング]]></category>
		<category><![CDATA[アイデア]]></category>
		<category><![CDATA[ゲームエンジン]]></category>
		<category><![CDATA[タスクシステム]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=37</guid>
		<description><![CDATA[今週悩んでいるアニメーション仕様はまだまだ完成には遠いと感じました。
長い道です。

それはさておき、私は今まで PIECE のような組み込み系（っぽい）環境でタスクシステムを組むというのはそうとうの熟練を要すると思って [...]]]></description>
			<content:encoded><![CDATA[<p>今週悩んでいるアニメーション仕様はまだまだ完成には遠いと感じました。</p>
<p>長い道です。</p>
<p><span id="more-37"></span></p>
<p>それはさておき、私は今まで PIECE のような組み込み系（っぽい）環境でタスクシステムを組むというのはそうとうの熟練を要すると思っていました。なんせスレッドっぽく動かなければならないためです。タイムシェアが必要というわけです。</p>
<p>しかし本日になって突然、あれ？インストラクションポインタとスタックポインタを切り替えればできる？と思いました。とりあえず Windows では不可能なのはわかっているので組み込み系の低水準環境で試してみたいものです。</p>
<p>パソコンは１台くらい壊さなければ上達しない。…と、いま私が思いました。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/37/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>アニメーション仕様のあり方（第２夜）</title>
		<link>http://www.game-create.com/archives/36</link>
		<comments>http://www.game-create.com/archives/36#comments</comments>
		<pubDate>Wed, 15 Aug 2007 10:02:33 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[ゲームプログラミング]]></category>
		<category><![CDATA[アイデア]]></category>
		<category><![CDATA[アニメーション]]></category>
		<category><![CDATA[ゲームエンジン]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=36</guid>
		<description><![CDATA[先日に続いてアニメーション仕様の構想です。とりあえずパッシブアニメーションの仕様はほとんど固まりました。

以下のような画面で管理できると思います。

問題はアクティブアニメーションです。
同じ画面で管理するのは煩雑かも [...]]]></description>
			<content:encoded><![CDATA[<p>先日に続いてアニメーション仕様の構想です。とりあえずパッシブアニメーションの仕様はほとんど固まりました。</p>
<p><span id="more-36"></span></p>
<p>以下のような画面で管理できると思います。</p>
<p><a href="http://www.game-create.com/wp-content/uploads/2007/08/anime_tool_ui.jpg" title="パッシブアニメーション管理画面サンプル" rel="lightbox"><img src="http://www.game-create.com/wp-content/uploads/2007/08/anime_tool_ui.thumbnail.jpg" alt="パッシブアニメーション管理画面サンプル" /></a></p>
<p>問題はアクティブアニメーションです。</p>
<p>同じ画面で管理するのは煩雑かもしれません。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/36/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>アニメーション仕様のあり方</title>
		<link>http://www.game-create.com/archives/34</link>
		<comments>http://www.game-create.com/archives/34#comments</comments>
		<pubDate>Tue, 14 Aug 2007 13:12:42 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[ゲームプログラミング]]></category>
		<category><![CDATA[アイデア]]></category>
		<category><![CDATA[アニメーション]]></category>
		<category><![CDATA[ゲームエンジン]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=34</guid>
		<description><![CDATA[少し大きめのゲームを作るとなるとかなり神経を使います。私の場合、最初の砦となるのがアニメーションです。

たとえばテイルズのバトルシーンのようなゲームのアニメーションを作りたい場合、どうもパッシブなアニメーションとアクテ [...]]]></description>
			<content:encoded><![CDATA[<p>少し大きめのゲームを作るとなるとかなり神経を使います。私の場合、最初の砦となるのがアニメーションです。</p>
<p><span id="more-34"></span></p>
<p>たとえばテイルズのバトルシーンのようなゲームのアニメーションを作りたい場合、どうもパッシブなアニメーションとアクティブなアニメーションのふたつが必要なのかな？と考えています。</p>
<p>パッシブなアニメーションはベクトルから今現在表示すべきアニメーションとコマを算出して描くだけなのですが、たとえば大ダメージを受けてノックバックする場合などは逆にベクトルを見てはダメで、ダメというか逆にベクトルを指定する必要すらあるような気がしているのです。</p>
<p>パッシブアニメーションが切り替わるのをロックする機能と、アニメーションの終了をフックする機能が必要かもしれません。</p>
<p>いやぁ、難しい。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/34/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

