<?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; COM</title>
	<atom:link href="http://www.game-create.com/archives/tag/com/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>「 COM とは何か？」を本で学びたい（さわりだけ）</title>
		<link>http://www.game-create.com/archives/3181</link>
		<comments>http://www.game-create.com/archives/3181#comments</comments>
		<pubDate>Fri, 16 Apr 2010 14:21:20 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[ゲームプログラミング]]></category>
		<category><![CDATA[3D]]></category>
		<category><![CDATA[Amazon]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[COM]]></category>
		<category><![CDATA[Direct3D]]></category>
		<category><![CDATA[DirectX]]></category>
		<category><![CDATA[書籍]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=3181</guid>
		<description><![CDATA[…というわけでゲームコーディング Vol.1 を買いなおしました。


実は以前、コンピューターの技術で食っていくのをやめようかと思った時期がありまして、持っている本を売りに出してしまったのです。入手できなくならないうち [...]]]></description>
			<content:encoded><![CDATA[<p>…というわけでゲームコーディング Vol.1 を買いなおしました。</p>
<p><span id="more-3181"></span></p>
<p><iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;bg1=FFFFFF&#038;fc1=000000&#038;lc1=0000FF&#038;t=game-create-22&#038;o=9&#038;p=8&#038;l=as1&#038;m=amazon&#038;f=ifr&#038;md=1X69VDGQCMF7Z30FM082&#038;asins=4777511405" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0" class="left"></iframe></p>
<p>実は以前、コンピューターの技術で食っていくのをやめようかと思った時期がありまして、持っている本を売りに出してしまったのです。入手できなくならないうちに買いなおそうと思って Amazon に突入です。</p>
<p>この本は最初に読んだ時と、ある程度わかってから読んだ時で違う面を見せてくれるのでためになります。どれだけ勉強が進んでいるかのバロメーター的な存在。</p>
<p>レビューで、「ソースコードの割合が多い」との意見がありましたが、自分は全部本で確認できた方がありがたい気がします（自分が書く本はページ数の関係で無理そうですが…）。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/3181/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>スーパーペーパーマリオはシリーズ化して欲しい！！！</title>
		<link>http://www.game-create.com/archives/1710</link>
		<comments>http://www.game-create.com/archives/1710#comments</comments>
		<pubDate>Mon, 18 May 2009 12:50:29 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[ゲームプログラミング]]></category>
		<category><![CDATA[2D]]></category>
		<category><![CDATA[3D]]></category>
		<category><![CDATA[COM]]></category>
		<category><![CDATA[Direct3D]]></category>
		<category><![CDATA[DirectDraw]]></category>
		<category><![CDATA[DirectX]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=1710</guid>
		<description><![CDATA[あれ、ゲームプログラミングを教えるのにすごく便利なんです！

最近よく、「一見、 2D のゲームでも 3D の技術で描いてるときがある」と説明するのですが、これのもっともわかりやすい実例がスーパーペーパーマリオです。実際 [...]]]></description>
			<content:encoded><![CDATA[<p>あれ、ゲームプログラミングを教えるのにすごく便利なんです！</p>
<p><span id="more-1710"></span></p>
<p>最近よく、「一見、 2D のゲームでも 3D の技術で描いてるときがある」と説明するのですが、これのもっともわかりやすい実例がスーパーペーパーマリオです。実際に遊んだことある人はよくわかると思います。あのゲームはＡボタンで 2D と 3D が切り替わりますが、あの 2D は疑似で、本当は全て 3D で描いているのです。</p>
<p>3D は必要性がないと興味すらわかない分野かと思います。 Windows の場合、特に DirectX8 からの 3D 化が激しいですよね。最初から 2D のゲームしか作る予定のない人が「 2D を切り捨ててまで 3D に移行する必要あるか？」と疑問に感じられても無理のないことだと思います（ただ、 DirectDraw も COM なので切り捨てられたわけではないようです）。しかしながら、 3D で 2D を作ると楽なのも事実です。少なくとも DirectX ならクリッピングは不要、透過転送も不要、拡大縮小回転も用意されているので自作のコードは不要。…魅力的です。</p>
<p>これからゲームプログラミングを学ばれる方が好きな作り方を選択できるよう、実例はたくさん欲しいところです。もちろん、自分で作れれば一番良いのですが…</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/1710/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>HRESULT 型の取り扱い方法</title>
		<link>http://www.game-create.com/archives/395</link>
		<comments>http://www.game-create.com/archives/395#comments</comments>
		<pubDate>Sun, 15 Jun 2008 15:10:43 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[ゲームプログラミング]]></category>
		<category><![CDATA[COM]]></category>
		<category><![CDATA[HRESULT]]></category>
		<category><![CDATA[マクロ]]></category>
		<category><![CDATA[まとめ]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=395</guid>
		<description><![CDATA[HRESULT 型を取り扱う際に注意する点です。

HRESULT 型のデータフォーマット
HRESULT 型のデータフォーマットは次のようになっています。ソースコードのコピペでご容赦ください（ちなみに WinError [...]]]></description>
			<content:encoded><![CDATA[<p>HRESULT 型を取り扱う際に注意する点です。</p>
<p><span id="more-395"></span></p>
<h4>HRESULT 型のデータフォーマット</h4>
<p>HRESULT 型のデータフォーマットは次のようになっています。ソースコードのコピペでご容赦ください（ちなみに WinError.h に記載されています）。</p>
<div class="hl-surround" style="height:280px;"><div class="hl-main"><pre><span class="hl-comment">//
//  Values are 32 bit values laid out as follows:
//
//   3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
//   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
//  +---+-+-+-----------------------+-------------------------------+
//  |Sev|C|R|     Facility          |               Code            |
//  +---+-+-+-----------------------+-------------------------------+
//
//  where
//
//      Sev - is the severity code
//
//          00 - Success
//          01 - Informational
//          10 - Warning
//          11 - Error
//
//      C - is the Customer code flag
//
//      R - is a reserved bit
//
//      Facility - is the facility code
//
//      Code - is the facility's status code
//
//
// Define the facility codes</span><span class="hl-default">
//</span></pre></div></div>
<h4>成功と失敗の判定には SUCCEEDED マクロと FAILED マクロを使う</h4>
<p>HRESULT 型で返される状態は true と false の２種類ではなく、 0&#215;00000000 から 0xFFFFFFFF という広大な空間を利用します。 Windows (Intel) C++ の if 文の実装は !0 を true, 0 を false としているため、単純に…</p>
<div class="hl-surround" ><div class="hl-main"><pre><span class="hl-identifier">HRESULT hr</span><span class="hl-default"> = </span><span class="hl-identifier">SomeComMethod</span><span class="hl-brackets">()</span><span class="hl-default">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">hr</span><span class="hl-brackets">) {
  </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-brackets">}</span></pre></div></div>
<p>…と書くと、プログラムが正しく動作しなくなる可能性があります。 HRESULT 型の成功と失敗を正しく分析するためには SUCCEEDED マクロと FAILED マクロを使います。 SUCCEEDED マクロは成功を FAILED マクロは失敗を判定します。</p>
<div class="hl-surround" ><div class="hl-main"><pre><span class="hl-identifier">HRESULT hr</span><span class="hl-default"> = </span><span class="hl-identifier">SomeComMethod</span><span class="hl-brackets">()</span><span class="hl-default">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">SUCCEEDED</span><span class="hl-brackets">(</span><span class="hl-identifier">hr</span><span class="hl-brackets">)) {
  </span><span class="hl-comment">// 成功
</span><span class="hl-brackets">}
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">FAILED</span><span class="hl-brackets">(</span><span class="hl-identifier">hr</span><span class="hl-brackets">)) {
  </span><span class="hl-comment">// 失敗
</span><span class="hl-brackets">}</span></pre></div></div>
<h4>結果を詳細に分析したい場合は定数と比較する</h4>
<p>HRESULT 型が示す結果を詳細に分析したい場合は、用意されている定数と比較します。どのような定数が用意されているかの詳細は WinError.h に記されていますので参照してください。</p>
<h4>HRESULT の内容を文字列に変換するためには FormatMessage() 関数を使う</h4>
<p>HRESULT 型のデータは 32bit の整数値ですが、この結果が示す内容を文字列に変換するためには FormatMessage() 関数を使います。これは、エラーメッセージをログに記録したい場合などに使うことができます。</p>
<div class="hl-surround" ><div class="hl-main"><pre><span class="hl-identifier">LPVOID string</span><span class="hl-default">;

</span><span class="hl-identifier">FormatMessage</span><span class="hl-brackets">(</span><span class="hl-identifier">FORMAT_MESSAGE_ALLOCATE_BUFFER</span><span class="hl-code"> |
              </span><span class="hl-identifier">FORMAT_MESSAGE_FROM_SYSTEM</span><span class="hl-code">,
              </span><span class="hl-prepro">NULL</span><span class="hl-code">,
              </span><span class="hl-mlcomment">/* HRESULT の値 */</span><span class="hl-code">,
              </span><span class="hl-identifier">MAKELANGID</span><span class="hl-brackets">(</span><span class="hl-identifier">LANG_NEUTRAL</span><span class="hl-code">, </span><span class="hl-identifier">SUBLANG_DEFAULT</span><span class="hl-brackets">)</span><span class="hl-code">, </span><span class="hl-comment">// 既定の言語
              </span><span class="hl-brackets">(</span><span class="hl-identifier">LPTSTR</span><span class="hl-brackets">)</span><span class="hl-code">&amp;</span><span class="hl-identifier">string</span><span class="hl-code">,
              </span><span class="hl-number">0</span><span class="hl-code">,
              </span><span class="hl-prepro">NULL</span><span class="hl-brackets">)</span><span class="hl-default">;

</span><span class="hl-comment">// エラーメッセージを表示する
</span><span class="hl-identifier">MessageBox</span><span class="hl-brackets">(</span><span class="hl-prepro">NULL</span><span class="hl-code">, </span><span class="hl-brackets">(</span><span class="hl-identifier">LPCTSTR</span><span class="hl-brackets">)</span><span class="hl-identifier">string</span><span class="hl-code">, </span><span class="hl-identifier">TEXT</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">Error</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">, </span><span class="hl-identifier">MB_OK</span><span class="hl-brackets">)</span><span class="hl-default">;

</span><span class="hl-comment">// バッファを解放する
</span><span class="hl-identifier">LocalFree</span><span class="hl-brackets">(</span><span class="hl-identifier">string</span><span class="hl-brackets">)</span><span class="hl-default">;</span></pre></div></div>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/395/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DirectX 関連インタフェースの取得方法</title>
		<link>http://www.game-create.com/archives/289</link>
		<comments>http://www.game-create.com/archives/289#comments</comments>
		<pubDate>Tue, 11 Mar 2008 16:03:33 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[ゲームプログラミング]]></category>
		<category><![CDATA[COM]]></category>
		<category><![CDATA[DirectX]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=289</guid>
		<description><![CDATA[oleview.exe という COM 情報の閲覧ソフトを使って DirectX Graphics もしくは Direct3D の CLSID を探そうとしたのですが、見つかりませんでした。

どうやら、「インタフェース [...]]]></description>
			<content:encoded><![CDATA[<p>oleview.exe という COM 情報の閲覧ソフトを使って DirectX Graphics もしくは Direct3D の CLSID を探そうとしたのですが、見つかりませんでした。</p>
<p><span id="more-289"></span></p>
<p>どうやら、「インタフェースの取得にはヘルパー関数を使ってください」「見つからないのは使ってほしくない理由があるから」ということらしいです（出典失念、なんてこった…）。つまり、インタフェースを取得するためには Direct3DCreate9() などの関数を使います。</p>
<p>これ DirectX のバージョンが低いと深刻そうなエラーを吐いて止まるのであんまり使いたくなかったんですよね。仕方ないのでしょうか…</p>
<p>ちなみに oleview.exe の実行には iviewers.dll が必要なのですが oleview.exe のインストーラーには同梱されておりませんでした。 Microsoft Windows SDK に入っているそうです。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/289/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DirectX SDK を用意したり追従したりするのが億劫な人にお勧めなライブラリ &#8211; Selene</title>
		<link>http://www.game-create.com/archives/214</link>
		<comments>http://www.game-create.com/archives/214#comments</comments>
		<pubDate>Fri, 11 Jan 2008 14:15:15 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[ゲームプログラミング]]></category>
		<category><![CDATA[COM]]></category>
		<category><![CDATA[DirectX]]></category>
		<category><![CDATA[DirectX SDK]]></category>
		<category><![CDATA[VC++ 2008 EE]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=214</guid>
		<description><![CDATA[Selene &#8211; Selene
このライブラリを使うと DirectX SDK をインストールする必要なくして DirectX のゲームを開発することができます。

Visual C++ 2008 Expre [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://selene-lue.halfmoon.jp/" class="external">Selene &#8211; Selene</a></p>
<p>このライブラリを使うと DirectX SDK をインストールする必要なくして DirectX のゲームを開発することができます。</p>
<p><span id="more-214"></span></p>
<p>Visual C++ 2008 Express Edition に Microsoft Windows SDK が付属するようになった今、 SDK ヘルを解決するために Selene という選択肢を提案したいと思います。</p>
<p>ちなみに SDK ヘルという言葉は私の妄想です。いや DirectX の仕様の追従とか本当に面倒なんです。 COM で実装してある部分は問題ないのですが D3DX の仕様が<img src="http://www.game-create.com/wp-content/plugins/wp-tegaki/wp-tegaki-img.php?tegaki_id=214-0&amp;page=1" alt="ごっすん♪ごっすん♪" width="133" height="24" />変わってメランコリックになります。</p>
<p>ちなみに最近スプライトオブジェクトが行列でぐるぐる回せるようになったそうです。最新版の Flash のムービークリップも行列でぐるぐる回せるらしいのですが、ツールとしての方向性がよくわかりません。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/214/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Direct3D, DirectInput, DirectSound のベターなインタフェース</title>
		<link>http://www.game-create.com/archives/131</link>
		<comments>http://www.game-create.com/archives/131#comments</comments>
		<pubDate>Wed, 31 Oct 2007 06:04:31 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[ゲームプログラミング]]></category>
		<category><![CDATA[COM]]></category>
		<category><![CDATA[Direct3D]]></category>
		<category><![CDATA[DirectInput]]></category>
		<category><![CDATA[DirectSound]]></category>
		<category><![CDATA[DirectX]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=131</guid>
		<description><![CDATA[ネットをぐるぐるまわって DirectX のインタフェースはどのバージョンが妥当か調べてみました。

まず DirectX10 が Vista 以降の技術であるという理由から X10 のインタフェースは除外しました。
次 [...]]]></description>
			<content:encoded><![CDATA[<p>ネットをぐるぐるまわって DirectX のインタフェースはどのバージョンが妥当か調べてみました。</p>
<p><span id="more-131"></span></p>
<p>まず DirectX10 が Vista 以降の技術であるという理由から X10 のインタフェースは除外しました。</p>
<p>次に DirectX9 を検討してみましたところ 2000, XP, Vista で利用可能とのことが判明しました。いい感じですね。</p>
<p>9x 系の OS ではひとつバージョンが下がって DirectX8 がベターのようです。</p>
<p>ここまでの流れからすると DirectX8 がベタープラットフォームということになるのですが、情報の探しやすさからすると DirectX9 の方に一日の長がありそうです。私に MSDN を渡り歩ける実力があればあるいは…などと、自分のふがいなさに涙しつつ、当面は DirectX9 をベタープラットフォームとする方向で決定しました。</p>
<p>DirectX9 での最新のインタフェースは次のようになりました。</p>
<ul>
<li>IID_IDirect3D9</li>
<li>IID_IDirectInput8</li>
<li>IID_IDirectSound8</li>
</ul>
<p>大幅に更新されたのは Direct3D だけのようですね。 DirectX8 をターゲットにするのも思ったほど大変ではないかもしれません。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/131/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DirectX と COM の理解を深めた本</title>
		<link>http://www.game-create.com/archives/115</link>
		<comments>http://www.game-create.com/archives/115#comments</comments>
		<pubDate>Mon, 15 Oct 2007 13:46:46 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[ゲームプログラミング]]></category>
		<category><![CDATA[COM]]></category>
		<category><![CDATA[DirectX]]></category>
		<category><![CDATA[書籍]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=115</guid>
		<description><![CDATA[有隣堂に行ってきました。


この本なんですが、最後の方に超初心者向けの COM の解説が載っている隠れた名著なのです。
買おうと思っていたのですが、別の本を見ているうちに忘れて帰ってきてしまいました。
病気ですね。
]]></description>
			<content:encoded><![CDATA[<p>有隣堂に行ってきました。</p>
<p><span id="more-115"></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=4777511405&#038;fc1=000000&#038;IS2=1&#038;lt1=_blank&#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>この本なんですが、最後の方に超初心者向けの COM の解説が載っている隠れた名著なのです。</p>
<p>買おうと思っていたのですが、別の本を見ているうちに忘れて帰ってきてしまいました。</p>
<p>病気ですね。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/115/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

