<?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%bf%e3%82%b9%e3%82%af%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0/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>高パフォーマンスさえ実現できれば jQuery の書き方をゲームに使いたいものです</title>
		<link>http://www.game-create.com/archives/3083</link>
		<comments>http://www.game-create.com/archives/3083#comments</comments>
		<pubDate>Sat, 27 Mar 2010 14:15:51 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[ゲームプログラミング]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[RPG]]></category>
		<category><![CDATA[STAR OCEAN]]></category>
		<category><![CDATA[タスクシステム]]></category>
		<category><![CDATA[ロックマン]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=3083</guid>
		<description><![CDATA[適当ですが、こんな感じに。
// 戦闘が終了したので敵の攻撃を無害化する
$(&#34;.enemy .attack-effect&#34;).each(function () { this.sanitize(); [...]]]></description>
			<content:encoded><![CDATA[<p>適当ですが、こんな感じに。</p>
<div class="hl-surround" ><div class="hl-main"><pre><span class="hl-comment">// 戦闘が終了したので敵の攻撃を無害化する</span><span class="hl-default">
$</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">.enemy .attack-effect</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-default">.</span><span class="hl-identifier">each</span><span class="hl-brackets">(</span><span class="hl-reserved">function </span><span class="hl-brackets">() { </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">sanitize</span><span class="hl-brackets">()</span><span class="hl-code">; </span><span class="hl-brackets">})</span><span class="hl-default">;</span></pre></div></div>
<p><span id="more-3083"></span></p>
<p>全部のゲームがこうじゃないんですが、 RPG なんかで勝利すると敵の攻撃を受けても無効になる仕様を多く目にします。ロックマンみたいに、ボスを倒したら敵の弾が全部消えちゃって良いなら簡単なのですが、敵の弾は残しつつ、もし、プレイヤーに当たってもダメージを受けないようにするためには、相応の処理（条件分岐）が必要になります。</p>
<p>スターオーシャンとか、勝利ポーズを決めるまでスローモーションになって戦闘が継続するのですが、その間はキャラクターを動かせないので敵の攻撃に当たることがあります。でも、ダメージを受けません。そういうやつです。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/3083/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>タスクをスレッドで実装したときの同時実行数は 100 本くらいが限度との噂あり</title>
		<link>http://www.game-create.com/archives/1725</link>
		<comments>http://www.game-create.com/archives/1725#comments</comments>
		<pubDate>Thu, 21 May 2009 03:49:19 +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=1725</guid>
		<description><![CDATA[「スクリプト言語による効率的ゲーム開発」に書いてありました。

知らない技術を使うとき、どれだけ無理が利くのかわかりません。ゲームでも、タスクをスレッドで実装したとき、同時に実行できるスレッドは何本くらいが限界なのだろう [...]]]></description>
			<content:encoded><![CDATA[<p>「<a href="http://www.game-create.com/archives/732">スクリプト言語による効率的ゲーム開発</a>」に書いてありました。</p>
<p><span id="more-1725"></span></p>
<p>知らない技術を使うとき、どれだけ無理が利くのかわかりません。ゲームでも、タスクをスレッドで実装したとき、同時に実行できるスレッドは何本くらいが限界なのだろうか？と考えたことがあるのですが、この本によると 100 本くらいが限度なのではないかと書かれています（秒間に何度か動くという状況のとき。ゲームの場合は常に当てはまりそうです）。</p>
<p>コルーチンを教えていただいてからはスレッドによるタスクの実装は全く考えなくなりましたが、以前から知りたい情報だったので嬉しくなりました。もちろん、手元の環境で試せばいいのですが、他の環境で同じ状況になるか心配で手つかずでした（特に OS や OS のバージョンが違うと限界値が変わりそうな気がします）。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/1725/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>コルーチン、マイクロスレッド、ファイバ</title>
		<link>http://www.game-create.com/archives/1388</link>
		<comments>http://www.game-create.com/archives/1388#comments</comments>
		<pubDate>Wed, 04 Mar 2009 00:43:14 +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=1388</guid>
		<description><![CDATA[soramame さんより寄せられましたタスクシステムに応用しやすい技術ですが、いろいろ調べてみたところやはり面白そうです。

一番良かったのがノンプリエンプティブという点です。前回紹介したスレッドのように動作するタスク [...]]]></description>
			<content:encoded><![CDATA[<p>soramame さんより寄せられましたタスクシステムに応用しやすい技術ですが、いろいろ調べてみたところやはり面白そうです。</p>
<p><span id="more-1388"></span></p>
<p>一番良かったのがノンプリエンプティブという点です。<a href="http://www.game-create.com/archives/1299">前回紹介したスレッドのように動作するタスクシステム</a>は、当初、自分のことだけを考えてコードを組める予定だったのですが、同期のために wait() 関数をたくさん仕込む必要が出てきました（しかもこの wait() というのが単純に時間で待つタイプだったので、他のタスクが１ステップ進んでいるかの保証がないという…）。これだとゲームループを１順させやすい分、コルーチンの方が使いやすそうです。</p>
<p>どうやら Gems に熱く書いてあるそうですよ。 Gems 読んでみたいですね、非常に高価ですが。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/1388/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>本場のタスクシステムはスゲェな…</title>
		<link>http://www.game-create.com/archives/1299</link>
		<comments>http://www.game-create.com/archives/1299#comments</comments>
		<pubDate>Sat, 07 Feb 2009 02:13:23 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[ゲームプログラミング]]></category>
		<category><![CDATA[タスクシステム]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=1299</guid>
		<description><![CDATA[関数をリスト構造にして実現するタスクシステムではなく、 CPU のレジスタを操作してマルチスレッドのごとく動くタスクシステムの実装を見ました。いやぁ、面白い、というかすごいです。

たとえば、「キャラクターを１フレームに [...]]]></description>
			<content:encoded><![CDATA[<p>関数をリスト構造にして実現するタスクシステムではなく、 CPU のレジスタを操作してマルチスレッドのごとく動くタスクシステムの実装を見ました。いやぁ、面白い、というかすごいです。</p>
<p><span id="more-1299"></span></p>
<p>たとえば、「キャラクターを１フレームに１ドットずつ 100 ドットだけ右へ動かす」という場合、次のように書いてしまう失敗が多くあります。</p>
<div class="hl-surround" ><div class="hl-main"><pre><span class="hl-reserved">for </span><span class="hl-brackets">(</span><span class="hl-types">int </span><span class="hl-identifier">i</span><span class="hl-code"> = </span><span class="hl-number">0</span><span class="hl-code">; </span><span class="hl-identifier">i</span><span class="hl-code"> &lt;</span><span class="hl-number">100</span><span class="hl-code">; </span><span class="hl-identifier">i</span><span class="hl-code">++</span><span class="hl-brackets">) {
  </span><span class="hl-comment">// ループの中で書いて良いの？
  // ここ、１フレーム中に 100 回呼ばれるよ？
  </span><span class="hl-identifier">theChar</span><span class="hl-code">-&gt;</span><span class="hl-identifier">moveToRight</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}</span></pre></div></div>
<p>これはたいていの場合失敗です。これを実行すると１フレームで 100 ドット右に動いてしまいます。メルマガの読者の方はすでにご存じですよね。しかし、マルチスレッド系はこれで大丈夫です。実際は同期を取るため何らかの関数を挟む必要がありますが、かなり頭で考えているイメージとソースコードが近くなりますよね。</p>
<div class="hl-surround" ><div class="hl-main"><pre><span class="hl-comment">// このループを抜ける頃には 100 フレームくらいかかってるんじゃないかな？
</span><span class="hl-reserved">for </span><span class="hl-brackets">(</span><span class="hl-types">int </span><span class="hl-identifier">i</span><span class="hl-code"> = </span><span class="hl-number">0</span><span class="hl-code">; </span><span class="hl-identifier">i</span><span class="hl-code"> &lt;</span><span class="hl-number">100</span><span class="hl-code">; </span><span class="hl-identifier">i</span><span class="hl-code">++</span><span class="hl-brackets">) {
  </span><span class="hl-identifier">theChar</span><span class="hl-code">-&gt;</span><span class="hl-identifier">moveToRight</span><span class="hl-brackets">()</span><span class="hl-code">;
  </span><span class="hl-identifier">wait</span><span class="hl-brackets">()</span><span class="hl-code">; </span><span class="hl-comment">// ←ほかのタスクと同期（こいつだけ早く終わるのを避ける）
</span><span class="hl-brackets">}</span></pre></div></div>
<p>しかしながら、これを書いた人は「これを使うにはそれなりの知識が必要になると思う」とのこと。確かに生まれながらにしてシングルスレッド脳の私には扱えません。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/1299/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>なんというタイムリー！タスクシステムに関する試行錯誤</title>
		<link>http://www.game-create.com/archives/667</link>
		<comments>http://www.game-create.com/archives/667#comments</comments>
		<pubDate>Mon, 01 Sep 2008 07:47:05 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[ウェブログ]]></category>
		<category><![CDATA[タスクシステム]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=667</guid>
		<description><![CDATA[あわせて読みたいにリストアップされているサイトにふらりと遊びに行ったらタスクシステムについての試行錯誤が載っていました。
http://blogs.wankuma.com/episteme/archive/2008/08 [...]]]></description>
			<content:encoded><![CDATA[<p>あわせて読みたいにリストアップされているサイトにふらりと遊びに行ったらタスクシステムについての試行錯誤が載っていました。</p>
<p><a href="http://blogs.wankuma.com/episteme/archive/2008/08/30/154702.aspx" class="external">http://blogs.wankuma.com/episteme/archive/2008/08/30/154702.aspx</a><br />
<a href="http://blogs.wankuma.com/episteme/archive/2008/09/01/154950.aspx" class="external">http://blogs.wankuma.com/episteme/archive/2008/09/01/154950.aspx</a><br />
<a href="http://blogs.wankuma.com/episteme/archive/2008/09/02/155133.aspx" class="external">http://blogs.wankuma.com/episteme/archive/2008/09/02/155133.aspx</a></p>
<p><span id="more-667"></span></p>
<p>実は今、私も同じことで悩んでおりまして、タスクシステムの用途から仕様をデザインしようとしているところだったのです。タイムリーすぎてびっくりしました。こういう記事ありがたいですよね、参考になります。</p>
<p>しかし επιστημη さんという名前どこかで見覚えがあるのですが、まさか雑誌とかによく記事を書いている人では？</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/667/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>
	</channel>
</rss>

